查看: 1223|回复: 0

[经验] 介绍PWM、PPM、S-BUS这三种信号的区别在哪里

[复制链接]
  • TA的每日心情
    开心
    2019-11-4 13:48
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2020-8-5 09:39:29 | 显示全部楼层 |阅读模式
    分享到:
    最近有朋友问过相关问题,我之前也研究过遥控器里面的S-BUS信号。这几种信号在实际应用中比较常见,所以今天再次分享一下。

    1PWM

    PWM:Pulse Width Modulation,即脉冲宽度调制。


    两个重要参数:脉冲宽度(就是如下图波形高电平时间),周期(周期x频率 = 1)。
    1.jpg

    关于PWM的内容,我这里不用多说,PWM是普遍学电子或底层编程的人都知道的一种信号。STM32可以产生PWM波形,也可以检测PWM波形。具体可以参看我的以前推送过的文章。
    2PPM

    PPM:Pulse Position Modulation,即脉冲位置调制。


    因为PWM处理简单,每条物理连线里只传输1路信号。换句话说,需要传输几个通道,就需要几组物理连线。

    但在一些场合,我们并不需要直接驱动设备,而是需要先集中获取接收机的多个通道的值。所以,就衍生出了PPM,如下图:

    2.jpg

    简单来说,就是在一个周期内(20ms),传输多个不同的PWM信号,在每一个周期之间有一个间隔时间来分离。
    因为每一帧信号的尾部必须加入一个足够长的空白(显著超过一个正常PWM信号的宽度)来分隔前后两个信号,每一帧能传输的信号通道最多只能到8个。这在大部分的场合已经足够了,且PPM是一个通行标准,绝大多数厂牌的遥控/接收都是支持的。
    PPM通信协议:
    • 高电平有效。
    • 高电平电压:常见4.8~6V。
    • 信号周期:24ms。
    • 单个脉冲宽度:0.4ms
    • 脉冲间距:0.9ms至2.1ms



    3S-BUS

    S-BUS:Serial Bus,即串行总线。


    简单来说S-BUS就是将PWM信号进行串行传输通信。

    一个字节等于:
    1个startbit + 8个数据位+ 1个奇偶校验位+ 2个停止位(8E2),波特率= 100'000 bit / s
    最高位先发送。逻辑反转(Level High = 1)

    一帧数据:
    每帧25个字节,帧格式如下:
    [startbyte] [data1] [data2] .... [data22] [flags][endbyte]

    startbyte = 11110000b (0xF0)

    数据1-22 = [ch1,11bit] [ch2,11bit] .... [ch16,11bit](ch#= 0 bis 2047)
    通道1使用来自data1的8位和来自data2的3位
    通道2使用最后5位来自data2和来自data3
    等的6位

    flags = bit7 = ch17 =数字通道(0x80)
    bit6 = ch18 =数字通道(0x40)
    bit5 =帧丢失,接收器上的等效红色LED(0x20)
    bit4 =故障保护激活(0x10)
    bit3 = n / a
    bit2 = n / a
    bit1 = n / a
    bit0 = n / a

    两帧数据之间间隔时间:
    • 高速模式:7ms
    • 模拟模式:14ms


    S-BUS可以使用UART控制器来实现,网上有许多教程,感兴趣的朋友可以了解一下。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-25 21:32 , Processed in 0.112228 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.