文章目录

  • 前言
  • 一、通过清除占空比实现
    • 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) #给出一个角度

这里我用了一个算式来换算角度值与需要的占空比,换算方式如下:

总结

方法一适用于转动舵机后就关闭,方法二适用于需要保持舵机角度的情景。

树莓派控制舵机抖动问题处理相关推荐

  1. 树莓派控制舵机云台SG90

    参考博客: https://blog.csdn.net/wangzhenyang2/article/details/80426361树莓派笔记13:舵机云台(一) https://blog.csdn. ...

  2. 使用树莓派控制舵机MG90D

    舵机介绍 舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统.目前,在高档遥控玩具,如飞机.潜艇模型,遥控机器人中已经得到了普遍应用.我们这里使用的淘宝上常见的MG90 ...

  3. python舵机控制程序_树莓派PWM控制舵机的两种方式

    PWM控制舵机简介 通常情况下,伺服电机(舵机)是由一个标准的直流系统和一个内部反馈控制装置(一个减速齿轮和电位计)来组成的.伺服电机(舵机)的主要作用是将齿轮轴旋转到一个预定义的方向上.伺服电机(舵 ...

  4. 树莓派云台舵机怎么用_基于树莓派的多舵机控制的定位拍照云台

    在本教程中,我们将探讨如何在树莓派上使用Python控制多个舵机. 我们的目标是制作一个支持多自由度定位拍照的云台.在这里,你可以看到我们的成品是如何工作的. 主要材料 1.树莓派3 X1 2.摄像头 ...

  5. 树莓派云台舵机怎么用_教程 - 由多个舵机控制的云台 - MAKE 趣无尽

    主要材料 1.树莓派3 X1 2.摄像头模块 X1 3.9G 180°微型舵机 X2 4.迷你平移/倾斜照相机平台 防振照相机支架(2个舵机) 5.电阻1K欧姆 X2(可选) 6.金属部件 7.固定带 ...

  6. 树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码

    树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码 文章目录 树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码 一. Servo Driver ...

  7. 树莓派3b+控制舵机

    树莓派3b+控制舵机 1.RPi.GPIO控制: 2.gpiozero控制: 1.RPi.GPIO控制: 控制信号:GPIO18 import RPi.GPIO as GPIO import time ...

  8. 树莓派python控制舵机_使用树莓派控制16路舵机驱动板(pca9685)

    使用树莓派控制16路舵机驱动板(pca9685) 在树莓派上,可以通过RPI.GPIO方便地输出PWM进行舵机控制. 使用RPI.GPIO 创建一个 PWM 实例: 1 p =GPIO.PWM(cha ...

  9. 实例4:树莓派GPIO控制舵机转动

    实例4:树莓派GPIO控制舵机转动 实验目的 通过背景知识学习,了解舵机的外观及基本运动方式. 了解四足机器人mini pupper腿部单个舵机的组成结构. 通过GPIO对舵机进行转动控制,熟悉PWM ...

最新文章

  1. 苹果加急审核详细步骤
  2. android 工程中引入第三方JAR包后安装APK时老是提示找不到库文件?
  3. 【caffe-windows】全卷积网络特征图分析
  4. 06-Mapper动态代理
  5. vue router传参_新手使用vue-router传参时注意事项
  6. mysql 多进程配置_基于mysql_multi实现MySQL多实例多进程配置
  7. 25_删除分类(一对多的删除)
  8. JDK 8 最后一个免费版本 下载
  9. HDU 1241 Oil Deposits(石油储藏)
  10. 从删库到跑路,DBA 如何防止被淘汰?
  11. 往后余生(简单的歌词分享)
  12. 围绕禅道介绍公司流程
  13. 如何通过IP找到地址?
  14. python中predict函数_sklearn中predict()与predict_proba()用法区别
  15. 富士通打印机调整位置_打印机页首空调整和左边距调整
  16. 测试开发工作者日记【终焉】:再见~ 小猪
  17. Linux部署Python项目(持续更新中)
  18. 【跨境电商】疫情下做好海外跨境电商的几个技巧你知道吗?
  19. Istio组件以及架构
  20. 杨澜访谈录之探寻人工智能1(机器的逆袭)

热门文章

  1. 现在的工作就好像这碗牛肉面,腻了!
  2. element的复杂表单验证
  3. 用Principle绘制小动画的方法
  4. PyTorch 深度学习实战 | 基于 ResNet 的花卉图片分类
  5. linux运维笔记:epel源简介
  6. arcgis地形起伏度的计算
  7. 开发人员如何理解《辟邪剑谱》的“前8个字”
  8. Exchange邮件系统客户端与服务器通信常用网络端口
  9. c#操作mysql 执行语句_C# Command:操作数据库
  10. windows文件服务器 文件方案,windowsserver2008文件服务器搭建2种方案.docx