树莓派控制16路PWM输出的PCA9685模块

Posted kekeoutlook

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树莓派控制16路PWM输出的PCA9685模块相关的知识,希望对你有一定的参考价值。

https://blog.csdn.net/qq_42747705/article/details/105576324

 

树莓派控制16路PWM输出的PCA9685模块

1.PCA9685

1.1简介

  • 采用I2C通信,内置了PWM驱动器和一个时钟,不需要不断发送信号占用单片机资源
  • 支持16路PWM输出,每路12位分辨率(4096级),在60Hz的更新率能够达到4us分辨率
  • 内置25MHz晶振,可不连接外部晶振,也可以连接外部晶振,最大50MHz
  • 分为控制电和驱动电两个电源,控制电支持2.3V-5.5V电压,最大耐压值5.5V,逻辑电平3.3V,驱动电支持5V-10V直流电压。

技术图片

 

 

 

V+是给外接设备供电的引脚,在驱动大功率舵机时候通常不使用V+,而是使用外接电源的两个端口,即下图我标出来的VCC,GND。

V+的电压是多少,舵机的电压就是多少。我使用的是SG90,工作电压为4.8V-6V,V+就应该在4.8V-6V。

PCA9685连接树莓派和舵机

 

技术图片

 

 

 

2.树莓派部分

烧录好系统,开机。

更新一下软件包。

sudo apt-get update
sudo apt-get dist-upgrade

  

检查一下pip版本

pip -V

技术图片
我更新过了,所以是20.0.2。
如果版本低了,更新一下。

sudo python -m pip install --upgrade pip

 

 

2.1打开IIC

sudo raspi-config -> Interfacing Options -> I2C->enable

sudo raspi-config

  技术图片
技术图片
技术图片
技术图片

 

2.2安装adafruit

方法1

sudo pip3 install adafruit-pca9685

  

方法2

sudo apt-get install git build-essential python-dev
cd ~
git clone https://github.com/adafruit/Adafruit_Python_PCA9685.git
cd Adafruit_Python_PCA9685
sudo python3 setup.py install

  

方法2安装的在Adafruit_Python_PCA9685-master/examples下有个例程simpletest.py
方法一我没找到这个文件,找不到的可以去github里找。点这里

技术图片复制或下载,然后运行

python3 simpletest.py

可以看见舵机转动

我改过的代码

# from __future__ import division    # python2使用
import time
import Adafruit_PCA9685             # 调用PCA9685模块

pwm = Adafruit_PCA9685.PCA9685()
# 设置最大最小脉冲长度
servo_min =  90  # 4096的最小脉冲长度
servo_max = 640  # 4096的最大脉冲长度
servo_mid = 365  # 4096的中间脉冲长度
# 设置频率为60
pwm.set_pwm_freq(60)
print(‘Moving servo on, press Ctrl-C to quit...‘)
while True:
    pwm.set_pwm(0, 0, servo_min)
    time.sleep(1)
    pwm.set_pwm(0, 0, servo_max)
    time.sleep(1)

  运行就可以看见接在通道0上的舵机反复运动

 









以上是关于树莓派控制16路PWM输出的PCA9685模块的主要内容,如果未能解决你的问题,请参考以下文章

《树莓派项目实战》第十二节 使用PCA9685驱动板控制多个舵机

Arduino控制16路PWM舵机驱动板(PCA9685)

树莓派下安装PCA9685的python驱动程序

Proteus仿真Arduino UNO +PCA9685 16路舵机控制

Proteus仿真51单片机+PCA9685 16路舵机控制

Jetson Xavier NX (16) -- Jetson IIC: PCA9685