PCA9685级联驱动SG90舵机:第二块板无响应排查求助
问题描述
三块PCA9685板级联驱动40个SG90舵机,仅第二块板(地址0x41)连接的舵机无响应,其余两块(地址0x40、0x42)正常。已完成以下排查:
- 按要求设置地址:board2短接A0引脚设为0x41,board3短接A1引脚设为0x42
- 更换过board2,排除单块板的焊接或硬件故障
- 检查过各板外接电源电压及接线
- 尝试用明确位置值测试、注释其他板代码,串口显示发送给board2的指令与其他板一致
核心代码如下:
初始化代码
Adafruit_PWMServoDriver board1 = Adafruit_PWMServoDriver(0x40); Adafruit_PWMServoDriver board2 = Adafruit_PWMServoDriver(0x41); Adafruit_PWMServoDriver board3 = Adafruit_PWMServoDriver(0x42);
初始化及频率设置
board1.begin(); board1.setPWMFreq(60); // Analog servos run at ~60 Hz updates board2.begin(); board2.setPWMFreq(60); board3.begin(); board3.setPWMFreq(60);
舵机控制代码片段
if (allServo){ for (int angle = servoAngleMin; angle <= servoAngleMax; angle += servoStep) { Serial.println("ALL SERVOS"); for (int i = 0; i < 40; i++) { board1.setPWM(i, 0, angleToPulse(angle)); board2.setPWM(i, 0, angleToPulse(angle)); board3.setPWM(i, 0, angleToPulse(angle)); } delay(100); Serial.println("All Servo delay"); }
排查方向及可能原因
1. I2C地址验证与冲突
- 用I2C扫描工具(如Arduino内置的I2C Scanner示例程序)确认board2的实际地址是否为0x41:先单独连接board2扫描,再级联三块板扫描,确保三个地址都能被识别。部分PCA9685板的地址跳线可能需要短接到VCC/GND的特定引脚,而非单纯短接A0引脚,需核对板卡手册。
- 若扫描不到0x41,检查board2的A0引脚短接是否牢固,或尝试更换短接方式(如直接用杜邦线连接A0与VCC)。
2. I2C总线信号完整性
- board2作为级联中间节点,检查SDA/SCL线路与前后板的连接是否牢固,线路长度是否过长(I2C总线建议长度不超过1米,超长需添加4.7kΩ拉电阻)。
- 多板级联时可能因拉电阻过多导致信号异常:若每块PCA9685都自带拉电阻,可尝试拆除board2上的拉电阻(通常是板上的0402封装小电阻)后测试。
3. 代码隐性逻辑问题
- 检查
angleToPulse函数的输出值是否在SG90舵机的有效PWM范围内(一般为100-500对应0-180度),若输出值超出PCA9685的12位PWM范围(0-4095),board2无法输出有效信号。 - 单独编写测试代码控制board2:仅初始化board2,调用
board2.setPWM(0, 0, 300);(舵机中位值),验证单舵机是否动作,排除循环中索引i超过board2通道数(PCA9685仅16通道,i>15的操作无效,但前16个通道应正常)的问题。 - 验证board2初始化是否成功:Adafruit库的
begin()返回bool值,添加代码确认:if (!board2.begin()) { Serial.println("Board2 init failed!"); while(1); }
4. 电源供电细节
- 单独为board2的外接电源供电,断开其他板的电源,测试舵机是否动作(多舵机启动时电流需求大,可能导致中间板电压骤降)。
- 检查board2的VCC/GND引脚是否存在虚焊,或接线时是否将GND接反。
5. 芯片复位操作
- 给board2的RESET引脚单独做复位:将RESET引脚连接到Arduino数字引脚,初始化前执行复位:
pinMode(2, OUTPUT); // 假设RESET接数字2引脚 digitalWrite(2, LOW); delay(10); digitalWrite(2, HIGH); delay(10); board2.begin();
内容的提问来源于stack exchange,提问作者Utopist
相关产品推荐
相关产品推荐

