##Description
###1、电机控制
采用四路PWM控制四个地盘电机,电机驱动:L298n ,地盘电机:带减速箱的直流电机
板2定时器0控制四个IO口发出PWM脉冲。
改进:收到新的速度值时,经一系列计算后转换成PWM周期值,后对当前PWM周期与新周期值进行判断,若大于新设定值,则下一个PWM周期才更新周期值,反之,则不处理。防止速度突变。若控制周期很短时,其影响可忽略。
###2、速度监测
使用光电门对地盘电机进行速度监控,由INT0(配置为下降沿触发)进行计数,未使用计数器(定时器已用完)。
####速度检测值处理:
采用滑动滤波方法(滑动长度为5),减弱由光电门不稳定造成的计数尖峰影响,但是速度值在读取周期小的时候仍不稳定。
####滤波后效果仍不太理想原因分析:
1、硬件问题:光电门采用一个发光二极管和基极光感三极管构成,其中基极光感三极管响应有延时,故光电门的检测频率不能太高。
2、软件问题:由于没有用计数器来采集脉冲,而是用外部中断来代替,通过下降沿来技术,速度高的时候,进中断频率过高,导致程序不稳定,计数出错。(通过与计数器方式比较)
###3、电机闭环控制
采用经典PID算法控制
本系统控制选用PD控制,舍去I项,积分相调节不明显。
最终PD参数为:Kp=0.5 Ki=0.1,调试顺序:先P后D
相关函数:char speedControl(uchar speed,uchar target)
####最终调节效果不理想:
原因
1、速度反馈不可靠,虽然经过处理,但是仍存在较多跳跃值,故P、D值调整至较小值,牺牲调节速度换取系统速度调节过程的稳定。
2、速度反馈通过外部中断测量,速度值过快时,系统频繁进入中断函数,有可能导致系统不稳定。
3、速度控制周期不够断,51单片机性能决定,定时器周期太短,系统不稳定。
###4、串口通信协议
命令帧(4bit)+数据帧(不定)+校验位(1bit)
#####解读
命令帧:0x0a(固定帧头)+ID+数据帧长度+命令帧校验位
数据帧:数据部分
校验位:数据校验位(累加和)
####举例:
实时速度信息数据格式:
0x0A 0x02 0x03 0x0c 0x01 0x02 0x03 0x06
####相关函数:
数据发送:char InPackage(unsigned char *usart_data,unsigned char ID)
数据接收:unsigned char DePackage(void)
数据校验:unsigned char check_data(void)
####特点:
发送时候具有超时判断,若InPackage返回-1,则发送超时。
通过改变宏定义#define SEND_MAX 15来改变数据帧最大值。
###5、循迹
采用四路红外对管,两个检测主线,一个检测中线,一个检测右线。
主线指示小车的运动路线,中线指示装货区,右线指示卸货区。
####采用状态机编程(输出两种状态:go、stop,三个输入量):
主线(left)->中线(go)
主线(go)->中线(stop)->主线(go)
主线(go)->中线(go)->右线(stop)->主线(go)
主线(go)->中线(go)->右线(go)->主线(go)