飞思卡尔智能车电磁组第七届可用程序

飞思卡尔智能车电磁组第七届可用程序
飞思卡尔智能车电磁组第七届可用程序

函数如下:

#include /* common defines and macros */

#include "derivative.h" /* derivative-specific definitions */

#include

#include

#include

#include

#pragma LINK_INFO DERIVATIVE "mc9s12xs128"

#define K 1

#define N 3

unsigned int i=0,j=0,m=0,n=0;

unsigned char str[]={'0'};

signed int b=0,c=0,d=0,e=0,f=0,g=0,spe=0,r=0,l,x3,y,z,x1,x2,x4; int time;

int zd=0,flag;

int pp;

/////////////////////////////////////

//// 电机 PID 定义

/////////////////////////////////////

int SetPoint=0; //设定目标 Desired Value

int FeedBack=0;

float KKp=1.5; //比例常数 Proportional Const

float KKi=0;

float KKd=0.6; //微分常数 Derivative Const

signed int EE0=0; //当前误差

signed int EE1=0; //Error[-1]

signed int EE2=0; //Error[-2]

signed int EError0=0,EError1=0;

signed int iiIncpid=0;

int sp=0;

///////////////////////////////

/// 舵机 PID 定义

//////////////////////////////

float Kp=3; //比例常数 Proportional Const float Ki=1;

float Kd=4.2; //微分常数 Derivative Const signed int E0=0 ; //当前误差

signed int E1=0; //Error[-1]

signed int E2=0; //Error[-2]

signed int Error0=0,Error1=0;

signed int iIncpid=0;

/////////////////////////////////////

/////////////////////////////////////

//// 电机 PID

/////////////////////////////////////

//////////////////////////////////// unsigned int Getspeed(int cch1,int cch2 )

{

EE0=cch1-cch2; //增量计算

EError0=EE0-EE1;

EError1=EE1-EE2;

iiIncpid=(int)(KKi*EError0+KKp*EE0+KKd*(EError0-EError1)); EE1=EE0;

EE2=EE1; //存储误差,用于下次计算

sp+=iiIncpid;

if(sp>210)

sp=210;

if(sp<0)

sp=0;

return sp;

}

void sudu(int SetPoint)

{

pp=Getspeed(SetPoint,FeedBack);

PWMDTY2=pp;

}

//////////////////////////////

///////////////////////////////

/// 舵机 PID

//////////////////////////////

//////////////////////////////////////

int Pcrtl(int ch1,int ch2 )

{

E0=ch1-0; //增量计算

Error0=E0-E1;

Error1=E1-E2;

iIncpid=(int)(Ki*Error0+Kp*E0+Kd*(Error0-Error1)); E1=E0;

E2=E1; //存储误差,用于下次计算

return iIncpid;

}

///////////////////////////////////////

void shache(int sha,int tim)

{

PWMDTY3=sha;

time=tim;

PITCE_PCE1=1;

PITINTE_PINTE1=1; //enable interupt channel 0

zd=0;

}

////////////////////////////////////////

void vIOPortInit(void)

{

DDRA=0X00; //PROT B 键盘输出

PORTA=0X00;

DDRB=0xff;

DDRJ=0xFF; //PROTB

PTJ=0X80;

}

void delayms(int ms) //40MHz--1ms

{

int ii,jj;

if (ms<1) ms=1;

for(ii=0;ii

for(jj=0;jj<0xff;jj++);

}

//////////////////////////////////

void SetBusCLK_64M(void)

{

CLKSEL=0X00; //disengage PLL to system PLLCTL_PLLON=1; //turn on PLL

SYNR =0xc0 | 0x07;

REFDV=0xc0 | 0x01;

POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=80MHz; _asm(nop); //BUS CLOCK=64M

_asm(nop);

while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it; CLKSEL_PLLSEL =1; //engage PLL to system; }

void ECT_Init(void) /*ECT初始化,使用输入捕捉功能*/

{

TIOS =0x00; //设为输入捕捉

TSCR1=0x80; //定时器使能

TSCR2=0x07;

TIE=0b00000010; //开中断

TCTL4=0b00001000; //0 ,1触发电平:

//TCTL3=0b10101010;

}

///////////////////////

void PWMInit(void)

{

PWME=0x00; //禁止PWM输出

PWMPOL=0xff;

PWMCLK=0x08;

PWMCTL=0x10;

PWMSCLB=80;

PWMCAE=0x00; //左对齐

PWMPRCLK=0x44; //PWM时钟CLOCKA, PWMPER01=40000;

PWMPER3=250;

PWMPER2=255;

PWMDTY2=0;

PWMDTY3=31;

PWMDTY01=4675;

PWME=0x0f; /*使能01,23通道*/ }

//////////////////////////

void SCI(void)

{

SCI1BDH=0X01;

SCI1BDL=0XA0;

SCI1CR1=0X00;

SCI1CR2=0X08;

}

void shacheV(int ch3)

{

PWMDTY3=ch3;

while(FeedBack>30);

PWMDTY3=30;

zd=0;

}

void TERMIO_PutChar(unsigned char ch)

{

while(!(SCI1SR1&0x80)) ; //keep waiting when not empty SCI1DRL=ch;

}

unsigned char TERMIO_GetChar(void)

{

while(!(SCI1SR1&0x80)) ; //keep waiting when not empty return SCI1DRL;

}

void un(unsigned char ch)

{

while(!(SCI1SR1&0X40))

{

}

SCI1DRL=ch;

}

/////////////////////////////

void ADInit(void)

{

ATD0CTL1=0x00;

ATD0CTL2=0X40; /* 使能AD,清除标志 */

ATD0CTL3=0XB0; /* 队列长度为6,依次存入结果寄存器,继续转换 */ ATD0CTL4=0X05; /* 8位精度,总线频率32分频 */

ATD0CTL5=0X30; /* ,多通道,连续,从AD0开始转换*/

ATD0DIEN=0x00; //禁止数字输入

}

////////////////////////////////

void PACN_init(void)

{

PACTL_PAEN=0;

TSCR1=0X80; //快速清除flag:PAOVF PAIF

TSCR2=0X03;

PACNT=0;

PACTL_PAEN=1; //启动脉冲累加器A

PACTL_PAMOD=0; //事件计数方式

PACTL_PEDGE=1; //PT7引脚上的出现上升沿时脉冲累加器计数器加1 TSCR1_TEN =1;

}

void Pit0_Init(void)

{

PITCFLMT_PITE=0; //disable PIT

PITCE_PCE0=1; //enable timer channel 0

PITMUX_PMUX0=0; //ch0 connected to micro timer 0

PITMTLD0=0X0F ; //micro time base 0 equals 255 clock cycles

PITLD0=0XFFFF; //time-out period = (PITMTLD + 1) * (PITLD + 1) / fBUS. //时间计算

//For example, for a 16 MHz bus clock, the maximum time-out period equals:

//15 * 65536 * /64000000 = 0.01536s.

PITINTE_PINTE0=1; //enable interupt channel 0

PITCFLMT_PITE=1; //enable PIT

}

void Pit1_Init(void)

{

PITCFLMT_PITE=0; //disable PIT

//PITCE_PCE1=1; //enable timer channel 0

PITMUX_PMUX1=0; //ch0 connected to micro timer 0

PITMTLD1=0X0F ; //micro time base 0 equals 255 clock cycles

PITLD1=0XFFFF; //time-out period = (PITMTLD + 1) * (PITLD + 1) / fBUS. //时间计算

//For example, for a 16 MHz bus clock, the maximum time-out period equals:

//15 * 65536 * /64000000 = 0.01536s.

//PITINTE_PINTE1=1; //enable interupt channel 0

PITCFLMT_PITE=1; //enable PIT

}

///////////////////////////////////// void bustor(int x[],int n)

{

int i,j,m,k;

for(i=1;i<=n-1;i++)

{

k=1;

for(j=1;j<=n-i;j++)

if(x[j]>x[j+1])

{

m=x[j];

x[j]=x[j+1];

x[j+1]=m;

k=0;

}

if(k==1)

break;

}

}

///////////////////////////

void kongzhi(void)

{

vIOPortInit() ;

SetBusCLK_64M() ;

ADInit() ;

SCI();

PORTB=0X00;

PWMInit();

PACN_init();

Pit0_Init();

Pit1_Init();

for(;;)

{

ECT_Init();

while(!ATD0STAT0_SCF); /*等待当前队列转换完成*/

b=ATD0DR0L;

c=ATD0DR1L;

d=ATD0DR2L;

e=ATD0DR3L;

f=ATD0DR4L;

g=ATD0DR5L;

//printf("x1=%d x2=%d FeedBack=%d EE0=%d iiIncpid=%d sp=%d b=%d c=%d ",x1,x2,FeedBack,EE0,iiIncpid,sp,b,c) ;

if(b>0x10&&c>0x10)

{

x1=b-210;

x2=c-210;

if(d

x1=-x1;

if(f

x2=-x2;

y=Pcrtl(x1,x2);

if(y>560)

y=560;

if(y<-450)

y=-450;

PWMDTY01=4675-y;

//printf("x1=%d x2=%d",x1,x2); if(x2>80||x2<-80) //大弯道

{

if(zd==1&&FeedBack>78)

{

sudu(65);

if(d>e)

{

PORTB=0XF0;

shacheV(8);

}

else

{

PORTB=0X0F;

shacheV(52);

}

}

}

else //直道

{

if(x1>50||x1<-50)

{

x4++;

if(x4<60)

sudu(60);

else

sudu(60);

}

else

{

zd=1;

sudu(100);

PWMDTY3=30;

x4=0;

}

}

}

else

sudu(65);

}

}

void main(void) {

/* put your own code here */

EnableInterrupts;

kongzhi();

for(;;) {

_FEED_COP(); /* feeds the dog */

} /* loop forever */

/* please make sure that you never leave main */

}

///////////////////////////////////

#pragma CODE_SEG __NEAR_SEG NON_BANKED

void interrupt 9 T1CaptureInterrupt(void)

{ TFLG1=0b00000010;

i++;

PORTB=0xff-i;

un(i);

if(i>0x0c)

{

PTJ=0X00;

}

}

#pragma CODE_SEG DEFAULT

////////////////////////////////////////

//////////////////////////////////

#pragma CODE_SEG __NEAR_SEG NON_BANKED

void interrupt 66 PIT0_ISR(void)

{

PITTF_PTF0=1; //CLER FLAG

FeedBack=PACNT;

PACNT=0; }

//////////////////////////////////

#pragma CODE_SEG __NEAR_SEG NON_BANKED

void interrupt 67 PIT1_ISR(void)

{

PITTF_PTF1=1; //CLER FLAG

r++;

if(r==time)

{ r=0;

zd=0;

PORTB=0XFF;

PWMDTY3=30;

PITCE_PCE1=0;

PITINTE_PINTE1=0; //DISable interupt channel 0 }

}

飞思卡尔智能汽车设计技术报告

第九届“飞思卡尔”杯全国大学生 智能汽车竞赛 技术报告 学校:武汉科技大学队 伍名称:首安二队参赛 队员:韦天 肖杨吴光星带队 教师:章政 0敏

I

关于技术报告和研究论文使用授权的说明 本人完全了解第九届“飞思卡尔”杯全国大学生智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。 参赛队员签名: 带队教师签名: 日期:

II

目录 第一章引言 (1) 1.1 概述 (1) 1.2 内容分布 (1) 第二章系统总体设计 (2) 2.1 设计概述 (3) 2.2 控制芯片的选择 (3) 2.3 线性 CCD 检测的基本原理 (3) 2.3 系统结极 (5) 第三章机械系统设计 (7) 3.1 底盘加固 (7) 3.2 轮胎处理 (7) 3.3 四轮定位 (8) 3.4 差速器的调整 (12) 3.5 舵机的安装 (13) 3.6 保护杆的安装 (15) 3.7 CCD的安装 (16) 3.8 编码器的安装 (17) 3.9 检测起跑线光电管及加速度计陀螺仪的安装 (18) 第四章硬件系统设计 (19) 4.1 最小系统版 (20) 4.2 电源模块 (21) 4.3 CCD模块 (22) 4.4 驱动桥模块 (23) 4.5 车身姿态检测模块 (24) 4.7 测速模块 (24) 4.8 OLED液晶屏及按键、拨码 (25) 第5章程序设计 (27)

飞思卡尔智能车经验

RT,留下一点不算成功的经验吧。 先说说个人认为要取得好成绩的两个最重要的先决条件。 1. 人,这个是大前提,对于一个好的队伍,判别标准其实很简单,就是队员3个人是玩伴关系还是领导和下属关系。前者,大家都是来玩这个智能车的,自然主观能动性就会很高,能自主学习。不会总是“等着所谓队长分配任务”。这样效率就会很高。成绩自然不会低,后者,如果“队长”个人能力很强的话,就会出现到最后只有“队长”一个人在干。其他的队员就会因为自己技术不行,渐渐退出。而不会因为自己不会而去主动的学习。如果“队长”能力一般,再没有一些强力指导老师的情况下,这样的队伍一般会悲剧掉。所以,新人在参加这个智能车比赛的时就要明确动机。参加智能车确实是来学习知识的,但不会有人真正的来教你。一切都靠自己。 2.跑道,这个是客观条件中最重要的,一条污浊、破损、不符合规则的跑道,是不可能出成绩的。我们学校的赛道就是因为当初制作和后期保养不到位,导致赛道诸多永久性污浊、破损。一开始车刚能爬的时候,问题还不明显,后来在测试让车能平滑过S弯时问题就来了,由于赛道污浊,远处的跑道在CCD看了是错误,导致S弯和普通弯看起来一样,致使S弯策略根本没有启用,当时一直到修改S弯策略,到后来调出图像来看才发现是采集的问题。至于赛道污浊破损带来的干扰要不要处理,答案是肯定的,因为就算是比赛用的跑道也会有擦不掉,补不了的地方。但处理这些问题,应该是放在车辆原先行驶策略都调试正确的情况下,再人为的加入这些干扰。这样修改程序起来就有的放矢。 下面再以个人的观点介绍一下3个组别的特点,给新人选择做一个参考。 摄像头:有点像开卷考试,能得到的东西很多,但是如何把这些东西用好就是一个学问。摄像头的关键就是如何从采集回来的图像所包含的诸多信息中,选出一些高效方便的信息来控制车辆。至于控制策略,个人觉得一个能根据不同赛道类型而变化比例系数的比例控制器就能很好的满足控制需要。 光电组:想象起来很容易,其实很累的一个组,原理最简单,但是为了能有30CM以上的前瞻,和比较连续的偏差变化,就要下大功夫,先不说别的,让你装15个激光管,而且要保证不焊烧并要把光点打在一条线上,就是很繁琐的事情。总得来说,光电组拼的就是电路和传感器结构。不过对于看客来说,光电组是最好“看”的组,一排壮观的激光加上摆头的机械~ 电磁组:听起来有点复杂,其实比前两个组都轻松的组,电磁组又可分为数字和模拟两个类别。数字传感器就是和光电一样弄一排的传感器,看看哪个传感器接收到的信号最强以判断中线位置。模拟的就是比较两个传感器之间信号强度的差值来判断。电磁组好处就是不容易受到干扰,比赛上也见的,电磁车跑完的成功率是很高的,而且很容易判别起跑线。基本不用懂脑筋。而且如果选用是模拟传感器的话,能得到比较平滑的控制。 先说这些,想到再继续 关于摇头激光车的一点个人理解:为什么光电的车,要多花一个舵机去让传感器摇头呢?因为。为了能获得赛道上一个比较宽范围的信息,就必须把传感器做的很长。这样的后果 就是重量。折中的办法就是摇头,通过摇头,可以使一个小尺寸的传感器检测到大范围 DEMOK工作室淘宝小店

飞思卡尔智能车电磁组信号采集

?пㄖ ???? ??? ? ??? ?? ? ? 1? ? ??? ? 哖 世?? ???? ??? ??? ??? ? ??? ㄎ? ?? ??????仁??20kHz??????⌒ ???仁?VLF? ??⌒???仁仁?? ? 仁 ?仁??⌒????3kHz?30kHz?⌒?? 100km?10km? ?? 3.1?? ??? ? ? ?? ? ? ?а ? ?????? ??? ? ? ? ? ?? ??オ???? ??? ??? ? ? ??? ? ? ???о? ??? ??? ??? ? ? ? ? ?? ? ??? й ?????? ? ? ?? ? ???? ?н ????? ? ? на???? ??? ? ? ?? ? ? ?? а ? ???? ?? ??? ?? ? ??? ? ? ?? ?? ??? ??? ?? ??仁? ??? ?? ???? ??? ?? ?? ????? ?? ? ?? ?????? ↓ ? ?? ?? ↓ ? ?? ?? ??? ???? ? ??? ?? ? ? ?? ? ↓ ?? ?? ? ? ? ? ?? っ ?? ???/& ????? ??? ? ? ??/&? ?? ? ?

?йㄐ ???? ?? ?LC? ?? ? ? ?? ?? ? ?? ??????? ??? ??AD???? 享 ?? 儈?↓? фн?? ?? ???AD? ???? ? ?? ?? 3.3 ?? ?? ???????? ?? 傼 ??н ??? ? ? н ? ?? ?? ?н ? н? ? ? ??? ? ?? ?нっ ???? ?????? ? ф? 儈? ? ?

基于嵌入式STM32的飞思卡尔智能车设计



飞思卡尔智能车大赛是面向全国大学生举办的应用型比赛, 旨在培养创新精 神、协作精神,提高工程实践能力的科技活动。大赛主要是要求小车自主循迹并 在最短时间内走完整个赛道。针对小车所安装传感器的不同,大赛分为光电组、 电磁组和摄像头组。 本文介绍了本院自动化系第一届大学生智能汽车竟赛的智能车系统。 包括总 体方案设计、机械结构设计、硬件电路设计、软件设计以及系统的调试与分析。 机械结构设计部分主要介绍了对车模的改进,以及舵机随动系统的机械结构。硬 件电路设计部分主要介绍了智能车系统的硬件电路设计, 包括原理图和 PCB 设计 智能车系统的软、 硬件结构及其开发流程。该智能车车模采用学校统一提供的飞 思卡尔车模,系统以 STM32F103C8T6 作为整个系统信息处理和控制命令的核心, 使用激光传感器检测道路信息使小车实现自主循迹的功能
关键字:飞思卡尔智能车STM32F103C8T6
激光传感器
第一章 概述

1.1 专业课程设计题目
基于嵌入式 STM32 的飞思卡尔智能车设计
1.2 专业课程设计的目的与内容
1.2.1 目的 让学生运用所学的计算机、传感器、电子电路、自动控制等知识,在老师的 指导下,结合飞思卡尔智能车的设计独立地开展自动化专业的综合设计与实验, 锻炼学生对实际问题的分析和解决能力,提高工程意识,为以后的毕业设计和今 后从事相关工作打下一定的基础。 1.2.2 内容 本次智能车大赛分为光电组和创新做,我们选择光电组小车完成循迹功能。 该智能车车模采用学校统一提供的飞思卡尔车模, 系统以 STM32F103C8T6 作为整 个系统信息处理和控制命令的核心,我们对系统进行了创造性的优化: 其一, 硬件上采用激光传感器的方案, 软件上采用 keil 开发环境进行调试、 算法、弯道预判。 其二,传感器可以随动跟线,提高了检测范围。 其三,独立设计了控制电路板,充分利用 STM32 单片机现有模块进行编程, 同时拨码开关、状态指示灯等方便了算法调试。
1.3 方案的研讨与制定
1.3.1传感器选择方案 方案一:选用红外管作为赛道信息采集传感器。 由于识别赛道主要是识别黑白两种不同的颜色, 而红外对管恰好就能实现区 分黑白的功能,当红外光照在白色KT板上时,由于赛道的漫反射作用,使得一部 分红外光能反射回来, 让接收管接的输出引脚的电压发生变化,通过采集这个电 压的变化情况来区分红外光点的位置情况,以达到区分赛道与底板的作用。 红外管的优点在于价格便宜,耐用;缺点却用很多:1、红外光线在自然环 境中,无论是室内还是室外均比较常见,就使得其抗干扰能力不强,容易受环境 变化的影响。2、调试不方面,由于红外光是不可见光,调试的时候需要采用比 较麻烦的方法来判断光电的位置。3、由于红外管光线的直线性不好,就使得红 外传感器所能准确的判断的最远距离比较小,也就是通常所说的前瞻不够远。

智能车电磁环境制作

第五届全国大学生智能汽车竞赛 20KHz 电源参考设计方案 (竞赛秘书处技术组版本1.0) 第五届全国大学“飞思卡尔杯”智能汽车竞赛新增加了“电磁组”。根据比赛技术要求,电磁组竞赛,需要选手设计的智能车能够检测到道路中心线下电线中20KHz交表电流产生的磁场来导引小车沿着道路行驶。在平时调试和比赛过程中需要能够满足比赛技术要求的20KHz的交流电源驱动赛道中心线下的线圈。本文档给出了电源设计参考方案,参赛队伍可以根据这些参考设计方案自行设计制作所使用电源。 一、 电源技术指标要求: 根据《竞赛比赛细则》附件三关于电磁组赛道说明,20KHz电源技术要求如下: 1、驱动赛道中心线下铺设的0.1-0.3mm直径的漆包线; 2、频率范围:20K±2K; 3、电流范围:50-150mA; 下图是赛道起跑区示意图,在中心线铺设有漆包线。 图1 竞赛跑道起跑区示意图

首先分析赛道铺设铜线的电抗,从而得到电源输出的电压范围。 我们按照普通的练习赛道总长度50,使用直径为0.2mm漆包线。在30摄氏度下,铜线的电阻率大约为 0.0185欧姆平方毫米/米。计算可以得到中心线的电阻大约为29.4欧姆。 按照导线电感量计算机公式: 4 2ln0.75() l L l nH d ?? =×? ?? ?? 。其中l, d的单位 均为cm。可以计算出直径为0.2mm,长度50米的铜线电感量为131微亨。对应20KHz下,感抗约为16.5欧姆。 可以看出,线圈的电感量小于其电阻值。由于导线的电感量与铺设的形状有关系,上述计算所得到的电感量不是准确数值。另外,我们可以在输出时串接电容来抵消电感的感抗。所以估算电源电压输出范围的时候,我们不再特别考虑线圈的电感对于电流的影响。 为了方便设计,我们设计电源输出电压波形为对称方波。由于线圈电感的影响,线圈中的电流为上升、下降沿缓变的方波波形。如下图所示 图2 线圈驱动电压与电流示意图 对于电阻为29.4欧姆的赛道导线,流过100mA的电流,电压峰值应该大于3V。考虑到赛道长度有可能进一步增加、漆包线的直径减少等原因,设计电源输出电压的峰值为6V。在输出电流为150mA的时候,电源输出功率大约为0.9W。 二、 电源组成 电源电路包括振荡电路、功率输出电路、恒流控制电路以及电源等组成。 如下图所示:

飞思卡尔智能车电机资料

3.1.6驱动电机介绍 驱动电机采用直流伺服电机,我们在此选用的是RS-380SH型号的伺服电机,这是因为直流伺服电机具有优良的速度控制性能,它输出较大的转矩,直接拖动负载运行,同时它又受控制信号的直接控制进行转速调节。在很多方面有优越性,具体来说,它具有以下优点: (1)具有较大的转矩,以克服传动装置的摩擦转矩和负载转矩。 (2)调速范围宽,高精度,机械特性及调节特性线性好,且运行速度平稳。 (3)具有快速响应能力,可以适应复杂的速度变化。 (4)电机的负载特性硬,有较大的过载能力,确保运行速度不受负载冲击的 影响。 (5)可以长时间地处于停转状态而不会烧毁电机,一般电机不能长时间运行于 停转状态,电机长时间停转时,稳定温升不超过允许值时输出的最大堵转转矩称为连续堵转转矩,相应的电枢电流为连续堵转电流。 图3.1为该伺服电机的结构图。图3.2是此伺服电机的性能曲线。 图3.1 伺服电机的结构图

图3.2 伺服电机的性能曲线 3.1.7 舵机介绍 舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置。一般舵机的控制要求如图3.3所示。图3.4为舵机的控制线。

飞思卡尔智能车竞赛光电组技术报告

第九届“飞思卡尔”杯全国大学生智能车竞赛光电组技术报告 学校:中北大学 伍名称:ARES 赛队员:贺彦兴 王志强 雷鸿 队教师:闫晓燕甄国涌

关于技术报告和研究论文使用授权的说明书本人完全了解第八届“飞思卡尔”杯全国大学生智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。 参赛队员签名: 带队教师签名: 日期:2014-09-15日

摘要 本文介绍了第九届“飞思卡尔杯全国大学生智能车大赛光电组中北大学参赛队伍整个系统核心采用飞思卡尔单片机MC9S12XS128MAA ,利用TSL1401线性CCD 对赛道的行扫描采集信息来引导智能小车的前进方向。机械系统设计包括前轮定位、方向转角调整,重心设计器件布局设计等。硬件系统设计包括线性CCD传感器安装调整,电机驱动电路,电源管理等模块的设计。软件上以经典的PID算法为主,辅以小规Bang-Bang 算法来控制智能车的转向和速度。在智能车系统设计开发过程中使用Altium Designer设计制作pcb电路板,CodeWarriorIDE作为软件开发平台,Nokia5110屏用来显示各实时参数信息并利用蓝牙通信模块和串口模块辅 助调试。关键字:智能车摄像头控制器算法。

目录 1绪论 (1) 1.1 竞赛背景 (1) 1.2国内外智能车辆发展状况 (1) 1.3 智能车大赛简介 (2) 1.4 第九届比赛规则简介 (2) 2智能车系统设计总述 (2) 2.1机械系统概述 (3) 2.2硬件系统概述 (5) 2.3软件系统概述 (6) 3智能车机械系统设计 (7) 3.1智能车的整体结构 (7) 3.2前轮定位 (7) 3.3智能车后轮减速齿轮机构调整 (8) 3.4传感器的安装 (8) 4智能车硬件系统设计 (8) 4.1XS128芯片介绍 (8) 4.2传感器板设计 (8) 4.2.1电磁传感器方案选择 (8) 4.2.2电源管理模 (9) 4.2.3电机驱动模块 (10) 4.2.4编码器 (11) 5智能车软件系统设 (11) 5.1程序概述 (11) 5.2采集传感器信息及处理 (11) 5.3计算赛道信息 (13) 5.4转向控制策略 (17) 5.5速度控制策略 (19) 6总结 (19)

电磁组智能车恒磁式20KHZ信号源设计导图

现在我们借助电磁组用的20KHZ的信号发生器看看能学到些什么。 信号发生器分三个部分组成,20K信号发生器、功率输出部分(功率输出可以采用多种方式,我们在这里只讨论用分立元件组成的H桥)、恒流源部分。20K信号的发生有多种方式,可以使用单片机也可以使用555还可以使用其他的振荡电路(教材上有详细的介绍)。下面我们主要讨论一下H桥和恒流控制。 这是一个H桥功率输出+恒流电路,现在我们把它拆分成两部分来看。首先是H桥的主体如下图所示。 这是上臂由PNP三极管和下臂由NPN三极管构成的H桥。其原理是在三极管工作在关闭和饱和两种状态的基础下,当控制Q1和Q4导通并且另外两只三极管截至的情况下电流会从负载(RL)的左侧流向右侧(红线方向);同理当Q2和Q3导通Q1和Q4截至的时候电流会从负载的右侧流向左侧(绿线方向)。 让NPN三极管工作在饱和的状态(当开关使)只要使其基极电流足够大就可以了(不可太大会烧坏管子的),当Vbe大于导通电压时集电极和发射极导通。一般NPN三极管当开关使的电路如下图所示。 与NPN三极管不同的是PNP三极管的Vbe为负压时(电流从发射极流向基极)发射极和集电极导通。一般PNP三极管当开关使的电路如下图所示。

通过观察这两个开关电路可以发现NPN三极管开关电路的负载比三极管更靠近电源正极,而PNP三极管开关电路的负载比三极管更靠近地。为什么要这么做呢,如果放反了会怎么样呢,以NPN三极管为例。 我们都知道NPN三极管正常工作时发射极电位是小于基极电位的,所以上图电路中的三极管是工作在放大状态下的。这个电路的好处在于基极电流很小(输入阻抗很大),基极电流近似等于(基极电压-导通电压)/负载电阻/β。在共集放大电路(在学习共集放大电路的时候不妨也顺便看看共基放大电路)和推挽电路中会看到它的身影。这个电路稍微改造一下就变成了一个最简单的(之一吧)恒流源。 流过负载电阻RL的电流近似恒定为(Vref-导通电压)/Rfb。那么这个电路是如何恒流的呢,反馈电阻Rfb(在这里就不叫负载电阻了)是关键。我们都知道在RL在一定范围内变化时(这点很重要,RL如果太大下文就不成立了)三极管的集电极电流=基极电流*β,集电极电流与RL无关,但是β会随着三极管工作产生的热量变化,所以β值的变化是恒流最大的敌人。好在这里有Rfb,当β增大时集电极电流增大即流过Rfb的电流就会增大所以导致三极管发射极电压升高,进而导致基极电流变小使集电极电流稳定下来。这就是所谓的负反馈。可以把这个电路抽象成一个串接在主回路上的可调电阻器。

飞思卡尔智能车电磁组程序员成长之路(未完待续)

飞思卡尔智能车电磁组程序员成长之路 1.飞思卡尔智能车小车入门 智能汽车电磁组简介: 第五届全国大学“飞思卡尔杯”智能汽车竞赛新增加了“电磁组”。根据比赛技术 要求,电磁组竞赛,需要选手设计的智能车能够检测到道路中心线下电线中20KHz 交 变电流产生的磁场来导引小车沿着道路行驶。在平时调试和比赛过程中需要能够满足比 赛技术要求的 20KHz 的交流电源驱动赛道中心线下的线圈。同时参赛选手需要自行设 计合适的电磁传感器来检测赛道信息完成智能寻迹功能。 智能车制作是一个涵盖电子、电气、机械、控制等多个领域和学科的科技创新活动。简单点来说可以将其分为硬件电路(包括电源、MUC 控制部分、电机驱动、传感器)、机械、算法三方面的设计。电磁组在机械方面可以参照光电组的设计方案,这里不再赘述。本设计指导只讲述20KHZ 电源、电磁传感器设计方案以及部分算法。 智能车对单片机模块需求: 飞思卡尔单片机资源:

智能车涉及到IO模块,中断模块,PWM模块,DMA模块,AD模块等。在车模调试中还有必须的模块。如SCI模块、定时器模块,SPI模块等。其中还涉及到一些算法和数据的存储和搬移。一个好程序框架对智能车的制作过程中会达到事半功倍的效果。但是就智能车这样系统来说,如果完全专门移植一个操作系统或者写一个程序的bootload,感觉有一些本末倒置,如果有成熟的,可以借用的,那样会比较好。 2.电磁传感器的使用 20KHz电源参考设计方案: 电源技术指标要求: 根据官网关于电磁组赛道说明,20KHz 电源技术要求如下: 1.驱动赛道中心线下铺设的 0.1-0.3mm 直径的漆包线; 2.频率围:20K±2K; 3.电流围:50-150mA; 图 2.1 是赛道起跑区示意图,在中心 线铺设有漆包线。 首先分析赛道铺设铜线的电抗,从而得 到电源输出的电压围。我们按照普通的练习 赛道总长度 50m,使用直径 0.2mm 漆包线。在30 摄氏度下,铜线的电阻率大约为 0.0185 欧姆平方毫米/米。计算可以得到中心线的电阻大约为 29.4 欧姆。 按照导线电感量计算机公式: 其中 l, d 的单位均为 cm。可以计算出直径为 0.2mm,长度 50 米的铜线电感量为131 微亨。对应 20KHz 下,感抗约为 16.5 欧姆。

第五届飞思卡尔智能车大赛华中科技大学电磁组技术报告

第五届飞思卡尔杯全国大学生 智能汽车竞赛 技 术 报 告 学校:华中科技大学 队伍名称:华中科技大学五队 参赛队员:方华启 张江汉 诸金良 带队教师:何顶新 罗惠

关于技术报告和研究论文使用授权的说明 本人完全了解第五届全国大学生“飞思卡尔”杯智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。 参赛队员签名: 带队教师签名: 日期:

目录 第1章引言 (1) 1.1 概述 (1) 1.2 全文安排 (2) 第2章电路设计 (3) 2.1 电路系统框图 (3) 2.2 电源部分 (4) 2.3 电机驱动部分 (5) 2.4 电磁传感器 (6) 第3章机械设计 (8) 3.1 车体结构和主要参数及其调整 (8) 3.2 舵机的固定 (10) 3.3 传感器的固定 (11) 3.4 编码器的固定 (11) 第4章软件设计 (12) 4.1 程序整体框架 (12) 4.2 前台系统 (13) 4.3 后台系统 (13) 4.4 软件详细设计 (14) 第5章调试 (15) 第6章全文总结 (16) 6.1 智能车主要技术参数 (16) 6.2 不足与改进 (16) 6.3 致谢与总结 (17) I

参考文献 (18) 附录A 源代码 (18) II

第1章引言 第1章引言 教育部为了加强大学生实践、创新能力和团队精神的培养,在已举办全国大学生数学建模、电子设计、机械设计、结构设计等4大竞赛的基础上,委托教育部高等学校自动化专业教学指导分委员会主办每年一度的全国大学生智能汽车竞赛(教高司函[2005]201号文)[1]。 为响应教育部的号召,本校积极组队参加第五届“飞思卡尔”杯全国大学生智能汽车竞赛。从2009 年12 月开始着手进行准备,历时近8 个月,经过设计理念的不断进步,制作精度的不断提高,经历 2 代智能车硬件平台及相关算法的改进,最终设计出一套完整的智能车开发、调试平台。作为电磁组的华中科技大学五队采用轻质量机械设计、大前瞻传感器和连续化算法处理的基本技术路线,在前瞻距离、噪声抑制、驱动优化、整车布局等方面加强研究创新,在有限计算能力下获得了较高的赛道信息准确率。使智能车能够满足高速运行下的动力性和稳定性需求,获得了良好的综合性能和赛场表现。 本文将对智能车的总体设计和各部分的详细设计进行一一介绍。 1.1 概述 1.1.1 电路设计 飞思卡尔电磁组智能汽车硬件主要分为主控板,传感器板。本车在主控板上主要特色为电机使用H桥驱动,从性能和扩展性上优于集成驱动器方案。传感器板设计着重考虑提高传感器的前瞻量和信号的抗干扰能力。 1.1.2 机械设计 机械方面,主要是对舵机的安装进行了研究,加长了舵机的连杆,以增加反应速度。另外,主要研究车差速性能的研究以及传感器支架的固定。 1.1.3 控制程序设计 一方面使用免费的μCOS操作系统,这给智能车的整体调试提供了很多方便;另一方面,在大前瞻传感器的基础上设计出合理的舵机、电机控制算法,在满足稳定性要求的基础上提高速度。 1

飞思卡尔智能车比赛电磁组路径检测设计方案

飞思卡尔智能车比赛电磁组路径检测设计方案电磁组竞赛车模 路径检测设计参考方案 (竞赛秘书处 2010-1,版本 1.0) 一、前言 第五届全国大学生智能汽车竞赛新增加了电磁组比赛。竞赛车模需要能够通 过自动识别赛道中心线位置处由通有 100mA 交变电流的导线所产生的电磁场进行路径检测。除此之外在赛道的起跑线处还有永磁铁标志起跑线的位置。具体要求请参阅《第五届智能汽车竞赛细则》技术文档。 本文给出了一种简便的交变磁场的检测方案,目的是使得部分初次参加比赛 的队伍能够尽快有一个设计方案,开始制作和调试自己的车模。本方案通过微型车模实际运行,证明了它的可行性。微型车模运行录像参见竞赛网站上视频文件。 二、设计原理 1、导线周围的电磁场 根据麦克斯韦电磁场理论,交变电流会在周围产生交变的电磁场。智能汽车 竞赛使用路径导航的交流电流频率为 20kHz,产生的电磁波属于甚低频(VLF) 电磁波。甚低频频率范围处于工频和低频电磁破中间,为 3kHz,30kHz,波长为 100km,10km。如下图所示: 图 1:电流周围的电磁场示意图

导线周围的电场和磁场,按照一定规律分布。通过检测相应的电磁场的强度 和方向可以反过来获得距离导线的空间位置,这正是我们进行电磁导航的目的。 由于赛道导航电线和小车尺寸 l 远远小于电磁波的波长,,电磁场辐射能量很小(如果天线的长度 l 远小于电磁波长,在施加交变电压后,电磁波辐射功率正比于天线长度的四次方),所以能够感应到电磁波的能量非常小。为此,我们将导线周围变化的磁场近似缓变的磁场,按照检测静态磁场的方法获取导线周围的磁场分布,从而进行位置检测。 由毕奥-萨伐尔定律知:通有稳恒电流 I 长度为 L 的直导线周围会产生磁场,距离导线距离为 r 处 P 点的磁感应强度为: 图 2 sin直线电流的磁场 , d, ,(0 , 4 10, 7 TmA 1 ) B , ,, cos,1 2 ,。 (1) ,1 4 r 由此得: B , cos, 4 r 4 r

飞思卡尔智能车比赛个人经验总结

先静下心来看几篇技术报告,可以是几个人一起看,边看边讨论,大致了解智能车制作的过程及所要完成的任务。 看完报告之后,对智能车也有了大概的了解,其实总结起来,要完成的任务也很简单,即输入模块——控制——输出。 (1)输入模块:各种传感器(光电,电磁,摄像头),原理不同,但功能都一样,都是用来采集赛道的信息。这里面就包含各种传感器的原理,选用,传感器电路的连接,还有传感器的安装、传感器的抗干扰等等需要大家去解决的问题。 (2)控制模块:传感器得到了我们想要的信息,进行相应的AD转换后,就把它输入到单片机中,单片机负责对信息的处理,如除噪,筛选合适的点等等,然后对不同的赛道信息做出相应的控制,这也是智能车制作过程中最为艰难的过程,要想出一个可行而又高效的算法,确实不是一件容易的事。这里面就涉及到单片机的知识、C语言知识和一定的控制算法,有时为了更直观地动态控制,还得加入串口发送和接收程序等等。 (3)输出模块:好的算法,只有通过实验证明才能算是真正的好算法。经过分析控制,单片机做出了相应的判断,就得把控制信号输出给电机(控制速度)和舵机(控制方向),所以就得对电机和舵机模块进行学习和掌握,还有实现精确有效地控制,又得加入闭环控制,PID算法。 明确了任务后,也有了较为清晰的控制思路,接下来就着手弄懂每一个模块。虽然看似简单,但实现起来非常得不容易,这里面要求掌握电路的知识,基本的机械硬件结构知识和单片机、编程等计算机知识。最最困难的是,在做的过程中会遇到很多想得到以及想不到的事情发生,一定得细心地发现问题,并想办法解决这些问题。 兴趣是首要的,除此之外,一定要花充足的时间和精力在上面,毕竟,有付出就会有收获,最后要明确分工和规划好进度。

飞思卡尔智能车设计报告

飞思卡尔智能车设计报告

目录 1.摘要 (3) 2.关键字 (3) 3.系统整体功能模块 (3) 4.电源模块设计 (4) 5.驱动电路设计 (4) 6.干簧管设计 (5) 7.传感器模块设计 (6) 8.传感器布局 (6) 9.软件设计 (7) 9.1控制算法 (7) 9.2软件系统实现(流程图) (10) 10.总结 (11) 11.参考文献 (12)

1.摘要 “飞思卡尔”杯全国大学生智能汽车竞赛是由教育部高等自动化专业教学指导分委员会主办的一项以智能汽车为研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一。该竞赛以“立足培养,重在参与,鼓励探索,追求卓越”为指导思想,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神,为优秀人才的脱颖而出创造条件。该竞赛以汽车电子为背景,涵盖自动控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科的科技创意性比赛。 本文介绍了飞思卡尔电磁组智能车系统。本智能车系统是以飞思卡尔32 位单片机K60为核心,用电感检测赛道导线激发的电磁信号, AD 采样获得当前传感器在赛道上的位置信息,通过控制舵机来改变车的转向,用增量式PID进行电机控制,用编码器来检测小车的速度,共同完成智能车的控制。 2.关键字 电磁、k60、AD、PID、电机、舵机 3.系统整体功能模块 系统整体功能结构图

4.电源模块设计 电源是一个系统正常工作的基础,电源模块为系统其他各个模块提供所需要的能源保证,因此电源模块的设计至关重要。模型车系统中接受供电的部分包括:传感器模块、单片机模块、电机驱动模块、伺服电机模块等。设计中,除了需要考虑电压范围和电流容量等基本参数外,还要在电源转换效率、噪声、干扰和电路简单等方面进行优化。可靠的电源方案是整个硬件电路稳定可靠运行的基础。 全部硬件电路的电源由7.2V,2A/h的可充电镍镉电池提供。由于电路中的不同电路模块所需要的工作电流容量各不相同,因此电源模块应该包含多个稳压电路,将充电电池电压转换成各个模块所需要的电压。 电源模块由若干相互独立的稳压电源电路组成。在本系统中,除了电机驱动模块的电源是直接取自电池外,其余各模块的工作电压都需要经电源管理芯片来实现。 由于智能车使用7.2V镍镉电池供电,在小车行进过程中电池电压会有所下降,故使用低压差电源管理芯片LM2940。LM2940是一款低压稳压芯片,能提供5V的固定电压输出。LM2940低压差稳压芯片克服了早期稳压芯片的缺点。与其它的稳压芯片一样,LM2940需要外接一个输出电容来保持输出的稳定性。出于稳定性考虑,需要在稳压输出端和地之间接一个47uF低等效电阻的电容器。 舵机的工作电压是6伏,采用的是LM7806。 K60单片机和5110液晶显示器需要3.3伏供电,采用的是LM1117。 5.驱动电路设计 驱动电路采用英飞凌的BTS7960,通态电阻只有16mΩ,驱动电流可达43A,具有过压、过流、过温保护功能,输入PWM频率可达到25KHz,电源电压5.5V--27.5V。BTS7960是半桥驱动,实际使用中要求电机可以正反转,故使用两片接成全桥驱动。如图下图所示。

电磁组智能车全国一等奖代码

void main(void) { while(1) { AD_GetValue(); //获得传感器AD值Cal_PostitionA(); //获得? if(SenA!=50) { Delayms(500); break; } Delayms(50); SenA=50; } #include /* common defines and macros */ #include "derivative.h" /* derivative-specific definitions*/ #define SERVO_MIDDLE_V ALUE 1184 舵机中值 #define SERVO_RANGE 180 舵机转动范围 void Set_PWM(uint PWM1,uint PWM2) { PWMDTY1=PWM1; PWMDTY0=PWM2; } void Set_Servo(uchar value) //舵机 { uint i; if(value>100||value<0) value=last_value; 保持上一次状态 last_value=value; if(value<=50) i=SERVO_MIDDLE_V ALUE-(50-value)*18/5; if(value>50) i=SERVO_MIDDLE_V ALUE+(value-50)*18/5; PWMDTY23=i; } void Pwm_Init(void) //PWM初始化 { PWME=0X00; //禁止PWM输出 PWMCTL_CON23=1; //2和3联合成16位PWM,并且2的寄存器为级联后寄存器

(毕业设计)飞思卡尔智能车及机器视觉

图像处理在智能车路径识别中的应用 摘要 机器视觉技术在智能车中得到了广泛的应用,这项技术在智能车的路径识别、障碍物判断中起着重要作用。基于此,依据飞思卡尔小车的硬件架构,研究机器视觉技术应用于飞思卡尔小车。飞思卡尔智能车处理器采用了MC9S12XS128芯片,路况采集使用的是数字摄像头OV7620。 由于飞思卡尔智能车是是一款竞速小车,因此图像采集和处理要协调准确性和快速性,需要找到其中的最优控制。因此本设计主要需要完成的任务是:怎样用摄像头准确的采集每一场的图像,然后怎样进行二值化处理;以及怎样对图像进行去噪处理;最后也就是本设计的难点也是设计的核心,怎样对小车的轨迹进行补线。 本设计的先进性,在众多的图像处理技术中找到了适合飞思卡尔智能车的图像处理方法。充分发挥了摄像头的有点。经过小车的实际测试以及相关的MATLAB 仿真,最终相关设计内容都基本满足要求。小车的稳定性和快速性得到显著提高。 关键词:OV7620,视频采集,图像处理,二值化

The Application of Image Processing in the Recognition of Intelligent Vehicle Path ABSTRACT CameraMachine vision technology in the smart car in a wide range of applications, the technology identified in the path of the smart car, and plays an important role in the obstacles to judge. Based on this, based on the architecture of the Freescale car, machine vision technology used in the Freescale car. Freescale smart car the processor MC9S12XS128 chip traffic collected using a digital camera OV7620. Freescale's Smart car is a racing car, so the image acquisition and processing to coordinate the accuracy and fast, you need to find the optimal control. This design need to complete the task: how to use the camera to accurately capture every image, and then how to binarization processing; and how to image denoising; last is the difficulty of this design is the design of the core, how to fill line on the trajectory of the car. The advanced nature of the design found in many image processing techniques of image processing methods for Freescale Smart Car. Give full play to the camera a bit. The actual testing of the car and MATLAB simulation, the final design content can basically meet the requirements. The car's stability and fast to get improved significantly. KEY WORDS:OV7620,Video Capture,PictureProcessing,Binarization

飞思卡尔智能车程序

Main.c #include /* common defines and macros */ #include /* derivative information */ #pragma LINK_INFO DERIVATIVE "mc9s12db128b" #include "define.h" #include "init.h" // variable used in video process volatile unsigned char image_data[ROW_MAX][LINE_MAX] ; // data array of picture unsigned char black_x[ROW_MAX] ; // 0ne-dimensional array unsigned char row ; // x-position of the array unsigned char line ; // y-position of the array unsigned int row_count ; // row counter unsigned char line_sample ; // used to counter in AD unsigned char row_image ; unsigned char line_temp ; // temperary variable used in data transfer unsigned char sample_data[LINE_MAX] ; // used to save one-dimension array got in interruption // variables below are used in speed measure Unsigned char pulse[5] ; // used to save data in PA process Unsigned char counter; // temporary counter in Speed detect Unsigned char cur_speed; // current speed short stand; short data; unsigned char curve ; // valve used to decide straight or turn short Bounds(short data); short FuzzyLogic(short stand); /*----------------------------------------------------------------------------*\ receive_sci \*----------------------------------------------------------------------------*/ unsigned char receive_sci(void) // receive data through sci { unsigned char sci_data; while(SCI0SR1_RDRF!=1); sci_data=SCI0DRL; return sci_data; } /*----------------------------------------------------------------------------*\ transmit_sci \*----------------------------------------------------------------------------*/ void transmit_sci(unsigned char transmit_data) // send data through sci { while(SCI0SR1_TC!=1); while(SCI0SR1_TDRE!=1);

飞思卡尔智能车竞赛摄像头组——技术报告 精品

"飞思卡尔"杯全国大学生智能汽车竞赛 技术报告

关于技术报告和研究论文使用授权的说明 本人完全了解第八届"飞思卡尔"杯全国大学生智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。 参赛队员签名:孟泽民 章志诚 徐晋鸿 带队教师签名:陈朋 朱威 日期:2013.8.15

摘要 本文设计的智能车系统以MK60N512ZVLQ10微控制器为核心控制单元,通过Ov7620数字摄像头检测赛道信息,使用K60的DMA模块采集图像,采用动态阈值算法对图像进行二值化,提取黑色引导线,用于赛道识别;通过编码器检测模型车的实时速度,使用PID 控制算法调节驱动电机的转速和转向舵机的角度,实现了对模型车运动速度和运动方向的闭环控制。为了提高模型车的速度并让其更稳定,我们使用自主编写的Labview上位机、SD卡模块、无线模块等调试工具,进行了大量硬件与软件测试。实验结果表明,该系统设计方案可行。 关键词:MK60N512VMD100,Ov7620,DMA,PID,Labview,SD卡

Abstract In this paper we will design a smart car system based on MK60N512ZVLQ10 as the micro-controller unit. We use a Ov7620 digital image camera to obtain lane image information. The MCU gets the image by its DMA module. Then convert the original image into the binary image by using dynamic threshold algorithm in order to extract black guide line for track identification. An inferred sensor is used to measure the car`s moving speed. We use PID control method to adjust the rotate speed of driving electromotor and direction of steering electromotor,to achieve the closed-loop control for the speed and direction. To increase the speed of the car and make it more reliable,a great number of the hardware and software tests are carried on and the advantages and disadvantages of the different schemes are compared by using the Labview simulation platform designed by ourselves,the SD card module and the wireless module. The results indicate that our design scheme of the smart car system is feasible. Keywords: MK60N512VMD100,DMA,Ov7620,PID,Labview,SD card

相关文档
最新文档