自动小车走迷宫的设计与实践摘要:在自动控制领域,通过对直流电动机的控制可以实现机器人、小车等的智能化。
本文利用红外避障传感器检测障碍物,所测得信息反馈给小车控制电路,从而控制DIY竞赛小车两直流电机的正反转,实现了小车自动从事先所设定的迷宫中走出。
整个控制电路以单片机AT89C51为核心,电路结构简单、可靠性较高,实验测试结果基本达到预期目标。
关键词:AT80C51单片机;红外避障传感器;调速;电动小车引言当今社会,科学技术日新月异,时代前进的步伐越迈越宽,随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。
全国大学生电子设计竞赛控制类题目也多次使用过小车的智能化控制,全国各高校也都很重视该题目的研究,可见其研究意义很大。
本文所设计的电动小车控制电路让小车具有了避障功能,在事先所设定的迷宫入口处打开电源后,小车可以独立从迷宫中走出。
根据题目的要求,确定如下方案:在现有玩具电动车的基础上,加红外线避障感器实现对电动小车前方道路的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的智能控制。
这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠、精度高,可满足系统的各项要求。
本设计采用MCS-51系列中的AT89C51单片机为控制核心,利用红外避障传感器检测道路上的障碍,控制电动小汽车的自动避障功能,实现小车自动从迷宫中走出。
1 功能概述及总体方案设计1.1功能概述本设计的“自动小车走迷宫”这一套系统主要是让小车自主的从迷宫的入口走到出口。
在这一过程中,小车通过前、左、右三个红外避障传感器现对周围障碍物的实时测距来实现避障功能;在小车的行走过程中,也会实时地把小车前方的道路状况反应给单片机。
如图1.1所示为迷宫示意图:图1.1迷宫示意图1.2 总体方案设计本设计将系统分为小车控制模块、红外检测模块、速度调节三个大模块。
其中小车控制模块包括控制小车轮子的转动;红外检测包括对小车前方道路状况的探测从而做出相应的动作。
图1.2系统框图2 硬件设计2.1 小车车体的设计我们购买的玩具电动车具有组装完整的车架车轮、电机及其驱动电路。
玩具电动车具有如下特点:首先,玩具电动车电机都是现成的,在上面架一块板子就可以放下电路板,各种传感器的安装也较方便。
其次,所购买的电动车是由两电机控制的,一个负责左边轮子,另一个负责右边轮子。
这样可以进行原地90-180度转弯。
2.2 电源模块采用4节1.5V蓄电池为直流电机供电,将6V电压降压、稳压到5V,为外围芯片供电。
蓄电池具有较强的电流驱动能力以及稳定的电压输出性能,所以我们采用锂电池供电。
如图2.1所示:图2.1电源电路2.3 小车控制模块设计小车的控制是由专用芯片AT89C51来完成的,我们用六个IO口来控制小车的运动,其中两个IO口是产生PWM波,控制电机的速度;另外四个IO口又分成两组,分别控制两个电机的正反转,来实现小车的变速前进、转弯等。
2.3.1 最小系统如图2.2所示电路[1]AT89C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上[2]。
如果按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器。
图2.2 89C51单片机最小系统2.3.2 时钟电路本设计采用内部时钟方式,利用芯片内部的振荡电路,在XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡。
即用外接晶体和电容组成的并联谐振回路,振荡晶体为12MHZ。
电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小、振荡电路起振速度有关。
2.3.3 复位电路本设计就是用的按键手动复位。
按键手动复位有电平方式和脉冲方式两种。
其中电平复位是通过RST端经电阻与电源Vcc接通而实现的。
按键手动复位电路见图2.2。
时钟频率选用12MHZ时,C取22uF,R1取200Ω,RK取1KΩ。
2.4 电机驱动模块电机驱动电路:MOTOR1A 和 MOTOR1B 控制一个 H 桥,该 H 桥输出 J3 接左轮电机,所以 MOTOR1A、MOTOR1B 控制左侧小车电机的前进和后退;MOTOR2A 和MOTOR2B 控制另外一个H桥,该H桥输出 J5 接右轮电机,所以 MOTOR2A、MOTOR2B 控制右侧小车电机的前进和后退。
改变该四路控制信号就可以让小车完成左转、右转、前进、后退、原地转圈等动作,如图2.3图2.3电机驱动电路2.5 前向通道设计[3]单片机用于测控系统时,总要有与被测对象相联系的前向通道。
因此,前向通道设计与被测对象的状态、特征、所处环境密切相关。
在前向通道设计时要考虑到传感器的选择、通道结构、电源配置、抗干扰设计等。
2.5.1 前向通道的设计——传感器识别障碍的首要问题是传感器的选择,探测障碍的最简单的方法是使用红外线传感器。
它是利用向目标发射超声波脉冲,通过计算其往返时间来判定距离的,该方法被广泛应用于移动机器人的研究上[12]。
本设计选用北京亿学通电子出售的E18-D80NK红外避障传感器,其优点是价格便宜,易于使用,且在1m以内能给出精确的测量。
最主要的是其输出为数字信号。
其接口电路如图2.4所示:图2.4传感器接口电路2.6 后向通道设计在工业控制系统中,单片机总要对控制对象实现操作,因此,在这样的系统中,总要有后向通道。
后向通道是计算机实现控制运算处理后,对控制对象的输出通道接口。
2.5.1后向通道的设计——电机调速电路[12]为了方便小车的运行速度控制和车轮的差动控制,我们设计了电机调速电路,支持DAC模拟电压控制调速和 PWM 调速两种方式。
DAC模拟电压控制调速,如图2.3所示。
现以MOTOR1电路为例子进行介绍,当 J4 断开时,改变三极管Q7基极的电压,即改变SPEED1输入电压,就能改变三极管Q7的发射基的电流,从而改变电机电流,达到改变电机转速的目的。
我们可以通过DAC控制SPEED1的电压变化,来实现电机的无级调速。
如果我们使用上面的方式,我们还可以使用PWM来对SPEED1进行控制。
从电路中,我们可以看到,如果是高电平,Q7 就出于导通状态,电机工作;如果是低电平,Q7 截止,电机也停止工作,通过改变 PWM 占空比就可以起到电机调速效果。
以上两种方法在控制效果上基本一致,没有太多差别。
如不需要变速,用短接子将J4和J5短接。
如图2.5图2.5 小车接口电路由于给小车提供的是 +5V电压,通过实际测量可知:在此电压下小车速度过快不易控制,为此我们通过电阻分压来调节其大小使其产生所需速度。
计算过程如下:我们控制电流为5mA ,所的总电阻为:5V/5mA=1K 。
通过多次测量可知所需速度大小的控制电压值分别为:4.12V,3.53V,2.94V,2.35V所以所选电阻分别为150Ω,100Ω,100Ω,100Ω,400Ω。
调速模块原理图如图2.5所示:图2.5 调速电路3 自动小车总体设计电路4 软件设计4.1系统软件设计说明在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。
因此,软件设计在微机控制系统设计中占重要地位。
对于本系统,软件更为重要。
在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。
数据处理包括:数据的采集、数字滤波等。
过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制生产。
为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。
模块程序设计法的主要优点是:(1)单个模块比起一个完整的程序易编写及调试;(2)模块可以共存,一个模块可以被多个任务在不同条件下调用;(3)模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。
本系统软件采用模块化结构,由主程序﹑定时子程序、避障子程序﹑算法子程序构成。
4.2 主程序设计软件流程如图4.1流程图所示:4.3 开发环境关于keilKeil提供了一个微控制器的集成开发环境,配上不同的编译器可以开发各种单片机,包括arm微处理器等。
图4.2关于keil关于Keil的基本使用方法,只要掌握新建工程,性质设定(包括RAM,使用,晶振频率,编译选项,调试器等),编辑器设定(包括字体,缩进等),调试就差不多了,而这些不需要几个小时就熟悉了的,完全不用觉得多么复杂。
4.4 程序清单程序如下:org 00hajmp mainorg 0030hmain:qidong:jb p0.0,qidongacall delayjb p0.0,qidongmov sudu,#03hclr p2.6clr p2.7setb tr1start:jnb p2.0,startacall delayjnb p2.0,startmov sudu,#07hsetb tr0call delaacall delaacall delaacall delaacall delaajiance:mov c,p2.0mov 22h,cmov c,p2.1mov c,p2.2mov 24h,cmov c,p2.3mov 25h,cmov c,p2.4mov 26h,c zhangai:jb 25h,stopjnb 22h,youzhuanjnb 23h,youzhuanjnb 24h,zuozhuanjnb 26h,zuozhuanajmp jiance zuozhuan:clr p0.5clr p0.4mov sudu,#05hacall delaasetb p0.4setb p0.5mov sudu,#07hajmp jiance youzhuan:clr p0.6clr p0.7mov sudu,#05hacall delaasetb p0.7setb p0.6mov sudu,#07hstop:acall delayjnb 25h,zhangaiclr tr0mov a,fenmimov fenmc,amov a,#02hadd a,fenmcmov fenmc,aajmp $delay:mov 46h,#0ffhmov 47h,#0ffhi:djnz 47h,i1i1:djnz 46h,iretdelaa:mov 48h,#0ahii:mov 49h,#0afhii2:mov 50h,#0ffhii3:djnz 50h,ii3djnz 49h,ii2djnz 48h,iiretend5 电路的调试及调试过程中出现问题的解决5.1 电压问题在小车硬件电路的调试过程中,要求的电压非常严格,就是6V,另一方面由于小车车身扩展后很重,因此功耗比较大,一般的电池很难支持较长的时间,于是我们用直流稳压电源为小车提供电压。