3、电调协议详解:从PWM到DSHOT的演进之路

飞控和电调之间怎么「说话」?说白了,就是靠协议。我最早入行时,市面上清一色都是普通PWM协议。后来穿越机火起来,Oneshot、Multishot、DSHOT一个接一个冒出来。今天咱们就把这些协议挨个捋一遍。

你想想看,飞控要给电调发指令,无非就是告诉它「转多快」。但怎么传这个速度值,不同协议差别大了去了。有的用脉宽,有的用数字编码,有的还带CRC校验。嗯,咱们从最基础的开始。

核心概念:所有电调协议的本质,都是把油门值从飞控传到电调。区别在于:传输速度、分辨率、抗干扰能力、以及是否支持双向通信。

3.1 普通PWM协议——老祖宗

普通PWM,也叫PWM 50Hz。这是最原始的方式。飞控每20ms发一个脉冲,脉冲宽度在1ms到2ms之间,对应油门0%到100%。

举个例子:1ms脉宽=油门最低,1.5ms=中位,2ms=油门最高。就这么简单。

但问题也很明显:

  • 刷新率只有50Hz,也就是每秒更新50次。飞控反应慢半拍
  • 分辨率只有约1000步(1ms到2ms,每1μs一步)
  • 信号容易受干扰,毕竟模拟信号

我记得2014年做第一台四轴时,用的就是PWM电调。那时候飞控悬停总有点晃,我一直以为是PID没调好。后来换了Oneshot,悬停稳了一大截。说白了,PWM的刷新率太低了,飞控根本来不及响应姿态变化。

避坑指南:如果你还在用PWM电调做航拍机,记得把电调校准做好。我曾经遇到过电调行程没校准,导致四轴一解锁就翻车的惨案。校准方法很简单:油门最高→上电→听到提示音→油门最低→再听到提示音→完成。

3.2 Oneshot125——第一次提速

Oneshot125是PWM的改良版。它把周期从20ms缩短到了125μs。你没看错,快了160倍。

怎么做到的?PWM是等20ms才发下一个脉冲,Oneshot125不等,发完一个立刻发下一个。刷新率从50Hz直接飙到8kHz。

参数对比:

协议 周期 刷新率 脉宽范围 分辨率
普通PWM 20ms 50Hz 1-2ms ~1000步
Oneshot125 125μs 8kHz 125-250μs ~125步

看到没?刷新率上去了,但分辨率反而降了。Oneshot125的脉宽范围只有125μs,按1μs一步算,只有125步。飞控算得再精细,电调也分不出来。

我在项目里用过Oneshot125,说实话,比PWM好很多,但还不够。尤其是做高速穿越机时,125步的分辨率让油门手感有点「颗粒感」。你推一点油门,动力不是平滑上升,而是一格一格跳。

3.3 Oneshot42——继续压榨

Oneshot42把脉宽范围进一步压缩到42μs。刷新率更高了,但分辨率也更低了。

  • 脉宽范围:42-84μs
  • 刷新率:约24kHz
  • 分辨率:约42步

42步?你没看错。这意味着油门只有42个档位。飞控算出来一个油门值,电调只能就近取整。说实话,这个协议有点走极端了。

我个人不太推荐Oneshot42。虽然刷新率很高,但分辨率损失太大。飞控的PID输出精度被电调协议卡脖子,得不偿失。

注意:Oneshot系列协议都是模拟信号,没有校验机制。信号线上有一点干扰,电调就可能误动作。我曾经在强电磁环境下飞丢过一台机子,后来查日志发现是Oneshot信号被电机噪声干扰了。从那以后,我转向了数字协议。

3.4 Multishot——模拟协议的巅峰

Multishot是Oneshot的终极进化版。它把脉宽范围压缩到5-25μs,刷新率直接干到200kHz以上。

参数如下:

协议 脉宽范围 刷新率 分辨率
Multishot 5-25μs 200kHz+ ~20步

分辨率只有20步?对,你没看错。Multishot为了极致刷新率,牺牲了分辨率。但实际飞行中,20步其实够用。因为飞控输出的是连续值,电调内部有滤波,不会真的只跳20个档位。

我试过Multishot,手感确实比Oneshot125细腻。但有个致命问题:它对时序要求极其苛刻。飞控和电调之间的信号线稍微长一点,或者线材质量差一点,信号就变形了。

嗯,这里要注意。Multishot的脉宽只有5μs,相当于一个普通PWM脉宽的1/200。这么窄的脉冲,在长线上传输时很容易被电容效应拉平。我建议Multishot的信号线不要超过10cm,而且要用屏蔽线。

3.5 DSHOT——数字协议的崛起

DSHOT的出现,彻底改变了电调协议的格局。它不再是模拟脉宽,而是真正的数字信号。

DSHOT怎么工作的?它用一串数字比特来表示油门值。每个比特用高电平的宽度来区分0和1:

  • 比特0:高电平持续约1.25μs
  • 比特1:高电平持续约2.5μs

一帧DSHOT数据包含16位:11位油门值 + 1位请求遥测 + 4位CRC校验。

DSHOT的版本:

版本 比特率 帧周期 刷新率(@16帧)
DSHOT150 150kbps ~107μs ~9.3kHz
DSHOT300 300kbps ~53μs ~18.7kHz
DSHOT600 600kbps ~27μs ~37kHz
DSHOT1200 1200kbps ~13μs ~74kHz

DSHOT最大的优势是什么?数字信号 + CRC校验。模拟协议传错了就传错了,电调也不知道。DSHOT每一帧都有4位CRC,飞控发错了电调能发现,直接丢弃这一帧,用上一帧的值。

我个人习惯用DSHOT600。为什么?DSHOT150和300刷新率不够高,DSHOT1200对硬件要求太苛刻。DSHOT600在大多数F4、F7飞控上都能稳定运行,刷新率37kHz也完全够用。

经验之谈:DSHOT1200虽然快,但很多电调的信号输入电路跟不上。我遇到过DSHOT1200下电调随机丢帧的问题,降到DSHOT600就一切正常。建议先试DSHOT600,稳定了再往上试。

3.6 协议对比总表

协议 信号类型 刷新率 分辨率 校验 推荐场景
普通PWM 模拟 50Hz ~1000步 无 航拍机、入门
Oneshot125 模拟 8kHz ~125步 无 早期穿越机
Oneshot42 模拟 24kHz ~42步 无 不推荐
Multishot 模拟 200kHz+ ~20步 无 老飞控过渡
DSHOT150 数字 ~9.3kHz 2048步 CRC4 入门数字协议
DSHOT300 数字 ~18.7kHz 2048步 CRC4 中端配置
DSHOT600 数字 ~37kHz 2048步 CRC4 推荐首选
DSHOT1200 数字 ~74kHz 2048步 CRC4 高端硬件

3.7 协议演进逻辑图

下面这张图展示了电调协议从模拟到数字的演进脉络:

电调协议演进路线图 电调协议演进路线 2005 2012 2015 2017 2020 PWM Oneshot 125/42 Multishot 5-25μs DSHOT 150/300/600/1200 模拟信号 → 数字信号 | 无校验 → CRC校验 | 低刷新率 → 高刷新率 关键指标对比 刷新率 50Hz (PWM) 8kHz (Oneshot125) 200kHz (Multishot) 37kHz (DSHOT600) 分辨率 1000步 (PWM) 125步 (Oneshot125) 20步 (Multishot) 2048步 (DSHOT) DSHOT在刷新率和分辨率之间取得了最佳平衡,且具备CRC校验

3.8 如何选择协议?

说了这么多,到底该用哪个?我给出几条建议:

  1. 新装机,首选DSHOT600。 这是目前最均衡的方案。F4以上飞控都支持,电调也基本标配DSHOT。
  2. 老飞控(F3、F1)用Multishot。 这些飞控的定时器不够用,跑DSHOT可能不稳定。
  3. 航拍机用普通PWM或DSHOT150。 航拍不需要极致响应,稳定第一。
  4. Oneshot42和Multishot慎用。 分辨率太低,手感粗糙。除非你飞老硬件,否则别碰。

重要提醒:切换协议后,一定要重新校准电调行程。不同协议的脉宽范围不同,不校准的话,油门行程可能对不上。我见过有人从PWM切到DSHOT没校准,结果电调一直满油门转,差点炸机。