Arduino uno使用PCA9685模块实现16路舵机控制

PCA9685模块

PCA9685是16路12位PWM信号发生器,可用于控制舵机、led、电机等设备,采用I2C通信。主机只需要I2C接口即可实现16路舵机控制。
PCA9685的I2C地址默认0x40,如果需要改变地址,则需要将板上A0-A5焊通即可对应的bit置1,此时地址为:0x40+A5:A0。这也意味着主机可以通过I2C地址控制64个PCA9685模块,从而实现最大16*64路舵机控制。
PCA9685模块如下图:
在这里插入图片描述

Arduino uno与模块连线

AIN4 ------- SDA
AIN5 ------- SCL
5V -------- VCC
3.3V -------- V+
GND -------- GND
舵机线按照颜色对应接模块0控制口。
V+是舵机电源,试验采用的是9g小舵机,所以也可以用3.3V带动,但是mg995这种大舵机,则需要5V以上才能带动。
VCC是模块的电源,用于PCA9685芯片。
在这里插入图片描述

Adafruit库安装

使用Arduino的好处之一是有丰富的库支持。PC9685模块也有对应的库可以使用,这是一个外部库,由Adafruit提供。

选择工具菜单下的管理库选项

在这里插入图片描述

搜索adafruit pwm

在这里插入图片描述

点击安装

在这里插入图片描述

安装完后,即可在文件下示例里面找到对应的示例

在这里插入图片描述

控制程序

舵机的控制一般需要一个20ms的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度舵机为例,那么对应的控制关系是这样的:
0.5ms————–0度;
1.0ms————45度;
1.5ms————90度;
2.0ms———–135度;
2.5ms———–180度;

PCA9685可以设置更新频率,时基脉冲周期20ms相当于50HZ更新频率。PCA9685采用12位的寄存器来控制PWM占比,对于0.5ms,相当于0.5/204096=102的寄存器值。以此类推如下:
0.5ms————–0度:0.5/20
4096 = 102
1.0ms————45度:1/204096 = 204
1.5ms————90度:1.5/20
4096 = 306
2.0ms———–135度:2/204096 = 408
2.5ms———–180度:2.5/20
40

  • 52
    点赞
  • 337
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值