赞
踩
前几天开源了自制的6通道航模遥控器(开源自制的6通道航模遥控器,超简单不超过100行代码),受到许多粉丝的关注,美中不足的是只实现了6个通道的PWM输出,没有SBUS输出,接线太复杂。经过一段时间的查阅资料和开发,终于实现了SBUS输出,这样就可以用三根线实现16个伺服通道和2个数字通道的输出了!
1k电阻一个,10k电阻一个,SS8050三极管一个(贴片体积更小)
原理图如下,基本和之前的原理图相同,只是加上了SBUS的取反电路。
如果使用Arduino UNO或者NANO开发板,请将原理图中的11脚和12脚调换位置,因为UNO和NANO的11和12正好与PRO MINI相反!
元件连接图如下:
SBUS协议使用波特率为100000、8个数据位,偶数奇偶校验位和2个停止位的反向串行逻辑。SBUS数据包的长度为25个字节,包括:
字节[0]:SBUS头,0x0F
字节[1-22]:16个伺服通道,每个伺服通道采用11位编码
字节[23]:
位7:数字通道17(0x80)
位6:数字通道18(0x40)
位5:丢帧(0x20)
位4:用来激活故障安全(0x10)
位0-3:n/a
字节[24]:SBUS结束字节,0x00
S.Bus协议通过硬件电路取反,如果没有反相电路,Arduino将无法直接与其他SBUS设备通信。F1和F4飞控根本没有内置反相器,因此任何UART都可以直接使用;对于F3和F7飞控,INAV / Betaflight固件可以禁用软件中的反相。
程序中采用“ FASSTest 18CH”协议的Futaba S.Bus 编码16个RC通道和2个数字通道(ON / OFF)。
SBUS的每个RC通道值映射为:
-100%= 173(相当于PWM伺服信号中的1000)
0%= 992(相当于PWM伺服信号中的1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。