自动寻迹小车

更新时间:2023-08-17 12:50:01 阅读量: 资格考试认证 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2012年比赛题目

2012年D题 自动平衡小车系统

自动寻迹小车系统设计报告

摘要:本设计是一种基于单片机控制的简易自动寻迹小车系统。小车以AT89S52为控制核心, 用单片机产生PWM波,控制小车速度。利用红外光电传感器对路面黑色轨迹进行检测,并将路面检测信号反馈给单片机。单片机对采集到的信号予以分析判断,及时控制驱动电机以调整小车转向,从而使小车能够沿着黑色轨迹自动行驶,实现小车自动寻迹的目的。

关键词:单片机AT89S52 光电传感器 直流电机 自动循迹小车

2012年比赛题目

1.系统方案

1.1 实现方法

本题要求设计并制作一辆电动小车,能实现在在引导线A, B点之间加速,在B,C点之间减速,加速区所用的时间与减速区所用时间之比约为1:2,经过D点时能正常运行,并能寻迹至E点继续行驶,小车任何一个驱动轮超出边界,该次实验失败。我们想利用电机控制小车运行,利用寻迹模块实现小车沿引导线线行走。上述各模块的方案论证如下。

1.2 方案论证 1.2.1 车体设计

方案1:购买玩具电动车。购买的玩具电动车具有组装完整的车架车轮、电机及其驱动电路。但是一般的说来,玩具电动车具有如下缺点:首先,这种玩具电动车由于装配紧凑,使得各种所需传感器的安装十分不方便。其次,玩具电动车的电机多为玩具直流电机,力矩小,空载转速快,负载性能差,不易调速。而且这种电动车一般都价格不菲。因此我们放弃了此方案。

方案2:自己制作电动车。经过反复考虑论证,我们制定了前轮为万向轮,后边左右两轮为驱动轮的方案。即车头装一个万向轮,后边左右轮分别用两个转速基本完全相同的直流电机进行驱动。这样,当两个轮的速度不一样时就可以实现小车转弯。当小车前进时,前万向轮与左右两驱动轮形成了三点结构。这种结构使得小车在前进时比较平稳。

对于车架材料的选择,我们选用废弃的PCB板,这样即价格低廉又环保。

经过反复的比较、论证,我们最终选用了方案2。

1.2.2 控制器模块

方案1:采用可编程逻辑器件CPLD作为控制器。CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。

方案2:采用Atmel公司AT89S52单片机作为主控制器。它是一个低功耗,高性能的8位单片机,片含8k空间的可反复擦写100000次的Flash只读存储器,具

2012年比赛题目

有8k的随机存取数据存储器(RAM),32个I/O口,2个8位可编程定时计数器,且可在线编程、调试,方便地实现程序的下载与整机的调试。

由于本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高。从使用及经济的角度考虑我们放弃了方案1。从方便实用的角度方面我们选择了方案2。

1.2.3 电机模块

本系统为智能电动车,对于电动车来说,其驱动轮的驱动电机的选择就显得十分重要。由于本实验要实现对路径的准确定位和精确测量,我们综合考虑了一下两种方案。

方案1:采用步进电机作为该系统的驱动电机。由于其转过的角度可以精确的定位,可以实现小车前进路程和位置的精确定位。虽然采用步进电机有诸多优点,步进电机的输出力矩较低,随转速的升高而下降,且在较高转速时会急剧下降,其转速较低,不适用于小车等有一定速度要求的系统。经综合比较考虑,我们放弃了此方案。

方案2:采用直流减速电机。直流减速电机转动力矩大,体积小,重量轻,装配简单,使用方便。由于其内部由高速电动机提供原始动力,带动变速(减速)齿轮组,可以产生较大扭力。

经过反复的比较、论证,我们最终选用了方案2。

1.2.4 电机驱动模块

方案1:采用专用芯片L298N作为电机驱动芯片。L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率高,一片L298N可以分别控制两个直流电机,而且还带有控制使能端。用该芯片作为电机驱动,操作方便,稳定性好,性能优良。

方案2:对于直流电机用分立元件构成驱动电路。由分立元件构成电机驱动电路,结构简单,价格低廉,在实际应用中应用广泛。但是这种电路工作性能不够稳定。

经过反复的比较、论证,我们最终选用了方案1。

1.2.5电源模块

方案1:采用8节1.5V干电池供电,电压达到12V,经7809稳压后给支流电机供电,然后将9V电压再次降压、稳压后给单片机系统和其他芯片供电。但干电池电量有限,使用大量的干电池给系统调试带来很大的不便,因此,我们放弃了这种方案。

2012年比赛题目

方案2:采用可充电12V的锂电池给电机供电,过7809的电压变换后给直流电机供电,然后将9V电压再次降压、稳压后给单片机系统和其他芯片供电。锂电池的电量比较足,并且可以充电,重复利用。

经过反复的比较、论证,我们最终选用了方案2。

1.2.6稳压模块

采用一片7809将电压稳压至9V后给直流电机供电,然后采用一片7805将电压稳定至5V,给单片机系统和其他芯片供电。

1.2.7寻迹传感器模块

方案1:用光敏电阻组成光敏探测器。光敏电阻的阻值可以跟随周围环境光线的变化而变化。当光线照射到白线上面时,光线发射强烈,光线照射到黑线上面时,光线发射较弱。因此光敏电阻在白线和黑线上方时,阻值会发生明显的变化。将阻值的变化值经过比较器就可以输出高低电平。

但是这种方案受光照影响很大,不能够稳定的工作。因此我们考虑其他更加稳定的方案。

方案2:采用ST188作为红外检测传感器。ST系列反射式光电传感器是经常使用的传感器。这个系列的传感器种类齐全、价格便宜、体积小、使用方便、质量可靠、用途广泛。利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光。单片机就是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。

判断有无黑线我们用的一块比较器LM393 比较基准电压由10K的变阻器调节,各个接收管的参数都不一致,每个传感器的比较基准电压也不尽相同,我们为每个传感器配备了一个变阻器。

经过反复的比较、论证,我们最终选用了方案2。

1.3 系统设计

经过反复论证,我们最终确定了如下方案: (1)车架用废弃的PCB板制作。

(2)采用Atmel公司AT89S52单片机作为主控制器。

(3)用锂电池经7809稳压后为直流电机供电,经7805稳压后为单片机系统

2012年比赛题目

和其他芯片供电。

(4)采用ST188作为红外检测传感器进行寻迹。 (5)L298N作为直流电机的驱动芯片。

1.4 结构框图

自动循迹小车控制系统由主控制电路模块、稳压电源模块、红外检测模块、电机及驱动模块等部分组成,控制系统的结构框图如图1-1 所示。

图1-1控制系统的结构

2.理论分析与计算

2.1分析

根据题目要求及说明,要求在A、B之间加速,在B、C之间减速,减速区与加速区的时间比大约2:1,经过D点能正常运行并能寻迹至E点后继续行驶,全程不超过3分钟,并且小车不能外接电源,不能有任何一个驱动轮超出边界。本设计让小车经过D点加速前进使小车上的光电传感器尽快扑捉到E点。我们采用小车的闭环结构。

自动小车的闭环结构框图2如下:

2012年比赛题目

闭环结构框图2

该系统的工作原理是小车驶在跑道后,通过光电传感器寻迹,然后把信号传输给单片机,再由单片机送给驱动信号,进而由驱动控制小车加速、减速、转弯、停车等功能(减速采用一个电机转的慢、一个转的快)。经过调试最终实现给定的要求。

本次设计小车车轮周长207mm。电机选用减速比为1:74 的直流电机,减速后电机的转速为90r/min。车轮直径为6cm,小车的最大速度可以达到V=2πr·v=2*3.14*0.033*90/60=0.314m/s,能够较好的满足系统的要求。经分析让小车在加速区以30cm/s行驶,在减速区以15cm/s行驶。经计算在加速区行驶2s,减速区行驶4s,满足题目的要求。

2.2控制方案设计

我们把小车直线行进时分成三种状态,当中间两个传感器都检测到黑线时,小车在跑道的正上方,这时控制两电机同速度全速运行。当第一次检测到有八个传感器同时检测或者除了中间两个外两侧至少各有一个探测到黑线时,此时小车处于加速区,小车加速前进;同理当第二次检测到黑线时,此时小车处于减速区,小车减速行驶,同理当小车第三次检测到黑线时,小车全速前进。当检测到有一个传感器或者同侧的两个传感器偏离黑线时,小车处于偏离状态,这时将一个电机速度调慢,另一电机速度调快,小车完成自动转弯。当检测到有三个传感器偏出时,小车处于较大的偏离状态,这时把一个电机的速度调至极低,另一电机全速运行,从而在较短时间内完成路线的调整。当小车经过D点进入空白区域,传感器把检测到的数据送入单片机处理,单片机再给驱动信号使小车全速前进,此时并关闭小车左侧最外三个传感器。当小车左侧检测到大于等于两个传感器则小车向左转,同理当小车右侧检测到大于等于两个传感器则小车向右转。当小车8号传感器检测到黑线时让小车加速冲一段,并开启之前关闭的传感器,从小车驶入空白区域D、E段开始算起,当小车转第四次弯后关闭小车最右侧三个光感,这样小车顺利完成S型寻迹行驶,在下一次转弯后开启左右之前关闭的光感。

3.电路与程序设计

3.1 控制器设计(见附录1) 3.2电机驱动设计(见附录1) 3.3 光电传感器设计(见附录1) 3.4自动循迹小车总体设计

2012年比赛题目

3.4.1总体电路图(见附录1) 3.4.2系统总体说明

如图3-11所示,当光电传感器开始接受信号,通过比较器将信号传如单片机中。小车进入寻迹模式,即开始不停地扫描与探测器连接的单片I/O 口,一旦检测到某个I/O 口有信号变化,就执行相应的判断程序,把相应的信号发送给电动机从而纠正小车的状态。单片机采用T0定时计数器,通过来产生PWM波,控制电机转速。

3.5 PWM控制

本系统采用PWM来调节直流电机的速度。PWM是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要求的一种电压调整方法。PWM可以应用在许多方面,如电机调速、温度控制、压力控制等。

在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。因此,PWM又被称为“开关驱动装置”。

在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。

本系统中通过控制51单片机的定时器T0的初值,从而可以实现P2.4和P2.5输出口输出不同占空比的脉冲波形。定时计数器若干时间(比如0.1ms)中断一次, 就使P2.4或P2.5产生一个高电平或低电平。 将直流电机的速度分为100个等级, 因此一个周期就有个100脉冲, 周期为100个脉冲的时间。速度等级对应一个周期的高电平脉冲的个数。占空比为高电平脉冲个数占一个周期总脉冲个数的百分数。一个周期加在电机两端的电压为脉冲高电压乘以占空比。占空比越大, 加在电机两端的电压越大, 电机转动越快。电机的平均速度等于在一定的占空比下电机的最大速度乘以占空比。当我们改变占空比时, 就可以得到不同的电机平均速度, 从而达到调速的目的。精确地讲, 平均速度与占空比并不是严格的线性关系, 在一般的应用中, 可以将其近似地看成线性关系。

3.6总体软件流程图

小车进入寻迹模式后,即开始不停地扫描与探测器连接的单片I/O 口,一

2012年比赛题目

旦检测到某个I/O 口有信号变化,就执行相应的判断程序,把相应的信号发送给电动机从而纠正小车的状态。软件的主程序流程图如图3-6所示:

图3-6主程序流程图

3.7 小车寻迹流程图

另一电机速度调快,小车完成自动转弯。当检测到有三个传小车进入循迹模式后,即开始不停地扫描与探测器连接的单片机I/O口,一旦检测到某个I/O口有信号,即进入判断处理程序,我们用一个字节来代表车底的8个光电传感器。用每一个位来代表当前传感器的检测状态。

我们把小车行进时分成三种状态,当中间两个传感器都检测到黑线时,小车在跑道的正上方,这时控制两电机同速度全速运行。当第一次检测到有八个传感器同时检测或者除了中间两个外两侧至少各有一个探测到黑线时,此时小车处于

2012年比赛题目

加速区,小车加速前进;同理当小车第二次检测到黑线时,此时小车处于减速区,小车减速行驶,同理当小车第三次探测到黑线时,小车全速前进。当检测到有一个传感器或者同侧的两个传感器偏离黑线时,小车处于偏离状态,这时将一个电机速度调慢,感器偏出时,小车处于较大的偏离状态,这时把一个电机的速度调至极低,另一电机全速运行,从而在较短时间内完成路线的调整。当小车左侧检测到大于二个传感器则小车向左转,同理当小车右侧检测到大于二个传感器则小车向右转。当小车检测到空白区域把小车最右边三个传感器关掉,当小车第八个传感器接到信号使让小车加速向前冲一段,这样小车顺利通过S型弯道。

用这种三级调速的寻迹算法同单纯的判断检测到对管的位置并作出判断的方法相比,程序思路清晰,程序执行结果较好。

循迹流程图如图3-7所示

图3-7循迹流程图

2012年比赛题目

由于第二级方向控制一般为第一级的后备,则两个等级间的转向力度必须相互配合。第二级通常是在超出第一级的控制范围的情况下发生作用,它也是最后一层保护,所以它必须要保证小车回到正确轨迹上来,则通常使第二级转向力度大于第一级。

3.8程序流程图

这里利用的是51单片机的T0定时计数器,从而让单片机P2口的P2.4和P2.5引脚输出占空比不同的方波, 然后经驱动芯片放大后控制直流电机。定时计数器若干时间(比如0.1ms)比如中断一次, 就使P2.4或P2.5产生一个高电平或低电平。中断程序流程图如图3-8所示

图3-8中断程序流程图

3.9 自动平衡小车程序(见附录2) 4.系统功能测试

2012年比赛题目

4.1测试仪器及设备

表1 测试仪器设备清单

4.2测试方案

方案一:把起点设在F、A之间,当小车传感器检测到A点,把信号送至单片机,然后由单片机控制驱动,从而使小车加速,当在行驶中检测到B时,单片机向驱动发车命令使小车减速,当到达C时,单片机再次给驱动信号使小车全速前进,当检测到弯道时,单片机给驱动信号,使两电极速度不一样,使小车顺利沿着引导线运动到D点,运动到D点再全速运动穿过空白区域到达E点,此时关闭右侧最外边两个传感器,小车继续沿轨迹运动,在传感器调节下顺利沿S型运动至F,重复之前的路线运动。

方案二:把起点设在C、D之间,小车沿引导线运动到D点,再全速前进穿过空白区域到达E,此时计数并关闭小车右侧最外两个传感器,当转过四个弯时关闭左侧最外边的两个传感器,当转过第五个弯时开启之前所关闭的传感器,小车到达A点加速前进,到达B点进入减速区,小车减速到C点后全速前进,之后重复之前的路线运动。

4.3功能测试

小车从启动区启动,即从 F、A之间或者C、D之间启动,如从F、A之间启动,先经过A、B之间的加速区,然后经过B、C减速区到达C点,在经过一个弯道到达D点,途经D、E之间空白区到达E点,再走一个S型弯道到达F点,在沿引导线回到D点停车。从C、D之间启动时先经一个S型弯道,然后经加速区、减速区,最后到达D点停车。

起初测试时,在小车沿引线行驶到D点后,小车在空白区域乱跑,从而寻不到E点不能使小车顺利跑完全程,经过我们仔细的研究与测试,让小车转弯后加速穿过空白区域进而能顺利寻迹到E处。由于行走S型有点复杂,起初是走O型,经过我们仔细的分析,发现是传感器的问题,于是让小车到达8字型

2012年比赛题目

的轨迹中间之前把干扰那一部分(右侧)的传感器关掉,从而使小车最终沿S型行驶,经过长时间的分析及调试我们的小车最终顺利完成基本要求。

4.4测试结果

小车在加速区即A、B段行驶用时2s,在减速区即B、C段行驶用时4s,

在C、D段用时4.5s,在空白部分D、E段用时1.5s,在S型弯道E、F段用时14.5s,F、A段用时6s,共计32.5s(小于3分钟)。

4.5 小车性价比与系统功耗指标

我们小车全部采用纯手工制作,车架采用废弃的PCB板拼接而成,电池采用8V,3500mah防爆锂电池,电机采用90转,特点在于扭矩大,易调节,且平稳快速,非常适合这次自平衡小车系统,驱动模块采用L298N驱动芯片,最小系统采用12MHZ晶振,完美实现小车电机正反转功能,并且将8个红外探头融合在一张PCB板上,不仅使探测更为精准,而且大大节省了杜邦线的使用,电池采用可充电防爆电池,环保无污染,全车完成了高效率,低功耗的设计理念。小车制作精美,行进流畅。

5.参考资料

[1] 宋健,姜军生,赵文亮. 基于单片机的直流电动机PWM 调速系统[J ] . 农机化研究,2006 , (1) :102 - 103.

[2] 李华. 51 系列单片机实用接口技术[M].北京航空航天大学出版社, 2003 [3] 王晶,翁显耀,梁业宗 自动寻迹小车的传感器模块设计.武汉理工大学自动

化学院 湖北武汉

[4]谭浩强. C语言程序设计(第二版). 北京:清华大学出版社,2000 [5]黄智伟. 全国大学生电子设计竞赛训练教程. 北京:电子工业出版社,2005

6.结语

通过四天三夜的浴血奋战,我们实现了小车的基本寻迹功能,我们的车身不但非常美观,而且我们的小车运行起来还是比较稳定的,我们的小车在性能和价格之间也做了比较好的平衡,并且我们的小车增加了显示时间和速度。这次比赛让我们对设计产生了极大的兴趣,同时也让我们体会到团队合作的必要性,自己也得到了很好的锻炼。因而这次赛并不是小车的终点,我们还要增加远程遥控、摄像头等功能。

2012年比赛题目

附录1

1.

单片机最小系统电路图

2.电机驱动电路

2012年比赛题目

3.驱动

PCB

4.光电传感器

2012年比赛题目

5.总电路图

2012年比赛题目

附录2

自动平衡小车程序

#include<reg52.h> #include<delay.h> #include<che.h>

sbit PWMA=P2^5; sbit PWMB=P2^4; bit kongflag;

void AB(); void BC(); void CD(); void DE(); void EG(); void GH(); void HI(); void IJ(); void FA(); void FACD(); void xunji(); void xunjileft(); void xunjiright(); void init_timer();

unsigned int flag,flag1,kong;

unsigned char PWMA_ON,PWMB_ON;

main() { init_timer(); PWMA=1; PWMB=1; while(1) {

cargo();

if(P0==0xff) { delayus2x(20); if(P0==0xff) {

flag=1;

2012年比赛题目

}

void AB() {

}

}

if(t1==0&&t2==0&&t7==0&t8==0) {

delayus2x(20);

if(t1==0&&t2==0&&t7==0&t8==0) { flag1=1; } }

if(flag==1&&flag1==1) {

flag=0; flag1=0; delayms(20); AB(); }

if(P0==0x00) {

kongflag=1; }

if(P0==0x00&&kongflag==1) { DE(); }

xunji();

}

delayms(30); TR0=0; PWMA=1; PWMB=1; flag=0; flag1=0;

2012年比赛题目

}

void BC() {

cargo();

if(P0==0xff) { delayus2x(20); if(P0==0xff) {

flag=1; cargo(); delayms(7);

}

}

if(t1==0&&t2==0&&t7==0&t8==0) {

delayus2x(20);

if(t1==0&&t2==0&&t7==0&t8==0) { flag1=1; } }

if(flag==1&&flag1==1) { flag=0; flag1=0; delayms(20); BC(); } xunji(); }

delayms(30); TR0=1; while(1) {

cargo(); if(P0==0xff) {

delayus2x(20);

2012年比赛题目

} void CD() { } void DE() {

flag=1; cargo(); delayms(7); }

} if(t1==0&&t2==0&&t7==0&t8==0) {

delayus2x(20);

if(t1==0&&t2==0&&t7==0&t8==0) { flag1=1; } }

if(flag==1&&flag1==1) { flag=0; flag1=0; delayms(20); CD(); } xunji(); }

delayms(30); TR0=0; while(1) {

if(P0==0x00) {

kongflag=1; }

if(P0==0x00&&kongflag==1) {

DE();

}

xunji(); }

delayms(30);

2012年比赛题目

}

void EG() { // // }

turnleft(); delayms(50); cargo(); while(1) { if(t4==1||t5==1) { EG(); }

xunji();

}

delayms(30); TR0=0; PWMA=1; PWMB=1; flag=0; flag1=0; while(1) {

xunjiright(); if(t1==1) {

delayus2x(20); if(t1==1) {

flag=1; } }

if(t1==0)

{

flag1=1; }

if(flag==1&&flag1==1)

{

carstop(); while(1); GH(); }

}

2012年比赛题目

{ // // }

void HI() {

delayms(30); cargo();

delayms(255); delayms(255); TR0=0; PWMA=1; PWMB=1; flag=0; flag1=0; while(1) {

xunjileft(); if(t8==1) {

delayus2x(20); if(t8==1) { flag=1; } } if(t8==0) {

flag1=1;

}

if(flag==1&&flag1==1) {

carstop(); while(1);

HI();

} }

delayms(30); turnleft(); delayms(85); cargo(); delayms(255); delayms(50); IJ();

本文来源:https://www.bwwdw.com/article/c6aj.html

Top