树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码
树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码
文章目录
内容参考微雪课堂
一、 Servo Driver HAT拓展板介绍
Servo Driver HAT是基于树莓派而设计的PWM/舵机扩展板,通过PCA9685芯片扩展16路舵机控制或者PWM输出,每个通道12位分辨率。通过I2C接口控制,无需占用额外的引脚。板载5V稳压芯片,可接电池供电,最大输出3A电流。适用于控制机械手臂,以及各种舵机机器人。
输入电压VIN:6V~12V
舵机电压:5V
逻辑电压:3.3V
板子可以从树莓派上取电不需要额外供电。
也可以通过右边绿色端子VIN接电池供电,输入电压范围6V~12V。经过板载的5V稳压芯片输出5V电源给舵机和树莓派供电,最大输出电流3A。
A0~A4可以设置PCA9685芯片的I2C设备地址,可以同时接多个Servo Driver HAT
最上面的排针是舵机接口,黑色排针是GND(大部分舵机对应的是褐色线),
红色排针是5V电源,黄色排针是PWM信号线,有0~15个通道,可以同时接16个舵机。注意舵机线不要接反,否则舵机不会转动。
注意:
如果接大功率的舵机可能会出现供电不足,因为整个板子是5V的供电,这个5V连接着树莓派和舵机供电,功率太大会拉低树莓派5V电源,导致欠压树莓派重启,把板载上的0R电阻去除,右侧绿色VIN端子接外部电源(6-12V)
我操作的是两个机械臂一共十个舵机所以我外接了一个12V电源
二、2开启I2C
在终端执行
sudo raspi-config Interfacing Options-->I2C-->YES-->Finish
保险起见 重启树莓派 终端输入
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://www.waveshare.net/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/
解压后可以看见有一个名为PCA9685.py的文件 我们可以在 home/pi 上新建个文件夹 并把PCA9685.py这个文件放进这个文件夹 只有代码和库文件在同一个目录下才能正确调用
四、通过代码驱动舵机(机械臂)
4.1舵机的初始位置校准
这里用到函数 pwm.setServoPulse(5,500)
这个函数需要两个参数 第一个是通道号 第二个是脉冲 舵机根据脉冲调整角度 默认500为最小值 2500为最大值 所以当第二个参数为1500时为竖直状态
调整过程:在上电状态 将每个舵机参数设置为1500pwm.setServoPulse(5,1500)
将每个舵机都拆下并重新组装即可 (按实际情况而定如此机械臂底盘舵机就可不用另外调试)
4.2完整代码
from PCA9685 import PCA9685#调用PCA9685库文件 import time pwm=PCA9685(0x40)#对地址初始化 pwm.setPWMFreq(50)#对频率初始化 def smooth(road,before,after):#对动作的优化函数通过传递上一次参数而一脉冲一脉冲改变 显得更加流畅 if before <=after: for i in range(before,after+1,1): pwm.setServoPulse(road,i) else: for i in range(before,after+1,-1): pwm.setServoPulse(road,i) def action1():#开爪 直立 pwm.setServoPulse(0,500) pwm.setServoPulse(1,1500) pwm.setServoPulse(2,1500) pwm.setServoPulse(3,1500) pwm.setServoPulse(4,500) def action2():#低头抓取 smooth(1,1500,2200) smooth(3,1500,1000) smooth(2,1500,2300) #smooth(3,1000,1000) #pwm.setServoPulse(4,500) smooth(4,500,1500) def action3():#转向传递东西 smooth(1,2200,1500) smooth(2,2300,1900) smooth(3,1000,2000) smooth(4,1500,2000) smooth(0,500,2500) def action3h():#开爪低头呈递东西 smooth(4,2000,600) smooth(2,1900,1500) smooth(3,2000,1500) smooth(4,500,1500) #函数1233h操控一号机械臂 #函数4567操控二号机械臂 def action4():#2号机械臂开爪直立 pwm.setServoPulse(5,500) pwm.setServoPulse(6,1500) pwm.setServoPulse(7,1500) pwm.setServoPulse(8,1500) pwm.setServoPulse(9,500) def action5():#低头接过1号机械臂呈递的东西 smooth(7,1500,1850) smooth(8,1500,1970) smooth(9,500,1650) def action6():#转向开爪将东西放下 smooth(5,500,1400) smooth(8,1970,1200) smooth(6,1500,2200) smooth(7,1850,2200) smooth(9,1650,500) def action7():#恢复直立回到初始位置闭爪 smooth(6,2200,1500) smooth(7,2200,1500) smooth(8,1200,1500) smooth(9,500,1650) smooth(5,1400,500) action1() action4() action2() action3() time.sleep(1) action5() action3h() action6() action7() smooth(0,2500,500)#一号机械臂回到初始位置
创作不易,如果文章对你有帮助请点个赞吧。
欢迎各位提问或者对内容进行补充。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
树莓派opencv手势识别点亮led灯或响蜂鸣器 (附完整代码)
文章目录 前言 一、树莓派引脚介绍 1.1引脚设置 二、代码书写 2.1引入库 2.2示例代码点亮led 响蜂鸣器 三完整代码 图片 前言 材料:树莓派 摄像头 SG90舵机两个 PCA9685拓展板 led小灯 蜂鸣器模块 一、树莓派引脚介绍 树莓派引脚对照表 可以看到一共有三种定义方式 分别是Wiring Pi编码,BCM编码和BOARD物理引脚编码。 1.1引脚设置 在最开始终端输入 sudo raspi-config 进入设置 后找到 Interfacing Options 进入 找到 Remote GPIO 开启GPIO 二、代码书写 2.1引入库 在最开始导入库 import RPi.GPIO as GPIO #1导入引脚库 GPIO.setmode(GPIO.BOARD) # 2定义引脚方式 此处为BOARD编码 GPIO.setup(channel, GPIO.OUT) # 3建立通道 该函数需要两个参数 第一个为引脚编号 第二个为模式定义 #此处为输出 GPIO.output(7, True)#4 驱动通道 GPIO.cleanup()#5清除 释放资源 2.2示例代...
- 下一篇
Getting Started and Beyond|云原生应用负载均衡选型指南
作者 冉昕,腾讯云服务网格TCM产品经理,现负责云原生流量接入网关与应用通信可观测性等产品特性策划与设计工作。 刘旭,腾讯云高级工程师,专注容器云原生领域,有多年大规模 Kubernetes 集群管理及微服务治理经验,现负责腾讯云服务网格 TCM 数据面产品架构设计和研发工作。 引言 应用的入口流量管理一直是开发运维关注的焦点之一,随业务部署的计算资源、网络环境、应用架构的发展变更,接入层流量管理方案的发展可大致分为传统架构、云原生容器化两个阶段。为满足应用交付的效率和诉求,各阶段都涌现了不同的接入层解决方案,从最初的简单负载均衡,到后来的 HAProxy、Nginx 等反向代理,再到如今的容器化环境下的各类 Kubernetes Ingress Controller。每个发展阶段有哪些特点?面临什么挑战?都有什么解决方案? 阶段 应用部署资源粒度 应用架构 应用访问寻址 传统架构 物理/虚拟机(资源利用率低) 单体或简单拆分模块 基于较固定的 IP 地址管理 云原生容器化 容器(资源利用率高) 服务化 容器 IP 动态变化,通过动态服务注册更新 传统架构阶段,业务为单体应用,三层架构...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Hadoop3单机部署,实现最简伪集群
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS关闭SELinux安全模块