基于AVR单片机的电动代步车控制器
3 软件设计
3.1 程序结构
根据电动代步车的功能需求,将控制器软件划分为4个主要模块:系统自检模块、键盘和LED显示模块、摇杆检测模块以及电机控制模块。图4为控制器的主程序流程框图。
3.2 系统自检模块
系统自检模块是电动代步车安全性能的关键,主要完成对自身运行状态和故障诊断,故障信息应及时处理并通过人机接口提醒用户。由于电动代步车的使用对象为老年人和残疾人,所以控制器的安全性尤为重要。系统自检模块主要完成如下任务:1)检查充电器接口;2)检查蓄电池电压;3)检查制动器接口;4)检查摇杆接口;5)显示故障状态。
为保障系统的稳定性和可靠性,自检模块采用事件触发机制。图5为系统自检状态机,这些功能函数每秒执行约100次。在系统自检函数中有若干自检标志,这些标志位初始值均是FALSE,如果在系统自检函数中被置成TRUE或者在其他模块中被置成TRUE,则说明故障发生,需要及时处理和对策。
3.3 摇杆检测模块
摇杆检测模块的主要功能是获取摇杆的位置参数,以计算左右驱动后轮的运转方向和PWM脉宽,摇杆位置参数是电动代步车的关键参数之一。摇杆检测模块的主要功能有:1)检测摇杆X方向的位置;2)检测摇杆Y方向的位置:3)处理摇杆X方向的位置;4)处理摇杆Y方向的位置;5)获得左电机的脉宽和方向;6)获得右电机的脉宽和方向。
如果把摇杆的信号看作是二维输出信号,分别在二维坐标系中用X轴和Y轴表示。可以将X轴信号看作是代步车的转向速度给定信号,而Y轴信号则可以看作是代步车的前向或后向速度给定信号。如果用户想要转向或前进,则可将代步车的运动方向看作是X和Y的矢量合成。当代步车前进或后退时,左右轮同时向前或向后转动。当代步车向左转时,右轮正向转动,左轮反向转动或保持不动;相反,当代步车向右转时,左轮正向转动,右轮反向转动或保持不动。当两轮中一轮向前转动而另一轮向后转动,电动代步车做原地360°回转。
摇杆模块工作时,通过A/D转换器不断获取摇杆XY两个方向的坐标值,然后对这些坐标值进行处理,计算控制左右电机的PWM脉宽值。摇杆位置和左右电机脉宽的关系如图6所示,在实际的检测中,由于摇杆几何尺寸的限制,XY坐标值不可能同时为最大值。出于安全因素的考虑,为防止出现死区,当XY坐标值都大于某一值时,左右电机的脉宽都输出最大值。
3.4 电机控制模块
电机控制模块是电动代步车的核心模块,由于电机的运动状态较多,所以该部分也采用了有限状态机的编程方法,实践表明通过合理地抽象电机运动状态,可以使编程达到事半功倍的效果。电机控制的状态流程图如图7所示。
电机控制模块有以下主要功能:1)左电机的速度和方向控制功能:2)右电机的速度和方向控制功能;3)左电机加减速功能;4)右电机加减速功能;5)左电机电流检测功能;6)右电机电流检测功能。
合理的加减速控制可以大大增强电动代步车的舒适性。从摇杆检测模块获得的电机脉宽参数并不会直接作用在电机上,而是有一个中间的变量,这个中间变量会和当前的脉宽进行比较,当和当前脉宽相差不大时,当前的脉宽值和期望值相同;若这两个值相差较大时,这个中间变量会变大或者变小以减小和期待脉宽的差距。由于这些函数都是以每秒100次的速度快速运行,所以用户感觉电机的启动和停止都非常平稳。
4 结论
未来的电动代步车控制器将会朝着多功能化和个性化方向发展,操作舒适性和使用安全性依然是控制器设计的主旋律。工程师在安全性和舒适性方面不断地精益求精,同时也更重视控制参数的可调整性,例如可以调整摇杆的灵活性,以适应不同的室内室外环境。提高电动代步车的安全性能,降低生产成本,提高用户的自主操控能力,对取代传统轮椅车具有重要意义。本文介绍的电动代步车控制器,能够保证产品的使用性能,也降低了成本,已在实际产品中得到成功应用。该控制器功能还将在系统安全性,摇杆操控性能以及智能化程度等方面进一步改进和完善,为老年人和残疾人提供更好的产品。