找回密码
 立即注册

QQ登录

树莓派GPIO入门第三课 舵机控制

来源: 奥松-Neil 2016-3-3 22:40 显示全部楼层 |阅读模式
本帖最后由 奥松-Neil 于 2018-11-21 13:58 编辑

上一篇中我们通过改变 PWM 信号的占空比,从而控制了连接在树莓派控制器 GPIO 接口的 LED 亮度。这节中我们仍然使用树莓派的 PWM 信号,用它来控制舵机的转动。一. 实验硬件
1. RB - 150MG 舵机 * 1个
2. 4V - 6V 供电电源 (可以使用 7.4V 锂电池和 UBEC 降压器配合组成)
3. 杜邦线 * 若干
二. 硬件接线
(1)舵机信号接口(黄色接线)连接树莓派 GPIO20
(2)使用 4V - 6V 电源给舵机进行单独供电 (红色接舵机接线正极(红色);黑色接舵机接线负极(棕色))
(3)树莓派控制器 GND 与舵机供电电源共地(将电池的负极连接到树莓派控制器 GPIO 接口的 GND
3.png



三.  Python 语言介绍
脉宽调制(PWM)是指用微处理器的数字输出来对模拟电路进行控制,是一种对模拟信号电平进行数字编码的方法。在树莓派上,可以通过对GPIO的编程来实现PWM。
创建一个 PWM 实例:

  1. GPIO.PWM(channel, frequency)
复制代码
启用 PWM:

  1. p.start(dc)   # dc 代表占空比(范围:0.0 <= dc >= 100.0)
复制代码
更改频率:
  1. p.ChangeFrequency(freq)   # freq 为设置的新频率,单位为 Hz
复制代码
更改占空比:
  1. p.ChangeDutyCycle(dc)  # 范围:0.0 <= dc >= 100.0
复制代码
停止 PWM:
  1. p.stop()
复制代码
注意,如果实例中的变量“p”超出范围,也会导致 PWM 停止。
       RB - 150MG 舵机脉冲周期为20毫秒(millisecond),也就是说最多1秒钟内可以转动50次,但是考虑到每次转动还要耗时,所以实际达不到50次。PWM控制信号周期 20ms,脉宽 0.5ms-2.5ms 对应的角度 -90 到 +90 度,范围 180 度(3度左右偏差),当脉宽 1.5ms 时舵机在中立点(0度),我们直接用 python 的 GPIO 提供的 PWM 控制。脉宽 0.5ms - 2.5ms,对应的占空比为2.5% - 12.5% .理论上,10%的空间可以提供180度的线性分割。
四. 实验代码

  1. import RPi.GPIO as GPIO
  2. import time
  3. import signal
  4. import atexit
  5. atexit.register(GPIO.cleanup)
  6. servopin = 20
  7. GPIO.setmode(GPIO.BCM)
  8. GPIO.setup(servopin, GPIO.OUT, initial=False)
  9. p = GPIO.PWM(servopin,50) # 设置 PWM 信号频率 50Hz
  10. p.start(0)
  11. time.sleep(2)
  12. while(True):
  13.   for i in range(0,181,10):# i 在 1 - 180 之间,间隔为 10  
  14.     p.ChangeDutyCycle(2.5 + 10 * i / 180) # 设置舵机角度
  15.     time.sleep(0.02)                     
  16.     p.ChangeDutyCycle(0) # 舵机回到中位                 
  17.     time.sleep(0.2)
  18.   for i in range(181,0,-10):
  19.     p.ChangeDutyCycle(2.5 + 10 * i / 180)
  20.     time.sleep(0.02)
  21.     p.ChangeDutyCycle(0)
  22.     time.sleep(0.2)
复制代码
五. 程序效果
正确连线,将程序代码输入到树莓派,或者直接下载附件,保存到树莓派的目录中,打开树莓派,使用下列命令运行代码

  1. sudo python 3.py
复制代码
注意: 输入运行命令,此时树莓派所在目录必须包含 3.py 程序文件(可使用 cd 命令进入 3.py 所在的目录)
运行程序后,可以看到舵机不停的从 0 度转到 180 度,再转回来到 0 度。
六. 附件
3.py (587 Bytes, 下载次数: 203)
回复

使用道具 举报

大神点评499

yzzx 2016-3-4 18:20 显示全部楼层
回复学习
回复

使用道具 举报

回复学习
回复

使用道具 举报

hq1940504 2016-3-11 09:26 显示全部楼层
学习学习
回复

使用道具 举报

mr926 2016-3-15 17:50 显示全部楼层
kankanakankdfas xiexiei`
回复 支持 反对

使用道具 举报

peak_zy 2016-3-24 10:54 显示全部楼层
学习,学习
回复

使用道具 举报

flywork 2016-3-29 13:22 显示全部楼层
不明觉厉
回复

使用道具 举报

学习 奋斗!!!
回复

使用道具 举报

frrdagshfhd
回复 支持 反对

使用道具 举报

CGZ11111 2016-3-31 20:27 显示全部楼层
11111111111111
回复 支持 反对

使用道具 举报

您可能感兴趣的文章

您需要登录后才可以回帖 登录 | 立即注册

关注0

粉丝9

帖子147

发布主题
社区热门 MORE+
    社区热帖 MORE+