基于飞思卡尔单片机的两轮车控制系统设计
扫描二维码
随时随地手机看文章
1.前言
本文以飞思卡尔的小车模型为对象,设计了以飞思卡尔单片机MC9S12XS128为核心,自主循迹的两轮车自平衡控制系统。
实验证明该方案在摄像头导航的两轮车系统中具有准确、快速、稳定的自主寻迹效果。
2.系统设计与原理
本系统以飞思卡尔公司生产的MC9S12XS128单片机为控制核心,主要由电源管理模块、路径检测模块、车速检测块、加速度检测模块、角速度检测模块、直流电机驱动模块、液晶显示模块、串口调试等功能模块构成。在电源管理模块为系统提供稳定电源的基础上,单片机把加速度和角速度检测模块获得的小车姿态信息、路径信息检测模块获得的小车前进方向信息、车速检测模块返回的车速信息通过PID算法控制直流电机驱动模块,以使得小车在保持直立的前提下快速地行驶。
液晶显示模块可以实时地显示系统相关参数,串口调试模块把接收到单片机的数据送往上位机,方便相关参数及波形的实时观察和调试。系统框图如图1所示。
3.系统硬件设计
3.1 主控制器模块
本系统的主控制器是飞思卡尔公司生产的16位MC9S12XS128单片机,它负责对智能车所采集到的信号进行处理并向各个功能模块发送控制信号。MC9S12XS128单片机最高总线频率可达40MHz,片内资源包括8KRAM、8K EEPROM和128K Flash,拥有4路8位或2路16位脉宽调制模块(PWM)、2个8路10位A/D转换器和带有16位计数器的8通道定时器、UART、PIT、I2C、FTM等外部接口模块。
3.2 电源管理模块
可靠的电源是系统稳定运行的前提。
本系统采用额定电压7 . 2 V 、额定容量2000mAh的镍镉电池作为动力 源。为减小电源纹波,获得更稳定的供电电压,本系统选用串联线性稳压芯片LM2940搭建5V稳压电路,并分别向主控制器模块、路径信息检测模块、车速检测模块、加速度检测模块、角速度检测模块、液晶显示模块和串模口调试模块供电,再经过AMS1117稳压到3.3V,向无线传输模块供电。直流电机驱动模块则直接由电池供电。系统电源管理模块框图如图2示。
3.3 路径信息检测模块
由C O M S摄像头和硬件二值化电路组成的路径信息检测模块通过检测跑道两边2.5cm宽的黑线来拟合赛道中心以实现路径信息检测。COMS摄像头是按固定分辨率以隔行扫描的方式采集图像上的点,并将这些点的灰度值通过图像传感芯片转换成模拟电压信号,然后采用二值化电路把此信号转换成数字信号,通过单片机I/O口采集获得赛道信息。硬件二值化检测电路如图3所示。
硬件二值化电路的工作原理是通过图像传感芯片获得的模拟信号经R1、R2限流后输出到三极管Q1,使三极管Q1始终处于不饱和放大状态。R3上的电流大小随此模拟信号的变化而成反比变化,从R3采样出来的电压信号即为通过图像传感芯片获得模拟信号的镜像信号,最后通过比较器输出表征赛道信息的数字信号。
3.4 车速及运动方向检测模块
为了实现系统的闭环控制,在车模运行过程中需要实时监控其速度。本系统在左右电机上各安装一个500线两相光电编码器。在固定周期内,利用单片机内部计数器测量由编码器返回的脉冲信号个数以获得车模的运动速度大小;由于编码器A、B两相相位差为90°,可通过比较A、B两相信号先后顺序来判断电机的正反转,便可知道小车的运动方向。
3.5 加速度检测模块
加速度计可以测量由地球引力作用或者物体运动所产生的加速度。本系统选用MMA7260作为加速度检测器件,MMA7260是一款低成本单芯片三轴高灵敏度加速度传感器,可以同时输出三个方向上的加速度模拟信号,具有功耗低、工作范围宽等特点,并且具有4种不同的高灵敏度选择模式以适应不同的加速度的测量要求。
通过软件设置让加速度传感器采用800mV/g的工作模式,使MMA7260各轴信号输出灵敏度为800mv/g,这时信号不需要进行放大,可以直接送到单片机进行A/D转换。同时由于MMA7260采用了开关电容滤波器,会有时钟噪声产生,所以需要在传感器输出端采用RC滤波电路,以改善信号的质量。加速度传感器在受外界振动时易带来测量误差,并且测量误差的大小和传感器在车模上安装的高度成正比。为减小由于安装高度带来的测量误差,加速度传感器在小车上应尽可能安装得低一些,但是依然不能彻底消除由于小车振动带来的误差,因此需要角速度传感器的辅助来获得车模直立平衡控制所需要的倾角信息。
3.6 角速度检测模块
本系统选用陀螺仪ENC-03来测量物体在旋转时的角速度。陀螺仪的输出信号是相对灵敏轴的角速度,通过角速率对时间积分可得到围绕灵敏轴旋转过的角度值,即小车的倾斜角度。因为陀螺仪易受温度和震动等因素的影响而产生微小的漂移和偏差,经积分后形成累计误差,最终导致电路饱和,无法得到准确的角度信号。因此,本系统采用互补滤波算法把加速度传感器获得的角度信号与陀螺仪输出经积分后的角度进行融合,最后得到较准确的车模倾角信息。
3.7 直流电机驱动模块
车速控制单元采用脉宽调制技术( P W M ),加上P I D算法实现闭环控制。系统利用单片机输出PWM信号通过隔离芯片LM244来控制直流电机驱动芯片BTS7960,通过改变PWM波的占空比调节电机的转速,加上PID算法对电机转速进行闭环控制。直流电机驱动芯片BTS7960是大电流、半桥、低通态电阻的集成芯片,它带有一个P沟道的高边MOSFET、一个N沟道的低边MOSFET和一个驱动IC.P沟道高边开关省去了电荷泵的需求从而减小了EMI.集成驱动IC具有逻辑电平输入、电流诊断、斜率调节、死区时间产生和欠压、过压、过温、过电流及短路保护的功能。采用BTS7960搭建的电机驱动电路如图4所示。[!--empirenews.page--]
3.8 串口调试模块
调试模块用于建立良好的人机交互界面,便于对系统相关波形及参数的观察和调试。本系统的调试模块采用RS-232串口通信,其最远传输距离可达到50英尺,最高传输速率是20Kbps.能做到双向传输,全双工通信。因为RS-232上传输的数字量采用负逻辑,只与地对称,所以与单片机连接时需要加入电平转换芯片MAX232.
4.系统软件设计
系统软件使用C语言编写而成,采用模块化设计思想,以主程序为核心,设计了单片机初始化模块、平衡控制模块、速度控制模块、转向模块、串口发送模块、液晶显示等模块。
4.1 系统主函数
系统进入工作状态时主函数首先进行系统初始化、发送系统相关参数到上位机、液晶显示、读取小车倾角参数等功能。初始化工作结束后便等待各个中断函数的执行。主程序流程图如图5所示。
4.2 中断函数
系统中断函数利用主函数设置和通过传感器检测到的各项参数来控制小车的平衡、速度和转向。程序进入总中断后,首先通过加速度传感器和陀螺仪检测小车的倾角信息,以控制小车的平衡;在保证小车平衡的前提下给定小车前进速度,然后 通过路径信息检测模块获得小车转向所需要的信息。这样一来,在固定周期内循环控制小车的平衡、速度和转向,最终使得小车稳定并且快速地在跑道上行驶。中断函数流程图如图6所示。
4.3 互补滤波算法
陀螺仪的动态响应较好,可以检测瞬态角度变化,但由于其本身存在累计漂移误差,不适合长时间单独工作;加速度计的静态性能较好,能够准确地检测静态角度,但受动态加速度影响较大,不适合测量动态变化角度。因此本文采用互补滤波算法将陀螺仪和加速度计测量到的角度信息进行融合,得到准确的车模倾角信息。
互补滤波算法公式为:
上式中θ_new是第n次滤波后的角度值,θ_old是第n次滤波前的角度值,α_gyro是陀螺仪滤波权重系数,在本系统中取值为0.97,β_acc是加速度计滤波权重系数,在本系统中取值为0.03,ω_gyro是第n次陀螺仪采样测量的角速度值,θ_acc时第n次加速度计采样测量的角度值。其中陀螺仪滤波权重系数和加速度计滤波权重系数纯在如下关系:
4.4 小车平衡控制算法
本系统在小车平衡控制上采用了PD算法,小车平衡控制算法公式为:
上式中ν_temp是控制小车平衡的电机控制变量,θ_new是当前小车倾斜角度,ν_gyro是当前小车的角速度。通过上位机观察在不同P、D参数情况下的响应曲线来确定具体的P、D参数。具体调节方法是首先改变P参数,得到一个超调量最小的响应曲线;然后改变D参数,使得响应曲线的反应速度快并且超调量小。
4.5 电机速度及转向控制算法
由于本系统采用了两个独立的直流电机,并且在每个电机的齿轮上组装了一只双相编码器作为速度反馈器件。因此两个电机在控制上均是独立的,这样便可实现小车的前进、后退及转向。在转向控制上,是通过控制左右电机差速的方法来实现。利用摄像头采集赛道边线位置信息,并通过赛道边线位置信息来拟合赛道中心线的位置信息。由于赛道宽度是已知并且固定的,所以当摄像头采集到左右两边赛道边线时,采用中值法获取赛道中心线;当摄像头只能采集到左右一边赛道边线时,给当前赛道信息补上赛道宽度一半的量来获取赛道中心线。最后通过计算,获得小车所需的转向比例。本系统在电机控制上采用了PI算法,左右电机控制算法公式为:
上式中Speed_New_Left是左电机速度,Speed_New_Right是右电机速度。K是小车转向比例,即当小车在直道上时K=0,当小车需要左转时K<0,当小车需要右转时K>0,K的取值由小车偏离赛道中心线的程度决定。Speed_Dev是上一次期望速度与实际速度的偏差。Speed_Dev_Add是速度偏差的累积。其中P、I参数的确定方法是首先调节P参数,通过上位机观察响应曲线,直至得到反应快且超调量最小的响应曲线;然后调节I参数,以获得满意的响应曲线。
5.结语
本文介绍了一种自主循迹两轮智能车的设计与实现。在动态数据采集的基础上,主要研究了对由加速度传感器和陀螺仪采集的角度信号进行融合的互补滤波算法,在路径识别上对由摄像头采集路径信息的二值化处理方法。经过实验验证,该系统具有工作稳定、循迹准确和运行速度快的特点。本系统方案也能扩展到类似的机器人系统中,应用前景广阔。