PCA9685舵机驱动板的使用方法
简介 PCA9685驱动板支持控制16路舵机,采用i2c通信协议。 VCC:PCA9685芯片的电源 V+:舵机的电源 舵机数量较少时电源可以通过V+引脚输入,较多时通过绿色电源输入端输入 Arduino驱动示例 #include <Wire.h> #include <Adafruit_PWMServoDriverh> #define SERVO_45 187 Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); void setup() { pwm.begin(); pwm.setPWMFreq(50); pwm.setPWM(0,0,SERVO_45); } 本示例使用了Adafruit PWM Servo Driver Library。 该程序可以使连接在PCA9685舵机驱动板上0号位的舵机转动45°。 setPWMFreq()设置了IIC通信的更新频率(50HZ对应脉冲周期20ms),setPWM()`的三个参数依次为舵机编号、脉冲起始时间、脉冲结束时间,其中脉冲时间要以寄存器的值来表示(187对应1.0ms)。 舵机控制逻辑 上述示例使用舵机型号为SG90,运动范围0°-180°,舵机的控制周期信号为20ms,工作脉冲在0.5ms-2.5ms之间,舵机的转动角度由PCA9685的12位寄存器中的值来决定,而寄存器的值由脉冲时间决定。故可以得到脉冲时间-寄存器值-转动角度的关系如下: '0.5ms-0°':0.5*204=102 '1.0ms-45°':1*204=204 '1.5ms-90°':1.5*204=306 '2.0ms-135°':2*204=408 '2.5ms-180°':2.5*204=510 然而在实际使用时会有误差出现,故除了0°与180°的情况,要将寄存器值乘以0.915的系数。 '0.5ms-0°':0.5*204=102 '1.0ms-45°':1*204=204*0.915=187 '1.5ms-90°':1.5*204=306*0.915=280 '2.0ms-135°':2*204=408*0.915=373 '2.5ms-180°':2.5*204