基于单片机的步进电机驱动智能小车Word格式.docx
《基于单片机的步进电机驱动智能小车Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的步进电机驱动智能小车Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
2.1设计要求
设计一个步进电机驱动的智能小车。
采用AT89S51单片机为控制核心,在最小系统的基础上,通过对外围传感器信号和控制按键的检测,控制步进电机的启动、加速和停止,使智能小车可以循着黑线行走,碰到障碍物可以合理避障,探测到金属可以发出报警信号,从而使智能小车实现合理的行走。
(1)智能小车可实现正、反转控制;
(2)智能小车行走速度、位置可控制;
(3)智能小车可实现光电循迹、红外线避障、金属探测传感器的功能;
(4)LCD液晶显示计时和行程.
2。
2总体设计方案
2.2.1系统总体设计方案
要求设计并制作一个以单片机为控制核心的智能小车。
采用步进作动力,小车具有地面黑白线自动寻迹、自动避障、金属探测等功能,操作者可以通过按钮启动小车能按照预定的要求自动运行.本系统采用AT89S51单片机为为核心控制芯片,包括自动寻迹电路、金属探测电路、红外检测电路、电机驱动电路.可在小车车身装上LED显示小车的运行状况并通过汇编完成智能小车的监控装置.总体设计框图,如图1所示。
图1步进电机驱动智能小车总体结构框图
2.2基本模块设计方案
(1)、车体设计
自己制作电动车.经过反复考虑论证,我们制定了左右两轮分别驱动,后万向轮转向的方案。
即左右轮分别用两个转速和力矩基本完全相同的直流电机进行驱动,车体前部装一个万向轮.这样,当两个直流电机转向相反同时转速相同时就可以实现电动车的原地旋转,由此可以轻松的实现小车坐标不变的90度和180度的转弯.
在安装时我们保证两个驱动电机同轴.当小车前进时,左右两驱动轮与后万向轮形成了三点结构。
这种结构使得小车在前进时比较平稳,可以避免出现后轮过低而使左右两驱动轮驱动力不够的情况。
为了防止小车重心的偏移,前万向轮起支撑作用。
(2)、电机的选择
对于智能小车来说,其驱动轮的驱动电机的选择就显得十分重要。
由于本题目要实现对寻迹路线的准确定位和精确测量,我们综合考虑以下方案。
采用步进电机作为该系统的驱动电机。
由于其转过的角度可以精确的定位,可以实现小车前进路程和位置的精确定位。
虽然采用步进电机有诸多优点,步进电机的输出力矩较低,随转速的升高而下降,且在较高转速时会急剧下降,其转速较低,不适用于小车等有一定速度要求的系统。
经综合比较考虑,我们放弃了此方案.
(3)、电机驱动模块
由于电动车采用了前面使用万向轮,两个后轮各一个电机驱动的驱动方式,所以可使电动车旋转360度,这样即使前后方都碰到障碍物的时候,电动车也可以通过在原地不断旋转的方式找到避免撞击障碍物的线路。
利用LM298及其外部辅助电路和电机构成驱动电路。
单片机控制口接两个LM298的八个输入控制端。
两个L298的八个输出端接步进电机.
3单元硬件电路设计
3。
1电源电路模块
在设计中,我选用一个简单的电源电路,该电源模块提供了+7。
2V、+5V,也可为其他电路系统供电,达到有效的利用.220V的交流电压通过整流桥,经过滤波,再通过LM2940C集成稳压管得到稳定的+7.2V的直流稳压电源,通过LM2940C集成稳压管得到稳定的+5V的直流稳压电源。
电路原理图如图2所示:
图2电源电路
2光电寻迹模块
图3所示电路中,R3起限流电阻的作用,当有光反射回来时,光电对管中的三极管导通,R4的上端变为高电平,此时VT1饱和导通,三极管集电极输出低电平。
当没有光反射回来时,光电对管中的三极管不导通,VT1截至,其集电极输出高电平。
而且经试验验证给此电路供电的电池的压降较小。
因此我们选择此电路作为我们的传感器检测与调理电路。
此光电对管电路简单,工作性能稳定.
图3光电循迹电路检测
3金属探测传感器模块
图4所示电路中,我们选用型号:
LJK-D4N金属探测传感器,将其检测面对准运行路面,当小车距离金属块20mm~30mm时,输出一个低电平信号,然后送至单片机,查询判断后控制电动机产生相应动作,使小车车速减慢,并可进行声光提示。
本模块操作简单,准确且抗干扰性能越优.
图4金属探测电路
3.4红外避障模块
图5所示电路采用红外线壁障,利用一管发射一管接收,接受管对外界红外线的接收有无来判断障碍物,这种方式干扰小,而且易于实现。
由于红外线受到外界可见光的影响较大,因此用38KHz调制信号,红外发射二极管发射红外线,在没有遇到障碍物时会输出一个高电平信号,送至单片机中P2.3,如果遇到障碍物后,光线反射回来,接收的光电二极管就会导通,这时候就会输出一个低电平,送至单片机P2.3。
图
图5红外避障检测电路
5单片机AT89S51核心模块
3.5.1单片机芯片的选择
选择AT89S51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM-FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器.该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容.由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案.
图6单片机最小系统电路
单片机端口分配如下:
P0。
0-P0。
7端口分配给步进电机驱动板的控制端;
P1。
0-P1。
7端口分配给液晶显示器的数据端;
P3。
5—P3。
7端口分配给液晶显示器的控制端;
P2.0-P2.2端口分配给三路光电寻迹检测电路的信号端;
P2。
3—P2。
4端口分配给两路红外线避障的检测信号端;
5端口为金属探测器的检测信号端;
0-P3。
3端口分配给四个按键的控制端;
6—P2.7端口分配给步进电机驱动电路板中的两块驱动芯片L298N的使能端。
3.5.2时钟及复位电路
时钟电路的设计:
在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式.由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。
内部振荡方式的外部电路如图7所示:
图7时钟电路
图中,电容器C1、C2起稳定振荡频率、快速起振的作用,其电容值一般在5—30pF,我选用30pF.晶振频率的典型值为12MHz(我所选用),采用6MHz的情况也比较多。
内部振荡方式所得的时钟信号比较稳定,实用电路中实用电路中使用较多.也有外部振荡方式,我选用内部振荡方式设计.
复位电路的设计:
当MCS-51系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。
如果RST持续为高电平,单片机就处于循环复位状态。
根据应用的要求,复位操作通常有两种基本形式:
上电复位和上电或开关复位。
如图8所示:
图8复位电路
电源接通后,单片机自动复位,并且单片机运行期间,用开关S1操作也能使单片机复位。
总结时钟及复位电路如图9所示:
图9时钟及复位电路
3.6按键控制模块设计
这次设计中,我采用了四个独立式按键对小车进行四种不同模式的控制。
按键电路如图10所示,按键检测信号由单片机的P3。
0-P3.3端口采集,输出低电平时说明有键按下.
图10按键电路图
S2键:
由单片机P3。
0检测,作为步进电机正转的启动键。
S3键:
由单片机P3.1检测,作为步进电机反转的启动键。
S4键:
由单片机P3.2检测,作为步进电机的加速键.
S5键:
由单片机P3.3检测,作为步进电机的停止键。
7LCD显示电路
采用型号为LCD1602的液晶显示器进行小车行车时间和行程的显示,其电路如图11所示。
图11液晶显示电路图
7步进电机驱动设计电路
图11所示电路主要采用两块型号为:
L298驱动芯片的输入脚经过光电耦合器接到单片机的P0。
0~P0。
7引脚来对步进电机进行开始、停止、左转、右转等功能。
图11步进电机驱动电路
4系统软件设计
4。
1主程序流程图
本设计的主设计流程图如图12所示,当接通电源时,必须按下启动按键小车才能运动,在行驶过程中,结合查询方式查询小车是否偏离黑线,并根据偏离方向执行相应的控制程序;
若P2。
5为低电平,测探测到金属,执行对应的报警程序;
当检测到障碍物时,会产生中断,执行对应的避障程序。
图12系统软件主流程图
2步进电机方向及速度控制程序流程图
图13所示流程图中,表示如果给步进电机阀一个控制脉冲,它就转一步,再给一个脉冲,它就会再转一步,两个脉冲的间隔越短,步进电机就转的越快。
在这个程序中主要实现对一个步进电机脉冲的分配、根据键盘检测正反转方向控制、速度控制等,并且两个步进电机的方向及速度控制可根据以下子程序自行修改实现.
同时它主要完成两项工作:
一是黑白线信号检测采集,二是根据检测信号控制小车的向左转或向右转,使小车始终沿着黑线行进。
图13步进电机方向及速度控制流程图
3金属探测及控制设计流程图
图14所示流程图,当金属探测器通上+7.2V的电源时,碰到金属,则金属探测器的指示灯会发亮报警了,同时输送一个低电平给单片机模块.
图14金属探测控制流程图
4红外避障及控制设计流程图
红外避障检测机控制子程序流程图如图15所示。
可以在小车车头的左右各装一个红外检测避障电路,单片机的P2.3和P2.4在收到接收到的红外检测电路输出信号后,利用单片机控制电机在遇到障碍物时使小车转弯.
图15红外避障控制电路流程图
5系统调试
5.1硬件调试
5.1。
1单元模块的测试
(1)电源电路测试:
设计并搭好电源电路,并用万用表进行检测电路连接情况,在确定电路没问题后,同电源端通上7。
2V的电源,按下开关,观察发光二极管是否发生变化.
(2)光电寻迹模块测试:
在以连接好的光电寻迹电路中,通电后,在反射式光电传感器上面放一张白纸,用电压表测量LM393的输出端1号引脚是不是为高电平;
在放一张贴有黑胶布的纸张或者是黑色的物品放在反射式光电传感器的感应部分,看电压表的的电压是否为低电平;
来回移动带有黑胶布的纸张或黑色物品,看电压表的电压值是否高低电平的变化.
(3)红外避障电路测试:
首先在搭接好的电路中用万用表测量可调电阻的阻值将其调到10K欧姆;
再用万用表在输出端测量未碰到障碍物时电压值是否为高电平,当碰到障碍物时,观察电压值是否为变为低电平。
(4)金属探测电路测试:
首先采用LJK—D4N金属探测传感器,给它导入7.2V的电源,并在接电源端和输出端之间接个4.7K欧姆电阻;
再用万用表测量尚未碰到金属时输出端是否为高电平;
当碰到金属时,指示灯是否亮,这时候再用万用表测量此时的输出端是否为低电平。
5。
2软件调试
当保证硬件电路正常工作的前提下,对软件开始进行调试。
通过Medwin3软件将主流程框图的步骤一步一步的将各个部分程序写好,通过仿真软件proteus在线下载调试,观察仿真情况是否和预计的要求一致.慢慢的完善了整个系统程序,在确定无误时,用编程将正确的程序写入AT89S51中,然后将芯片放入电路中使用,完成了软件的调试。
6心得体会
在这里首先要感谢老师对我们毕业设计的指导和帮助。
通过本次设计,深深感到理论与实践之间的差距。
在学习专业课程的同时,很多知识点在理论完全应用到了,但到具体的电路设计与实现中,会出现很多一时无法理解的现象,都要通过不断的通过强化自身的实践动手能力的培养,才能用理论来指导实践,通过实践来进一步深入理解理论。
在连续两个月的毕业设计时间当中深刻的认识到一个科学产品的制造过程是要考虑到众多的因素;
一个小小的细节都有可能导致整个设计无法达到预期效果。
在这一次的设计当中先从传感器检测其应用到最小系统芯片端口的分配,再到步进电机的驱动模块,当然还有其中的proteus的仿真设计等等,都让我深刻的明白的一个产品生产者背后的心酸。
同时加强了自己对研究项目的认识和对以后自己工作上的帮助。
参考文献
[1]谭浩强《C程序设计》;
北京:
清华大学出版社,1999.
[2]佚名《ATMEL单片机在电子竞赛中的应用》;
北京航空航天大学出版社,2005.
[3]欧青立,何克忠《室外智慧移动机器人的发展及其关键技术研究》;
机器人,2000,2(6):
519-526.
[4]何希才《传感器及其应用电路》;
北京:
电子工业出版社,2001.
[5]王晓明《电动机的单片机控制》;
航空航天大学出版社,2003.
[6]陈懂,刘蓉,金世俊《智能小车的多传感器资料融合》、现代电子技术(电子元器件),2005.
附录
附录1系统程序
#include〈reg51。
h〉
unsignedcharcodetable[]={0xfa,0xf9,0xf5,0xf6,0x00,0xfa,0xf6,0xf5,0xf9,0x00};
sbitkey1=P3^0;
sbitkey2=P3^1;
sbitkey3=P3^2;
sbitkey4=P3^3;
unsignedintk,t;
voiddelay(inti)//延时子程序
{
for(k=i;
k〉0;
k-—);
}
voidZhengZhuan(void)//正转子程序
{
key1=0;
key2=1;
for(t=0;
t〈4;
t++)
{
P0=table[t];
delay(20000);
}
voidFanZhuan(void)//反转子程序
{
key1=1;
key3=1;
key2=0;
for(t=5;
t<
9;
{
voidJiaSu(void)//加速子程序
key1=1;
key2=1;
key3=0;
if(key1==1&&
key3==0)
{for(t=0;
4;
P0=table[t];
delay(10000);
}
}
voidSaoMiao(void)//扫描子程序
if(key3==0)
JiaSu();
}
voidmain(void)//主程序
{
P0=0xff;
while
(1)
if(key1==0)
ZhengZhuan();
SaoMiao();
if(key2==0)
{
FanZhuan();
if(key4==0)
P3=0xff;
}
附录2实物图