1、第三部分是对系统软件设计部分的说明,主要内容是智能模型车设计中主要用到的控制理论、算法说明及代码设计介绍等。技术方案概要说明 本模型车的电路系统包括电源管理模块、单片机模块、传感器模块、电机驱动模块。工作原理: 利用红外采集模块中的红外发射接收对管检测路面上的轨迹 将轨迹信息送到单片机 单片机采用模糊推理求出转向的角度和行走速度,然后去控制行走部分 最终完成智能小车可以按照路面上的轨迹运行。硬件电路的设计1、最小系统:小车采用atmel公司的AT89C52单片机作为控制芯片,图1是其最小系统电路。主要包括:时钟电路、电源电路、复位电路。其中各个部分的功能如下:1、时钟电路:给单片机提供一个外接
2、的16MHz的石英晶振。2、电源电路:给单片机提供5V电源。3、复位电路:在电压达到正常值时给单片机一个复位信号。图1 单片机最小系统原理图2、电源电路设计:模型车通过自身系统,采集赛道信息,获取自身速度信息,加以处理,由芯片给出指令控制其前进转向等动作,各部分都需要由电路支持,电源管理尤为重要。在本设计中,51单片机使用5V电源,电机及舵机使用6V电源。考虑到电源为充电电池组,额定电压为7.2V,实际充满电后电压则为6.5-6.8V,所以单片机及传感器模块采用7805稳压后的5V电源供电,舵机及电机直接由电池供电。3、传感器电路:光电寻线方案一般由多对红外收发管组成,通过检测接收到的反射光强
3、,判断黑白线。原理图由红外对管和电压比较器两部分组成,红外对管输出的模拟电压通过电压比较器转换成数字电平输出到单片机。图2 赛道检测原理图:4、电机驱动电路: 电机驱动芯片L298N是SGS公司的产品,内部包含4通道逻辑驱动电路。是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。其引脚排列如图1中U4所示,1脚和15脚可单独引出连接电流采样电阻器,形成电流传感信号。L298可驱动2个电机,OUT1、OUT2和OUT3、OUT4之间分别接2个电动机。5、7、10、12脚接输入控制电平,控制电机的正反转,ENA,
4、ENB接控制使能端,控制电机的停转。也利用单片机产生PWM信号接到ENA,ENB端子,对电机的转速进行调节。L298N的逻辑功能:表1 SHARP GP2D12实物图外形及封装:图3 L298N实物图L298N电路原理图:由于一片L298N可以直接驱动两个电机,但是为了加大驱动力,我们采用两路并联的方式来驱动电机。图3.3 L298N电路图软件系统的实现小车循迹规则:若小车偏左的时候,车轮将向右偏转;若小车偏右,车轮将向左偏转;若没有偏移,小车将继续向前;若小车完全偏离黑色轨迹,小车后退以寻找黑色轨迹。小车程序:#include reg52.h#define det_Dist 2.55 /单个
5、脉冲对应的小车行走距离,其值为车轮周长/4#define RD 9 /小车对角轴长度#define PI 3.1415926#define ANG_90 90#define ANG_90_T 102#define ANG_180 189/*=全局变量定义区=*/sbit P10=P10; /控制继电器的开闭sbit P11=P11; /控制金属接近开关sbit P12=P12; /控制颜色传感器的开闭sbit P07=P07; /控制声光信号的开启sbit P26=P26; /接收颜色传感器的信号,白为0,黑为1sbit P24=P24; /左 sbit P25=P25; /右 接收左右光传感
6、器的信号,有光为0unsigned char mType=0; /设置运动的方式,0 向前 1 向左 2 向后 3 向右unsigned char Direction=0; /小车的即时朝向 0 朝上 1 朝左 2 朝下 3 朝右unsigned sX=50; unsigned char sY=0; /小车的相对右下角的坐标 CM(sX,sY)unsigned char StartTask=0; /获得铁片后开始执行返回卸货任务,StartTask置一unsigned char Inter_EX0=0; / 完成一个完整的任务期间只能有一次外部中断 / Inter_EX0记录外部中断0的中断状
7、态 / 0 动作最近的前一次未中断过, / 1 动作最近的前一次中断过unsigned char cntIorn=0; /铁片数unsigned char bkAim=2; /回程目的地,0为A仓库,1为B仓库,2为停车场, /(在MAIN中接受铁片颜色判断传感器的信号来赋值)unsigned char Light_Flag=0;/进入光引导区的标志(1)unsigned int cntTime_5Min=0;/时间周期数,用于 T0 精确定时unsigned int cntTime_Plues=0; /霍尔开关产生的脉冲数/*-*/*-通用延迟程序-*/void delay(unsigned
8、 int time) / time*0.5ms延时unsigned int i,j;for(j=0;jtime;j+) for(i=0;i=4520) Display(5); /停车程序 P07=1;PCON=0X00;while(1);/*外部中断0中断程序:/*发现铁片,发出声光信号并将铁片吸起,发光二极管和蜂鸣器*/*并联在一起(设接在P07). 0为A仓库,1为B仓库,2为停车场*/void fndIorn(void) interrupt 0 unsigned char i;P10=1; /停车P07=1;delay(1000);Inter_EX0=1;cntIorn+;Display(cntIorn);for(i=0;40; delay(2);P2=P2&delay(100);IornColor(); /判断铁片黑白,设置bkAim95; delay(3); /把铁片吸起来 EX0=0;/*外部中断1中断程序:/*对霍尔开关的脉冲记数,对小车的位置进行记录,以便对小车进行定位*/void stpMove(void) interrupt 2 cntTime_Plues-;if(Direction=0) /向上 if(mType=0)