pca9685的舵机控制
舵机角度
一个周期为20ms的脉冲里面高电平持续的时间决定了舵机转动的角度,180度舵机对应关系如下:0.5ms--0度,1ms--45度,1.5ms--90度,2ms--135度,2.5ms--180度。
16路舵机驱动控制模块pca9685pw通过IIC(内置PWM驱动和一个时钟)协议可以控制16个舵机
pca9685设备地址
其地址的分配是通过模块右上方的短接焊盘来确定的,从A0-A5表示地址的最低位到最高位,也就是最多可级联2^5=32个模块,地址为: 1+A5+A4+A3+A2+A1+A0+rw。如果不用短接的话Ax=0;短接的话Ax=1;rw为写的话rw=0;rw为读的话rw=1;所以写入数据不做短接则地址应该为1000 0000 =0x80
IIC通信
SCL接PH4,SDA接PH5,VCC接3.3V,GND接,V+单纯只是供电,在驱动大功率舵机时不接,但是外接电源的两个端口要接上正负极,否则无法供电。
其中每个输出管脚拥有4个寄存器,每隔寄存器存储8位2进制数据,每个输出管脚需要存储上升时间和下降时间
void setPWM(uint num, uint on, uint off)//其中开始一般设置为0,只需要取下降时间就行
该函数为设置PWM波的占空比,一般都以4096为一个PWM波周期
MODE1寄存器用来重设板子,PRE_SCALE用来设置控制周期的寄存器,要在进入睡眠后修改时钟周期寄存器
void setPWMFreq(float freq)
设置角度
60度=0.5ms+(60/180)*(2.5ms-0.5ms)=1.1666ms
利用占空比=1.1666ms/20ms=off/4096,off=239,50hz对应周期20ms
实物连接图
pca9685分为控制电和驱动电两个电源,其中控制电接3.3V,一般由单片机开发板提供,同时SCL和SDA和单片机的数据信号和时钟信号相连;而驱动电为中间绿色的装置,需接5v电压
这里驱动电我使用了网购的另一个5v直流电源
- STM32控制16路舵机控制板PCA9685
- 树莓派,PCA9685 pwm控制
- LED PWM控制芯片PCA9685的Linux 驱动
- 基于zybo z720开发板的pca9685的机械臂控制
- 树莓派使用python 控制G90舵机
- 舵机的原理和控制
- arduino uno + 舵机 + dht11 + 杜邦线 + usb + 面包板 测温度 控制舵机运动
- Micropython加速物联网开发9 - 舵机的控制
- 舵机的相关原理与控制原理
- Arduino学习之二——舵机控制
- 舵机的原理和控制
- MC9S12XS128 8位PWM 舵机控制
- FPGA控制舵机转动
- 舵机的原理和控制
- 51单片机按键直接控制舵机旋转
- Cortex-M3 (NXP LPC1788)之IIC应用--PCA9532进行IO扩展和LED亮度控制
- Arduino学习之二——舵机控制2
- 舵机及转向控制
- STM32控制舵机转动
- Tcar:智能车之基于mg995型号舵机的驱动控制模块