《单片机的智能循迹小车设计说明.doc》由会员分享,可在线阅读,更多相关《单片机的智能循迹小车设计说明.doc(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、. . . . *参赛学校:*参赛队号:*参赛题目:(A题)智能小车控制参赛学生:*指导教师:*参赛日期: 2011.7.182011.7.22 智能小车控制摘要智能作为现代的新发明,是以后的发展方向,它可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等用途。我们通过软件编程实现它的行进、绕障、停止的精确控制以与遇障次数的显示,并再次寻找到原来的轨道。一、功能说明1、基本功能:小车能够在设计的线路上完成寻迹功能;2、拓展功能:在循迹线路上设置障碍物,小车遇到障碍物能够自动绕道行驶,完成避障功能;二、方案论证方案一:以AT89S51单片机为核心的控制电路,采用模块
2、化的设计方案,运用传感器检测电路,实现小车在行驶中自动寻迹、躲避障碍物的功能。并将循迹过程中遇障次数等数据传至单片机进行处理,然后由单片机根据所检测数据实现对电动小车的智能化控制。方案二:采用各类数字电路来组成电动小车的控制系统。采用数字电路对外围探测轨迹信号,避障信号进行处理。但对输入输出都是模拟量的小装置,如果采用数字化方案,则要先用A/D转换器和D/A转换器实现数字量与模拟量之间的转换。这样必然带来高成本、电路复杂等缺点。因此,本方案灵活性不高,效率低,不利于电动小车智能化的扩展。同时,对各路信号处理也比较困难。比较以上两种方案的优缺点,方案一简洁、灵活、可扩展性好,能达到设计要求,因此
3、本设计采用方案一来实现。三、各模块设计电路分为电源模块、单片机系统模块、电机驱动板、寻迹模块、避障模块。智能小车运行基本原理框图见图1。显示模块电机驱动模块 AT89S51单片机避障模块探测轨迹模块电源模块图11、电源模块首先我们想到的是稳压电源供电,稳压电源供电稳定方便调试,但是稳压电源体积大,只适合调试阶段的使用。其次就是干电池供电,相对于稳压电源来说体积小,电压也比较稳定,方便小车移动,所以我们采用4节1.5V干电池供电,电压达到6V左右给直流电机供电,然后用7805降压、稳压后给单片机系统供电。2、单片机系统模块本系统采用AT89S51单片机作为中央处理器。其主要任务是在小车行走过程中
4、不断读取传感器采集到的数据,将得到的数据进行处理后,来控制小车行走,同时将相关数据送显示单元动态显示。单片机是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口电路、定时/计数器以与输入输出适配器都集成在一块芯片上,构成一个完整的微型计算机。它的优点是体积小,可放在仪表部,且单片机部有可以多次重复编程的闪烁ROM,并且闪烁ROM可以直接用编程器来擦写,使用起来比较方便。在本系统中,AT89S51单片机的P0口用于数码显示,P2.4P2.5 P2.6 P2.7口用于电动机的PWM驱动控制,P1.0 P1.1 P1.2口用于探测轨迹,P3.2 P3.3口用于探测障碍物, P2.1
5、P2.2 P2.3用于LED提示,P2.0用于倒车显示和蜂鸣器报警。3、探测轨迹模块为了保证小车沿黑线行驶,采用了两个检测器并行排列,左右方向都可以进行控制,控制精度得以提高。在小车行走过程中,结合查询方式,通过程序控制小车行走轨迹。如果左方向偏离黑线,则右侧的探头就会检测到黑线,把信号传送到单片机,进行处理校正。控制其向右转;如果右方向偏离黑线,则左侧的探头就会检测到黑线,把信号传送到单片机,进行处理校正。控制其向左转。从而保证小车沿黑线行驶。方案一、采用发光二极管发光,用光敏二极管接收。由于光敏二极管受可见光的影响较大,稳定性差,所以放弃该方案。方案二、利用光敏电阻组成光敏探测器。光敏电阻
6、的阻值可以跟随周围环境光线的变化而变化。当光线照射到白线上面时,光线发射强烈,光线照射到黑线上面时,光线发射较弱。因此光敏电阻在白线和黑线上方时,阻值会发生明显的变化。将阻值的变化值经过比较器就可以输出高低电平。但是这种方案受光照影响很大,不能够稳定的工作方案三、采用TK-20黑白线检测传感器在本设计中,要求电动小车沿着路面的黑色轨道行驶。其探测路面黑线的基本原理:光线照射到路面并反射,由于黑线和白纸对光的反射系数不同,可以根据接收到的反射光强弱来判断是否是黑线。利用这个原理,可以控制电动小车行走的路迹。根据黑色和白色路面对光的反射程度不同,白色反射程度强,而黑色反射程度弱。我们采用TK-20
7、黑白线检测传感器,其有效探测距离达5cm。通过调节电位器,最远可以达到10cm,受可见光干扰小,输出信号为开关量,信号处理简单,使用非常方便。使用注意注意事项:(1)该传感器为开关量传感器,输出为TTL电平,可以直接和单片机连接,但需要在输出端加上拉电阻。(如不加上拉电阻会出现不规则电平输出)。(2)一定不要把线接错,否则容易烧掉传感器4、避障模块考虑到在测障过程中小车车速与反应调向速度的限制,小车应在距障碍物一定围做出反应,这样在顺利绕过障碍物后,可寻找到最佳的位置和方向。否则,如果围太大,则可能产生对障碍物的判断失误;围过小又很容易造成车身撞上障碍物或虽绕过障碍物却无法实现理想定向。根据上
8、述要求,提出以下方案。我们想到采用激光传感器探测障碍物。该传感器能非常准确地测出障碍物的存在,但价格高,处理复杂,不符合该设计的要求。在本设计中,要求电动小车沿着路面的黑色轨道行驶。其探测路面黑线的基本原理:光线照射到路面并反射,由于黑线和白纸对光的反射系数不同,可以根据接收到的反射光强弱来判断是否是黑线。利用这个原理,可以控制电动小车行走的路迹。此次设计我们采用光电传感器探测障碍物。光电传感器安装于小车前端,在规定的检测距离,当探测到障碍物时,光电传感器给出信号至单片机,单片机检测到该信号后,调整小车的方向,以控制小车准确地绕过障碍物,而且避免因小车自然转弯而导致的盲目方向控制,能避免电路的
9、复杂性。在系统中要进行动态显示遇障次数。一种方法是采用LCD1602液晶显示器。另一种方法是采用数码管显示。LCD具有功耗低,抗干扰能力强的特点。不紧可以显示数字、字符,而且可以显示汉字和图形,但由于显示容不多,与数码管相比LCD在大小和形状不够灵活,而且LED数码显示价格便宜,使用寿命长。因此,本设计采用LED数码管显示。5、电动机驱动模块方案一、采用继电器控制电机。采用继电器对电机的开或关进行控制。通过开关的切换对小车的速度进行调整.此方案的优点是电路较为简单,缺点是继电器的响应时间慢,易损坏,寿命较短,可靠性不高方案二、采用直流减速电机。直流减速电机转动力矩大,体积小,重量轻,装配简单,
10、使用方便。由于其部由高速电动机提供原始动力,带动变速(减速)齿轮组,可以产生较大扭力。采用左右两轮分别驱动,后万向轮转向的方案。左右轮分别用两个转速和力矩基本一样的直流电机进行驱动,车体尾部装一个万向轮。这样,当两个直流电机转向相反同时转速一样时就可以实现电动车的原地旋转,由此可以轻松的实现小车不同角度的转弯。为了电路设计简单,采用电机专用驱动芯片L298,其驱动电流大,瞬时电流最高可达2A,为电机驱动专门设计,工作稳定可靠。L298是SGS公司的产品,比较常见的是15脚Multiwatt封装的L298,部同样包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。L298可接
11、受标准TTL逻辑电平信号VSS,VSS可接457 V电压。4脚VS接电源电压,VS电压围VIH为2546 V。输出电流可达25 A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动一台电动机。5,7,10,12脚接输入控制电平,控制电机的正反转。EnA,EnB接控制使能端,控制电机的停转。 根据直流电机稳态运行方程式: UCeNRaIa其中:为电机每极磁通量;Ce为电动势常数; N为电机转数;Ia为电枢电流;Ra电枢回路电阻。电机转数N为0,电
12、机的电流急剧增加,时间过长将会使电机烧坏。但电机起动时,电机中线圈中的电流也急剧变大,因此我们必须把这两种状态分开。长延时电路可把这两种状态区分出来。长延时电路工作原理:当Rs1过流U5A产生一个负脉冲经过微分后,脉冲触发555的2脚,电路置位,3脚输出高电平,由于放电端7脚开路,C1,R5与U6A组成积分器开始积分,电容C1上的充电电压线性上升,延时运放积分常数为100R5C1。当C1上充电电压,即6脚电压超过23 VCC,555电路复位,输出低电平。电机启动时间一般小于08 s,C1充电时间一般为081 s。U5A输出电平与555的3脚输出电平经U7相或,如果U5A输出低电平大于C1充电时
13、间,U7在C1充电后输出低电平由与门U8输入到L298的6脚ENA端使电机停止。如果U5A的输出电平小于C1充电时间,6脚不动作电机的正常启动。长延时电路吸收电机启动过流电压波形,从而使电机正常启动。L298部同样包含4通道逻辑驱动电路。图2是其引脚图:图21、15脚是输出电流反馈引脚,在通常使用中这两个引脚也可以直接接地。图3是其与51单片机和直流电机连接的电路图。图3四、电路原理图与硬件调试在安装时我们保证两个驱动电机同轴,当小车前进时,左右两驱动轮与后万向轮形成了三点结构。这种结构使得小车在前进时比较平稳,可以避免出现后轮过低而使左右两驱动轮驱动力不够的情况。为了防止小车重心的偏移,后万
14、向轮起支撑作用。1、原理图的绘制和注意事项(1)蜂鸣器驱动电路一般都包含以下几个部分:一个三极管、一个蜂鸣器、一个续流二极管。蜂鸣器本质上是一个感性元件,其电流不能瞬变,因此必须有一个续流二极管提供续流。否则,在蜂鸣器两端会产生几十伏的尖峰电压,可能损坏驱动三极管,并干扰整个电路系统的其它部分。(2)在设计原理图时注意上拉电阻,下拉电阻的使用,在必要时要加阻值合适的电阻,是电路更加完善。1、 电路原理图:单片机最小系统原理图(图4)图4蜂鸣器与倒车显示原理图(图5)图5数码管显示原理图(图6)图6L298电机驱动原理图(图7)图7电路PCB图(图8)图83、PCB的设计和注意事项(1)在原理图
15、定义元件封装的时候,要根据元器件实际大小进行定义,如果库里没有的话自己再绘制一个。(2)在放置元器件时,一定要考虑元器件的实际尺寸大小(所占面积和高度)、元器件之间的相对位置,以保证电路板的电气性能和生产安装的可行性和便利性同时,应该在保证上面原则能够体现的前提下,适当修改器件的摆放,使之整齐美观,如同样的器件要摆放整齐、方向一致。这个步骤关系到板子整体形象和下一步布线的难易程度,所以一定要花大力气去考虑。PCB布线时要设定好焊盘的尺寸大小与实际器件相一致,信号线、电源线和地线的宽度要合适。五、软件程序与调试软件调试的任务是利用ISIS开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现
16、仿真结果故障。程序的调试应一个模块一个模块地进行,我们首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等;最后逐步将各子程序连接起来总调。联调需要注意的是,各程序模块间能否正确传递参数,特别要注意各子程序的现场保护与恢复。仿真图单片机系统需要接收路径识别电路的信号,采用某种路径搜索算法进行寻线判断,进而控制舵机和直流驱动电机的工作。小车系统的软件使用C语言实现。小车行走状态主体控制框架图(图9):模型车采用的控制方法是根据传感器采集到的路况信息,通过计算得到具体的方向偏移量和速度,控制小车的行走状态。其控制表格见表1.路况信息数据处理偏转方向车 速图9软件见附件
17、表1传感器对应单片机I/O口 小车状态小车控制方向P1.2P1.1P1.0001小车大右偏大左转010循迹居中前进011小车偏右小左转100小车大右偏大右转101其他倒车110小车偏左小右转111到达终点停止六、功能检测与调试对小车的整体来说其测试按照模块来进行,分为以下几个步骤:首先测试电源的工作情况,各个模块能否得到良好供电。光电管安装完成后根据测试数据调节电位器选择合适的参考电压。检查单片机能否正常的烧写程序和工作。测试后轮电机的工作情况,并试验电机的驱动能力。编写测试程序让小车初步循迹运行。反复测试各参数变化对小车的影响,找出最有效的配置。对小车运行过程中各种可能出现的情况测试,发现问
18、题,找出解决方法。整理数据,优化程序设计。经过多次调试,本系统能够基本满足设计要求,能够较快较平稳的沿黑色路面行驶。七、总结在硬件设计中,开始一个模块设计之前和完成一个模块设计之后都要进行测试。在动手之前务必查清楚所用元件资料,在稍微复杂一点的电路设计之前可以先搭建其中的一部分电路,测试一下是否正常,然后再进行总的电路设计。这样循序渐进的进行设计可以节省时间保证电路的正确性。同样,程序方面的设计也是如此。从最简单的程序开始,慢慢的调试和扩充。电路设计之后的测试也同样重要,特别是和程序有关的外围检测、驱动等模块,如果不排除硬件故障在调试的时候很难分清到底是硬件还是软件的问题,因此硬件设计完成之后
19、首先需要测试硬件能够正常工作,这样在遇到问题时才能够排除硬件的干扰找出问题的所在。在基本功能实现的基础之上调整参数,实现最佳的性能。基本功能实现后再去尝试在原有的基础之上去扩展并提高性能,最后根据前一阶段的测试结果有针对性的重新设计电路板,最终将智能小车设计圆满完成。参考文献1郭天祥.51单片机C语言教程.:电子工业, 20092毅刚.新编MCS-51单片机应用设计.:人民邮电,20063谭浩强.C语言程序设计.:清华大学,19914周志德.单片机原理与应用.:高等教育,20015熊建云.Protel 99 SE.:机械工业,20076朱运利.EDA技术应用M.:高等教育,2004附件#inc
20、lude #define uchar unsigned char#define uint unsigned charuchar IN,OUT;uchar su;sbit L=P32;/左障碍检测开关sbit R=P33;/右障碍检测开关/延时子函数/void delay(uint z)uchar i,j;for(i=z;i0;i-)for(j=110;j0;j-);/初始化子函数/void init()su=0;TMOD=0x01;EA=1;ET0=1;TH0=(65536-50)/256;TL0=(65536-50)%256;TR0=1;/检测输入子函数/void jianceIN()IN=
21、P1&0x07;switch(IN)case 0x00: OUT=0xf9;break;/前进case 0x01: OUT=0xea;break;/左转case 0x02: OUT=0xf9;break;/前进case 0x03: OUT=0xea;break;/左转case 0x04: OUT=0xd5;break;/右转case 0x05: OUT=0xf6;break;/后退case 0x06: OUT=0xd5;break;/右转case 0x07: OUT=0xf0;break;/全黑 停止default: OUT=0xf0;break;/其他情况小车停止/小车运行子函数/void yunxing()P2=OUT;delay(8);/主函数/void main()init();while(1)if(su=3)su=0;P2=0xf0;delay(30);while(L=0)P2=0xf5;/右转while(R=0)/左转P2=0xfa;jianceIN();yunxing();/减速子程序/void jiansu() interrupt 1TH0=(65536-50)/256;TL0=(65536-50)%256;su+;24 / 24
限制150内