树莓派控制舵机抖动问题处理
文章目录
- 前言
- 一、通过清除占空比实现
- 1.代码示例
- 二、使用pigpio库解决抖动问题
- 1.pigpio库下载
- 2.代码示例
- 总结
前言
树莓派控制例如9g系列舵机,当到达指定位置时舵机会出现在此位置抖动情况,这应该是PWM信号谐波导致。当舵机到达指定位置后可以采取关闭GPIO口消除PWM信号,或者清除占空比实现,但这两种方式仅限于执行舵机后并关掉,无法保持舵机位置。
一、通过清除占空比实现
此方法仅限于不需要保持舵机固有角度的情况
1.代码示例
代码如下:
import RPi.GPIO as GPIO
import time#设置舵机引脚
right_hand = 24
#设置GPIO口为BCM编码方式
GPIO.setmode(GPIO.BCM)
#忽略警告信息
GPIO.setwarnings(False)
#声明两个全局变量
global G90_right_hand
global i
GPIO.setup(right_hand, GPIO.OUT)
#设置频率为50
G90_right_hand = GPIO.PWM(right_hand, 50)
# 在引脚上设置一个初始PWM信号
G90_right_hand.start(0)
def MG90_right_hand(i):G90_right_hand.ChangeDutyCycle(2.5+i/360*20)#通过计算求出角度换算占空比time.sleep(0.5)G90_right_hand.ChangeDutyCycle(0)#设置为0,清除占空白,以此句消除舵机抖动
while True:MG90_right_hand(90)
G90_right_hand.stop() # 停止PWM。
GPIO.cleanup() # 清理GPIO。
二、使用pigpio库解决抖动问题
pigpio是一个用于树莓派的库,它允许控制树莓派的通用输入输出(GPIO)引脚。它提供了c语言与python语言的库函数,我们可以调用相关的库函数实现跟GPIO相关的操作。以pigpio来使用GPIO引脚输出PWM信号控制舵机。
1.pigpio库下载
使用python直接下载
sudo apt-get install pigpio python-pigpio python3-pigpio
下载完成后并不能直接调用该库,否者运行程序会报错。
在运行编写好的代码之前,需要先执行以下命令
sudo pigpiod
这样做是为了开启一个线程用于该库的运行,如果不这么做,在运行代码时会提示错误。这里需要你知道的是,pigpio程序在你开启守护进程后会一直运行,直到你关机,或者结束守护进程。如果你运行完了程序,想要关闭该库,可以使用如下命令
sudo killall pigpiod
该指令需要在每次开机后执行,所以我们最后将其设置为开机自启。这里我采用树莓派官方系统Raspbian OS进行演示操作。
sudo nano /etc/rc.local
打开文档后在exit 0前输入sudo pigpiod,Ctrl+O、回车保存,Ctrl+X推出编辑器即可完成。
2.代码示例
代码如下:
import time
import pigpio#设置舵机引脚
right_hand = 24
#设置GPIO口为BCM编码方式
GPIO.setmode(GPIO.BCM)
#声明两个全局变量
global G90_right_hand
global i
# pigpio的初始化
G90_right_hand = pigpio.pi()
# pigpio低电平
G90_right_hand.write(right_hand, 0)
# pigpio24号地址高低电平读取
G90_right_hand.read(right_hand)
# pigpio设置频率
G90_right_hand.set_PWM_frequency(right_hand, 50)
# pigpio设置周期为4000
G90_right_hand.set_PWM_range(right_hand, 4000)def MG90_right_hand(i):G90_left_hand.set_PWM_dutycycle(left_hand,80+(400/180)*i)#通过计算求出角度换算占空比time.sleep(0.5)
while True:MG90_right_hand(90) #给出一个角度
这里我用了一个算式来换算角度值与需要的占空比,换算方式如下:
总结
方法一适用于转动舵机后就关闭,方法二适用于需要保持舵机角度的情景。
树莓派控制舵机抖动问题处理相关推荐
- 树莓派控制舵机云台SG90
参考博客: https://blog.csdn.net/wangzhenyang2/article/details/80426361树莓派笔记13:舵机云台(一) https://blog.csdn. ...
- 使用树莓派控制舵机MG90D
舵机介绍 舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统.目前,在高档遥控玩具,如飞机.潜艇模型,遥控机器人中已经得到了普遍应用.我们这里使用的淘宝上常见的MG90 ...
- python舵机控制程序_树莓派PWM控制舵机的两种方式
PWM控制舵机简介 通常情况下,伺服电机(舵机)是由一个标准的直流系统和一个内部反馈控制装置(一个减速齿轮和电位计)来组成的.伺服电机(舵机)的主要作用是将齿轮轴旋转到一个预定义的方向上.伺服电机(舵 ...
- 树莓派云台舵机怎么用_基于树莓派的多舵机控制的定位拍照云台
在本教程中,我们将探讨如何在树莓派上使用Python控制多个舵机. 我们的目标是制作一个支持多自由度定位拍照的云台.在这里,你可以看到我们的成品是如何工作的. 主要材料 1.树莓派3 X1 2.摄像头 ...
- 树莓派云台舵机怎么用_教程 - 由多个舵机控制的云台 - MAKE 趣无尽
主要材料 1.树莓派3 X1 2.摄像头模块 X1 3.9G 180°微型舵机 X2 4.迷你平移/倾斜照相机平台 防振照相机支架(2个舵机) 5.电阻1K欧姆 X2(可选) 6.金属部件 7.固定带 ...
- 树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码
树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码 文章目录 树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码 一. Servo Driver ...
- 树莓派3b+控制舵机
树莓派3b+控制舵机 1.RPi.GPIO控制: 2.gpiozero控制: 1.RPi.GPIO控制: 控制信号:GPIO18 import RPi.GPIO as GPIO import time ...
- 树莓派python控制舵机_使用树莓派控制16路舵机驱动板(pca9685)
使用树莓派控制16路舵机驱动板(pca9685) 在树莓派上,可以通过RPI.GPIO方便地输出PWM进行舵机控制. 使用RPI.GPIO 创建一个 PWM 实例: 1 p =GPIO.PWM(cha ...
- 实例4:树莓派GPIO控制舵机转动
实例4:树莓派GPIO控制舵机转动 实验目的 通过背景知识学习,了解舵机的外观及基本运动方式. 了解四足机器人mini pupper腿部单个舵机的组成结构. 通过GPIO对舵机进行转动控制,熟悉PWM ...
最新文章
- 苹果加急审核详细步骤
- android 工程中引入第三方JAR包后安装APK时老是提示找不到库文件?
- 【caffe-windows】全卷积网络特征图分析
- 06-Mapper动态代理
- vue router传参_新手使用vue-router传参时注意事项
- mysql 多进程配置_基于mysql_multi实现MySQL多实例多进程配置
- 25_删除分类(一对多的删除)
- JDK 8 最后一个免费版本 下载
- HDU 1241 Oil Deposits(石油储藏)
- 从删库到跑路,DBA 如何防止被淘汰?
- 往后余生(简单的歌词分享)
- 围绕禅道介绍公司流程
- 如何通过IP找到地址?
- python中predict函数_sklearn中predict()与predict_proba()用法区别
- 富士通打印机调整位置_打印机页首空调整和左边距调整
- 测试开发工作者日记【终焉】:再见~ 小猪
- Linux部署Python项目(持续更新中)
- 【跨境电商】疫情下做好海外跨境电商的几个技巧你知道吗?
- Istio组件以及架构
- 杨澜访谈录之探寻人工智能1(机器的逆袭)
热门文章
- 现在的工作就好像这碗牛肉面,腻了!
- element的复杂表单验证
- 用Principle绘制小动画的方法
- PyTorch 深度学习实战 | 基于 ResNet 的花卉图片分类
- linux运维笔记:epel源简介
- arcgis地形起伏度的计算
- 开发人员如何理解《辟邪剑谱》的“前8个字”
- Exchange邮件系统客户端与服务器通信常用网络端口
- c#操作mysql 执行语句_C# Command:操作数据库
- windows文件服务器 文件方案,windowsserver2008文件服务器搭建2种方案.docx