PPM信号介绍

2023-05-16

 

原文地址:http://nicekwell.net/blog/20161223/ppmxin-hao-jie-shao.html

 

 

  我们知道PWM信号可以控制舵机,一般信号周期是20ms,脉宽在500us~2500us之间。
  实际上这种pwm信号不仅可以控制舵机,航模中使用的电调(有刷和无刷)也是用这种信号控制,只不过它们的脉宽范围一般限制在1000us~2000us。
  而航模接收机输出的正是上述 周期20ms,脉宽1000us~2000us之间的pwm信号。可以理解为,接收机通过pwm信号来反映遥控器的操作。
  航模遥控器有多路通道,可以传输多个操作(油门、方向等),而无线信道只有一路,怎么把多路通道的pwm信息传输到接收机呢?这就是所谓的PPM调制。
  PPM信号把多路PWM信号调制到一路通道上,发送到接收机后再由接收机还原成多路PWM从各个通道输出。

  注意上面说的PWM信号和控制电机的PWM信号不同。
  控制电机的PWM信号对周期没有严格要求,占空比变化范围0~100%;
  而航模遥控器接收机输出的PWM信号(也是控制舵机、电调的PWM信号),周期一般是20ms,也有16ms的,正脉宽范围一般是1000us~2000us。

  以上是PPM信号的介绍,我不关心PPM是如何调制的,更关心如何利用航模接收机输出的PWM信号,以下介绍的是航模接收机输出PWM信号

电平

  标准电平是5V(航模遥控器的接收机工作电压是5v)。

工作方式

  信息以高电平脉冲宽度表示,以固定的频率不断地刷新信号;
  在每个周期内,携带信息的是高电平脉冲,高电平信息结束后是持续的低电平。

刷新率

  标准刷新率是50Hz(周期20ms),但也遇到过60Hz(周期约16ms)的接收机,如GR3E 3通道接收机。7通道接收机WFR07的周期是21.2ms。

脉宽和数值

  脉宽变化范围是1000us~2000us
  一般航模遥控器中:
  方向、油门之类的双向控制,中间值是1500us,两个方向的极值分别是1000us和2000us;
  模式切换按钮,分别在1000us和2000us之间切换。
  无刷电调没有方向,在1000us时油门为0,2000us时油门最大。
  注:
  1、航模遥控器中,双向控制项目一般都会有个中间值调节旋钮,如果调节了中间值不是1500us,那么另外两个方向的极值也会随着变化。总之输出范围是围绕着中间值±500的范围。
  2、接收机输出的PWM信号可直接接到舵机,而一般舵机的脉宽范围是500us~2500us,对应角度0°~180°。所以一般由接收机输出的PWM信号直接控制的舵机,旋转角度范围在45°~135°。

多路PWM信号

  航模遥控器中常说的“几路通道”代表接收机能输出几路PWM信号。
  注意各个通道的PWM高电平不是同时输出的,一路通道在前一路通道高电平输出结束后才会开始,类似于这样:

  这是因为航模遥控器不能同时传输多路通道,只能单路传输,然后分给各个通道。遥控器的无线信号类似于上面信号的第一行,解调后变成了下面各路通道信号。
  注意,各个通道的高电平信号是一个紧挨着一个的,而不是每个通道固定分配2ms的时间。
  在对接收机解码时发现,实际各个通道的正脉冲并不是一个紧挨着一个出现。有的接收机各个通道输出的高电平连接比较近,而有的接收机在上一个通道正脉冲结束后要等较长的时间下一个通道的高电平才出现,在此期间所有的通道都是低电平。

  由于单路信号最长是2000us,周期20ms,所以理论上可以容纳10路。而由于需要进行同步,实际上遥控器最多只能容纳9路信号
  记住:接收机输出的每帧信号(20ms)里,理论上最后必然有至少2ms的时间里,所有的通道都输出低电平,单片机解码时就是利用这一点来判断一帧信号结束的。

精度

  PPM标准协议中不知道有没有精度规定 ,实际 GT2B/GR3E 枪型遥控器 和 WFT07/WFR07飞机遥控器 的精度都是20us,

时间精度调节范围1000us,分成份数 
20us50普通舵机500us~2500us对应角度180°,对应舵机角度分辨率:1.8°。占空比从 -100%到+100%,对应占空比分辨率:4%

PWM信号和舵机

  接收机输出的PWM信号可直接接到舵机,而一般舵机的脉宽范围是500us~2500us,对应角度0°~180°。所以一般由PWM直接控制的舵机,旋转角度范围在45°~135°。

PWM信号和电调

  接收机输出的PWM信号可直接输出给舵机,而在航模中经常会用这种PWM信号控制电机(有刷和无刷),接收机输出的PWM信号是不能直接控制电机的,虽然最终控制电机的信号也叫PWM,但两种信号是不同的,本文开头有介绍。此时需要电调。
  电调具有接收 接收机输出的PWM信号 和 驱动电机 的功能,不同的电机驱动方式不同(有刷和无刷,有感和无感)。简单地说,电调的作用是接收 接收机输出的PWM信号 信号,转换成我们希望的电机驱动信号,并通过内部的电机驱动电路实现对电机的控制

单片机提取接收机输出的PWM信号

  根据此信号的特性:

我们想要用单片机提取并解释PPM信号可以有两种方法:
  1、获取上图最上面一行的PPM信号,并解释。
  2、获取接收机输出的各路通道的PWM信号,并解释。
  对于成品的接收机,获取各路的输出信号要容易得多,所以采用第二种方法,直接把各路通道的输出信号接到单片机。

  另外在前面的介绍里有说过:接收机输出的每帧信号(20ms)里,理论上最后必然有至少2ms的时间里,所有的通道都输出低电平。我们可以利用这一点来判断一帧信号的结束。

  具体的提取方法请看遥控器接收机信号提取的具体工程:
  单片机提取GR3E接收机信号
  单片机提取WFR07接收机信号

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PPM信号介绍 的相关文章

随机推荐

  • 解决mysql返回的字段值全变成string型的问题

    使用php的CI框架的时候 xff0c 发现在数据库中是int型的数据 xff0c 返回的时候全变成了string了 对于弱类型的语言来说 xff0c 这个没多大关系 xff0c 但是 xff0c 如果是用于其它语言 xff0c 例如obj
  • STM32学习路线

    随笔 停更了好久啊 xff0c 有偷懒 xff0c 但不是完全偷懒 xff0c 主要还是意识到 xff0c 自己太菜了 xff0c 需要补很多东西 xff0c 以下算是学习中的一些体会吧 关关难过关关过 xff0c 成为专家可能需要天赋 x
  • 做个爱读书的程序员

    很多时候我们抱怨工作过于忙碌 xff0c 疲于应付各种事情 但是往往即使有时间也总是会无所事事地浪费掉 xff0c 我们可以找很多理由去给自己解脱 xff0c 固然是想在忙碌之外给自己放松一下 xff0c 大多却是过于可惜的时候 今天跟一个
  • 共用体结构体位域的应用

    1 xff09 增加位域定义 我们经常需要直接访问寄存器中的某个位域 C281x C C 43 43 头文件及外设示例所涉及的位域结构体方法 xff0c 为多数片上外设寄存器提供了位域定义 例如 xff0c 可以为CPU 定时器 xff08
  • C#的并发机制优秀在哪?

    笔者上次用C 写 Net代码差不多还是10多年以前 xff0c 由于当时Java已经颇具王者风范 xff0c Net几乎被打得溃不成军 因此当时笔者对于这个 Net的项目态度比较敷衍了事 xff0c 没有对其中一些优秀机制有很深的了解 xf
  • 集合中常见接口与实现类的基本介绍

    1 Iterable java中集合顶级接口之一 xff0c 实现Iterable接口的集合都是可迭代到 xff0c 可遍历 2 Collection Collection接口继承了Iterable xff0c 并且实现了Iterator迭
  • KEIL5 打开时候很多文件都自动打开解决方法

    Keil5 中修改配置 Edit gt Configuration gt Other gt Open most recent project 选中既可以 xff0c 下次打开Keil时候不会再打开很多文件
  • 新手小白,求教matlab

    用matlab写了个求阶乘的函数 xff0c function y 61 digui n n为元素个数 if n lt 61 1 y 61 1 end y 61 digui n 1 n end 结果显示 xff1a 内存不足 可能的原因是程
  • 字符串有长度限制吗?是多少?

    首先字符串的内容是由一个字符数组 char 来存储的 xff0c 由于数组的长度及索引是整数 xff0c 且String类中返回字符串长度的方法length 的返回值也是int xff0c 所以通过查看java源码中的类Integer我们可
  • C++实现推理, 基于Onnx-simplifier、onnx-tensorrt、TensorRT和Cuda编程

    Cuda基础 深度学习模型推理 为啥需要学习tensorRT 因为需要加速 需要C 43 43 部署 为啥又需要学习cuda编程呢 因为有些前处理 后处理需要cuda编程来并行运算进行加速 比如anchor的解码 nms等后处理 1 CUD
  • nuScenes、Culane数据集、Camera选型及内参标定、TX2外接双目相机ZED

    1 xff1a nuScenes数据集 https zhuanlan zhihu com p 295549692 nuScenes mini data 点云数据集 针对cuda10 0 spconv版本 安装cu100版本 torch 1
  • 指针指向0的问题

    问 xff1a 定义指针变量int a 61 0 是指针变量指向地址为零的数据吗 xff1f 答 xff1a 指针赋0 xff0c 就是不指向任何对象 xff0c 相当于NULL
  • pip install basicsr安装时在Preparing metadata (setup.py)卡住

    pip install basicsr安装时在Preparing metadata setup py 卡住 如下图pip安装basicsr时卡在Preparing metadata 查了很多资料也没解决 xff0c 最后从pypi下载包通过
  • Ros 图(节点,消息,话题)命令

    1 启动守护进程 xff1a roscore xff1a ros 43 core这条命令会启动ros的核心模块 xff0c 我感觉这个是一个守护进程 xff0c 会在11311端口 xff08 可能会有不同的配置 xff09 启动一个soc
  • Android 串口通信(二)

    前言 上一篇中主要介绍了串口基础内容和基于谷歌官方android serialport api库 对Android设备进行的串口操作 xff0c 这篇文章主要介绍基于Usb转串口驱动库usb serial for android 的相关内容
  • DeepMind带来了大魔王阿尔法扣,程序员还有前途吗?

    最近 著名的编程竞赛网站C odeforces 发布了一篇名为 AlphaCode DeepMind Solves Programming Problems on CodeForce 的文章 xff0c 将阿尔法扣 xff08 AlphaC
  • 最优控制理论 四、线性二次型最优控制和LQR

    在前面两节最优控制理论 二 哈密尔顿函数法 xff0c 我们利用Hamilton函数法讨论了终端等式约束的非线性控制系统的最优控制 xff0c 它所解决的是 x
  • 多源传感器GNSS INS 视觉 LiDAR 组合导航与SLAM开源项目总结

    多源传感器GNSS INS 视觉 LiDAR 组合导航与SLAM开源项目总结 本文基于 吴桐wutong 微信公众号文章完善而来 开源代码总览 名称传感器类型组合类型滤波方法备注RTKLIBG KFGAMP rtklibexplorer h
  • Integer类超详解

    目录 xff08 点击传送 x1f680 x1f680 xff09 前言 Integer的内部结构 1 MAX VALUE 2 MIN VALUE 3 SIZE 4 TYPE 构造方法 1 Integer xff08 int number
  • PPM信号介绍

    原文地址 xff1a http nicekwell net blog 20161223 ppmxin hao jie shao html 我们知道PWM信号可以控制舵机 xff0c 一般信号周期是20ms xff0c 脉宽在500us 25