基于AT89S52的简易自动入库小车wu.docx
- 文档编号:10654855
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:16
- 大小:284.19KB
基于AT89S52的简易自动入库小车wu.docx
《基于AT89S52的简易自动入库小车wu.docx》由会员分享,可在线阅读,更多相关《基于AT89S52的简易自动入库小车wu.docx(16页珍藏版)》请在冰豆网上搜索。
基于AT89S52的简易自动入库小车wu
简易自动入库小车
默认分类2009-05-2921:
40阅读331评论2
字号:
大中小小
摘要:
以AT89S52单片机作为微控制器,设计出一种简易自动入库小车,通过红外传感器检测黑带信号,利用单片机输出PWM脉冲控制舵机和减速直流电机的转向和转速,使小车按预先设计好的路线安全的停入车库,并且能按设计要求自动退出车库。
关键词:
AT89S52;舵机控制;红外传感器检测电路;PWM脉宽调节
0引言
本课题重点在于控制小车行驶的速度、黑带检测、转弯的精度以及对铁片的检测。
难点在于协调好小车行驶速度与转弯之间的关系,这样才能保证小车在行驶过程中不越界。
本设计可以应用于工厂的自动化管理,实现过车间之间货物的传送;还可以对其进行功能扩充(例如增加超声波传感器,使其具有测距和避障功能),将其应用于无人驾驶等。
1 设计方案与论证
采用ATMEL公司生产的AT89S52型单片机作为我们的控制单元,因为该型单片机价格便宜,功能比较强大,性价比高,而且在市场上很容易买到。
通过红外传感器、电感式接触开关等器件来采集各类信息,送入主控单元单片机,处理数据后完成相应动作,以达到自身控制。
其中寻迹(黑带检测)采用市面上通用的发射管及接收头,经过单片机调制后发射。
铁片检测采用电感式接近开关LJ18A3-8-Z/BX检测。
此系统比较灵活,更重要的是采用软件方法来解决复杂的硬件电路部分,使系统硬件简洁化,各类功能易于实现,能很好地满足题目的要求。
黑带寻迹采用红外线发射和接受原理。
铁片检测采用电感式接近开关LJ18A3-8-Z/BX检测,产生的高低电平信号经过处理后控制小车停转,完成进入车库的任务。
此系统比较灵活,采用软件方法来解决复杂的硬件电路部分,使系统硬件简洁化,各类功能易于实现。
2.系统硬件设计
2.1系统总体设计
采用AT89S52单片机作为小车的控制单元。
在小车的前端接八路红外传感器
作为小车进入车库过程中黑带的检测元件,在小车的后段在接上八路红外传感器作为小车倒车退出车库是黑带的检测元件。
采用LJ18A3-8-Z/BX电感式接近开关作为车库内铁片的检测元件。
单片机接收到锅炉专干其检测到的信号后通过相应的程序控制小车的前进、后退、转弯,从而使小车的性能指标满足课题要求。
其系统结构图如图1所示。
图1智能车运行基本原理图框图
2.2 单元电路的设计
黑带检测方案选择
方案一:
采用发光二极管发光,用光敏二极管接收。
其电路图如图2所示。
当发光二极管发出的可见光照射到黑带时,光线被黑带吸收,光敏二极管为检测到信号,呈高阻抗,使输出端为低电平。
当发光二极管发出的可见光照射到地面时,它发出的可见光反射回来被光敏二极管检测到,其阻抗迅速降低,此时输出端为高电平。
但是由于光敏二极管受环境中可见光影响较大,电路的稳定性很差。
图2光敏二极管检测黑带电路
方案二:
采用光敏电阻接受可见光检测。
其电路图如图3。
该电路采用T性网络,可避免使用太大的反馈电阻,并且便于提高输入阻抗。
六组光敏电阻用于检测可见光信号。
但光敏电阻检测到黑带时,输出端为低电平,但用光是电路输出端显示为高电平,信号返回给单片机,通过单片机控制前轮的转向。
但由于需要正负电源,同时光敏电阻易受环境影响,稳定性也很差
图3光敏电阻检测黑带
方案三:
利用红外线发射管发射红外线,红外线二极管进行接收。
采用六组红外光敏耦合三极管发射和接受红外信号,外面可见光对接收信号的影响较小,再用射极输出器对信号进行隔离。
接收的红外信号转换为电压信号经LM339进行比较,产生高电平或低电平返回给AT89S52。
LM339集成块采用C-14型封装,图4为其外型及管脚排列图。
LM339类似于增益不可调的运算放大器。
每个比较器有两个输入端和一个输出端。
两个输入端一个称为同相输入端,用“+”表示,另一个称为反相输入端,用“-”表示。
用作比较两个电压时,任意一个输入端加一个固定电压做参考电压(也称为门限电平,它可选择LM339输入共模范围的任何一点),另一端加一个待比较的信号电压。
当“+”端电压高于“-”端时,输出管截止,相当于输出端开路。
当“-”端电压高于“+”端时,输出管饱和,相当于输出端接低电位。
两个输入端电压差别大于10mV就能确保输出能从一种状态可靠地转换到另一种状态,把LM339用在弱信号检测等场合是比较理想的。
LM339的输出端相当于一只不接集电极电阻的晶体三极管,在使用时输出端到正电源一般须接一只上拉电阻。
图1a给出了一个基本单限比较器。
输入信号Uin,即待比较电压,它加到同相输入端,在反相输入端接一个参考电压(门限电平)Ur。
当输入电压Uin>Ur时,输出为高电平UOH。
图1b为其传输特性。
本方案经济实惠,易于实现,可靠性好,因此采用方案三。
黑带检测电路图如图6所示。
输出信号进入LM339。
稳定性能得到提升。
当小车低部的某边红外线收发对管遇到黑带时输入电平为低电平,反之为高电平。
结合中断查询方式,通过程序控制小车往哪个方向行走。
图4 LM339外型及管脚排列图 图5LM339接法
2.2.3检测铁片方案选择
方案一:
采用电涡流原理自制的传感器,取材方便,但难以调试,输出信号也不可靠,成功率比较低,难以准确输出传感信息。
方案二:
采用市面易购的电感式接近开关,本系统采用市面比较通用LJ18A3-8-Z/BX来完成铁片检测的任务。
检测铁片电路原理图如图4所示。
LJ18A3-8-Z/BX接近开关靠近铁片时产生低电平,该信号经放大后传给单片机,单片机通过内部程序控制电机停转。
虽然电感式接近开关占的体积大,但对本设计是可以接受,而且输出信号较可靠,稳定性好,受外界的干扰小
图6检测铁片电路原理图
方案三:
采用市面比较通用LJ18A3-8-Z/BX来完成铁片检测的任务,其电路图如图5。
接触开关直接接单片机,但接触开关LJ18A3-8-Z/BX靠近铁片时,产生一个低电平返回给单片机,单片机通过程序控制小车停转60秒。
此方案经检测简单可靠,而且本设计要求的精度不高,故采用方案三。
图7 铁片检测电路
2.2.3小车驱动电路
小车前轮转向采用舵机驱动,后轮采用电机驱动芯片L298驱动,其电路图如图6。
小车电机为直流减速电机,带有齿轮组,考虑不需调速功能,采用电机驱动芯片L298N。
L298N为单块集成电路,高电压,高电流,四通道驱动,设计用来接收DTL或者TTL逻辑电平,驱动感性负载(比如继电器,直流和步进马达),和开关电源晶体管。
内部包含4通道逻辑驱动电路。
其额定工作电流为1A,最大可达1.5A,Voss电压最小4.5V,最大可达36V;Vs电压最大值也是36V,经过实验,Vs电压应该比Voss电压高,否则有时会出现失控现象。
表1是其使能、输入引脚和输出引脚的逻辑关系。
表1引脚和输出引脚的逻辑关系
ENA(B)IN1(IN3)IN2(IN4)电机运行情况
HHL正转
HLH反转
H同IN2(IN4)同IN1(IN3)快速停止
LXX停止
L298N可直接的对电机进行控制,无须隔离电路。
通过单片机的I/O输入改变芯片控制端的电平,即可以对电机进行正反转,停止的操作,非常方便,亦能满足直流减速电机的大电流要求。
调试时在依照上表,用程序输入对应的码值,能够实现对应的动作,调试通过。
其中舵机采用SERV0。
它是一种位置伺服装置,适用于那些需要角度不断变化并可以保持的控制系统。
其工作原理是:
控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。
它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。
最后,电压差的正负输出到电机驱动芯片决定电机的正反转。
当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。
控制方式是改变单片机的一个定时器中断的初值,将20ms分为两次中断执行,一次短定时中断和一次长定时中断。
这样既节省了硬件电路,也减少了软件开销,控制系统工作效率和控制精度都很高。
具体的设计过程:
例如想让舵机转向左极限的角度,它的正脉冲为2ms,则负脉冲为20ms-2ms=18ms,所以开始时在控制口发送高电平,然后设置定时器在2ms后发生中断,中断发生后,在中断程序里将控制口改为低电平,并将中断时间改为18ms,再过18ms进入下一次定时中断,再将控制口改为高电平,并将定时器初值改为2ms,等待下次中断到来,如此往复实现PWM信号输出到舵机。
用修改定时器中断初值的方法巧妙形成了脉冲信号,调整时间段的宽度便可使伺服机灵活运动。
L298实物图
图8 小车驱动电路
图9舵机的控制要求
3系统原理及理论分析
3.1单片机最小系统组成
单片机系统是整个智能系统的核心部分,它对各路传感信号的采集、处理、分析及对各部分整体调整。
主要是组成是:
单片机AT89S52、小车驱动系统芯片L298N及各路的传感器件。
3.2黑带检测原理
利用光的反射原理,当光线照射在白纸上,反射量比较大,反之,照在黑色物体上,由于黑色对光的吸收,反射回去的量比较少,这样就可以判断黑带轨道的走向。
由于各路传感器会对单片机产生一定的干扰,使信号发生错误。
因此,采用一级射极输出方式对信号进行隔离,这样系统对信号的判断就比较准确。
4系统程序设计
为了提高小车反应灵敏度,对红外线接收信号及黑带检测信号都采用中断法来处理。
用定时方法对铁片检测、计量路程、倒车、拐弯及数码管动态扫描进行处理。
主程序流程图见图9,各子程序图见图10、11。
图10程序流程图
图11小车驱动程序
4.1黑带检测程序
小车从起点出发后,一直保持前进状态病区再次状态下始终检测黑带,如果小车左侧某一路红外传感器监测到黑带,给单片机的P1口一个低电平,则小车向左侧拐弯,直到黑带到大小车的中部;如果小车右侧某一路红外传感器监测到黑带,给单片机的P1口一个低电平,则小车向右侧拐弯,直到黑带到达小车的中部。
其流程图如图10所示。
5结论
通过各种方案的讨论及尝试,再经过多次的整体软硬件结合调试,不断地对系统进行优化,智能小车能够完成各项功能到达车库。
附程序,只供参考!
#include
#defineucharunsignedchar
uchari,j,k,l;
ucharm=0,n=0;
voiddelaya(void);
voiddelayb(void);
voiddelayc(void);
voidqian(void);
voidhou(void);
voiddelayd(void);
voiddj1(void);//函数声明
voiddj3(void);
voiddj4(void);
voidhongwai(void);
voiddelay1ms(void);
voidstopcar(void);
voiddelay2ms(void);
voiddt(void);
voiddj2(void);
voiddelay60s(void);
voidher(void);
voidstopcar(void);
voiddelay30s(void);
voidfanxing(void);
voiddj5(void);
voiddj6(void);
//voiddelay20ms(void);
//voiddelay2ms(void);
voidmain(void)
{
do
{
dj1();//小车向前程序
}
while(P2_1==1);
her();
dt();
//stopcar();
do
{
dj1();//小车向前程序
}
while(P1_2||P1_5);
delayc();
stopcar();
for(;;);
}
voiddt(void)
{
delayb();
P2_6=1;
P2_7=0;
for(i=0;i<100;i++)
{
qian();
qian();
}
P2_6=1;
P2_7=0;
delayc();
P2_6=1;
P2_7=1;
delaya();
P2_6=0;
P2_7=1;
for(i=0;i<80;i++)
{
hou();
hou();
hou();
hou();
}
P2_6=0;
P2_7=1;
delayc();
P2_6=1;
P2_7=1;
delaya();
//for(;;);
P2_6=0;
P2_7=0;
for(i=0;i<100;i++)
{
qian();
qian();
qian();
}
P2_6=1;
P2_7=0;
delayc();
P2_6=1;
P2_7=1;
delaya();
P2_6=0;
P2_7=1;
for(i=0;i<80;i++)
{
hou();
hou();
hou();
hou();
}
P2_6=0;
P2_7=1;
delayc();
P2_6=1;
P2_7=1;
delaya();
P2_6=1;
P2_7=0;
for(i=0;i<65;i++)
{
qian();
qian();
}
P2_6=1;
P2_7=1;
delayc();
}
voiddelaya(void)
{
delayb();
delayb();
delayb();
delayb();
}
voiddelayb(void)
{
for(l=15;l>0;l--)
for(j=50;j>0;j--)
for(k=50;k>0;k--);
}
voiddelayc(void)//可调沿时程序
{
for(i=0;i<100;i++)
for(j=0;j<100;j++);
}
voiddelayd(void)
{
for(l=10;l>0;l--)//10
for(j=70;j>0;j--)//90
for(k=90;k>0;k--);//70
}
voidqian(void)
{
P2_4=0;
P2_5=1;
delayd();
P2_4=1;
P2_5=1;
delayc();
}
voidhou(void)
{
P2_4=1;
P2_5=0;
delayd();
P2_4=1;
P2_5=1;
delayc();
}
voidhongwai(void)//俩排红外接收处理程序
{
if(P1_0==0||P1_1==0)
{
P2_6=1;
P2_7=0;
for(i=0;i<180;i++){};
P2_6=1;
P2_7=1;
}
elseif(P1_0&&P1_1&&P1_2&&P1_3&&P1_4&&P1_5&&P1_6&&P1_7)
{
P2_6=1;
P2_7=1;
delay1ms();
}
elseif((P1_0&&P1_1&&P1_2&&P1_3)==0)
dj3();//左转程序wo
elseif((P1_4&&P1_5&&P1_6&&P1_7)==0)
dj4();
else
delay1ms();
}
voiddj1(void)//小车向前程序;
{
P2_4=0;
P2_5=1;
//delay1ms();
hongwai();
P2_4=1;
P2_5=1;
hongwai();
//hongwai();
//delay1ms();
}
voiddj3(void)//左传程序
{
P2_6=1;
P2_7=0;
delay2ms();
P2_6=1;
P2_7=1;
//delay1ms();
}
voiddj4(void)//右转程序
{
P2_6=0;
P2_7=1;
delay2ms();
P2_6=1;
P2_7=1;
//delay1ms();
}
voidstopcar(void)//停车程序
{
P2_4=0;
P2_5=0;
}
voidher(void)//霍尔传感器检测程序
{
P2_4=0;
P2_5=0;
delay60s();
}
voiddelay60s()//沿时60秒程序
{
delay30s();
delay30s();
delay30s();
}
voiddelay30s(void)
{
for(l=15;l>0;l--)
for(j=205;j>0;j--)
for(k=100;k>0;k--);
}
voiddelay1ms(void)//可调沿时程序
{
for(i=0;i<70;i++);
//for(i=0;i<100;i++);
}
voiddelay2ms(void)//可调沿时程序
{
for(i=0;i<120;i++);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89S52 简易 自动 入库 小车 wu