FLL+WRO乐高机器人竞赛教程:机械、巡线与PID
上QQ阅读APP看书,第一时间看更新

1.2 伺服电机

学习目标

(1)知道伺服电机的组成和特点,学会设计程序控制伺服电机的转动。

(2)认识时间模块和循环模块,学会运用时间模块测量循环模块运行的时间。

(3)认识速度、转速、加速度等物理概念,学会运用角度传感器编程控制电机的转动。

(4)知道电机制动的方法,学会设计程序保护电机。

1.2.1 伺服电机原理

机器人的运动离不开动力系统,动力系统为实现机器人的移动、机械臂的运动以及其他各种复杂行为提供了重要保障,动力系统还决定机器人动作的稳定性、灵活性、准确性和可操作性,直接影响机器人的整体性能。

乐高机器人动力系统的核心是伺服电机,其中包括大型电机、中型电机和小型电机。伺服电机内置了有刷直流电机、角度传感器(旋转编码器)和减速齿轮机构,不仅具有正转和反转、从低速到高速的连续变速旋转的功能,还可以利用内置的角度传感器实时测量电机旋转的角度和速度,从而精准控制电机按指定角度、速度进行旋转和制动。伺服电机可以让机器人的运动更加精准可控且灵活自如。

有刷直流电机是一种使用非常广泛的电机,由转子、定子(永磁体和外壳)、永磁体、电刷、换向器和外壳组成,如图1.2.1所示。转子是电机中央可以旋转的部分,定子包括可以提供磁力的永磁体和外壳;当电机反接电源的正负极时,会改变电机的旋转方向,电机转速与施加的电压成正比,电机驱动力(转矩)与电流成正比,转速与负载大小成反比,电机的主要特性呈线性变化,易于控制。

图1.2.1 有刷直流电机

有刷直流电机对突然加速和减速的反应十分迅速,可以较平滑地旋转。有刷直流电机本身不具备恒速旋转的能力,它的转速可以随着线圈的外加电压和负载的变化而变化,为了实现匀速旋转,需要使用角度传感器对电机转速进行控制。

机器人往往不需要伺服电机有很高的转速,但是需要有较大的驱动力,所以伺服电机的内部添加了减速机构,根据伺服电机的形状和功能设计要求,其减速机构通常有多级齿轮减速和行星齿轮减速。如果在机器人设计中确实需要较大的转速,可以使用伺服电机搭配齿轮加速机构来获得高转速。

1.2.2 电机编程模块

伺服电机的编程控制主要面向电机的功率、旋转角度和旋转速度,其基本的编程模块如表1.2.1所示,其中每一行的编程模块功能相同。当然还有很多其他更智能的电机模块,使用这些模块会提高机器人的运动性能。

表1.2.1 基本的单电机编程模块

电机功率的参数是以电机最大功率的百分比来设置的,其参数范围是-100~100,如功率50表示电机最大功率的50%,正负号表示旋转的方向,功率为0则表示停止向电机供电。旋转角度控制包含重置旋转角度和旋转角度测量,重置旋转角度指的是重置当前电机的角度为0°,旋转角度测量模块可以用来测量电机实时旋转的角度,角度值大于0表示电机正转,角度值小于0表示电机反转。

电机的控制分单电机控制和双电机控制两种,双电机模块如图1.2.2所示。双电机模块与单电机模块的编程方法类似,但双电机模块更多用于机器人的移动控制中,双电机模块也可以实现功率、速度、角度、圈数和秒数的控制。在机器人竞赛中使用双电机模块可以让程序编写更简单。

图1.2.2 双电机模块

常规的电机停止模式有“惯性滑行”和“保持位置不动”,spike机器人还有一种特殊的停止模式——制动,即给电机添加摩擦阻力,其制动效果为电机可以旋转,但有较大的阻力,直至电机停止旋转。电机停止的编程模块如表1.2.2所示,其中,spike的“保持位置不动”模式与“保持位置”模式的功能相同。

表1.2.2 电机制动模块

使用这些电机编程模块可以实现对电机的任意控制,例如,让电机以功率80正向旋转,当旋转的角度大于360°时,电机保持位置不动,最后显示电机实际旋转的角度,其程序设计如图1.2.3所示。

图1.2.3 电机旋转的程序

任务探究1

A电机以功率50旋转1000°后停止,然后B电机再旋转1圈,其程序设计如图1.2.4所示,在A电机旋转的过程中,使用外力阻止其旋转,该电机模块后面的程序还会运行吗?

图1.2.4 电机旋转测试程序

通过探究发现,当A电机被卡住不转时,由于电机还没有旋转到设定的角度,所以该电机模块的程序命令也就无法执行结束,导致后面的程序无法运行。对机器人来说这是非常危险的,既容易损坏电机,也不能让后面的程序正常运行。在机器人竞赛中,这样的现象常发生于机械臂被卡住而未能旋转到指定位置,机器人撞击到墙壁或是任务模型,以及地面摩擦力过大使得驱动轮电机未能旋转到指定位置时,这些情况都会导致后面的程序不能运行,机器人就会卡在那个地方不动。

因此,若要使用电机旋转至指定位置的程序控制方式,一定要确保电机能够转到相应的位置,也可以通过以下改进的方法,提高程序运行的可靠性。

方法1

启用电机速度控制,当速度小于阈值时,说明旋转的电机遇到阻力,程序自动控制电机停转,程序设计示例如图1.2.5所示,其中参数“3”即为速度阈值,程序中的等待模块的时间设置为0.35s,作用是让电机旋转到较高转速时再启动旋转速度的检测,具体详细内容参见1.2.8节。

图1.2.5 电机自动停转的程序

采用速度控制电机旋转是最常用的一种程序设计方法,可用于机械臂系统和机器人移动的控制中。采用速度控制电机旋转,速度阈值的设置是关键,例如,在机械手的控制中,控制电机速度的阈值越小,机械手的力量越大;阈值越大,则机械手的力量越小,但过大的阈值容易发生电机随意停止的风险。所以阈值设置需要经过多次测试,以保证程序控制的稳定。

方法2

使用时间来控制电机旋转,由于时间是不会停止的,即使旋转中的电机被卡住,只要时间一到,该电机的程序就会运行结束。程序设计示例如图1.2.6所示,必要时也可以采用电机旋转指定角度和电机旋转指定时间组合的方法。

图1.2.6 电机旋转指定时间的程序

使用时间控制电机旋转不能精确控制电机旋转的角度,所以这样的方法常用于精度不高的场景。也可以用于机械限位的机械臂系统和机器人的撞击定位,给电机设置充足的运行时间,保证机械臂系统和机器人能够运动到被限定的位置。

方法3

设置电机旋转到指定角度的位置,同时采用计时器开始计时电机旋转的时间,如果电机旋转到指定角度位置或超过控制的总时间,则电机停止旋转,程序设计示例如图1.2.7所示。

图1.2.7 超时电机制动的程序

有的任务需要机械臂旋转较多的圈数,难以进行机械限位,若是单纯采用时间控制,可以避免电机卡住的风险,但程序中必须设置足够多的时间,容易造成时间的浪费。采用速度和时间联合控制电机旋转,若电机被卡住或旋转超时,直接放弃该任务,机器人仍可以完成接下来的任务。

任务探究2

分别启动电机功率模块和电机速度模块来控制电机的旋转,程序设计示例如图1.2.8和图1.2.9所示,先后运行这两个程序,用手阻碍旋转中的电机,阻碍但不阻止,比较两种程序控制下的电机旋转效果。

图1.2.8 功率控制和速度控制的程序(spike)

图1.2.9 功率控制和速度控制的程序(EV3)

采用功率控制电机旋转时,如果旋转中的电机遇到了阻力,其转速会迅速减小,容易停止旋转。但采用速度控制电机旋转时,如果电机遇到阻力,则程序会自动对电机的功率进行补偿,使电机的转动尽可能维持在设定的旋转速度上。

任务探究3

设计程序,将电机停止模式分别设置为“制动”“保持位置不动”和“惯性滑行”,比较三种制动的效果,程序设计示例如图1.2.10、图1.2.11所示。

图1.2.10 电机“制动”“保持位置不动”和“惯性滑行”的程序(spike)

图1.2.11 电机“保持位置不动”和“惯性滑行”的程序(EV3)

在“制动”模式下,当电机旋转到某个角度时,程序会控制电机进行减速制动,即增大电机的旋转阻力,电机会迅速停止,但使用较大的外力仍可以旋转电机。

在“保持位置不动”模式下,电机停止旋转后会保持在某个位置不动,即使用手也很难转动电机。例如,当电机停在某个角度时,用手顺时针旋转电机,会感受到很大的阻力,松开之后,电机则会自动逆时针旋转到之前的角度。

在“惯性滑行”模式下,当电机旋转到某角度时,主控制器停止向电机供电(仍向角度传感器保持供电),由于惯性,电机可能还会继续旋转一定角度才能停下来。

1.2.3 时间与循环

机器人的运动一定有时间的参与,例如,机器人从当前位置运动到另一个位置,如果机器人运动得快,则需要的时间就短,如果机器人运动得慢,则需要的时间就长一些,所以,控制机器人的运动经常离不开对时间的编程,这就需要用到时间模块,如表1.2.3所示,时间模块对时间的测量精度可达到1ms。

表1.2.3 时间模块

任务探究

运用时间模块测量循环模块循环一次所需要的时间是多少。

由于单次的循环时间未知,可猜测单次循环的时间可能很小或为0(小于某极限值),因此,单次循环时间的测量不仅是判断循环需不需要时间,若单次循环需要时间,还要测出单次循环的时间是多少。

为了避免测量的偶然性,提高测量精度,减小测量误差,可以通过多次测量的方法,即测量1000次、10000次、100000次或更多次循环的总时间,然后计算平均数,获得单次循环时间,程序设计如图1.2.12所示。

图1.2.12 测量循环时间的程序

当循环模块的内部无编程模块时,EV3机器人循环10000次的总时间约为0.4s,即单次循环时间约为0.00004s,用同样的方法测量spike机器人循环10000次的总时间约为2.459s,则单次循环的时间约为0.0002s。当在循环模块内部添加编程模块时,单次循环的时间会增加,尤其添加电机模块,其单次循环时间约增加10倍。

单次循环时间反映了机器人的中央处理器的性能和程序复杂度,对同一个程序,单次循环时间越少,处理器运算速度越快,性能越好。但对于这两种机器人,在学习和竞赛中,其运算速度都能够满足机器人设计的需要。

以上探究说明,在进行机器人程序设计时,一定要尽可能简化程序,不必要的循环程序可以终止运行,以此保障机器人有较快的程序运行速度和效率。

试一试

在循环模块内添加电机、变量等编程模块,测试循环模块循环一次的时间是多少?

1.2.4 电机的变速控制

要准确地描述一个物体的位移快慢,需要引入一个概念——速度,速度指的是物体在单位时间内通过的路程。可表示为

速度=路程÷时间

若用v代表速度,s表示路程,t表示时间,则速度公式可表示为:

速度的常用单位是m/s,读作米每秒,换算关系:1m/s=100cm/s=3.6km/h。

从速度的定义出发,如果要探究一个物体运动的速度,就需要测量物体通过的路程和通过这段路程所用的时间。

如果物体直线运动的速度随着时间越来越大,这就是加速运动。例如,一辆小车在笔直的公路上行驶,每隔1s测量小车的速度,其速度变化为5m/s、10m/s、15m/s……,这就是匀加速直线运动,小车每秒增加的速度为5m/s,这就是小车的加速度,记为5m/s2,读作“五米每秒的平方”。生活中,从斜面上滚落的小球、自由下落的苹果、加速行驶的火车、正在地面加速即将起飞的飞机,等等,这些都可以近似看成是匀加速直线运动。

如果物体直线运动的速度随时间越来越小,这就是减速直线运动,若物体每秒减小的速度相同,就叫作匀减速直线运动。

电机的加速旋转可以通过单位时间内增加恒定的速度或功率来实现,即在单位时间内增加相同的速度或功率,例如,让电机每间隔约0.05s功率增加1,即第一个0.05s内功率为1,第二个0.05s内功率为2,第三个0.05s内功率为3……,其程序设计示例如图1.2.13所示。

图1.2.13 电机加速的程序

这里使用了等待时间模块,由于循环本身也需要时间,所以电机功率增加的时间间隔大于0.05s。若需要精确的时间控制,可以使用计时器模块来设计程序,如图1.2.14所示。

图1.2.14 计时器模块控制循环时间的程序

除了使用计时器模块控制电机速度,还可以采用旋转角度控制电机的速度,其程序设计示例如图1.2.15所示,使用这种控制方法可以准确获得电机在加速过程中旋转的总角度。

图1.2.15 旋转角度控制电机速度的程序

根据以上程序,电机速度每增加1,则电机旋转的角度就会增加5°,通过计算,电机从速度10m/s加速到100m/s的过程中,电机旋转的总角度为

(100-10)×5°+1°=451°

由于判断条件需要电机实际旋转角度大于变量计算的角度,并且角度传感器测量的角度数据都是整数,所以上式在计算总角度时还需要加1°。

试一试

(1)设计程序,电机每间隔0.08s速度减小1,让电机速度从100减小到0。

(2)设计程序,采用旋转角度控制电机的速度,让电机逐渐减速至停止,并计算电机在减速过程中旋转的总角度。

1.2.5 模拟匀加速运动

匀加速直线运动的物体受到的牵引力是恒定不变的,加速度越小,意味着牵引力越小,较小且恒定的牵引力有利于物体内部的受力稳定,正如火车在启动时以很小的加速度做匀加速直线运动,在车厢的桌上放置一杯水,不仅水杯不会倒,水杯内部的水面也不会有明显晃动。

理想的匀加速直线运动是难以实现的,若采用时间来控制电机做匀加速旋转,则难以精确计算出机器人移动的距离。为此,可以采用角度控制电机近似做匀加速旋转。匀加速直线运动的路程与加速度、速度的关系为

其中,s表示物体移动的路程;a表示物体移动中的加速度;v表示物体运动到终点时的速度;v表示物体运动开始时的初始速度。

在电机匀加速旋转的过程中,路程s可对应电机旋转的角度,初速度v对应电机的初始旋转速度,速度v对应电机在一次程序循环中需要达到的旋转速度。为机器人的加速系数,这个系数越小,加速度越大,电机加速越快。在一次程序循环中,电机模拟匀加速的算法可表示为

电机旋转的角度=系数×(当前速度2-初速度2

当电机的功率非常小时,电机可能会没有足够的力量旋转起来,所以电机启动的初速度一般在10m/s以上,模拟匀加速旋转的程序设计如图1.2.16所示。

图1.2.16 模拟匀加速旋转的程序

根据以上程序,电机的速度从10m/s加速到100m/s,理论计算电机在加速过程中旋转的角度为

0.1×(1002-102)+1°=991°

对于电机匀减速运动模拟的控制,为了保证计电机旋转角度的数值为正值,则在一次程序循环中电机模拟匀减速运动的算法可表示为

电机旋转的角度=系数×(初速度2-当前速度2

1.2.6 拓展阅读:匀加速直线运动方程

若一辆小车初速度v为10m/s,然后做匀加速直线运动,每秒的速度增加2m/s,即小车的加速度a为2m/s2,其速度与时间的关系为

v=v+at

其中,v表示小车速度,v表示初速度,a表示加速度,t表示时间。

小车运动的路程与时间的关系为:

则小车运动的路程与初速度、末速度的关系为

试一试

设计程序,让电机做减速运动,电机的速度从100减速到20,减速过程中,电机允许旋转的角度为360°。

1.2.7 电机转速的测量

生活中,电风扇可以通过换挡来改变扇叶转动的快慢;汽车的仪表盘安装了转速表,用来显示汽车发动机转动的快慢,而汽车轮子转动的快慢又直接决定汽车行驶的速度;缓慢转动的摩天轮大约需要10min才能转动一圈。有的物体转动得快,而有的物体转动得慢,那么我们怎样才能准确描述物体转动的快慢呢?物体转动的快慢又如何进行测量呢?

转速可以用来描述物体转动的快慢,指的是物体在单位时间内转动的圈数,常用的单位是r/min,读作转每分钟,换算关系为1r/s=60r/min。计算方法是物体在一定时间内转动的圈数与这段时间的商,可表示为

转速=圈数÷时间

v表示物体的转速;n表示转动的圈数;t表示转动的时间,则转速还可以表示为

任取一个伺服电机,在伺服电机上安装一个轮子,设计程序,运用伺服电机内置的角度传感器测量电机在100功率下的转速,测量方法如图1.2.17所示。

图1.2.17 轮子过去和现在时刻的旋转位置

根据转速的定义,并将转速单位由“角度/s”转换为“r/min”,则有

为了及时准确地测量电机的转速,可将过去时刻到当前时刻的时间间隔设置在0.05~0.1s,时间间隔过小,转速测量不稳定,时间间隔过大,不能及时测量电机的转速。根据以上分析,电机转速测量的程序设计如图1.2.18所示。

图1.2.18 电机转速测量的程序

运用以上程序测量各种电机在100功率下的空载转速,并将测量的转速记录到表1.2.4中。

表1.2.4 各种电机在100功率下的空载转速

在机器人的编程模块中有专门测量电机转速的模块——速度模块,如图1.2.19所示,速度模块已经将电机的转速换算为百分比模式,它可以大致反映电机的旋转速度。

图1.2.19 速度模块

1.2.8 拓展阅读:电机堵转

电机通常有空载、负载和堵转(卡住不转)三种状态。空载是指电机不带负荷的旋转状态,这时候电机的转速最快;负载是指电机带有负荷下的转动,由于负载会产生阻力,这时候电机的转速会比空载时的转速低,阻力越大,转速越低;堵转是指电机由于负载过大或机械故障等因素导致无法启动或停止转动的现象,但此时电机依然有电流(电流很大),堵转非常危险,过大的电流会产生很多的热量,非常容易烧毁电机。

例如,使用EV3机器人、能量计和lab软件,测试一个乐高普通电机从正常的空转状态到堵转状态时内部电流、电压和功率的变化,如图1.2.20所示,从图像中可以看到,0~1.4s电机是空载状态,1.4~3.8s是电机被卡住的过程,3.8s以后电机是空载状态。即电机在空载时,电流(黄色线)较小,功率(绿色线)也较小;当电机卡住不转时,电流陡然上升,功率也迅速增大,电机卡住时的电流是空载状态下的20多倍。电机在卡住不转时,电流是非常大的,这时候电能全部转化为热量,使电机内部线圈的温度迅速上升,很容易烧坏电机。

图1.2.20 电机从空载到堵转过程中的电压、电流和功率图像(EV3)

实际工作中的电机会带有负载,这时电机的转速往往比空载时的转速要低,而且当电机的负载增加时,电机的输出力量会增大。

由于某些机械臂的旋转角度有限,在使用电机驱动机械臂时,电机容易处于堵转的状态而难以发现。为了保护电机,需要设计电机保护程序,当检测到电机堵转时,通过程序自动关闭电机。

正常旋转的电机会有转速,而堵转的典型现象是电机的转速为0,当然电机在不工作时的转速也为0,并且电机的启动是电机转速从0逐渐增大的过程。通过程序可以测试出电机启动过程中的转速变化,其测试程序如图1.2.21所示。图1.2.22是电机启动时的速度变化图,图中显示的是电机空载启动过程中的速度变化,从图中可以看出,整个启动过程所用的时间不超过0.35s,并且在0.2s时电机已经达到目标速度的一半以上。

图1.2.21 电机启动程序(spike)

图1.2.22 电机启动时的速度变化图(spike)

为了避免电机的启动对堵转检测的影响,在启用保护程序时,可以让电机在启动时先转一会儿,这个时间可以设置为0.2~0.35s。等电机有了较高的转速以后,再启用保护程序,保护程序检测电机的转速,当电机的转速为0或接近0时,关闭电机。其程序设计如图1.2.23所示。

图1.2.23 电机保护程序

电机在正常供电状态下,旋转速度的阈值设置得越小,电机停转时的旋转力量越大,通过改变阈值的大小可以控制机械手的抓取力量。对于常规的机械臂的控制,电机旋转速度的阈值一般为2~20,电机旋转的速度阈值过大不利于堵转检测,阈值过小,电机的旋转力量过大,且电机处于低速转动,这些对电机和机器人结构都有不利的影响。