欢迎光临散文网 会员登陆 & 注册

Arduion读取SBUS并驱动舵机电调

2023-08-15 12:41 作者:清风一曲桃花扇  | 我要投稿

        在学习和使用SBUS之前需要先搭建出一个反向电路用于给SBUS信号反向这样才能变成MCU可以解析的串行数据。

        

一个2N7002加上拉电阻即可

         使用Arduino读取SBUS库推荐用Bolder Flight Systems SBUS使用简单方便。

        该库也能用于输出SBUS数据具体看库中的示例。

        控制舵机输出一般使用Servo库如果所用开发板芯片主频较高或硬件资源丰富直接获取SBUS数值之后将数值通过Servo.writeMicroseconds(us)函数就能完成对舵机的控制但实际上如果控制芯片性能不够就会出现Servo与Serial库共同抢占时钟资源的情况,结果就是舵机抖动非常大无法正常运行程序。

        网上针对这个问题使用了这个函数解决。

        但是会抢占LOOP中的运行时间,下面代码程序可以优化这个过程。

        首先大部分舵机都是只能接收工作在50Hz下高电平在0.5ms-2.5ms之间的PWM波,实际上舵机对接收的PWM频率并不敏感大致控制在50HZ上下就行,只要程序能够精准输出0.5ms-2.5ms的高电平即可。

        直接使用还是会不可避免的出现一些轻微抖动但是总体效果优于Servo库。

        上面的程序所使用的通道数据为SBUS直接解析出来的数据,中位点数据为992想要转换为500-2500就需要加508,油门数据则需要专门处理,因为电调的接收范围在1000-2000之间,所以直接将原始数据右移一位+1004就能保证电调接收到有效的PWM数据。

Arduion读取SBUS并驱动舵机电调的评论 (共 条)

分享到微博请遵守国家法律