自动入库小车设计方案.docx
- 文档编号:4486653
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:14
- 大小:78.63KB
自动入库小车设计方案.docx
《自动入库小车设计方案.docx》由会员分享,可在线阅读,更多相关《自动入库小车设计方案.docx(14页珍藏版)》请在冰豆网上搜索。
自动入库小车设计方案
自动入库小车设计方案
学生姓名:
洪涛
学号:
16061913
专业:
电气类
班级:
16060419
2017年06月07日
一、功能描述
一个小型车库,车库中心地面上有一个铁片。
小车的出发区与车库间的地面上有黑色的边界线组成的过道,中心有黑色引导线。
小车能够正确按黑色引导线间的过道行驶到车库,停止于铁片处并可以自动返回(期间会有灯光提示,并且小车可以远程遥控启动)。
二、设计方案
1.总体方案
为使小车运行更加灵活可靠,采用后轮用两个直流电机分别驱动,前轮采用万向轮的驱动方式,采用L298双通道直流电机驱动芯片作为主控电路,将红外传感器采集的信号,经单片机处理后,控制驱动电机的PWM的占空比和方向,从而实现了一系列功能。
另外可以使用自制的霍尔金属传感器,以减轻整车的重量,增加小车的灵活性。
采用ATM89S52单片机作为整机的控制单元;启车采用红外线遥控控制;寻迹采用反射式红外对管;铁片检测采用霍尔元件制作的金属传感器;将以上信号送入单片机进行处理,调制出PWM脉冲和电平对直流电机进行驱动。
此系统比较灵活,采用软件方法来解决复杂的硬件电路部分,使系统硬件简洁化,各类功能易于实现,并且可扩展性好,基本原理如图1所示。
图1简易自动小车基本原理框图
2.硬件模块电路设计
1)启动部分
遥控器原理:
利用发射芯片产生一个32位数据,经高频载波通过红外线发射LED发射出去。
接收部分由一个红外线接收模块接收数据,经电容滤掉高频载波后,送单片机,与单片机中预存的数据进行比较,如相同则启动主程序运行。
运行原理如图2、3所示。
图2红外线发射器工作方块图
红外线
接收模块
单片机
控制
红外线信号
接收
图3红外线接收工作流程图
前进代码:
voidrun_init()
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
2)寻迹传感部分
利用光的反射原理:
光线照在黑色物体上,由于黑色对光的吸收,反射回去的量比较少。
这样就可以判断黑带轨道的走向,并且进行相应的转向和前进。
采用红外线发射,外面可见光对接收信号的影响较小,利用红外发射二极管对黑线边界进行检测,再用LM324对检测信号进行比较,取反后输送至单片机进行处理。
电路原理如图4所示
图4寻迹原理图
转向代码:
voidzhuanx(ucharzx)
{
switch(zx){
case1:
l=4;
r=0;//高速左转
break;
case2:
r=4;
l=0;//高速右转
break;
case3:
l=2;
r=0;//低速左转
break;
case4:
r=2;
l=0;//低速右转
break;
case5:
l=r=2;//低速前进
break;
case6:
l=r=0;//高速前进
break;
case7:
l=r=4;//刹车
break;
}
}
判断黑带及随后的运动的代码
voidpanduan()
{
if((S0==0)&&(S1==0)&&(S2==1)&&(S3==0)&&(S4==0))
{
zhuanx(6);
}//1号传感器检测到信号,其余没有检测到信号
if((S0==0)&&(S1==1)&&(S2==0)&&(S3==0)&&(S4==0))
{
zhuanx(3);
}//0号传感器检测到信号,其余没有检测到信号
if((S0==1)&&(S1==0)&&(S2==0)&&(S3==0)&&(S4==0))
{
zhuanx
(1);
}//3号传感器检测到信号,其余没有检测到信号
if((S0==0)&&(S1==0)&&(S2==0)&&(S3==1)&&(S4==0))
{
zhuanx(4);
}//4号传感器检测到信号,其余没有检测到信号
if((S0==0)&&(S1==0)&&(S2==0)&&(S3==0)&&(S4==1))
{
zhuanx
(2);
}//1,2号传感器检测到信号,其余没有检测到信号
if((S0==0)&&(S1==1)&&(S2==1)&&(S3==0)&&(S4==0))
{
zhuanx(3);
}//0,1号传感器检测到信号,其余没有检测到信号
if((S0==1)&&(S1==1)&&(S2==0)&&(S3==0)&&(S4==0))
{
zhuanx
(1);
}//2,3号传感器检测到信号,其余没有检测到信号
if((S0==0)&&(S1==0)&&(S2==1)&&(S3==1)&&(S4==0))
{
zhuanx(4);
}//3,4号传感器检测到信号,其余没有检测到信号
if((S0==0)&&(S1==0)&&(S2==0)&&(S3==1)&&(S4==1))
{
zhuanx
(2);
}//0,1,2号传感器检测到信号,其余没有检测到信号
if((S0==1)&&(S1==1)&&(S2==1)&&(S3==0)&&(S4==0))
{
zhuanx
(1);
}//2,3,4号传感器检测到信号,其余没有检测到信号
if((S0==0)&&(S1==0)&&(S2==1)&&(S3==1)&&(S4==1))
{
zhuanx
(2);
}//1,2,3号传感器检测到信号,其余没有检测到信号
if((S0==0)&&(S1==1)&&(S2==1)&&(S3==1)&&(S4==0))
{
zhuanx(6);
}//0,4号传感器检测到信号,其余没有检测到信号
if((S0==1)&&(S4==1))
{
lukou++;
if(lukou==1)
{
TR1=1;
}
if(lukou==2)
{
TR0=0;
zhuanx(7);//刹车
}
if(lukou==3)
lukou=0;
}
}
3)铁片检测部分
根据霍尔元件检测金属的原理,可以制作一种简易可靠的金属检测传感器对车库内的铁片进行检测,并以此作为停车的信号。
金属传感器的结构原理如图5所示.
图5金属传感器结构原理图
4)单片机控制部分
可采用一般的单片机系统控制电路,主要由:
电源电路、晶振电路、复位电路,及外部中断输入电路组成。
电路结构简单,性能稳定,是单片机系统控制普遍采用的硬件电路。
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineSYSCLK22118400
sbitIN1=P3^0;
sbitIN2=P3^1;
sbitIN3=P3^2;
sbitIN4=P3^3;
sbitS0=P2^0;
sbitS1=P2^1;
sbitS2=P2^2;
sbitS3=P2^3;
sbitS4=P2^4;
ucharcodetable[]={0xff,0xd0,0xb0,0x80,0x00};//PWM输出控制数组
ucharcode
table1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管输出数组
uchari,r,l,temp,lukou=1,num;
voidSYSCLK_init()//时钟初始化
{
inti;
OSCXCN=0x67;
for(i=0;i<256;i++);
while(!
(OSCXCN&0x80));
OSCICN=0x88;
}
voidIO_init()//IO口初始化
{
XBR0=0x50;//交叉开关配置寄存器XBR0、XBR1、XBR2
XBR1=0x00;
XBR2=0x40;
P0MDOUT=0xff;
P3MDOUT=0xff;
}
voidtimer_init()
{
CKCON=0x78;//时钟控制寄存器
TMOD=0x11;//计数器定时器方式寄存器
TH0=(65536-18432)/256;//tf0/tf1中断请求标志位可用于关中断
TL0=(65536-18432)%256;
EA=1;
ET0=1;
ET1=1;
}
voidPCA_int_init()//PCA0初始化
{
IE=0x85;
IP=0x00;
EIP1=0x08;
EIE1=0x08;
PCA0MD=0x09;
PCA0CPM0=0x42;
PCA0CPM1=0x42;
PCA0CPH0=table[4];
PCA0CPH1=table[4];
CR=0;
IT0=1;
IT1=1;
}
voiddelay(uintz)
{
uintx,y;
for(y=z;y>0;y--)
for(x=0;x<220;x++);
}
voidzhuanx(ucharzx)
voidpanduan()
voiddisplay()
{
ucharqian,bai,shi,ge;
qian=temp/1000;
bai=temp%1000/100;
shi=temp%1000%100/10;
ge=temp%10;
P4=0x7f;
P7=table1[ge];
delay
(2);
P4=0xbf;
P7=table1[shi];
delay
(2);
P4=0xdf;
P7=table1[bai];
delay
(2);
P4=0xef;
P7=table1[qian];
delay
(2);
}
voidrun_init()
voidmain()
{
WDTCN=0xde;//关闭看门狗
WDTCN=0xad;
SYSCLK_init();
IO_init();
PCA_int_init();
run_init();
timer_init();
CR=1;
while
(1)
{
panduan();
display();
}
}
voidPCA_ISR(void)interrupt9//PCA中断服务程序
{
CF=0;//PCA0CPL0=0x00;
PCA0CPH0=table[r];//PCA0CPL1=0x00;
PCA0CPH1=table[l];
CCF0=1;
CCF1=1;
}
voidtimer0()interrupt1//定时器0中断
{uchartt;
TH0=(65536-18432)/256;
TL0=(65536-18432)%256;
tt++;
if(tt==115)
{
temp++;
tt=0;
}
}
voidtimer1()interrupt3//定时器1中断
{
TH1=(65536-18432)/256;
TL1=(65536-18432)%256;
TR0=1;
}
5)电机驱动部分
L298双通道直流电机驱动芯片是性能优秀的小型直流电机驱动芯片之一。
它可以被用来驱动两个直流电机或双极性步进电机。
在6~46V的电压下,可以提供2A的额定电流,并且具有过热自动关断和电流反馈检测功能,安全可靠。
利用单片机调整出PWM脉冲和高低电平对直流电机进行驱动和控制。
8)电源部分
为防止系统运行时电机对单片机执行程序产生干扰,采用8.4伏和12.6伏锂电池组分别对单片机控制部分和电机驱动部分进行独立供电。
12.6伏锂电池组直接驱动电机,经7805稳压后给L298芯片供电,8.4伏锂电池组经7805稳压后给单片机和其他传感器和芯片供电。
。
3.系统程序设计
中断
进入寻迹子程序
左黑带(N)
左拐标志
右黑线(N)
右拐标志
返回
图6寻迹子程序流程图
三、性能总结
通过循迹完成入库是小车的主要完成功能,采用前万向轮,后双电机驱动的自制小车,用红外进行循迹,通过单片机的控制,从而完成入库。
同时增加遥控发车以及自动返航功能,以实现远程操控。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自动 入库 小车 设计方案