穿越机电调协议—从pwm到dshot

让我们从pwm说起

Pwm,即脉宽调制,用高电位的波长时间来表示信息。通常值为1000-2000,即2ms内,高电位的时间从1000us到2000us之间。pwm产生于人手直接控制遥控器,遥控器再控制舵机的时期。1s除以2ms等于500hz的刷新率对人的反应来说足够用了。

但是事情发生了变化,当多旋翼飞控诞生时,接收机不再直接与电调通讯,转而和飞控通讯。相比人手人脑,飞控可以更快地做出反应,如此pwm提供的500hz刷新率有点不够看了。并且还有不同步的情况发生。因为新产生的控制信号如果错过了一点点时间,那么电调就会继续执行上个周期的pwm信号。

为此,OneShot125协议产生。

这项协议包含两项技术,一项称为同步pwm,一项为快速pwm。同步pwm,即不再严格要求一个周期结束后必须有新的控制信号可用,不然就接收不到新控制信号,直到再过一个周期才能更新。而是有新的控制信号随时发出,电调随时接受。快速pwm意味着从原先2ms一个周期,除以8,变为250us一周期,这时候油门值1000-2000就由125us到250us的高电位波长表示。也就是oneshot125中125的来源。

Oneshot42基本和oneshot125相同,不同的是一个周期的时间变为84us。类似地,multishot将一个周期的时间压缩为25us,刷新率来到40khz。

上述协议都是模拟信号,而dshot则是数字信号。二者有什么区别吗?假设顾客要向店员描述自己要多大的西瓜,如果顾客用手比划大小,这就是模拟信号。即手之间的距离“模拟”了西瓜的大小。也就是直接携带特征信息。而数字信号则是间接地通过编码来传输信息。比如你对店员说我要003型西瓜,根据提前约定好的编码信息,店员就知道003型西瓜是多大的了。

那么模拟信号的问题是什么?首先是干扰,比如你手比较抖,比划西瓜大小时店员就不太明白西瓜的精确尺寸。再者就是晶振的问题,因为单片机的时间都来源于晶振,而晶振在微秒级的时间上不太可能完全准确。这就导致了使用pwm脉宽调制时,原本想发送1234微秒的波长,结果发出去变成了1235,或者接收方的晶振也有点问题接受成了,1233微秒。要想解决可以使用昂贵的更精密的晶振,显然不现实。这也是为什么电调上电需要校准行程,因为不同遥控器发送的脉冲宽度范围可能是不同的。比如一个遥控器实际行程是998微秒的脉宽到2020微秒的脉宽。

而数字信号则能比较好的解决上述问题。使用dshot后将不再需要标定电调行程。除此之外数字信号还可以降低电子噪声干扰。言外之意就是如果你不在意手动或者飞控帮你标定电调行程,并且你的电调实际使用中也并没有太多噪声干扰,那么也没有必要使用dshot,multishot也很好用。

值得一提的是dshot在实现时使用了飞控CPU中的DMA来传输要发送的数据。这也要求了飞控板在设计时,应该提前将dma通道分配到输出电机信号的端口。

由于dshot是高频信号,电调上用于过滤干扰的低通滤波电容会严重影响dshot信号,使得信号失真。所以如果想使用dshot300及以上,需要自己动手去除电容,这是很危险的。(这是六年前的一个视频观点,现在应该有电调厂商对dshot优化吧,,)

Dshot150一个周期是104微秒,整体延时比oneshot42略差,因为oneshot42一个周期是82微秒。但比oneshot125好很多。

而dshot600一个周期是26微秒,和multishot25微秒一个周期延迟相差不大。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值