赞
踩
上一篇文章《遥控汽车项目中通过Arduino控制双舵机》中分享了如何用Arduino控制遥控器间接遥控赛车:Arduino控制舵机→舵机带动电位器→电位器替代遥控器旋钮→遥控控制赛车,这种方法虽然开发比较快速,但技术不直接,中间增加了控制环节,特别是增加了新的机械装置,不是好的解决方案。
再次拆解和分析遥控赛车
如何控制电调器?
PWM英文全称为(Pulse-width modulation)。也称占空比信号,它表示高电平时长占整个信号周期的比例。电调虽然是通过PWM占空比控制电机速度,但他用的PWM频率和Arduino的PWM频率是不一致的,直接通过Arduino的PWM信号接线端是无法控制的。
仔细阅读航模电调的PWM控制协议,发现它实际是用一个2ms周期的方波来控制的,1ms高电平1ms低电平表示0,1.5ms高电平0.5ms低电平表示0.5,2ms都是高电平表示1(如果是-1~+1的范围,对应换算为ms高电平1ms低电平表示-1,1.5ms高电平0.5ms低电平表示0,2ms都是高电平表示1)。看到这里你就发现,这根本就不是PWM*(至少不是标准PWM,叫50Hz的PWM信号?)*。
到底如何控制电调呢?
仔细回想一下第一节所说的遥控器连接通用接收机如何控制电调的。我们会发现,通用接收机并不需要规定每个通道具体连接什么设备:是舵机控制方向,还是电调调整速度。把不同的通道的接线对调,会发现遥控器的方向变成油门了。等等,既然是通用协议,不同通道可以对调,也就是说,在航模领域,他们事实上都是遵循舵机控制协议的。
所以,我们何必要研究电调协议呢?
直接把电调当成一个舵机就好了,直接把上一版本通过舵机控制电调器的代码直接写入直控主板,开机测试,果然,一切就是这么直接,这么简单,这么美好。
for (int i = 0; i < SERVO_COUNT; i++) {
servo[i].write(servoValues[i]);
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。