16路PWM舵机驱动板(PCA9685)的使用说明(更新中)

一、概述

用Arduino类库驱动舵机并不是一件难事,如果需要驱动很多电机,就需要要占用更多的引脚,也会影响到Arduino的处理能力。专门的舵机驱动板很好的解决了这个问题。

6路PWM舵机驱动板(PCA9685)的使用说明(更新中)"

此舵机驱动板使用PCA9685芯片,是16通道12bit PWM舵机驱动,用2个引脚通过I2C就可以驱动16个舵机。不仅如此,你还可以通过级联的方式最多级联62个驱动板,总共可以驱动992个舵机!

6路PWM舵机驱动板(PCA9685)的使用说明(更新中)"

我们为新版本的驱动器扩展了电机驱动功能,可以同时驱动4路电机或2路步进电机。

6路PWM舵机驱动板(PCA9685)的使用说明(更新中)"

驱动板与Arduino连接

此PWM驱动板采用I2C方式,所以只需要4根线就可以连接到Arduino设备:

“Classic” Arduino 引脚方式:

  • +5v -> VCC
  • GND -> GND
  • Analog 4 -> SDA
  • Analog 5 -> SCL

老版Mega 引脚方式:

  • +5v -> VCC
  • GND -> GND
  • Digital 20 -> SDA
  • Digital 21 -> SCL

R3 and later Arduino 引脚方式(Uno, Mega &
Leonardo):

(这些板子都有专用的SDA 和 SCL 引脚)

  • +5v -> VCC
  • GND -> GND
  • SDA -> SDA
  • SCL -> SCL
6路PWM舵机驱动板(PCA9685)的使用说明(更新中)"

驱动板与树莓派连接

  • GND -> RPi GND
  • SCL -> RPi SCL1
  • SDA -> RPi SDA1
  • VCC -> RPi 3.3V或5V
6路PWM舵机驱动板(PCA9685)的使用说明(更新中)"

VCC引脚只是为芯片供电,如果要连接舵机或者LED灯,就使用V+引脚供电,V+引脚支持3.3~6V的电源(芯片的安全电压时5V)。

* 我们建议通过电源接线柱外接电源供电。

供电部分

大多数的舵机设计电压都是在5~6V,尤其在多个舵机同时运行时,跟需要有大功率的电源供电。如果直接使用Arduino 5V引脚直接为舵机供电,会出现一些难以预测的问题,所以我们建议你能有个合适的外部电源为驱动板供电。

6路PWM舵机驱动板(PCA9685)的使用说明(更新中)"

连接舵机

大多数舵机都是使用标准3线母插头连接,只要按照对应的引脚插入驱动板就可以了。(地线一般为黑色或棕色、信号线一般为黄色或白色)

一个驱动板上最多可以添加16个舵机。

6路PWM舵机驱动板(PCA9685)的使用说明(更新中)"

驱动板级联

多驱动板级联 (最多可级联62个)为你提供更大的扩展性,连接方式如下图所示。

6路PWM舵机驱动板(PCA9685)的使用说明(更新中)"

为驱动板分配地址

级联的每个驱动板都需要有一个唯一的访问地址。每个驱动板的初始I2C地址是0×40,可以通过右上角的跳线修改I2C地址。用焊锡将一个跳线连上就表示一个二进制数字“1”。

6路PWM舵机驱动板(PCA9685)的使用说明(更新中)"

Board 0:  Address = 0×40 Offset = binary 00000 (默认)

Board 1:  Address = 0×41  Offset = binary 00001 (如上图,接上A0)

Board 2:  Address = 0×42  Offset = binary 00010 (接上A1)

Board 3:  Address = 0×43  Offset = binary 00011 (接上A0和A1)

Board 4:  Address = 0×44  Offset = binary 00100 (接上A2)

以此类推。。。

6路PWM舵机驱动板(PCA9685)的使用说明(更新中)"
6路PWM舵机驱动板(PCA9685)的使用说明(更新中)"
6路PWM舵机驱动板(PCA9685)的使用说明(更新中)"

代码示例:

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0×40);
Adafruit_PWMServoDriver pwm2 = Adafruit_PWMServoDriver(0×41);
void setup() {
  Serial.begin(9600);
  Serial.println(“16 channel PWM test!”);
  pwm1.begin();
  pwm1.setPWMFreq(1600);  //This is the maximum PWM frequency
  pwm2.begin();
  pwm2.setPWMFreq(1600);  //This is the maximum PWM frequency
}

原创文章,作者:奇果派工坊,如若转载,请注明出处:https://www.7gp.cn/archives/326

(18)
上一篇 2020年12月31日 下午3:02
下一篇 2021年1月4日 下午12:02

相关推荐