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 协议演进逻辑图
下面这张图展示了电调协议从模拟到数字的演进脉络:
3.8 如何选择协议?
说了这么多,到底该用哪个?我给出几条建议:
- 新装机,首选DSHOT600。 这是目前最均衡的方案。F4以上飞控都支持,电调也基本标配DSHOT。
- 老飞控(F3、F1)用Multishot。 这些飞控的定时器不够用,跑DSHOT可能不稳定。
- 航拍机用普通PWM或DSHOT150。 航拍不需要极致响应,稳定第一。
- Oneshot42和Multishot慎用。 分辨率太低,手感粗糙。除非你飞老硬件,否则别碰。
重要提醒:切换协议后,一定要重新校准电调行程。不同协议的脉宽范围不同,不校准的话,油门行程可能对不上。我见过有人从PWM切到DSHOT没校准,结果电调一直满油门转,差点炸机。