Skip to content

Latest commit

 

History

History
85 lines (48 loc) · 3.29 KB

README.md

File metadata and controls

85 lines (48 loc) · 3.29 KB

Curriculum-Design-2

##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)