Arduino连接Pixhawk读取PWM信号始终为0的问题咨询
问题背景
尝试将Pixhawk连接至Arduino读取其输出的PWM信号,当前Pixhawk已正常连接FrSky X8R接收机,但Arduino端读取到的PWM数值始终为0。
使用的Arduino读取代码如下:
#define RCPin 4 int RCValue; void setup() { Serial.begin(9600); pinMode(RCPin, INPUT); } void loop() { RCValue = pulseIn(RCPin, HIGH,25000); Serial.println(RCValue); }
接线情况参考下图:
排查及解决步骤
按优先级从高到低排查:
- 优先确认共地连接:这是该类问题最高发的原因,必须将Pixhawk的GND引脚与Arduino的GND引脚直接相连,两套设备没有共地的话电平参考基准不统一,
pulseIn函数完全识别不到正确的高电平跳变,自然一直返回0。 - 检查Pixhawk端口输出配置:Pixhawk的MAIN/AUX输出口默认不会直接透传接收机PWM信号,需要先在Mission Planner或者QGroundControl地面站中,把接线对应的输出端口功能设置为遥控器通道透传/舵机PWM输出,确认对应通道输出的是1000~2000us区间的标准50Hz PWM信号。
- 修正代码参数:当前
pulseIn设置的超时时间为25000微秒(25ms),刚好等于标准50Hz PWM的完整周期,很容易因为时序偏移错过高电平脉冲,将超时参数调整为30000(30ms)即可覆盖完整周期,避免漏读。 - 接线与电平校验:Pixhawk输出高电平为3.3V,常规Arduino(Uno/Nano等)数字口可正常识别,但如果接线过长存在压降会导致高电平达不到识别阈值,接线长度尽量控制在20cm以内;同时确认接到的是Arduino的数字引脚4,不要误接到模拟口或者其他功能复用引脚上。
内容的提问来源于stack exchange,提问作者Melon Streams
相关产品推荐
相关产品推荐

