微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于飞思卡尔单片机的两轮车控制系统设计

基于飞思卡尔单片机的两轮车控制系统设计

时间:09-02 来源:互联网 点击:

最终导致电路饱和,无法得到准确的角度信号。因此,本系统采用互补滤波算法把加速度传感器获得的角度信号与陀螺仪输出经积分后的角度进行融合,最后得到较准确的车模倾角信息。

  3.7 直流电机驱动模块

  车速控制单元采用脉宽调制技术( P W M ),加上P I D算法实现闭环控制。系统利用单片机输出PWM信号通过隔离芯片LM244来控制直流电机驱动芯片BTS7960,通过改变PWM波的占空比调节电机的转速,加上PID算法对电机转速进行闭环控制。直流电机驱动芯片BTS7960是大电流、半桥、低通态电阻的集成芯片,它带有一个P沟道的高边MOSFET、一个N沟道的低边MOSFET和一个驱动IC.P沟道高边开关省去了电荷泵的需求从而减小了EMI.集成驱动IC具有逻辑电平输入、电流诊断、斜率调节、死区时间产生和欠压、过压、过温、过电流及短路保护的功能。采用BTS7960搭建的电机驱动电路如图4所示。

  

  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,当小车需要左转时K0,当小车需要右转时K>0,K的取值由小车偏离赛道中心线的程度决定。Speed_Dev是上一次期望速度与实际速度的偏差。Speed_Dev_Add是速度偏差的累积。其中P、I参数的确定方法是

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top