一、系统方案
本系统主要是由单片机控制模块、OLED显示模块、电源模块、驱动模块、电机、电位器、超声波模块。
1、主控制器件的论证与选择
1.1.1电机选用
电机比较
方案一:采用无编码器的普通电机
普通电机虽然连线简单,使用方便,但无法实现测速效果。
方案二:采用带霍尔编码器的步进电机
带编码器的电机可以返回脉冲,便于测得速度。
通过比较,我们选择方案二。
1.1.2控制系统方案选择
方案一:采用在面包板上搭建简易单片机系统
在面包板上搭建单片机系统可以方便的对硬件做随时修改,也易于搭建,但是系统连线较多,不仅相互干扰,使电路杂乱无章,而且系统可靠性低,不适合本系统使用。
方案二:自制单片机印刷电路板
自制印刷电路实现较为困难,实现周期长,此外也会花费较多的时间,影响整体设计进程。不宜采用该方案。
方案三:采用单片机最小系统和其他模块。
使用单片机最小系统以及各种模块虽然存在杜邦线滑落等问题,但可操作性高,而且费时短,操作简单,适合本次作业。
综合以上三种方案,选择方案三。
二、系统理论分析与计算
1、QEI正交编码器的分析
(1)AB相信号的处理
通过QEI合理配置,QEI可以捕获电机发来的AB相信号,通过对AB相信号的处理可以判断电机旋转方向以及电机旋转的绝对位置和转速。
(2)中断的分析
QEI中断的进入有四种情况:检测到索引脉冲,计数满返回,方向改变,检测到正交错误。对于本题,为避免其他情况错误进入中断,需要把中断配置为计数满返回中断。
(3)配置和计算方式的关系
为避免QEI计数周期短导致的测速不准的情况,我们将计算周期调大,并利用四倍频技术增加一定周期内捕获脉冲。在数据的处理上将系数合理约分,化简,以减少处理器的处理时间。
2、PID算法的分析
(1)算法的选择
对于位置式算法和增量式算法的选择,在编程过程中发现,对于我们的程序,后者并不适用,而前者能提供较好的使用反馈。于是,我们通过位置式算法进行PID运算。
(2)参数设定
第一步:确定系数Kp
首先去除PID的积分项和微分项,令Ki=0、Kd=0,进行纯比例调节。由0逐渐增加Kp,直至系统出现振荡;再逐渐减小Kp,,直至系统振荡减至最小。设定Kp的值为当前值的80%~90%。。
第二步:确定系数Ki
把Ki值从0开始慢慢增大,当系统出现振荡时,停止增大Ki值。设定Ki的值为当前值的80%~90%。
第三步:确定系数Kd
把Kd值从0开始慢慢增大,直至系统趋于稳定。
3、超声波测距分析
(1)对捕获数据的处理
对于超声波发送给串口的数据,要实时发送给处理器进行处理的判断,以保证速度实时响应距离的变化。
三、电路与程序设计
1、电路的设计
(1)系统总体框图
系统总体框图如图1所示
![]()
图1 系统总体框图
(2)电源
电源由12V电池和驱动上的降压模块组成。为整个系统提供
![]()
2、程序的设计
(1)程序功能描述与设计思路
1、程序功能描述:根据题目要求软件部分主要实现模式切换,显示,调速等。
1)按键实现功能:切换模式。
2)显示部分:显示转速,模式,油门值,距离,串口指令,占空比。
2、程序设计思路
利用OLED显示所要求的转速,模式等数据。通过TM4自带的QEI正交编码器测得返回脉冲,从而算出转速。通过按键切换四种模式,以TM4上的指示灯表示不同模式。手动模式下,通过拨杆拨动影响接入电阻从而控制改变PWM的占空比即影响转速。自动模式下,根据串口发送的方向和转速,改变PWM的占空比即影响转速,改变PWM高低引脚即影响方向。其中速度的迅速响应要使用PID算法实现响应的准度和速度。混合模式下,根据超声波返回的距离加以判断,改变PWM输出高低引脚,从而控制方向。利用PWM捕获获取外部方波,利用PID算法算得转速。
(2)程序流程图
1、主程序流程图如图2所示
![]()
图2 主程序流程图
2、自动模式流程图如图3所示
![]()
图3 自动模式程序流程图
3、手动模式流程图如图4所示
![]()
图4 手动模式程序流程图
4、混合模式流程图如图5所示
![]()
图5 混合模式程序流程图
四、测试方案与测试结果
1、测试方案
(1)硬件测试
对于电机,驱动,TM4等引脚较多的元器件,利用万用表多次测量,以保证引脚没有虚接。对于电机转速,多次更改占空比,测得转速,以保证电机没有问题。对于超声波,更换亮暗环境,多次改变距离,确保超声波模块没有问题。
(2)软件仿真测试
对于PID算法,通过计算缩小调试范围,减小工作量。
(3)硬件软件联调
对于PID根据占空比处理电机转速,通过计算PID的参数,结合电机响应的程度,得出较为合适的系数。
2、测试条件与仪器
测试条件:检查多次,系统原理图与各种模块连接情况完全相同,并且检查无误,硬件电路保证无虚焊。
测试仪器:模拟示波器,数字示波器,数字万用表。
3、测试结果及分析
(1)测试结果(数据)
自动模式下,输入速度和显示速度: (单位/rdm)
输入速度
0.2050
0.2100
0.2045
0.4026
1.007