时间:2018-5-10来源:本站原创 作者:佚名 点击: 61 次

树莓派小车——舵机

##树莓派开发手记——五##

年|春

什么是舵机

舵机是伺服电机下的一个小类,伺服电机常用于需要高精度定位的领域,比如机床、工业机械臂、机器人等。

而舵机则是国人起的俗称,因为航模爱好者们最初用它控制船舵、飞机舵面而得名。是伺服电机的简化版,原本伺服电机的三环控制被简化成了一环,即只检测位置环。内部由直流电机,电位器,一些逻辑芯片,出轮组成,价格和品质差异大。

以上是航模中常用的9g舵机,所使用材料基本上是塑料,轻盈、便宜。但是掉齿、卡齿、烧坏是家常便饭。(之前做航模弄坏过好多,需要的话买好一点的比如银燕)

我的小车上所使用这个MGR,会比9g力量大稳定性强很多。

如何驱动舵机

舵机有引出三根线:

(黑白灰或者棕红橙)

棕/黑

----GND

橙/白

----+5V

黄/灰

----PWM信号线

EE

以上的前两根提供舵机电源,最后一根是信号线。用PWM来控制电机的位置。^_^

那,什么是PWM信号?

Pi

脉冲宽度调制(PulseWidthModulation)就是一种矩形波,通过高电平时间所占周期的比例也就是占空比来表示不同信号。占空比可以从0%到%。

不过舵机往往不是°都可以旋转的,所以在控制舵机的占空比并不是从0%到%都可以的。本文使用的舵机型号是MGR,从数据手册上可以看到,该舵机内部的基准信号是周期为20ms,宽度为1.5ms的PWM信号,如图

如果我们输入一个相同的占空比的信号,电机就转到0°位置。该舵机的最小角度是-90°最大是90°,总共可用角度为°。周期T=20ms,高电平脉冲宽度0.5ms对应角度为-90°,高电平脉冲宽度2.5ms对应的旋转角度为90°中间为线性变化。如下如所示。

舵机编程

使用python来编写程序前,先要确保树莓派的设置GPIO时ENABLE状态的,否则不能初始化GPIO。然后导入RPi.GPIO模块。以下整理了GPIO的常用的一些操作

在第一次我使用PWM时是按照51单片机的经验直接用循环来写的,后来发现树莓派有直接控制GPIO口输出PWM信号的语句,非常的方便。树莓派的GPIO编号有两种方式,分别是BCM和BOARD,这里我使用BCM编号。当然舵机的两个电源线可以连接树莓派的5V和GND(这里要注意树莓派通常的GPIO是3.3V),只有两个引脚是5V输出,信号线是可以使用3.3V来使用。连接如下图

在我的程序里我对舵机部分定义了一个叫做steer的类。我的程序使用舵机的步骤

1、在使用时先实例化steer1。

2、然后使用方法steer1.start()。初始化舵机,包括了配置GPIO模式为OUT输出,设定频率为50Hz。对17引脚创建一个PWM实例,设置初始的占空比为7.5%(1.5ms高电平每周期),这时舵机回中。

3、之后要舵机转向使用方法steer1.turn(cd),需要参数cd,根据实际小车需求的角度,舵机的占空比范围为5%~10%,turn(cd)中参数cd定为-2.5~2.5(对应5%~10%),0为回正,-2.5最左,2.5最右。实际可转角度大约90°。

4、最后结束时使用方法steer1.stop(),舵机回中,调用PWM的方法stop()。

5、全部程序执行完后要使用GPIO.cleanup()释放GPIO,否则会占用GPIO,之后的程序再使用就会报错。

小车连接

EE

github(暂):







































治白癜风有哪些偏方
北京治白癜风症状医院


------分隔线----------------------------
  • 网站首页
  • 网站地图
  • 发布优势
  • 广告合作
  • 版权申明
  • 服务条款
  • Copyright (c) @2012 - 2020

    电话: 地址:

    提醒您:本站信息仅供参考 不能做为诊断及医疗的依据 本站如有转载或引用文章涉及版权问题 请速与我们联系