当前位置:   article > 正文

Arduino直接控制遥控汽车_arduino读取航模遥控器控制小车

arduino读取航模遥控器控制小车

上一篇文章《遥控汽车项目中通过Arduino控制双舵机》中分享了如何用Arduino控制遥控器间接遥控赛车:Arduino控制舵机→舵机带动电位器→电位器替代遥控器旋钮→遥控控制赛车,这种方法虽然开发比较快速,但技术不直接,中间增加了控制环节,特别是增加了新的机械装置,不是好的解决方案。

再次拆解和分析遥控赛车

在这里插入图片描述

  • 遥控和接收机
    遥控器和接收器之间是一个6通道通用遥控和接收机。查阅资料,了解到一般流程:遥控器将电位器信号值编码为PWM信号,再将多个PWM值编码为多路复合PMW信号,通过2.4GHz无线通信协议将复合PWM信号发送给接收机,接收机再解码分解为多通道PWM信号,分别对应多路3针插口。
    通用六通道遥控接收器
  • 遥控赛车转弯
    这个比较简单,通常是通过一个舵机直接控制赛车左右方向旋转。
  • 遥控赛车油门和刹车
    这个稍微复杂一点,涉及到航模领域的专业知识,需要借助一个电调的装置(电子调速器),该装置通过接收PWM信号,调整电机的转速,具体原理可以看相关资料,这里不展开,不影响我们测试控制方式。
    在这里插入图片描述
    了解以上知识后,我们可以修改控制流程,直接将Arduino装到模型车上,通过无线(WiFi或者蓝牙)将计算机的油门方向值传输给Arduino。所以,➊我们不需要了解多路PWM编解码知识,我们可以用自定义格式传输油门方向值;➋方向舵机可以直接调用Arduino内置的Servo库控制;➌需要了解电调的控制方式。

如何控制电调器?

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]);
  }
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/1013004
推荐阅读
相关标签
  

闽ICP备14008679号