自动入库小车方案设计.doc
word自动入库小车设计方案学 生: 学 号: 专 业: 班 级: 一、功能描述一个小型车库,车库中心地面上有一个铁片。小车的出发区与车库间的地面上有黑色的边界线组成的过道,中心有黑色引导线。小车能够正确按黑色引导线间的过道行驶到车库,停止于铁片处并可以自动返回(期间会有灯光提示,并且小车可以远程遥控启动)。二、设计方案 1.总体方案为使小车运行更加灵活可靠,采用后轮用两个直流电机分别驱动,前轮采用万向轮的驱动方式,采用L298双通道直流电机驱动芯片作为主控电路,将红外传感器采集的信号,经单片机处理后 ,控制驱动电机的PWM的占空比和方向,从而实现了一系列功能。另外可以使用自制的霍尔金属传感器,以减轻整车的重量,增加小车的灵活性。采用ATM89S52单片机作为整机的控制单元;启车采用红外线遥控控制;寻迹采用反射式红外对管;铁片检测采用霍尔元件制作的金属传感器;将以上信号送入单片机进行处理,调制出PWM脉冲和电平对直流电机进行驱动。此系统比较灵活,采用软件方法来解决复杂的硬件电路部分,使系统硬件简洁化,各类功能易于实现,并且可扩展性好,基本原理如图1所示。89S52红外遥控脉冲接收脉冲寻迹信号铁片检测灯光提示电机驱动电源停车信号图1 简易自动小车基本原理框图2.硬件模块电路设计1)启动部分遥控器原理:利用发射芯片产生一个32位数据,经高频载波通过红外线发射LED发射出去。接收部分由一个红外线接收模块接收数据,经电容滤掉高频载波后,送单片机,与单片机中预存的数据进行比较,如相同则启动主程序运行。运行原理如图2、3所示。单片机38KHZ载波信号AND门信号放大红外线发射二极管发射红外线信号图2 红外线发射器工作方块图红外线接收模块单片机控制红外线信号接收图3 红外线接收工作流程图前进代码:void run_init()IN1=1;IN2=0;IN3=1;IN4=0;2)寻迹传感部分利用光的反射原理:光线照在黑色物体上,由于黑色对光的吸收,反射回去的量比较少。这样就可以判断黑带轨道的走向,并且进行相应的转向和前进。采用红外线发射,外面可见光对接收信号的影响较小,利用红外发射二极管对黑线边界进行检测,再用LM324对检测信号进行比较,取反后输送至单片机进行处理。电路原理如图4所示图4 寻迹原理图转向代码:void zhuanx(uchar zx) switch (zx) case 1: l=4; r=0; /高速左转 break; case 2: r=4; l=0; /高速右转 break; case 3: l=2; r=0; /低速左转 break; case 4: r=2; l=0; /低速右转 break; case 5: l=r=2; /低速前进 break; case 6: l=r=0; /高速前进 break; case 7: l=r=4;/刹车 break;判断黑带及随后的运动的代码void panduan() 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<c8051f020.h>#define uchar unsigned char#define uint unsigned int#define SYSCLK 22118400sbit IN1=P30;sbit IN2=P31; sbit IN3=P32;sbit IN4=P33;sbit S0=P20;sbit S1=P21;sbit S2=P22;sbit S3=P23;sbit S4=P24;uchar code table=0xff,0xd0,0xb0,0x80,0x00; /PWM输出控制数组uchar codetable1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /数码管输出数组uchar i,r,l,temp,lukou=1,num; void SYSCLK_init() /时钟初始化 int i; OSCX=0x67; for(i=0;i<256;i+); while(!(OSCX&0x80) ; OSCI=0x88;void IO_init() /IO口初始化XBR0=0x50;/交叉开关配置寄存器XBR0、XBR1、XBR2XBR1=0x00;XBR2=0x40;P0MDOUT=0xff;P3MDOUT=0xff;void timer_init()CKCON=0x78; /时钟控制寄存器TMOD=0x11; /计数器定时器方式寄存器TH0=(65536-18432)/256; /tf0/tf1中断请求标志位 可用于关中断TL0=(65536-18432)%256;EA=1;ET0=1;ET1=1;void PCA_int_init() /PCA0初始化IE=0x85;IP=0x00;EIP1=0x08;EIE1=0x08;PCA0MD=0x09;PCA0CPM0=0x42;PCA0CPM1=0x42;PCA0CPH0=table4;PCA0CPH1=table4;CR=0;IT0=1;IT1=1;void delay(uint z)uint x,y;for(y=z;y>0;y-)for(x=0;x<220;x+); void zhuanx(uchar zx) void panduan() void display()uchar qian,bai,shi,ge;qian=temp/1000;bai=temp%1000/100;shi=temp%1000%100/10;ge=temp%10;P4=0x7f;P7=table1ge;delay(2);P4=0xbf;P7=table1shi;delay(2);P4=0xdf;P7=table1bai;delay(2);P4=0xef;P7=table1qian;delay(2);void run_init()void main()WDT=0xde; /关闭看门狗WDT=0xad;SYSCLK_init();IO_init();PCA_int_init();run_init();timer_init();CR=1;while(1) panduan(); display(); void PCA_ISR (void) interrupt 9/PCA中断服务程序CF=0;/PCA0CPL0=0x00;PCA0CPH0=tabler;/PCA0CPL1=0x00;PCA0CPH1=tablel; CCF0=1;CCF1=1;void timer0() interrupt 1 /定时器0中断uchar tt;TH0=(65536-18432)/256;TL0=(65536-18432)%256;tt+;if(tt=115)temp+;tt=0; void timer1() interrupt 3 /定时器1中断TH1=(65536-18432)/256;TL1=(65536-18432)%256;TR0=1;5)电机驱动部分L298双通道直流电机驱动芯片是性能优秀的小型直流电机驱动芯片之一。它可以被用来驱动两个直流电机或双极性步进电机。在646V的电压下,可以提供2A的额定电流,并且具有过热自动关断和电流反馈检测功能,安全可靠。利用单片机调整出PWM脉冲和高低电平对直流电机进行驱动和控制。8)电源部分为防止系统运行时电机对单片机执行程序产生干扰,采用8.4伏和12.6伏锂电池组分别对单片机控制部分和电机驱动部分进行独立供电。12.6伏锂电池组直接驱动电机,经7805稳压后给L298芯片供电,8.4伏锂电池组经7805稳压后给单片机和其他传感器和芯片供电。3.系统程序设计中断进入寻迹子程序左黑带(N)右黑线(N)左拐标志右拐标志返回 图 6寻迹子程序流程图 三、性能总结通过循迹完成入库是小车的主要完成功能,采用前万向轮,后双电机驱动的自制小车,用红外进行循迹,通过单片机的控制,从而完成入库。同时增加遥控发车以及自动返航功能,以实现远程操控。18 / 18