基于单片机AT89C52智能循迹小车的设计.docx
《基于单片机AT89C52智能循迹小车的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机AT89C52智能循迹小车的设计.docx(35页珍藏版)》请在冰豆网上搜索。
基于单片机AT89C52智能循迹小车的设计
基于AT89C52单片机智能循迹小车的设计
摘要:
本系统采用AT89C52为核心进行设计,合理利用了该芯片上丰富的资源,实现小车检测,寻迹,控制等功能,同时,系统对获取的信息进行实时显示。
本系统针对现实中出现的对于工业机器人智能循迹的需求,适当进行了简化。
本次设计的智能小车,会自动沿着黑线行走,所行走的距离实时地显示出来,同时可以通过PWM信号控制小车的速度。
为了使小车的信息能够实时传输主控制系统,并很好的完成行走和转向等功能,就需要设计一套较为实用和可靠的算法,程序。
关键词:
循迹;PWM;算法;数码显示
1引言
当今社会,科学技术日新月异,时代前进的步伐越迈越快,应用自动化设备,计算机处理,现代化通讯,数字化信息,现代化显示设备等高新技术而建立的现代化智能,监控等系统已经得到充分的发展与应用,智能机器人也就应运而生。
同时,在建设以人为本的和谐社会的过程中,智能服务机器人能够完成考古发掘,海底探密,宇宙探索等危险作业,以保证人身安全。
《国家中长期科学和技术发展规划纲要》一文指出:
智能服务机器人是在非结构环境下为人类提供必要服务的多种高技术集成的智能化装备。
以服务机器人和危险作业机器人应用需求为重点,研究设计方法、制造工艺、智能控制和应用系统集成等共性基础技术。
重点研究低成本的自组织网络,个性化的智能机器人和人机交互系统、高柔性免受攻击的数据网络和先进的信息安全系统。
本次设计系统主要分为红外检测模块,小车控制模块,状态显示模块。
单片机通过红外检测模块等采集到的信息控制小车转向,行驶速度和显示。
2设计任务、要求和技术指标
2.1任务
(1)设计并制作一个智能小车,实现沿黑线行走而且不出线。
(2)小车从起跑线出发(车体不得超过起跑线),沿引导线到达终点(与车体垂直的黑线)。
2.2要求
(1)利用检测电路实现对黑线的检测功能,要求检测电路检测尽可能的简单
(2)机器车一旦启动,便由程序控制完成灵活的行走方式。
即在黑线的指引下前进,实现急停,转向和转向灯的控制。
(3)机器车开始行走的同时,开始显示行走距离。
(4)车体尺寸以一般玩具小车为限。
(5)无竞争-冒险,无抖动。
2.3技术指标
(1)红外检测电路能够检测到0.5-2cm左右的黑线。
(2)机器车偏离黑线,要求迅速做出调整,能够重新回到黑线。
(3)距离显示为行走时间的实时显示,显示距离的长度范围为0~999.9米。
(4)车身长度为20.5cm,宽度为9.5cm,高度为7.5cm。
(5)检测信号为电压信号。
3方案分析与论证
3.1主控系统的分析与论证
根据设计要求,我们认为此设计属于输入量的复杂程序控制问题。
据此,我们拟定了以下两种方案并进行了综合的比较论证,具体如下:
方案一:
采用组合数字电路实现核心控制的方案
采用组合电路实现控制和处理功能,具有速度快,资源丰富的优点,但是实现多路控制和附加功能上受到限制,且功能越多电路越复杂。
因此该方案不被采用
方案二:
采用单片机为核心控制的方案
采用单片机作为控制和处理的核心,可使电路的复杂程度大大降低,尤其是实现小车的自动控制上显现出独特的优势。
由于单片机AT89C52是一种低功耗,高性能CMOS8位单片机,片内含有8K的可反复擦写的只读程序存储器和256B的随机存取数据存储器,器件采用ATMEL公司的高密度,非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器和FLASH存储单元,32个可编程I/O口线,3个16位定时/计数器,8个中断源,低功耗空闲和掉电模式,完全符合设计的要求,所以采用AT89C52作为核心部件的方案较为理想。
3.2显示系统分析与论证
显示模块主要用于显示行走路程,由于显示范围为0~999.9米,因此可采用四位一体共阳的数码管作为显示元件。
在显示驱动电路中我们拟定了二种设计方案:
方案一:
采用静态现实的方案
采用四片移位寄存器74LS164作为显示电路,其优点在于占用主控系统的I/O口少,且静态现实的内容无闪烁,但电路消耗的电流较大,占用I/O口较多,而本设计的电机消耗电流已经很大,应尽量在其他电路中节约电流的消耗,因此该方案不被采用。
方案二:
采用动态现实的方案
采用专用数码管译码器BC7281B(以下简称7281)和74LS164共同协作来作为驱动的动态显示电路,它只占用主控系统的两个I/O口,大大节约了I/O口,且动态扫描7281单独控制,不需单片机定时扫描,这样就节约了单片机的定时单元用于做驱动和车速检测,故采用本方案。
3.3检测系统分析与论证
由于本设计中的技术指标要求识别精确范围0.5~2cm,因此本定方案中采用的是反射式的未经调制的红外收发管ST168作为检测黑线的传感器。
考虑到该传感器要检测的距离比较短,所以采用的加套管的方法避免外界自然光线的影响,没有加入补偿电路,这样大大简化了电路的设计,为了使小车更好的沿循迹线行走,我们加入了四路检测黑线,且让他们独立工作,由主控系统循环检测。
3.4电机控制系统分析与论证
方案一:
采用继电器对电机的开和关进行开关的切换调整。
这个方案简单,但是响应慢,机械结构易损坏并且寿命不长。
方案二:
利用电阻分压原理,采用数字电位器调整电机的分压从而达到调速的目的,缺点是无法大电流驱动,降低工作效率而且不易实现。
方案三:
采用复合观组成的H型PWM电路,这种电路的优点是使管子工作在占空比可调的开关状态,提高使用效率实现电机转速的微调,并且H型的驱动电路可以简单的方式实现的方向控制。
电机的控制系统主要是由控制行走电机和方向调整电机的电路所组成,该电路要求驱动电流足够大且在控制中不会发生竞争-冒险现象,因此在设计中我们采用方案三即图一的设计方案,图一中的二极管有效地实现了电路保护和正反向电流的控制,也避免了竞争-冒险,采用差分放大电路可提供足够大的电流,实验证明该方案三很好,电压控制安全可靠,可被采用。
4功能概述及系统原理框图
4.1功能概述和技术指标分析
本次设计系统主要是让小车自主的沿着预先设计好的黑线行驶,从出发到结束都不会脱离黑线,同时显示小车所行走的距离,行驶中的各种转向都伴有相应转向灯的点亮,直到小车检测到结束黑线,点亮结束指示灯。
本设计的小车采用市场上常见的具有前导向轮的玩具车车体,该车体有双电机,前电机控制小车的转向,后电机控制小车的前进后退及速度。
这种小车的设计大大简化了小车的控制过程,使得控制程序简化,但是也有个不足之处即有最小转向半径的要求,这就要求循迹线的弯道设计必须大于小车的最小转向半径。
系统技术指标主要偏重于功能性。
小车行走功能依靠对电机的驱动及调速,我们采用H桥式驱动电路实现直流电机的正反转及转速控制;循迹采取的方法是红外探测法,由四组红外光电探测器对行走地面的颜色识别从而判断行走路线;路程检测采用霍尔元件对磁性物质的检测来实现,当霍尔元件检测到小车车轮上的磁性物质时,霍尔元件输出低电平,将此低电平输入到计数器中断中,每当计数值满,就显示出来小车的所行走的距离。
4.2系统原理框图
硬件组成框图如图1所示:
主要有AT89C52单片机、红外检测电路、路程检测电路、显示电路、驱动控制电路、方向控制电路。
图1
5硬件电路及介绍
5.1电机驱动控制电路
电机驱动控制模块采用的是分立元件制作,具体电路见下图2所示。
电机驱动电路由I/O口输出信号送RUNF和RUNB,VCC是给电机供电的电源。
电机的控制原理为:
通过RUNF和RUNB的不同电平输入,在M处得到正反向控制电压实现电机的正反转,例如:
当RUNB为高RUNF为低时,三极管T4,T6,T9导通;T5,T7,T8截止,此时二极管D1导通,从而驱动电机正向转动。
当需要电机反转时,同理只需要输入端RUNF和RUNB的电平反向即可。
输入端由AT89C52的I/O控制。
两路输入信号的均为30Hz占空比为30%
控制电路的控制方式如表1所示:
图2
表1电机驱动方式列表
信号名称
输入
输出
RUNF
0
正向电压
RUNB
1
RUNF
1
反向电压
RUNB
0
RUNF
0
短路
RUNB
0
RUNF
1
短路
RUNB
1
注:
小车转向模块的电路与驱动模块电路相同
5.2电源模块
采用9V蓄电池为直流电机供电,将9V电压降压、稳压到5V,为外围芯片供电。
我们利用LM7805芯片将9V的锂电池降压到5V,由5V电压来给单片机和其它控制模块供电。
具体电路图如下
图2
5.3距离检测模块
距离检测模块是采用霍尔元件进行感应检测,这样可以很好提高检测的准确性,检测原理是利用计数器中断1,计算小车车轮的直径,在小车的车轮上装上一个小铁片,当霍尔元件检测到一次低电平,计数器中断加一,达到预先设置的数值时,显示距离,这是一种最为简单,实用的方法,算法少,占用单片机运行时间短,可以更好的使单片机一直工作在主程序循迹程序中。
具体硬件原理图如下:
图4
5.4显示模块
显示部分有两部分组成,一部分由六个发光二极管组成以指示各部分工作状态,单片机开始工作时D1灯亮,小车在行走过程中,左转时D2、D3亮,右转时D4、D5亮,停止时D6点亮。
电路原理图如图5所示。
另一部分由一个四位一体的共阳数码管组成显示机车运行的路程,该部分的主要芯片为BC7281B,该芯片的驱动能力强,占用I/O口少,且不用单片机进行动态扫描,不需要译码,大大的节省了单片机有限的资源和显示所占用的时间。
图5
图6
5.5红外检测模块设计
红外检测模块主要是由ST168组成。
ST168采用高发射功率红外光电管和高灵敏光电晶体管组成,其测试距离为5-10mm,ST168的外形及内部结构如下图:
图7
红外检测模块电路原理图如上图所示此电路的工作原理:
当ST168检测到白线时,自身所发射的红外光线被白色反射接收到,使得自身的光电三极管导通,在LM319的4号引脚将检测到低电平,低于5号引脚的比较电平2.5V,在12号引脚上将输出低点平,相反,当检测到黑线时,自身所发出的红外被黑色吸收,光电三极管截止,4号引脚为高电平,12号引脚输出高电平,单片机根据这个开关量做出反应,来控制小车的左右转向。
该检测系统共有四个这样的模块,分别为左一,左二,右一,右二,具体分配如下图:
图8
左一,右一,作为循迹主要检测部分,左二右二作为辅助检测,其控制原理如下:
当检测到左一,或者右一有高电平信号时,说明小车已经偏离了黑线,调整,但是由于车速,小车自身反映时间或者弯道太大的缘故,使得小车在还没有调整过来之前,已经超出了左一,或者右一得检测范围,这样可以由左二右二做出补偿调整,使得小车重新回到轨道上来。
5.6主控系统电路
该系统由单片机AT89C52实现。
AT89C52的主要性能有:
①与MCS-51产品兼容;②8KB的在线可重复编程快闪存储器;
宽工作电压范围为2.7V~6V;④256×8位SRAM;⑤15条可编程I/O线;⑥2个16位定时器/计数器;⑦全静态工作方式:
0Hz~24Hz等。
设计采用了12M晶振,5V电源供电,把P1、P2、P4口作为普通I/O线用,P3口为中断等的接入口。
另外,P0口的驱动能力最强,可用于直接驱动LED灯。
输入口都可以吸收20mA的灌入电流,当向端口写入电平“1”时,可作为输出引脚。
主控系统电路主要承担计时,数据采集和送出控制信号的功能,对目标识别与控制起着核心作用,各功能通过软件实现。
单片机AT89C52主控电路图如下图9所示:
图9
6软件设计
6.1智能小车程序流程说明
程序主要通过程序主模块通过调用各个子模块来实现,主模块的任务包括:
对I/O口的循环检测,调用相关子程序对输入响应进行相应的处理。
由于AT89C52有三个定时器,在本设计中可将T0用于计数器和数码管显示距离的控制;将T1用于脉冲编码调制(PWM)和频率的调节。
两个定时器均采用中断工作方式,且默认其优先级,即计数器的优先级高于定时器优先级。
T1工作在定时方式模式1中,T0工作再计数方式模式2中。
对工作模式寄存器(TMOD),中断允许控制(IE)的设置如表2所示,程序的主流程图如图(10)所示
表2
TMOD(89H)
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
1
0
1
1
0
IE(A8H)
EA
ES
ET1
EX1
ET0
EX0
1
0
1
0
1
0
程序初始化,I/O口检测与调整,控制端和定时器的软件设置清单如下:
RUNFEQUP0.1
RUNBEQUP0.0;驱动口设置
Y1EQUP2.7
Y2EQUP2.6
Z1EQUP2.5
Z2EQUP2.4;调整信号
TLEQUP0.2;左转调整口
TREQUP0.3;右转调整口
ZSEQUP3.6;停止指示灯
CLKBITP1.1
DATBITP1.0
PWMHDATA30H
PWMLDATA31H;脉宽调制设置
JSDATA32H;计数
YSDATA33H;延时外层嵌套
TIMERDATA34H;延时用寄存器
TIMER1DATA35H
TEMPDATA36H
TH1_DEQU0FEH;定时器初始化设定值
TL1_DEQU18H
…
MOVTMOD,#16H;T0工作于模式2,T1工作于模式1
MOVTH1,#0FcH
MOVTL1,#18H
MOVTH0,#0FFH
MOVTL0,#0FFH;设置T0,T1初值
SETBET1
SETBET0
SETBTR0;T0开始计数
SETBEA:
开中断
….
XJ:
MOVA,P2;读入调整信号
ANLA,#0F0H;p2低4位至零,高4位不变
MOVB,A;B=P2
ANLA,#0A0H;P2的5和7位不变
CJNEA,#0A0H,NEXT_XJ;5和7位都为1则跳转,否则停止
SJMPSTOP
NEXT_XJ:
MOVA,B
ANLA,#50H;p2的第4、6位不变
CJNEA,#50H,ZZ_1;判断是否停止;p2的4、6全为1停止,否则跳转
SJMPSTOP
ZZ_1:
JBZ1,ZZ;是否左转
JBZ2,DTL
JBY1,YZ;是否右转
JBY2,DTR
AJMPXJ
图10主程序流程图
6.2各功能子模块及流程说明
(1)显示模块:
主要功能是显示小车行走的距离,由程序控制,T0计数器每计数满,代表小车以行走完10cm的距离,这时使得存放距离的最低位数据(4位数据存放地址由低到高依次为37H,38H,39H,40H)加一,并由单片机控制BC7281B显示,具体流程图如下:
START_DELAY:
MOVTIMER1,#225
DJNZTIMER1,$
DJNZTIMER,START_DELAY
MOVR7,#12H
……
LCALLSEND_BYTE
MOVR7,#15H;显示第四位
LCALLSEND_BYTE
MOVA,DISP_3
ANLA,#0FH
ADDA,#30H
MOVR7,A
LCALLSEND_BYTE
;BC7281初始化结束
**********计数中断显示**********
COUNT:
PUSHACC
MOVA,DISP_0
MOVR7,#15H;显示第一位
LCALLSEND_BYTE
MOVA,DISP_0
ANLA,#0FH
ADDA,#0
MOVR7,A
LCALLSEND_BYTE
MOVA,DISP_0
INCA
MOVDISP_0,A
CJNEA,#0AH,COUNT_BACK
MOVDISP_0,#0
……
MOVR7,#15H;显示第三位
LCALLSEND_BYTE
MOVA,DISP_2
ANLA,#0FH
ADDA,#20H
MOVR7,A
LCALLSEND_BYTE
COUNT_BACK:
POPACC
RETI
(2)电机控制及PWM脉冲模块:
主要任务是实现电机的快慢速,正反转控制。
控制电机为直流电机,通过PWM信号控制,PWM控制信号由软件产生,PWM信号的占空比由软件来设定。
当小车偏离轨迹时通过软件改变前轮电机控制标志RUNF和RUNB的电平控制小车的左右转向,同理控制小车后轮的前进和倒退,并有PWM信号控制小车的速度快慢。
该控制程序有定时器中断1完成。
电机控制程序清单如下:
PUSHACC;保护现场
MOVTH1,#TH1_D
MOVTL1,#TL1_D;定时器重新装入初值
MOVA,JS
INCA
MOVJS,A
CJNEA,PWMH,CS
CLRRUNF
CS:
CJNEA,PWML,FH
SETBRUNF
MOVJS,#00H
FH:
POPACC;恢复现场,返回
RETI
7系统调试与测试
测量仪器:
卷尺,万用表,双踪示波器,WYJ-30V/10A晶体管直流稳压电源。
7.1测试电路的调试与测试
该电路的调试主要是调节红外检测传感器电路的R11(图7)的阻值,由于这个电阻可以调节ST168的发射管的发射功率,提高其发射功率就能调节其有效距离,但是由于没有补偿电路,在调节过程遇到了很多的麻烦,即外界的干扰强,如果电阻调的过小,那么ST168的发射功率过大,从而使得有效距离太远,检测距离太近造成对黑线也反射,失去了检测黑线的意义,但是如果电阻太高,使得发射功率过小,使得对白线也是低电平,同样失去了检测的意义,在接近需要电阻时,自然光的影响较大,甚至外界光线稍微变化,就会出现ST168输出电平的变化,为了解决这个影响,我们将ST168在稍微弱的光线下有效距离调到0.5-1cm,然后加入套管,屏蔽到大部分的自然光的影响,最后的调试电阻R11的阻值为1.2k,获得了极大的成功,即使在黑暗和强光的照射下,依然能能够很好的使用,经测试,左一,左二,右一,右二检测成功。
7.2显示电路的调试与检测
显示电路由于以前的制作多次用到BC7281,所以,硬件上没有出现问题,但是在调试中出现因送显示占用较多的时间,使得循迹过程出现偏差,我们做了如下调整:
第一位时,只点亮第一位数据,这样在显示的过程就减少了因为送其他没有变化的数据,而不占用多余的时间,最后结果:
智能小车在开动时,小车显示距离初始化为零,每当小车行走10cm,小车都能准确的进行加一显示,并且显示清晰,实验结果表明功能完全实现,测试成功。
7.3电机控制电路的调试与测试
在电机开启后小车能够准确的沿着预先设置的黑线前进,在转向过程中能够准确的给出转向灯,当检测到前方有横置黑线即默认结束线时,遇到了一些麻烦,当小车走到结束黑线时,由于小车的速度和车身角度,使得检测模块没有完全对准黑线,而程序控制中最初以红外检测全高电平即为停止(全部检测到黑线),这时即使有三个红外检测口已经检测到黑线,那个小车依然进行循迹程序,最后我们做出了调整,即考虑到黑线宽度使得四个红外检测的左边和右边在循迹过程中不可能同时检测到黑线,如果检测到,即为停止线,所以在停止控制中,将停止的程序控制写为左一左二的任意一个检测到黑线的同时右一右二的任意一个也检测到黑线,即为停止,在执行停止程序时考虑到惯性的影响我们将小车的停止程序改为令小车迅速开启反向电机,利用倒退来缓冲惯性,使得小车能够急停。
最后测试,完全符合要求,测试成功。
7.4方向调整电路的调试与测试
小车在行进的过程中,最初容易出现小车偏离黑线虽然已经做出了调整,但是调整的时间长,又重新走偏,甚至走出线,我们调整了转向的延时时间,经测试,在做小调整时,延时时间为1ms,大调整为直到回到线上才停止转向。
这样即使在急转外上即弯道的半径小于小车的最小转动半径,小车即使出线,也能够准确的从新回到黑线上去,最后测试成功。
8结论
充分分析我们的系统,其关键在于实现小车对黑线的识别与系统控制,而在这一点上,单片机就显示出来它的优势——识别控制简单,方便,快捷。
这样一来,单片机就可以充分发挥其速度快,有较为强大的控制功能及可位寻址操作的功能,且价格低廉,可用附加电路实现电路的扩展。
因此可看出电子领域的智能化发展,必将向着更加灵活,更加方便的轨道发展,智能化把人类带进梦幻般的世界是完全可能的,我们的生活也将更加的璀璨多彩。
9致谢
衷心地感谢院、系领导的大力支持,特别感谢李建法老师,感谢他在毕业设计过程中对我们的毕业设计给予的基础知识、专业知识以及应用实践等诸多方面指导与帮助,让我们得以顺利完成毕业设计,使我的大学生活能够顺利地画上圆满的句号。
最后请允许我向所有关心支持我们毕业设计的领导、老师、同学表示我最诚挚的感谢!
参考文献
[1]李朝青.单片机原理及接口技术[M].北京:
北京航空航天大学出版社,2005.9
[2]谢自美.电子线路综合设计[M].武汉:
华中科技大学出版设,2006.6
[3]郁有文,常建,程继红.传感器原理及工程应用.[M].西安:
西安电子科技大学出版社,第2版,2000.8
[4]TimothyJ.Maloney,ModenIndustrialElectronics[M].北京:
科学出版社,2002
[5]童诗白,华成英.模拟电子技术基础[M].北京:
高等教育出版社,2001
[6]闫石.数字电子技术基础[M].北京:
高等教育出版社,1998
[7]陈尚松,雷加,郭庆.电子测量与仪器[M].北京:
电子工业出版社,1998
ATraction-ControlSystemBasedOnMCU
LiWeili
(SchoolofPhysicsandElectricalEngineering,AnyangNormalUniversity,Anyang,Henan455002)
Abstract:
ThissystemusesAT89C52chipasacoreanditsrichresourcestoachieveasmartcarwithfunctionsofdetection,motion,controlandothers,meanwhilesystemwillobtaintheinformationforreal-timedisplay.Inviewoftherealityofthesystemforworkingoftheindustryofrobotalongthelinedemand,wemakeaproperconductofasimplified,Amongthem,theyhaveasmartcar.Intheprocess,thesmartcarwillautom