循迹小车设计报告
机械与电子工程学院
应用电子技术
循迹小车
题 目: 循迹小车 学院名称: 机械与电子工程学院 班 级: 09应电1班 报告性质: 设计报告 学生姓名: 邱锐新、潘广茂 联系电话: 137xxxxxxxx/695238
2011.05.25
循迹小车设计报告
目录
摘要 .......................................................................................................... - 1 -
一、系统设计 .......................................................................................... - 2 -
1、设计要求 ......................................................................................... - 2 -
2、小车循迹的原理............................................................................. - 2 -
3、模块方案比较与论证 .................................................................... - 2 -
4、最终方案 ......................................................................................... - 5 -
二、硬件实现及单元电路设计 .............................................................. - 6 -
1、微控制器模块的设计 .................................................................... - 6 -
2、光电对管电路的设计 .................................................................... - 6 -
4、电机驱动电路的设计 .................................................................... - 7 -
三、软件实现 .......................................................................................... - 8 - 1主程序流程图 .................................................................................... - 8 - 2 传感器数据处理及寻迹程序流程 .................................................. - 9 -
四、结束语 ............................................................................................ - 10 -
五、参考文献 ........................................................................................ - 10 -
六、附件……………………………………………………………… -11-
循迹小车设计报告
摘要
智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能电动车就是其中的一个体现。本次设计的简易智能电动车,采用STC89C52单片机作为小车的检测和控制核心;采用红外传感器TRCR5000来检测路上感应到的跑道上的黑带,从而把反馈到的信号送单片机,使单片机按照预定的工作模式控制小车在各区域按预定的速度行驶,并且单片机选择的工作模式不同也可控制小车顺着S形铁片行驶;还有摇控功能,可以控制到前、后、左、右、停止动能,还有避障动能,遇到障碍物会自动避开,本设计结构简单,较容易实现,但具有高度的智能化、人性化,一定程度体现了智能。
关键词:STC89C52 直流电机 红外传感器 自动寻迹电动车
- 1 -
循迹小车设计报告
一、系统设计
1、设计要求
(1)自动寻迹小车从安全区域启动。
(2)小车按指定路线运行,自动区分直线轨道和弯路轨道,在指定弯路处拐弯,实现灵活前进、转弯、倒退等功能,在轨道上划出设定的地图。
2、小车循迹的原理
这里的循迹是指小车在黑色地板上循白线行走,通常采取的方法是红外探测法。 红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光。单片机就是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。红外探测器探测距离有限,一般最大不应超过3cm。
3、模块方案比较与论证
根据设计要求,本系统主要由控制器模块、电源模块、寻迹传感器模块、直流电机及其驱动模块、电压比较模块等模块构成。
为较好的实现各模块的功能,我们分别设计了几种方案并分别进行了论证。
3.1车体设计
方案1:购买玩具电动车。购买的玩具电动车具有组装完整的车架车轮、电机及其驱动电路。但是一般的说来,玩具电动车具有如下缺点:首先,这种玩具电动车由于装配紧凑,使得各种所需传感器的安装十分不方便。其次,这种电动车一般都是前轮转向后轮驱动,不能适应该题目的方格地图,不能方便迅速的实现原地保持坐标转90度甚至180度的弯角。再次,玩具电动车的电机多为玩具直流电机,力矩小,空载转速快,负载性能差,不易调速。而且这种电动车一般都价格不菲。因此我们放弃了此方案。
方案2:自己制作电动车。经过反复考虑论证,我们制定了左右两轮分别驱动,后万向轮转向的方案。即左右轮分别用两个转速和力矩基本完全相同的直流电机进行驱动,车体尾
- 2 -
循迹小车设计报告
部装一个万向轮。这样,当两个直流电机转向相反同时转速相同时就可以实现电动车的原地旋转,由此可以轻松的实现小车坐标不变的90度和180度的转弯。
在安装时我们保证两个驱动电机同轴。当小车前进时,左右两驱动轮与后万向轮形成了三点结构。这种结构使得小车在前进时比较平稳,可以避免出现后轮过低而使左右两驱动轮驱动力不够的情况。为了防止小车重心的偏移,后万向轮起支撑作用。
对于车架材料的选择,我们经过比较选择了有机玻璃。用有机玻璃做的车架比塑料车架更加牢固,比铁制小车更轻便,美观。
综上考虑,我们选择了方案2。
小车底盘如图2所示:
图2 车体底盘图
3.2控制器模块
方案1:采用可编程逻辑期间CPLD 作为控制器。CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高。且从使用及经济的角度考虑我们放弃了此方案。
方案2:采用STC的8位单片机,它是8位控制器,具有体积小、驱动能力高、集成度高、易扩展、可靠性高、功耗低、结构简单、中断处理能力强等特点。处理速度高,尤其适用于语音处理和识别等领域。但是当凌阳单片机应用语音处理和辨识时,由于其占用的CPU资源较多而使得凌阳单片机同时处理其它任务的速度和能力降低。
本系统主要是进行寻迹运行的检测以及电机的控制。如果单纯的使用凌阳单片机,在语音播报的同时小车的控制容易出现不稳定的情况。从系统的稳定性和编程的简洁性考虑,我们放弃了单纯使用凌阳单片机而考虑其它的方案。
- 3 -
循迹小车设计报告
方案3:采用Atmel公司的ATmaga32L单片机作为主控制器。ATmaga32L是一个低功耗,高性能的8位单片机,片内含32k空间的可反复擦些100,000次的Flash只读存储器,具有2Kbytes的随机存取数据存储器(RAM),32个IO口,2个8位可编程定时计数器,1个16位可编程定时计数器,四通道PWM,内置8路10 位ADC。且maga系列的单片机可以在线编程、调试,方便地实现程序的下载与整机的调试。
从方便使用的角度考虑,我们选择了方案2。
3.3电源模块
由于本系统需要电池供电,我们考虑了如下集中方案为系统供电。
方案1: 采用6节1.5V干电池供电,电压达到9V,但干电池电量有限,使用大量的干电池给系统调试带来很大的不便,因此,我们放弃了这种方案。
方案2:采用2节4.2V可充电式锂电池串联共8.4V给直流电机供电,锂电池的电量比较足,并且可以充电,重复利用,因此,这种方案比较可行。因此我们选择了此方案。
方案3:采用9V蓄电池为直流电机供电,将9V电压降压、稳压后给单片机系统和其他芯片供电。蓄电池具有较强的电流驱动能力以及稳定的电压输出性能。虽然蓄电池的体积过于庞大,在小型电动车上使用极为不方便,但由于我们的车体设计时留出了足够的空间,并且蓄电池的价格比较低。
综上考虑,根据实际情况,我们选择了方案2。
3.4寻迹传感器模块
方案1:用光敏电阻组成光敏探测器。光敏电阻的阻值可以跟随周围环境光线的变化而变化。当光线照射到白线上面时,光线发射强烈,光线照射到黑线上面时,光线发射较弱。因此光敏电阻在白线和黑线上方时,阻值会发生明显的变化。将阻值的变化值经过比较器就可以输出高低电平。
但是这种方案受光照影响很大,不能够稳定的工作。因此我们考虑其他更加稳定的方案。
方案2:用红外发射管和接收管自己制作光电对管寻迹传感器。红外发射管发出红外线,当发出的红外线照射到白色的平面后反射,若红外接收管能接收到反射回的光线则检测出白线继而输出低电平,若接收不到发射管发出的光线则检测出黑线继而输出高电平。这样自己制作组装的寻迹传感器基本能够满足要求。
方案3:用RPR220型光电对管。RPR220是一种一体化反射型光电探测器,其发射器是一个砷化镓红外发光二极管,而接收器是一个高灵敏度,硅平面光电三极管。
RPR220采用DIP4封装,其具有如下特点:
- 4 -
循迹小车设计报告
塑料透镜可以提高灵敏度。
内置可见光过滤器能减小离散光的影响。
体积小,结构紧凑。
当发光二极管发出的光反射回来时,三极管导通输出低电平。此光电对管调理电路简单,工作性能稳定。但考虑到这个价格贵和难买。
因此我们选择了方案2。
3.5电机模块
本系统为智能电动车,对于电动车来说,其驱动轮的驱动电机的选择就显得十分重要。由于本实验要实现对路径的准确定位和精确测量,我们综合考虑了一下两种方案。
方案1:采用步进电机作为该系统的驱动电机。由于其转过的角度可以精确的定位,可以实现小车前进路程和位置的精确定位。虽然采用步进电机有诸多优点,步进电机的输出力矩较低,随转速的升高而下降,且在较高转速时会急剧下降,其转速较低,不适用于小车等有一定速度要求的系统。经综合比较考虑,我们放弃了此方案。
方案2:采用直流减速电机。直流减速电机转动力矩大,体积小,重量轻,装配简单,使用方便。由于其内部由高速电动机提供原始动力,带动变速(减速)齿轮组,可以产生较大扭力。
我们所选用的直流电机减速比为1:74,减速后电机的转速为100r/min。我们的车轮直径为6cm,因此我们的小车的最大速度可以达到
V=2πr·v=2*3.14*0.03*100/60=0.314m/s
能够较好的满足系统的要求,因此我们选择了方案2。
3.6电机驱动模块
方案1:采用专用芯片L298N作为电机驱动芯片。L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率高,一片L298N可以分别控制两个直流电机,而且还带有控制使能端。用该芯片作为电机驱动,操作方便,稳定性好,性能优良。
方案2:对于直流电机用分立元件构成驱动电路。由分立元件构成电机驱动电路,结构简单,价格低廉,在实际应用中应用广泛。但是这种电路工作性能不够稳定。
因此我们选用了方案1。
4、最终方案
经过反复论证,我们最终确定了如下方案:
- 5 -
循迹小车设计报告
(1)车体用有机玻璃车架手工制作。
(2)采用STC89C52单片机作为主控制器。
(3)采用2节4.2V可充电式锂电池串联共8.4V给直流电机供电,为单片机系统和其他芯片供电。
(4)用TCRT5000型红外对管进行寻迹。
(5)L298N作为直流电机的驱动芯片。
系统的结构框图如图3所示:
图3 系统结构框图
二、硬件实现及单元电路设计
1、微控制器模块的设计
采用STC公司的STC89C52单片机,不用烧写器而只用串口或者并口就可以往单片机中下载程序。
我们在开发过程中使用开发版,方便程序的调试和整机的测试,待系统调试完成后,将单片机从开发板上取下,安装在小车系统板的单片机座中,由于本次设计要求中,小车需要完成的任务比较简单,因此我们在小车系统板的单片机系统中保留了晶振电路和下载电路。
2、光电对管电路的设计
- 6 -
循迹小车设计报告
我们设计并论证了两种红外对管检测及调理电路,电路原理图分别如4和图5
所示:
图4 红外对管检测电路1
图10所示电路中,R18起限流电阻的作用,当有光反射回来时,红外对管中的三极管导通,R6的上端变为高电平。
经试验和示波器验证,该电路工作性能一般,输出还有杂散干扰波的成分。如果输出加施密特触发器就可以实现良好的输出波形。
但是这种电路用电量比较大,给此种传感器调理电路供电的电池压降较快。究其原因,是因为光敏三极管的导通电流较大。
可调电阻RV1可以调节比较器的门限电压,经示波器观察,输出波形相当规则,可以直接够单片机查询使用。
而且经试验验证给此电路供电的电池的压降较小。因此我们选择此电路作为我们的传感器检测与调理电路。因此我们考虑用比较器的方案。
3、电机驱动电路的设计
我们采用电机驱动芯片L298N作为电机驱动,驱动电路的设计如图7所示:
- 7 -
循迹小车设计报告
图7 L298电机驱动电路
L298N的5、7、10、12四个引脚接到单片机上,通过对单片机的编程就可以实现两个直流电机的PWM调速以及正反转等功能。
三、软件实现
1主程序流程图
我们所设计的软件的主程序流程图如图8所示:
- 8 -
循迹小车设计报告
图8 主程序流程图
2 传感器数据处理及寻迹程序流程
我们用一个字节来代表车底的4个红外对管传感器。用每一个位来代表当前传感器的检测状态。
我们把小车直线行进时分成三种状态,当中间俩个传感器都检测到白线时,小车在跑道的正上方,这时控制两电机同速度全速运行。当检测到有一个传感器或者同侧的两个传感器偏出白线时,小车处于微偏状态,这时将一个电机速度调慢,另一电机速度调快,完成调整。
该检测传感器子程序的流程图如图9所示:
图9 传感器信息处理子程序流程图
- 9 -
循迹小车设计报告
四、结束语
我们的寻迹小车在完成设计要求的前提下,充分考虑到了外观、成本等问题,在性能和价格之间作了比较好的平衡。由于设计要求并不复杂,我们没有在电路中增加冗余的功能,但是我们保留了各种硬件接口和软件子程序接口,方便以后的扩展和进一步的开发。
另外,我们的车体底盘经过充分的论证和专业的设计,兼顾了美观、廉价、稳固、可靠等各方面的因素,具有较高的稳定性和推广意义。
五、参考文献
1. 李正军。计算机控制系统。北京:机械工业出版社,2005
2. Ramon Pallas-Areny,John G. Webster(美)。传感器和信号调节,第2版。张伦译。北京:清华大学出版社,2003
3. 船仓一朗,土屋 尧等(日)。机器人控制电子学。宗光华,杨 洋,唐伯雁译。北京:科学出版社,2004
4. 罗亚非等。凌阳16位单片机应用基础。北京:北京航空航天大学出版社,2003
5. 童诗白,华成英。模拟电子技术基础。北京:高等教育出版社,2003
6. 阎石。数字电子技术基础。北京:高等教育出版社,1983
7. 高峰编。单片微型计算机原理与接口技术。北京:科学出版社,2003
8. 21IC中国电子网。
9.万方数据资源统一服务系统。.cn
- 10 -
循迹小车设计报告
六、附件:
循迹小车原理图:
- 11 -
循迹小车设计报告
循迹小车源程序:
}
void motor_left() //自左转 #include<reg52.h>
#define uchar unsigned char #define uint unsigned int
uchar temp,signal,t0,t1,t2,t3,t4,t5,t6; sbit P20=P2^0; //最右边传感器 sbit P21=P2^1; //右边传感器 sbit P22=P2^2; //左边传感器 sbit P23=P2^3; //最左边传感器 sbit P24=P2^4; //避障传感器
void delay_1ms(uint d) { uint i;
while(d--)
for(i=0;i<75;i++);
} void motor_run() //电机起动 {
P1=0x35;
//0011,0101
delay_1ms(110); P1=0x53;
//0101,0011
delay_1ms(10);
}
void motor_run2() //电机起动 {
P1=0x35;
//0011,0101
delay_1ms(40); P1=0x53;
//0101,0011
delay_1ms(20);
}
void motor_stop()
//电机停止
{
P1=0x00; }
void motor_back() //电机后退 {
P1=0x53;
delay_1ms(500);
//0101,0011 - 12 -
{
P1=0x30;
delay_1ms(500);
P1=0x00; delay_1ms(20); }
void motor_right2() {
P1=0x05;
delay_1ms(2000);
P1=0x00; delay_1ms(20); }
void motor_big_right() {
P1=0x55;
delay_1ms(130);
}
void motor_big_right2() {
P1=0x55;
delay_1ms(90);
}
void motor_big_right3() {
P1=0x55;
delay_1ms(30);
}
void motor_big_left() {
P1=0x33;
delay_1ms(130);
}
void motor_big_left2() {
P1=0x33;
delay_1ms(90);
/xfzB xzfA //0011,0000左
//自右转 /xfzB xzfA //0000,0101左 //粗右转
//0101,0101 /粗右转
//0101,0101
//粗右转
//0101,0101
//粗左转
//0011,0011 //粗左转
//0011,0011
循迹小车设计报告
}
void motor_big_left3() {
P1=0x33; }
//粗左转
//0011,0011
while((~P20)&&(~P21)) }
while((~P20)&&(~P22)) }
while((~P21)&&(~P22)) }
}
while((~P21)&&(~P23)) }
while(~P21) { }
while(~P22) }
while(~P20)
motor_back2();
{ }
while(~P23) { } }
motor_big_right2();
motor_big_left2();
{
{
motor_big_right3();
motor_big_left3(); {
motor_big_right();
while((~P22)&&(~P23)) { {
motor_big_left();
{
motor_big_left();
{
motor_big_left();
delay_1ms(30);
////////// 主涵数 ////////////
void main() { while(1) {
motor_run(); {
motor_stop(); }
while(P24) {
motor_back(); motor_right2(); }
while(~P32) {
motor_stop(); }
while(~P33) } {
motor_big_left3(); }
while(~P35) {
motor_big_right3(); }
while((~P20)&&(~P21)&&(~P22)&&(~P23))
motor_big_right();
while(~P34)
- 13 -
循迹小车设计报告
仿真原理图:
- 14 -