《小白入门:无人机电调中的PWM和 Oneshot125、Oneshot42、Multishot、Dshot150/300/600的区别》

详细解析 Oneshot125、Oneshot42、Multishot、Dshot150/300/600 与传统 PWM 的区别和工作原理,帮助新手快速理解各协议的特点与适用场景。以下是整理后的内容:

一、电调驱动信号协议对比总览

协议类型信号类型最小脉宽更新频率双向通信抗干扰能力适用场景代表产品 / 飞控支持
PWM模拟脉冲1000μs50Hz(20ms 周期)入门级无人机、舵机所有飞控(基础支持)
Oneshot125数字脉冲1μs最高 8kHz中高端穿越机、竞速无人机Betaflight、INAV
Oneshot42数字脉冲0.42μs最高 23.8kHz高速穿越机、微秒级响应Betaflight、INAV
Multishot数字脉冲0.5μs最高 50kHz超高速无人机、FPV 竞赛Betaflight(需特殊配置)
Dshot150数字编码6.67μs150kHz主流穿越机、航拍无人机主流电调(如 BlHeli_S/D)
Dshot300数字编码3.33μs300kHz高性能穿越机、竞技无人机BlHeli_32 电调
Dshot600数字编码1.67μs600kHz超高速竞速机、微型无人机BLHeli_32 电调(需短排线)

二、各协议工作原理详解

1. PWM(脉冲宽度调制)
  • 原理:通过固定周期(20ms)内 “高电平持续时间” 表示油门值。标准范围 1000-2000μs,对应 0-100% 油门。
  • 优缺点
    • 优点:简单成熟,兼容性强,所有飞控和电调均支持。
    • 缺点:更新频率低(50Hz),电机响应慢;模拟信号易受干扰,长距离传输失真。
  • 适用场景:入门级无人机、对响应速度要求不高的场景。
2. Oneshot 系列(Oneshot125/42)
  • 原理:数字脉冲协议,继承 PWM 的 “脉冲宽度” 概念,但精度更高。
    • Oneshot125:最小脉宽 1μs,周期 125μs(8kHz 更新频率)。
    • Oneshot42:最小脉宽 0.42μs,周期 42μs(23.8kHz 更新频率)。
  • 改进点
    • 数字信号抗干扰能力优于 PWM;
    • 更新频率大幅提升,电机响应更快(Oneshot42 比 PWM 快 476 倍)。
  • 缺点:仍为单向通信,无法反馈电调状态;需飞控和电调同时支持。
3. Multishot
  • 原理:通过发送多个短脉冲(每个脉冲 0.5μs)组成信号,周期仅 20μs(50kHz 更新频率)。
  • 优势:理论上是响应最快的协议,适合需要极致动态性能的场景(如 3D 飞行、竞速)。
  • 缺点:对线材质量要求极高(信号衰减严重),仅部分高端电调支持,配置复杂。
4. Dshot 系列(Dshot150/300/600)
  • 原理:数字编码协议,采用 “脉宽比” 表示二进制数据(0 或 1):
    • 短脉冲(约 33% 周期)表示 0;
    • 长脉冲(约 66% 周期)表示 1。
    • 每个数据包包含 16 位:11 位油门数据 + 5 位 CRC 校验(防数据错误)。
  • 改进点
    • 双向通信:支持电调向飞控反馈温度、电流、RPM 等数据;
    • 高抗干扰:数字编码 + CRC 校验,抗电磁干扰能力极强;
    • 无抖动:彻底解决 PWM 协议的 “电机怠速抖动” 问题。
  • 区别:数字后的数字代表波特率(kbps),如 Dshot300 即 300kbps,波特率越高,更新频率越快,响应越及时。

三、协议选择建议(新手必看)

  1. 入门阶段:优先使用 PWM,熟悉基本操作,确保飞控和电调兼容。
  2. 进阶阶段:升级到 Dshot150/300,平衡响应速度与稳定性,支持双向通信。
  3. 竞速 / 3D 飞行:若电机 KV 值>3000 且使用短排线,可尝试 Dshot600 或 Multishot。
  4. 兼容性检查
    • 飞控需刷入支持协议的固件(如 Betaflight 4.0+);
    • 电调需支持对应协议(如 BLHeli_32 电调支持全系列 Dshot)。

四、配置与调试注意事项

  1. 线材要求
    • Dshot 协议需使用屏蔽线(尤其是 Dshot600),线长尽量<15cm;
    • 避免与电源线平行走线,减少电磁干扰。
  2. 电调设置
    • 通过地面站软件(如 Betaflight Configurator)配置电调协议;
    • 启用 “Dshot bidirectional” 选项以获取电调反馈数据。
  3. 故障排查
    • 若电机抖动:检查协议是否匹配,尝试降低 Dshot 速率;
    • 若信号丢失:检查线材连接是否牢固,更换屏蔽线。

五、总结:协议进化的核心逻辑

从 PWM 到 Dshot 的演进,本质是 “精度、速度、可靠性” 的全面提升:

  • PWM:用 “模拟脉冲宽度” 传递简单指令(适合入门);
  • Oneshot:用 “数字脉冲宽度” 提升精度和速度(适合进阶);
  • Dshot:用 “数字编码 + 双向通信” 实现高效、可靠的控制(适合高端)。

新手可先从 PWM 入手,逐步升级到 Dshot,体验协议进化带来的性能提升!

### STM32实现DSHOT300协议的方法 #### 协议简介 DSHOT 是一种用于控制无刷电机的数字信号调制方式,相比传统的PWM具有更高的分辨率更少的电磁干扰。DSHOT300是其中的一种变体,提供每秒300次更新的能力。 #### 硬件准备 为了在STM32上实现DSHOT300通信,需要确保所使用的微控制器具备足够的处理能力定时器资源来生成精确的时间脉冲序列[^1]。 #### 软件配置 通过TIMx高级定时器可以方便地设置DSHOT输出。具体来说,可以通过DMA传输机制配合定时器中断完成数据发送任务。下面是一个简单的初始化过程: ```c // 初始化 TIMx 作为 DSHOT 输出通道 void DSHOT_Init(TIM_HandleTypeDef *htim){ __HAL_TIM_SET_COUNTER(htim, 0); // 清零计数器 htim->Instance->ARR = 49; // 自动重装载值 (ARR),对应于8us周期下的最大占空比 htim->Instance->PSC = 79; // 预分频系数,假设系统时钟为8MHz,则得到8us时间基底 HAL_TIM_PWM_Start_DMA(htim, TIM_CHANNEL_1, (uint32_t*)dshot_buffer, BUFFER_SIZE); } ``` 上述代码片段展示了如何利用STM32的标准外设库API来进行基本的硬件设定。这里假定系统的主频率为8 MHz,并选择了合适的预分频比例使得每个滴答代表大约8微秒的时间间隔。这有助于构建所需的位流模式。 对于实际应用中的编码部分,考虑到DSHOT采用的是基于宽度调制的方式表示二进制数值,在编写具体的帧格式化程序之前应当先了解其详细的比特映射规则以及同步头的要求。 #### 示例代码 下面是简化版的单个字节写入函数示例,它会按照指定的数据包结构填充缓冲区并触发一次完整的发送操作: ```c #define DSHOT_TELEMETRY_BIT 0b00000001 // 启用遥测标志位 static uint16_t dshot_encode(uint8_t throttle_value) { uint16_t encoded_data; // 构建有效载荷(含校验) encoded_data = ((throttle_value & 0xFF) << 1) | DSHOT_TELEMETRY_BIT; return encoded_data ^ 0xFFFF; // 取反以适应接收端解码需求 } void send_dshot_frame(uint8_t motor_id, uint8_t throttle) { static const int FRAME_LENGTH = 16; volatile uint16_t* buffer_ptr = dshot_buffer + motor_id * FRAME_LENGTH; for(int i=0;i<FRAME_LENGTH;++i){ *buffer_ptr++ = dshot_encode(throttle); } // 触发 DMA 发送 __HAL_TIM_SetCounter(&htim1, 0); HAL_TIM_PWM_Start_DMA(&htim1, TIM_CHANNEL_1, (uint32_t*)dshot_buffer, MOTOR_COUNT * FRAME_LENGTH); } ``` 这段C语言源代码实现了向特定编号马达发送指令的功能,其中包括了对油门参数`throttle`进行适当转换的过程。注意这里的`MOTOR_COUNT`应该被定义成实际连接到MCU上的电调数量;而`dshot_buffer[]`则用来暂存待发出的所有命令副本。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值