树莓派控制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驱动板控制多个舵机
Proteus仿真Arduino UNO +PCA9685 16路舵机控制