第8章 树莓派控制伺服电机(舵机)

   伺服电机主要适用于那些需要角度不断变化并可以保持的控制系统,我们常见的的机械臂、多足机器人、摄像头云台等都可以用伺服电机来实现,是机器人驱动系统常见的重要实现方式。本章将介绍伺服电机的有关基础知识,主要内容如下。

  • 伺服电机的基础知识。
  • 控制伺服电机的基本原理。
  • 使用树莓派控制伺服电机的实践。

   本章我们将继续使用第5章搭建的多功能实验平台。此外,还需要一个伺服电机(0^。 ~ 180^。)和一个1kΩ的电阻。知识储备方面,需要读者对脉冲宽度调制(PWM)有一定的了解,具体可以参考第6章

8.1 伺服电机(舵机)

8.1.1 结构及工作原理

   伺服电机也叫舵机,英文servo,是由直流电机、减速齿轮组、电位器和控制电路组成,并封装在一个便于安装的外壳里的伺服单位,能够根据输入信号比较准确的转动到给定的角度,典型的伺服电机及其组成如图8.1所示。

图 8.1 伺服电机及其结构

   如图8.2所示,伺服电机的基本工作原理:1、控制电路接收来自信号源的控制信号,并驱动直流电机转动;2、减速齿轮组按倍数降低直流电机转速,并将直流电机的输出扭矩放大到相应倍数,然后输出;3、电位器和减速齿轮组一起转动,测量伺服电机轴转动角度;4、控制电路检测并根据电位器判断伺服电机转动角度,然后控制伺服电机转动到目标角度或保持在目标角度。

图 8.2 伺服电机基本工作原理

8.1.2 规格和选型

   伺服电机的种类繁多,选择一款合适的型号不是一件容易的事,我们在选型的时候要对以下几方面综合考虑。

  • 角度
       伺服电机不像普通直流电机只能机械的转圈,它可以根据指令在旋转到一定的角度后停下来,常见的旋转范围有0^。 ~ 90^。0^。 ~ 180^。0^。 ~ 270^。等。
  • 转矩
       转矩也就是伺服电机的力量大小,能够带动多重的物体,单位为kg.cm,如9g.cm、15kg.cm、20kg.cm等。
  • 转速
       转速是指伺服电机在空载的情况下转过60^。角所需的时间,常见伺服电机的速度一般在0.11s/60^。 ~ 0.21s/60^。
  • 电压
       伺服电机的工作电压对性能有重大的影响,较高的电压可以提高伺服电机的转矩和转速,一般的推荐电压为4.8V和6V。
  • 尺寸、重量
       尺寸、重量也是伺服电机选型时需要考虑的一个重要指标。一般来说,伺服电机的功率与其尺寸、重量成正比,功率大的,尺寸、重量也相对较大。
  • 材质
       伺服电机的外壳一般是塑料的,也有金属的。金属外壳的散热性更好,伺服电机内的直流电机功率可以更高,以输出更高的扭矩。
       减速齿轮的材质有塑料、金属和混合等3种。塑料齿轮的成本低、噪音小,其强度也较低,在超出极限负载时塑料齿轮可能会崩齿。金属齿轮强度高、成本也高,在装配精度一般的情况下噪声会很大,金属齿轮可以长时间超负载而不会损坏,但会导致直流电机过热损坏或外壳变形,且无法修复。

   综上所述,选型时一般先计算伺服电机的转矩和转速,并确定电压,转矩应留有一定的富余,避免过载,然后确定旋转范围、尺寸、重量和材质等。

8.1.3 连接件

   使用伺服电机时,还需要一些连接配件,一是能把伺服电机固定到基座上的支架,二是能将驱动轴和物体连在一起的连接装置。伺服电机常见的连接件如图8.3所示。

图 8.3 伺服电机连接件

   伺服电机一般都带有可以上螺丝的安装孔,如果基座也带有合适的安装位置,就可以直接进行安装,但大多数情况下还是需要使用到各种支架才能固定到基座上。
   购买伺服电机的时候,一般会附带一些带有小孔的圆盘,这就是舵盘。舵盘可以套在伺服电机的驱动轴上,上面的小孔就可以用于安装各类物体,如摄像头、超声波传感器等。当然了,一般还是需要一些连接支架才能把物体连接到舵盘上。

8.2 伺服电机控制原理

   伺服电机有地线、电源线和控制线(信号线)3条连接线,中间的一条线通常为电源线。通过控制线发送一个脉冲宽度调制(PWM)信号可以控制伺服电机转动到一个角度,这个PWM信号必须周期性发送,否则伺服电机就会转到一个任意的角度。通常,控制伺服电机的PWM信号周期为20ms(50HZ),宽度在0.5ms-2.5ms之间(对应最小角度和最大角度)
   如图8.4所示,以0^。 ~ 180^。伺服电机为例,展示了伺服电机角度、脉冲宽度和占空比的关系。当角度为0^。时,脉冲宽度为0.5ms(占空比为2.5%);当角度为90^。时,脉冲宽度为1.5ms(占空比为7.5%);当角度为180^。时,脉冲宽度为2.5ms(占空比为12.5%)。对于 0^。 ~ 90^。0^。 ~ 270^。等的伺服电机可以依此类推。

图 8.4 伺服电机角度、脉冲宽度和占空比的关系

   树莓派没有提供专门控制伺服电机角度的功能,我们只能使用RPi.GPIO库的PWM功能来控制伺服电机,然而RPi.GPIO库也只是提供了控制PWM信号占空比的功能,想要控制伺服电机的角度还需进行一定的转换。
   假设direction为角度,duty为占空比,很明显角度和占空比之间存在一次函数关系duty=k*direction+b(k,b是常数,k≠0)。如图8.5所示,当伺服电机的旋转角度为0^。 ~ 180^。时,可计算出k=1/18,b=2.5,即duty=1/18*direction+2.5

图 8.5 伺服电机角度与PWM信号占空比关系

   对于其它旋转角度的伺服电机的角度-占空比转换可以依次类推。从本质上讲,树莓派控制树莓派实际上是对PWM信号占空比的控制。

8.3 伺服电机控制实践

   下面我们进行树莓派控制伺服电机的实验。这个实验您允许输入一个大于等于0且小于等于180的数字,控制伺服电机旋转到这个数字指定的角度。

8.3.1 实验电路

   实验的电路原理图如图8.6所示。控制线与GPIO26引脚串联了一个1kΩ的电阻,可以防止伺服电机发生故障时,控制信号的瞬间高强电流对GPIO引脚造成损害,但这不是必不可少的。这里使用的伺服电机的电压仅4.8V,因此可以直接从树莓派上取电,如果使用伺服电机的电压较高,那就需要采用外置电源为其供电。

图 8.6 伺服电机控制电路图

   实验的电路实物连接图如图8.7所示。该款伺服电机的控制线为橘色,电源线为红色,地线为棕色。

图 8.7 伺服电机控制电路实物连接图

8.3.2 程序思路

   前面我们说过树莓派控制伺服电机实际上是对PWM信号占空比的控制,因此程序的思路与第6章类似,具体如下。

BEGIN  
    引入GPIO库  
    将GPIO26设置为输出模式,用于输出伺服电机控制信号  
    
    创建PWM对象,并设置初始频率为50Hz(周期为20ms)  
    启动PWM,并设置初始占空比为0  

    DO FOREVER  
        等待输入伺服电机要旋转的角度  
        将角度转换为占空比
        更改PWM信号占空比,将伺服电机旋转到指定角度
    ENDO  
    停止PWM  
    清理释放GPIO资源  
END  

8.3.3 程序代码

   以下为本实验的程序代码,详细说明见注释。

import RPi.GPIO as GPIO                 # 引入GPIO模块

if __name__ == '__main__':
    ServoPin = 26
    PWMFreq = 50                        # PWM信号频率

    GPIO.setmode(GPIO.BCM)              # 使用BCM编号方式
    GPIO.setup(ServoPin, GPIO.OUT)      # 将GPIO19设置为输出模式
    pwm = GPIO.PWM(ServoPin, PWMFreq)   # 创建PWM对象,并设置频率为50
    pwm.start(0)                        # 启动PWM,并设置初始占空比0

    try:
        while True:
            # 等待输入一个0到180的角度
            direction = float(input("Pleas input the direction: "))
            if direction < 0 or direction > 180:
                print("Please input a direction between 0 an 180.")
                continue

            duty = (1/18) * direction + 2.5   # 将角度转换为占空比
            pwm.ChangeDutyCycle(duty)         # 改变PWM占空比
    finally:
        pwm.stop()                      # 停止PWM
        GPIO.cleanup()                  # 清理释放GPIO资源,将GPIO复位

8.4 本章小结

   本章首先介绍了伺服电机的的结构及工作原理、规格和选型、连接件等基础知识。其次,介绍伺服电机控制原理,重点讲解了伺服电机角度和PWM信号占空比的转换。最后,通过一个实验让读者了解如何使用树莓派控制伺服电机。读者在学完这章后,应该对伺服电机有一定的了解,并能使用伺服电机。

后记

  1. 在败家中又完成了一篇,不到半小时烧坏了3个伺服电机,大几十块就没了,为了能把东西讲清楚还把初中数学一次函数知识给复习了一遍,画图画到手抽筋。
  2. 感觉这篇写得要比上一篇好,希望能用最简洁的语言把要表达的东西说清楚。
  3. 2019年6月24日树莓派出第四代。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,743评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,296评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,285评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,485评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,581评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,821评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,960评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,719评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,186评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,516评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,650评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,936评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,757评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,991评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,370评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,527评论 2 349

推荐阅读更多精彩内容