本文讲述如何经过树莓派的硬件PWM控制好盈电调来驱动RC车子的前进后退,以及如何驱动伺服电机来控制车子转向。html
车子上的电调型号为:WP-10BLS-A-RTR,在好盈官网并无搜到对应手册,但找到一份通用RC竞速车的电调使用说明,不过说明书中并无说起信号调制方式,继续寻找,看到一份电调的通用驱动说明。git
总结来讲,对于PWM格式要求以下:github
1. 电调接收50Hz的PWM信号,即一个周期为20ms.编程
2. 油门对PWM高电平的响应范围为1ms~2ms,即高电平的占空比为1/20~2/20设计
3. 默认RC竞速车只有前进控制,则1ms为最低速度,2ms为最高速度;若配置RC竞速车为前进/后退模式,则1.5ms为油门中点,2ms为正向最高油门,1ms为反向最高油门。3d
对于第三点,则须要配置电调的相关模式以识别PWM的意图。调试
备注:htm
1. 因为此处并没有遥控器,所以图中文档的步骤1 就只须要拔插电池电源便可blog
2. 高、中、低档的PWM输出则须要本身对树莓派编程进行控制文档
备注:
1. 不是全部的电调都有这三种运行模式,刚好本文所驱动的WP-10BLS-A-RTR电调只能选择“正转带刹车”或“正反转带刹车”,此处选择红灯闪两次,配置为“正反转带刹车”。
调试过程当中,树莓派安装在车上,PC经过SSH局域网访问树莓派。所以使用PC键盘的W/S/SPACE键来模拟遥控器的前进/后退/刹车;同时,考虑到键盘只能提供0/1状态输入,故选用R/F键来模拟“档位”--限制当前档位下的W/S的最高油门,以达到换挡加减速的效果。语言表述繁琐,用流程图来表达,大概就是以下效果:
备注:计算速度输出时,可配置相关参数使得油门直接升到最高或通过若干次循环加速后达到当前档位的最大速度。
伺服电机的工做原理可参考此文,描述十分详尽,此处再也不赘述。
此处使用A/D键来控制转向,因为没法获知电机当前的转向角度,所以很难经过逐步增大/减少PWM占空比的方式来控制电机的转向。为简化控制,每次按下按键时触发电机偏转必定的角度,角度值受KEEP_TICK_LIMIT控制,若按住按键不松开,便左或右转向打到底。
逻辑较为简单,直接看代码:
工程源码请参考 github 仓 rc_car.