“Servo Driver Board”的版本间的差异
Yousimaier17(讨论 | 贡献) (→驱动板级联) |
Yousimaier17(讨论 | 贡献) (→接线说明) |
||
第48行: | 第48行: | ||
==== 单个驱动板 ==== | ==== 单个驱动板 ==== | ||
− | ==== | + | ==== 驱动板级联(以Arduino UNO为例) ==== |
*多驱动板级联:最多可级联62个 | *多驱动板级联:最多可级联62个 | ||
*[[File:Servo Driver Board_使用说明3.png|600px]] | *[[File:Servo Driver Board_使用说明3.png|600px]] |
2023年7月14日 (五) 17:53的版本
| ||||||||||||||||||||||
| ||||||||||||||||||||||
|
目录
前言
本产品是通过PCA9685芯片扩展16路舵机控制或者PWM输出,每个通道12位分辨率。通过I2C接口控制,无需占用额外的引脚。不仅如此,还可以通过级联的方式最多级联62个驱动板,总共可以驱动992个舵机。适用于控制机械手臂,以及各种舵机机器人。
产品特性
- 输入电压VCC:2.3V-5.5V,最大耐压值5.5V
- 逻辑电压:3.3V
- 舵机电压:≤6V,一般为5V
- 驱动芯片:PCA9685(内置25MHz晶振,可不连接外部晶振,也可以连接外部晶振,最大50MHz)
- 控制接口:I2C(支持高达16路PWM输出,每路12位分辨率(4096级))
- 固定孔通径:3.0mm
硬件说明
- 控制引脚:
- GND:电源负极
- OE:使能端,一般不接
- SCL:IIC时钟线
- SDA:IIC数据线
- VCC:电源正极,电路板工作电压(主要是给驱动芯片供电)
- V+:舵机工作电压。当接入舵机数量较少时,可从此处供电
- 舵机供电端:舵机工作电压,当接入舵机数量较多时,必须从此处供电
- 主控芯片:PCA9685,具备IIC通信,同时内置了PWM驱动器和一个时钟,最大支持16路舵机控制
- IIC地址选择:级联时可通过A5-A0更改模块IIC地址,初始I2C地址是0x40
- 级联控制端;当多个驱动板级联时可通过该引脚扩展
- 舵机控制端/PWM输出端:16路舵机控制端,黄色为PWM控制线,红色为舵机电源线,黑色为地线。舵机编号从左开始,最左侧为一号舵机,以此类推共十六个舵机
使用说明
地址分配
- PCA9685的器件地址是由引脚A0,A1,A2,A3,A4,A5共同决定。由于有6个引脚共同决定器件地址,因此,可以有64个器件地址,但由于该IC上电便保留LED All Call address (0xE0,0111 0000)以及Software Reset address(0x06,0000 0110),实际仅有62个可用器件地址,因此,理论上,1个I2C接口可控制16*62=992路PWM。
- 模块级联时每个驱动板都需要有一个唯一的访问地址。每个驱动板的初始I2C地址是0x40,可以通过A5-A0的跳线修改I2C地址。用焊锡将一个跳线连上就表示一个二进制数字“1”,断开则表示二进制数字“0”。如下图所示,该驱动板的IIC地址应为0x41
接线说明
单个驱动板
驱动板级联(以Arduino UNO为例)
树莓派使用
提供python控制,功能包括简单的PCA9685库测试程序,wifi遥控程序以及蓝牙遥控程序。
打开I2C接口
在终端执行:
sudo raspi-config 选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动
sudo reboot
安装库
sudo apt-get updata sudo apt-get install python-pip sudo pip install RPi.GPIO sudo apt-get install python-smbus
下载示例程序,并解压到指定目录
sudo apt-get install p7zip-full wget http://wiki.diustou.com/w/upload/6/6c/Servo_Driver_HAT.7z 7zr x Servo_Driver_HAT.7z -r -o./Servo_Driver_HAT sudo chmod 777 -R Servo_Driver_HAT cd Servo_Driver_HAT/Raspberry\ Pi/
运行测试例程
python例程
#如果你是python2,树莓派默认是python2.7 cd python/ sudo python PCA9685.py #如果你是python3 cd python3/ sudo python3 PCA9685.py
实验现象:将舵机接到0号通道,0号通道的舵机从0度转到180度,然后又从180度转动到0度,不断重复循环。
wifi遥控程序
cd Wifi-Control/ sudo python main.py
操作与现象:发送端(手机或者电脑)和接收端(树莓派),需要连接到同一个局域网。程序是通过TCP协议传输数据,程序运行后会显示树莓派IP,服务器端口号是8000.
手机打开APP,选择Wifi遥控,输入对应的IP地址和端口号,点击连接.
连接成功进入控制界面,点击按键可以控制0~4号通道的舵机正反转。
也可在电脑上运行Qt软件控制,如下图
蓝牙遥控程序
执行:
sudo apt-get update sudo apt-get upgrade -y sudo apt-get dist-upgrade -y sudo apt-get install pi-bluetooth bluez bluez-firmware blueman sudo usermod -G bluetooth -a pi sudo vi /etc/systemd/system/dbus-org.bluez.service sudo reboot
启动/增加SPP,开启蓝牙设备
sudo vi /etc/systemd/system/dbus-org.bluez.service
重启树莓派后,输入hciconfig命令(类似ifconfig命令)查看蓝牙服务
如果有看到hci0设备则蓝牙已经开启工作。如果没有则没有识别到蓝牙设备
运行如下命令启动程序
cd Servo_Driver_HAT/python/Bluetooth-Control sudo ./Bluetooth.sh
操作与现象:程序运行后会提示等待蓝牙连接,手机App选择蓝牙遥控,点击扫描,发现raspberrypi设备并连接。
连接程序后进入控制界面,点击按键可以遥控0~4通道的舵机正反转了。
注意:如果接收到的命令不对,可能需要在APP中config一下对应按键按下和松开时发送的命令。
注意:树莓派默认是只有180s的发现时间,如果想一直可以发现和配对,如果通过修改下面的文件配置。
sudo vi /etc/bluetooth/main.conf
找到下面两个语句并去掉注释。
程序兼容python3 ,运行的时候将python替换成python3即可。
更多关于树莓派wifi和蓝牙遥控可以参考AlphaBot2:
AlphaBot2
Jetson nano
提供python控制
安装库
安装函数库
- 打开终端界面,输入以下指令安装相应的函数库
sudo apt-get update sudo apt-get install python3-pip sudo pip3 install Jetson.GPIO sudo groupadd -f -r gpio sudo usermod -a -G gpio your_user_name sudo cp /opt/nvidia/jetson-gpio/etc/99-gpio.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules && sudo udevadm trigger
【注意】your_user_name 是你使用的用户名
- 安装I2C
sudo apt-get install python-smbus
- 安装图像处理库:
sudo apt-get install python3-pil sudo apt-get install python3-numpy
下载示例程序,并解压到指定目录
sudo apt-get install p7zip wget http://wiki.diustou.com/w/upload/6/6c/Servo_Driver_HAT.7z 7zr x Servo_Driver_HAT.7z -r -o./Servo_Driver_HAT sudo chmod 777 -R Servo_Driver_HAT cd Servo_Driver_HAT/Jetson\ Nano/
运行测试例程
- python2
cd python2/ sudo python test.py
- python3
cd python3/ sudo python3 test.py