当前位置:文档之家› 循迹小车报告

循迹小车报告

南京工程学院工程基础实验与训练中心本科课程设计说明书(论文)题目:自动循迹小车专业:自动化(系统集成)班级: D自集成092学号:233090242、233090218、233090211学生姓名:刘海军、裴阿芹、吴娟指导教师:曾宪阳起迄日期: 2011.6.13 ---2011.7.8设计地点:基础实验楼B206目录摘要(中文) (3)摘要(外文) (4)一、系统方案1、课设要求 (5)1.1、基本功能 (5)1.2、发挥部分 (5)2、总体设计 (5)3、模块方案比较与论证 (6)3.1、电源模块 (6)3.2、电机驱动模块 (7)3.3、传感器模快 (8)3.4、显示模块 (9)3.5、测速模块 (10)4、总原理图 (11)二、循迹小车硬件设计 (11)1、机械设计 (11)2、小车各模块分布 (13)3、小车传感器位置排布 (13)三、循迹小车软件设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131、循迹小车主函数流程图 (13)2、计算路程模块流程图 (14)3、循迹模块流程图 (15)四、程序 (15)五、开发总结与心得. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..251、总体方案论证和确立 (25)2、各分立模块的制作调试 (25)3、总车的装配调试 (25)4、总结与展望. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..25六、参考文献. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..26课程设计说明书(论文)中文摘要摘要:该小车是以STC89C52RC单片机为核心。

在机械结构上,采用两个减速电动机,利用H桥电机驱动电路作为驱动源,循迹电路采用RPR220型光电对管,液晶显示采用LCD1602液晶显示屏。

在软件上,我们利用合适的算法,可以实现自动循迹,显示时间、路程及速度。

基于可靠的硬件设计和稳定的软件算法。

关键词:STC89C52RC单片机、H桥电机驱动电路、RPR220型光电对管、LCD1602液晶显示屏课程设计说明书(论文)外文摘要Title:Automatic tracking carAbstract:The car is based on STC89C52RC MCU as the core. In the mechanical structure, adopts two motors slowdown, the use of H bridge motor driver circuit as a drive source tracking circuit uses RPR220 type photoelectric tube, liquid crystal display using liquid crystal display LCD1602. In software, we use the appropriate algorithm, can achieve automatic tracking, time, distance and speed. Hardware design based on a reliable and stable software algorithm.Keywords:STC89C52RC microcontroller、H bridge motor driver circuit,、RPR220 type photoelectric tube、LCD1602 LCD screen一、系统方案1、课设要求:1.1、完成基本设计功能:1)、车辆从起跑线出发开始计时(出发前,车体不得超出起跑线),能到达终点线并且停止在终点线。

全程行驶时间应力求最短(从合上小车电源开关开始计时)。

2)、到达终点线小车停止后,停车位置离终点线偏差应最小(以小车中心点与终点线之间距离作为偏差的测量值)。

3)、在行驶过程中小车检测到加速线后开始加速并发出声光报警信号,检测到减速线后开始减速并发出声光报警信号。

1.2、发挥部分1)、从起跑线开始计时,自动记录、时时显示全程行驶时间(记录显示装置要求安装在小车上),误差尽可能小。

2)、从起跑线开始,自动记录、时时显示行驶距离X3(记录显示装置要求安装在车上),误差尽可能小。

3)、从起跑线开始,自动记录、显示加速线1、减速线2离起跑线的距离X1,X2,误差尽可能小。

4)、其它特色与创新。

2、总体设计对设计要求就行分析,设计主要有以下几个模块组成:1)、信息采集模块:信息采集部分是光电检测,光电检测有寻迹检测和测速检测两个部分。

将检测到的信号送给单片机处理,其核心部分是几个光电传感器。

2)、控制处理模块:控制处理模块是一一片stc89c52单片机为核心,单片机将从采集到的信息进行判断后,按照预定的算法处理,把处理的结果送交电机驱动和液晶显示模块,使之做出相应的动作。

3)、执行模块:执行模块是由液晶显示、电机驱动及电机、蜂鸣器三部分组成。

液晶主要是将单片机处理的结果进行实时显示,方便及时用户了解系统当前的状态,电机驱动根据单片机的指令对两个电机进行动作,使之能够根据需要作出相应的加速、减速、转弯、停车等的动作,以达到预期的目的。

蜂鸣器主要是根据要求在特定的位置作出出响应来报告位置。

框图如下:3、模块方案比较与论证3.1、电源模块:方案一:将220V交流电进行整流、滤波、稳压(采用7805稳压管)使输出值为5V。

但是这种方案,需要很长的电线,运动起来很不方便,而且危险系数微高,但是输出比较稳定。

方案二:采用12V蓄电池为直流电机供电,用7805将12V电压降压、稳压后得单片机系统和其他芯片供电。

蓄电池具有较强的电流驱动能力以及稳压的电压输出性能。

虽然蓄电池的体积过于庞大,在小型电动车上使用极为不方便,但由于我们的车体设计时留出了足够的空间,并且蓄电池的价格比较低。

经过比较,我们采用方案一原理图:实物图:3.2、电机驱动模块:方案一:采用专用芯片L298N作为电机驱动芯片。

L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率高,一片L298N可以分别控制两个直流电机,而且还带有控制使能端。

用该芯片作为电机驱动,操作方便,稳定性好,性能优良。

方案二:H桥。

对于直流电机用分立元件构成驱动电路由分立元件构成电机驱动电路,结构简单,价格低廉。

综上所述,根据条件限制,我们选择方案二原理图:实物图:3.3、传感器模块:方案一:用光敏电阻组成光敏探测器。

光敏电阻的阻值可以跟随周围环境光线的变化而变化。

当光线照射到白线上面时,光线发射强烈,光线照射到黑线上面时,光线发射较弱。

因此光敏电阻在白线和黑线上方时,阻值会发生明显的变化。

将阻值的变化值经过比较器就可以输出高低电平。

但是这种方案受光照影响很大,不能够稳定的工作。

方案二:用RPR220型光电对管,RPR220是一种一体化反射型光电探测器,其发射器是一个砷化镓红外发光二极管,而接受器是一个高灵敏度,硅平面光电三极管。

RPR220特点:(1)、塑料透镜可以提高灵敏度(2)、内置可见光过滤器能减小离散光的影响(3)、体积小,结构紧凑当发光二极管发出的光反射回来时,三极管导通输出低电平。

此光电对管调理电路简单,工作性能稳定。

综上所述,我们选择方案二原理图:实物图:3.4、显示模块:方案一:LED数码管显示数码管显示具有亮度高,色彩选择多的优点,但是数码管占用I/O资源多,控制复杂,功耗较大,显示信息量较少且单一。

方案二:LCD1602液晶显示液晶显示驱动简单,易于控制,功耗小,且显示信息量大,可以直观地观测到小车的位置及速度信息。

综合考虑,决定用1602液晶显示作为本次设计的显示模块原理图:实物图:3.5、测速模块测速是用光电反射管接收发射信号进行计算的,在车轮内加入黑白相间的码盘,将车轮一周分为4分进行计算,这样便提高了测速和计程的精度。

测速码盘随车轮转动,每转一圈,传感器将能采集到四次信息,送给单片机进行处理计算。

测速码盘如右图:实物图:4、总电机原理图二、循迹小车硬件设计1、机械设计小车机械部分设计有以下几个要求:符合机械力学性能,能够很好地完成各机械动作;易于组装拆卸以便于维护维修;方便扩展布局,面向以后学习研究的扩展开发;总体布局有一定的电气隔离性能,尽量减少互相干扰;美观大方。

单片机最小系统 电机驱动 电源模块 循 迹 模 块 测速模块 LCD 液晶显 示2、小车各模块分布小车的总体布局应以尽量减少互相干扰为原则,兼顾美观整齐。

基于这两点,通过调试,在小车底板下面只安放了两个减速电机,防止电机磁对电气信号的干扰。

车头部分放置传感器模块,这样和别的电流通路基本隔离,有利于信号的稳定。

单片机置于车的中央且用铜柱将其支起来,于电机、电源等干扰源远离,很好地保证单片机的稳定可靠地运行。

总体布局图如上所示。

3、小车传感器位置排布小车循迹的保证是传感器反映回正确的信息,所以传感器的合理排布是小车能够圆满完成任务的基本保证,经过反复的调试和实验,得出的最佳传感器分布图如上图中所示。

车头部分的三个传感器主要用于循迹检测,中间的传感器主要用于直道姿态的调整。

其两侧的另外两个主要用于采集弯道信息,车身两侧的传感器主要用于较大偏差的纠正。

另外还在小车车轮的内侧还有一个传感器用于小车的测速以及计程。

三、循迹小车软件设计软件编程是循迹小车的灵魂,小车精确地循迹基于合理的编程算法,为了便于调试结构明朗,小车的软件编程分为主函数、检测循迹函数和控制函数。

其中,主函数合理地分配调用各个模块函数,主要负责各模块间的总体协调。

循迹检测函数负责稳定地判定各种信息,将信息值返回,以便主函数或别的函数调用处理。

控制函数主要负责小车的状态控制,根据传感器返回的信息准确地判定小车所处的位置,并做出相应的响应。

其中控制函数中包含了各种算法以实现系统控制的稳定性。

由于控制的数学模型不易建立。

所有的函数算法均是经过无数次的调试而一步步的写出来的。

在此处也不好给出具体的数学模型来阐述,函数的设计流程如下图:1、循迹小车主函数流程图2、计算路程模块流程图3、循迹模块流程图四、程序#include<reg52.h>#define uchar unsigned char #define uint unsigned int #define LCD1602_IO P2uint x,y;uchar f;sbit zuo1=P0^0;sbit zuo2=P0^1;sbit you1=P0^2;sbit you2=P0^3;sbit RS=P1^2;sbit RW=P1^1;sbit E=P1^0;sbit P32=P3^2;uint a,S,d,v;uchar s_2,s_0,s_1;uchar W,h,i,v1,v2,v3;uchar q=0,p=0;void right();void left();void straight();void init_t();void delay_ms(uint t);void xianshi(void);void wr1602_com(uchar com); void wr1602_dat(uchar dat); void init_1602(void);void straight() /*直走*/{zuo1=0;zuo2=1;you1=0;you2=1;i=0x05;}void stop() /*停止*/{if(q>=2){EA=0;zuo1=1;zuo2=1;you1=1;you2=1;}}void right() /*右走*/{you1=1;you2=0;zuo1=0;zuo2=1;i=0x03;}void left() /*左走*/ {zuo1=1;zuo2=0;you1=0;you2=1;i=0x06;}void shudu() /*速度计算*/ {if(0<q<2){v=S/a;if(v<99){v2=S/10;v1=S%10;}else{v3=S/100;v2=(S/10)%10;v1=S%10;}}}void zijia(){hile((P1|(0xc7))==B11000111);delay_ms(1);if((P1|(0xc7))!=B11000111){q++;stop();}}void xunji() /*循迹*/{x=P1|(0xc7);switch(x){case B11110111:left();break;case B11100111:left();break;case B11011111:right();break;case B11001111:right() ;break;case B11101111:straight() ;break; case B11000111:zijia();break;case B11111111:switch(f){case 0x06: left() ;break;case 0x03: right() ;break;case 0x05: straight();break; }break;default: ;break;}}void delay_ms(uint t){uchar x,y;for(t;t>0;t--){for(x=0;x<114;x++){for(y=0;y<1;y++);}}}void init_t(void) /*初始化状态*/ {TMOD|=0X11;TR1=1;ET1=1;TH1=(65535-50000)/256;TL1=(65535-50000)%256;TH0=(65536-1000)/256;TL0=(65536-1000)%256;EA=1;ET0=1;TR0=1;PT0=1;EX0=1;IT0=1;}void tim_1()interrupt 3/*T0定时时间*/{d++;TH1=(65535-50000)/256;TL1=(65535-50000)%256;if(d==20){if(0<q<2){a++;if(a<99){s_1=a/10;s_0=a%10;}else{s_2=a/100;s_1=(a/10)%10;s_0=a%10;}}d=0;}}void int_0()interrupt 0/*外中断INT_0路程计算*/ {delay_ms(10);if(P32==0){if((P1|(0xc7))==B11101111)x=P1|(0xc7);if(0<q<2){p++;S=p*3;if(S<99){W=S/10;h=S%10;}else{i=S/100;W=(S/10)%10;h=S%10;}}}}}void wr1602_com(uchar com) /*液晶显示*/ {E=0;LCD1602_IO=com;RS=0;RW=0;E=1;delay_ms(1);E=0;delay_ms(1);}void wr1602_dat(uchar dat)/*液晶显示*/E=0;LCD1602_IO=dat;RS=1;RW=0;E=1;delay_ms(1);E=0;delay_ms(1);}void init_1602(void) /*液晶显示初始化*/ {delay_ms(15);wr1602_com(0x38);wr1602_com(0x38);wr1602_com(0x0c);wr1602_com(0x06);wr1602_com(0x0c);wr1602_com(0x01);wr1602_com(0x80);}void xianshi(void) /*液晶显示模块*/{if(0<q<2){wr1602_com(0x80);wr1602_dat('T');wr1602_dat(':');wr1602_dat('0'+s_2);wr1602_dat('0'+s_1);wr1602_dat('0'+s_0);wr1602_dat('s');wr1602_com(0x89);wr1602_dat('L' );wr1602_dat(':');wr1602_dat('0'+i );wr1602_dat('.' );wr1602_dat('0'+W );wr1602_dat('0'+h );wr1602_dat('m' );wr1602_com(0xc0);wr1602_dat('V' );wr1602_dat(':');wr1602_dat('0'+v3 );wr1602_dat('.' );wr1602_dat('0'+v2 );wr1602_dat('0'+v1 );wr1602_dat('m' );wr1602_dat('/' );wr1602_dat('s');}else{EA=0;wr1602_com(0x80);wr1602_dat('T');wr1602_dat(':');wr1602_dat('0'+s_2); wr1602_dat('0'+s_1); wr1602_dat('0'+s_0); wr1602_dat('s');wr1602_com(0x89);wr1602_dat('L' ); wr1602_dat(':');wr1602_dat('0'+i ); wr1602_dat('.' );wr1602_dat('0'+W );wr1602_dat('0'+h );wr1602_dat('m' );wr1602_com(0xc0);wr1602_dat('V' );wr1602_dat(':');wr1602_dat('0'+v3 );wr1602_dat('.' );wr1602_dat('0'+v2 );wr1602_dat('0'+v1 );wr1602_dat('m' );wr1602_dat('/' );wr1602_dat('s');}}void tim_0()interrupt 1 /*T0进行循迹*/ {TR0=0;TH0=(65536-1000)/256;TL0=(65536-1000)%256;xunji();TR0=1;}void main( ) /*主程序*/{init_1602();wr1602_com(0x80);init_t();while(1){shudu();xianshi();}}五、开发总结与心得在整个设计过程中,我们按照总——分——总的总体思想来展开的,整个开发过程主要分为以下几个阶段进行。

相关主题