Arduino 解码遥控接收机 PPM 信号——分步指南
组件与材料
- Arduino UNO × 1
软件与在线服务
- Arduino IDE
项目简介
遥控发射机因具备加密链路与良好通讯距离,非常适合需要无线链路的项目。所有遥控接收机设计用于驱动舵机,每通道有地、VCC、信号三根线。信号为周期性脉冲:1.5ms 对应舵机 90°,1–2ms 对应最小/最大角度(上图展示 6 通道接收机及 PPM 引脚)。
直接测量各通道脉宽再映射虽可行,但存在两个问题:
- 每通道需单独接线至 Arduino,占用大量引脚。
- Arduino 仅有 2 个外部中断引脚,超 2 通道读取需轮询,引入延迟,影响实时性。
许多接收机提供 PPM 引脚,将所有通道数据复用在单一信号中传输,解决上述问题。
PPM 信号构成


信号由数据包与空白间隔组成。峰值间的间隔代表通道值。图中为 6 通道接收机,故有 7 个脉冲。编码思路:先检测分隔空白(约 11500μs),随后记录后续 6 个脉冲宽度作为各通道值。
代码使用说明

read_me() 在中断引脚(Pin 2 或 3)下降沿触发,记录 15 个时间间隔值存入临时数组。
a = micros();
c = a - b;
b = a;
x[i] = c;
i = i + 1;
if (i == 15) {
for (int j = 0; j < 15; j++) ch1[j] = x[j];
i = 0;
}
read_rc() 在主循环调用,扫描临时数组寻找 >10000μs 的分隔空白,定位到 6 个通道值,减去 1000 后存入 ch[1]..ch[6]。
void read_rc() {
int i, j, k = 0;
for (k = 14; k > -1; k--) if (ch1[k] > 10000) j = k;
for (i = 1; i <= 6; i++) ch[i] = (ch1[i + j] - 1000);
}
完整代码
unsigned long int a, b, c;
int x[15], ch1[15], ch[7], i;
void setup() {
Serial.begin(9600);
pinMode(2, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(2), read_me, FALLING);
}
void loop() {
read_rc();
Serial.print(ch[1]); Serial.print("\t");
Serial.print(ch[2]); Serial.print("\t");
Serial.print(ch[3]); Serial.print("\t");
Serial.print(ch[4]); Serial.print("\t");
Serial.print(ch[5]); Serial.print("\t");
Serial.print(ch[6]); Serial.print("\n");
delay(100);
}
void read_me() {
a = micros();
c = a - b;
b = a;
x[i] = c;
i = i + 1;
if (i == 15) {
for (int j = 0; j < 15; j++) ch1[j] = x[j];
i = 0;
}
}
void read_rc() {
int i, j, k = 0;
for (k = 14; k > -1; k--) if (ch1[k] > 10000) j = k;
for (i = 1; i <= 6; i++) ch[i] = (ch1[i + j] - 1000);
}
制造工艺
- 树莓派家庭温度监测仪表盘:实时图表展示
- 仅用 Arduino 构建 DTMF 解码器 – 无需额外 IC
- 用 Arduino 打造绚丽显示器 Ambilight 系统
- 用 Arduino 制作超声波悬浮装置:分步指南
- 使用 Arduino Uno 轻松编程 Atmel AT89 系列单片机——分步指南
- Arduino 与智能手机打造智能电压表——简单易做的 DIY 项目
- 基于 Arduino 与 MAX30100 的实时物联网心率监测系统
- Arduino Uno WiFi 网页服务器:通过浏览器控制 LED 开关
- 智能停车计数系统:Arduino + Processing + PHP 实时车位追踪上云
- 实时心跳 LED 可视化:基于 uECG 与 Arduino Nano 的心率光环
- Arduino 自动化 Chrome 恐龙游戏 - LDR 光敏电阻 + Python 实现全自动跳跃
- 使用 Arduino Nano 和 RDA8057M 制作紧凑型 FM 收音机