详细的舵机控制原理资料

更新时间:2024-06-02 01:30:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目录

一.舵机PWM信号介绍 ............................................................................................................... 1

1.PWM信号的定义 .............................................................................................................. 1 2.PWM信号控制精度制定 .................................................................................................. 2 二.单舵机拖动及调速算法 ........................................................................................................... 3

1.舵机为随动机构 ......................................................................................................... 3 (1)HG14-M舵机的位置控制方法 ............................................................................. 3 (2)HG14-M舵机的运动协议 ..................................................................................... 4 2.目标规划系统的特征 ......................................................................................................... 5

(1)舵机的追随特性 ..................................................................................................... 5 (2)舵机ω值测定 ........................................................................................................ 6 (3)舵机ω值计算 ........................................................................................................ 6 (4)采用双摆试验验证 ................................................................................................. 6 3.DAV的定义 ....................................................................................................................... 7 4.DIV的定义......................................................................................................................... 7 5.单舵机调速算法 ................................................................................................................. 8

(1)舵机转动时的极限下降沿PWM脉宽 ................................................................. 8

三.8舵机联动单周期PWM指令算法 ...................................................................................... 10

1.控制要求 ........................................................................................................................... 10 2.注意事项 ........................................................................................................................... 10 3.8路PWM信号发生算法解析 ........................................................................................ 11 4.N排序子程序RAM的制定 ............................................................................................ 12 5.N差子程序解析 ............................................................................................................... 13 6.关于扫尾问题 ................................................................................................................... 14

(1)提出扫尾的概念 ................................................................................................... 14 (2)扫尾值的计算 ....................................................................................................... 14

0 / 15

0

一.舵机PWM信号介绍

1.PWM信号的定义

PWM信号为脉宽调制信号,其特点在于他的上升沿与下降沿之间的时间宽度。具体的时间宽窄协议参考下列讲述。我们目前使用的舵机主要依赖于模型行业的标准协议,随着机器人行业的渐渐独立,有些厂商已经推出全新的舵机协议,这些舵机只能应用于机器人行业,已经不能够应用于传统的模型上面了。

目前,北京汉库的HG14-M舵机可能是这个过渡时期的产物,它采用传统的PWM协议,优缺点一目了然。优点是已经产业化,成本低,旋转角度大(目前所生产的都可达到185度);缺点是控制比较复杂,毕竟采用PWM格式。

但是它是一款数字型的舵机,其对PWM信号的要求较低: (1) 不用随时接收指令,减少CPU的疲劳程度;

(2) 可以位置自锁、位置跟踪,这方面超越了普通的步进电机;

图1-1

其PWM格式注意的几个要点: (1) 上升沿最少为0.5mS,为0.5mS---2.5mS之间;

(2) HG14-M数字舵机下降沿时间没要求,目前采用0.5Ms就行;也就是说PWM波形

可以是一个周期1mS的标准方波;

(3) HG0680为塑料齿轮模拟舵机,其要求连续供给PWM信号;它也可以输入一个周

期为1mS的标准方波,这时表现出来的跟随性能很好、很紧密。

1 / 15

1

2.PWM信号控制精度制定

我们采用的是8位 AT89C52CPU,其数据分辨率为 256,那么经过舵机极限参数实 验,得到应该将其划分为250份。 那么0.5mS---2.5Ms的宽度 为2mS = 2000uS。 2000uS÷250=8uS 则:PWM的控制精度为8us 我们可以以8uS为单位递增 控制舵机转动与定位。 舵机可以转动185度,那么 185度÷250=0.74度, 则:舵机的控制精度为0.74度

1 DIV = 8uS ; 250DIV=2mS 时基寄存器内的数值为:(#01H)01 ----(#0FAH)250。

共185度,分为250个位置,每个位置叫1DIV。

则:185÷250 = 0.74度 / DIV

PWM上升沿函数: 0.5mS + N×DIV

0uS ≤ N×DIV ≤ 2mS

0.5mS ≤ 0.5Ms+N×DIV ≤ 2.5mS

图1-2

2 / 15

2

二.单舵机拖动及调速算法

1.舵机为随动机构

(1)当其未转到目标位置时,将全速向目标位置转动。 (2)当其到达目标位置时,将自动保持该位置。

所以对于数字舵机而言,PWM信号提供的是目标位置,跟踪运动要靠舵机本身。 (3)像HG0680这样的模拟舵机需要时刻供给PWM信号,舵机自己不能锁定目标位置。 所以我们的控制系统是一个目标规划系统。

(1)HG14-M舵机的位置控制方法

舵机的转角达到185度,由于采用8为CPU控制,所以控制精度最大为256份。目前经过实际测试和规划,分了250份。具体划分参见《250份划分原理》。

将0—185分为250份,每份0.74度。

控制所需的PWM宽度为0.5ms—2.5ms,宽度2ms。 2ms÷250=8us;

所以得出:PWM信号 = 1度/8us; 0.5ms-2.5ms 0.5ms-30ms

舵机角度= 0.74×N

PWM = 0.5 + N×DIV;(DIV=8us)

角度 N PWM

0 0 0.5ms 45 3E 1ms 90 7D 1.5ms 135 BB 2ms 180 FA 2.5ms 3 / 15

3

(2)HG14-M舵机的运动协议

舵机的转动方向为: 逆时针为正转

Φ Φ对应N值

N=#00H,Φ=0度 N=#F5H,Φ=180度 1 ≤ N ≤ 245

运动时可以外接较大的转动负载,舵机输出扭矩较大,而且抗抖动性很好,电位器的线性度较高,达到极限位置时也不会偏离目标。

4 / 15

4

2.目标规划系统的特征

(1)舵机的追随特性

角度 фB △ф фA 舵机的转速为ω △T 时间

① 舵机稳定在A点不动;

② CPU发出B点位置坐标的PWM信号; ③ 舵机全速由A点转向B点;

△ф = фB - фA △T = △ф÷ω ④ CPU发出B点PWM信号后,应该等待一段时间,利用此时间舵机才能转动至B点。

那么,具体的保持(等待)时间如何来计算,如下讲解:

令:保持时间为Tw

当Tw≥△T时,舵机能够到达目标,并有剩余时间;

当Tw≤△T时,舵机不能到达目标;

理论上:当Tw=△T时,系统最连贯,而且舵机运动的最快。

实际过程中由于2个因素:

① 1个机器人身上有多个舵机,负载个不相同,所以ω不同; ② 某个舵机在不同时刻的外界环境负载也不同,所以ω不同; 则连贯运动时的极限△T难以计算出来。 目前采取的方法是经验选取ω值。

5 / 15

5

(2)舵机ω值测定

舵机的ω值随时变化,所以只能测定一个平均值,或称出现概率最高的点。 依据 ① 厂商的经验值;

② 采用HG14-M具体进行测试;

测试实验:① 将CPU开通,并开始延时Tw;

② 当延时Tw到达后,观察舵机是否到达目标;

测定时采用一段双摆程序,伴随示波器用肉眼观察Tw与△T的关系。

(3)舵机ω值计算

一般舵机定为0.16--0.22秒/60度;

取0.2秒/60度 >> 1.2秒/360度 >> 0.617秒/185度 则ω为360度/1.2秒,2Π/1.2秒 ω=300度/秒

那么185度转动的时间为185度÷360度/1.2秒 = 0.6167秒。

(4)采用双摆试验验证

观察实验过程中的Tw与△T的关系 发现:当Tw定在0.618秒时,利用示波器观察到舵机能够运动至2个目标点。 则:Tw=△T= 0.618秒 实验过程中,设定舵机运转的目标角度查为185度。 最终:ω=0.2秒/60度 6 / 15

6

3.DAV的定义

将185度的转角分为250个平均小份。 则:每小份为0.74度。

定义如下:DAV = 0.74度

由于:ω = 0.2秒/60度

则:运行1 DAV所需时间为:0.72度÷0.2秒/60度 = 2.4 mS;

4.DIV的定义

舵机电路支持的PWM信号为0.5mS—2.5mS,总间隔为2mS。 若分为250小份,则2mS÷250 = 0.008 mS = 8uS

定义如下:DIV = 8uS 角度

фB ф

фA 时间

△T ф = фB - фA △T = ф÷ω

那么1 DAV(0.74度)对应的△T为:0.74度÷60度/0.2秒 =2.4 67mS.。

7 / 15

7

5.单舵机调速算法

0.5ms-30ms

测试内容:将后部下降沿的时间拉至30ms没有问题,舵机照样工作。

将后部下降沿的时间拉至10ms没有问题,舵机照样工作。

将后部下降沿的时间拉至2.6ms没有问题,舵机照样工作。 将后部下降沿的时间拉至500us没有问题,舵机照样工作。

实践检验出:下降沿时间参数可以做的很小。目前实验降至500uS,依然工作正常。 原因是:(1)舵机电路自动检测上升沿,遇上升沿就触发,以此监测PWM脉宽“头”。 (2)舵机电路自动检测下降沿,遇下降沿就触发,以此监测PWM脉宽“尾”。

(1)舵机转动时的极限下降沿PWM脉宽

20ms △T

△T:舵机运转1DAV(7.4度)所需要的最小时间,目前计算出的数值为2.467mS;

△T前面的20 mS等待时间可以省略,舵机依然工作;而且得出舵机跟随的最快驱动方式。 Tw 极限转动方式

实验得出 1.1ms ≤Tw≤ 50ms;

具体实验数据参照下表

跟随算法

8 / 15

8

舵机Tw数据实验表格

Tw值 500us 800us 1ms 1.1ms 1.2ms 1.6ms 2ms 2.6ms 10ms 20ms 30ms 40ms 50ms 70ms 100ms 舵机运转特性 不能跟随 不能跟随 不能跟随 跟随 跟随 跟随 跟随 跟随 跟随 跟随 跟随 跟随 跟随 跟随 跟随 Tw与△T关系 Tw< △T Tw< △T Tw< △T Tw≈ △T Tw> △T Tw> △T Tw> △T Tw> △T Tw>> △T Tw>> △T Tw>> △T Tw>> △T Tw>> △T Tw>> △T Tw>> △T

令人质疑的地方为1.1ms时的表现,得出的Tw≈ △T; 也就是说1.1ms = 2.467ms,显然存在问题。

经过考虑重新观察PWM波形图发现,电机真正的启动点如下图:

B点的PWM

启动点A 启动点B Tw 极限转动方式

实际上由A到B的运动时间为:△T = Tw +(B点的)PWM

不可以 不可以 很慢、较抖 很慢、较抖 可行 可行 可行 可行 可行 可行 可行 可行 可以 可以 最快、平滑 最快、平滑 最快、平滑 最快、平滑 最快、平滑 较慢、平滑 较慢、平滑 较慢、平滑 较慢、微抖 很慢、微抖 该程序可行度 不可行 不可行 不可行 备注 9 / 15

9

三.8舵机联动单周期PWM指令算法

1.控制要求

要求同时发给8个舵机位置目标值,该指令的执行周期尽量短,目的有2个: 其一,是为了将来扩充至24舵机;其二,目标越快,舵机的转动速度越快;

我们以8路为1组或称1个单位,连续发出目标位置,形成连续的目标规划曲线,电机在跟随过程中自然形成了位置与速度的双指标曲线,实现8路舵机联动。

2.注意事项

从24个端口,P0.0、P1.0到P2.0,单DIV循环的最小时间只有8us,所以串行运算是不行的,那么就采用并行运算。

目前采用的并行算法是P0.0—P0.7为一个基本单位,8位一并。 实际案例:P1口的8个位置个不相同; 端口 N寄存器 目标位置(度) N数值(整数) PWM宽度ms P1.7 37H 180 250 2.500 P1.6 36H 135 187.5 2.000 P1.5 35H 90 125 1.500 P1.4 34H 60 81.1 1.148 P1.3 33H 50 67.6 1.041 P1.2 32H 45 62.5 1.000 P1.1 31H 0.74 1 0.508 P1.0 30H 0 0 0.500 注意:N为整数,依照上表看出,由于整数原因,定位不能实现的有45度、60度等。

时间T

T为一个周期,分为2部分

1. PWM宽

2. 延时等待

PWM Tw

10 / 15

10

3.8路PWM信号发生算法解析

我们预计将整个周期控制在3.5-5ms内;

由上图得知:P1口的8个端在不同时间产生下降沿。 那么由上例如:我们的P1.5口,他的N为125

那么就需要它在125个DIV后产生下降沿,时间为(125*8us=1000us)。 我们在其中发现2个关键参数:①时间参数N=125

②逻辑参数 P1.5=#0DFH

逻辑参数的定义:如下,采用ANL指令,操作P1口。

ANL端口逻辑参数表

P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 备注 P1.0= # FEH 1 1 1 1 1 1 1 0 P1.1= # FDH 1 1 1 1 1 1 0 1 P1.2= # FBH 1 1 1 1 1 0 1 1 P1.3= # F7H 1 1 1 1 0 1 1 1 P1.4= # EFH 1 1 1 0 1 1 1 1 P1.5= # DFH 1 1 0 1 1 1 1 1 P1.6= # BFH 1 0 1 1 1 1 1 1 P1.7= # 7FH 0 1 1 1 1 1 1 1 例如:将P1.5口产生下降沿,就将# 0DFH 去“ANL” P1口。 逻辑“ANL”指令,冯“0”得“0”,不影响其他位。

具体的程序操作如下: ① 开3.5ms定时中断

② 取出8个端(P1.0-P1.7)的位置值,也就是8个N值;并赋予相应的端逻辑参数; ③ 将这8个值由大到小排列,相应端的逻辑参数值也随着N的顺序排列,一一对应; ④ 将N值做减法,求得: M1=N1 M5=N5-N4 M2=N2-N1 M6=N6-N5 M3=N3-N2 M7=N7-N6 M4=N4-N3 M8=N8-N7

⑤ 取出 M1,延时M1*DIV,ANL相应的逻辑参数;

取出 M2,延时M2*DIV,ANL相应的逻辑参数; 取出 M3,延时M3*DIV,ANL相应的逻辑参数; 取出 M4,延时M4*DIV,ANL相应的逻辑参数; 取出 M5,延时M5*DIV,ANL相应的逻辑参数; 取出 M6,延时M6*DIV,ANL相应的逻辑参数; 取出 M7,延时M7*DIV,ANL相应的逻辑参数; 取出 M8,延时M8*DIV,ANL相应的逻辑参数; 11 / 15

11

⑥ 8个端的下降沿全部产生完毕,等待一定的Tw值,或等待3.5ms中断的到来; ⑦ 中断到来后,清理中断标志,然后结束该程序。RET

注意事项:当进行逐个排序延时的过程中,CPU要取出M1、M2、M3….M8,那么会有1

个取数指令周期,当CPU采用12MHz时为1us。最终应该在第8个延时,即M8时扣除掉,具体指令参见指令集。

4.N排序子程序RAM的制定

入口处 N值寄存器地址 ANL逻辑数寄存器地址 ANL逻辑数值 P1.7 37H 3FH #7FH P1.6 36H 3EH #BFH P1.5 35H 3DH #DFH P1.4 34H 3CH #EFH P1.3 33H 3BH #F7H P1.2 32H 3AH #FBH P1.1 31H 39H #FDH P1.0 30H 38H #FEH 备注:37寄存器内存放的是P1.7端口的N值;3F寄存器内存放的是P1.7端口的ANL逻

辑参数值;

出口处

从左到右为N值从大到小排列 (大 > N值 > 小) N值寄存器地址 ANL逻辑数寄存器地址 ANL逻辑数值 30H 38H 未知 31H 39H 未知 32H 3AH 未知 33H 3BH 未知 34H 3CH 未知 35H 3DH 未知 36H 3EH 未知 37H 3FH 未知 所谓的“未知”:由于排列按照大到小顺序,“未知”内存放的为端口信息要根据排序 做相应的调整。

备注:30H内存放的是某位的N值,其值最大;

37H内存放的是某位的N值,其值最小;

38H—3FH内存放ANL数,可以根据其数值判断出是具体那个端口的下降沿。 例如:其值为“#FBH”那么它就是P1.2;

12 / 15

12

5.N差子程序解析

所谓N差子程序,要观察PWM口的逻辑时序特性。要求连续将8位端口分别产生 下降沿。所以有个先后问题,解决的方法有2种:

①打开8个时间中断;

②按先后顺序排列,先后触发;

由于CPU不能开启8个中断,所以采用后者方法,那么,就可以得出以下结论:

第1个 触发位所用的时间为 N1- 0 =M1; 第2个 触发位所用的时间为 N2-N1=M2; 第3个 触发位所用的时间为 N3-N2=M3; 第4个 触发位所用的时间为 N4-N3=M4; 第5个 触发位所用的时间为 N5-N4=M5; 第6个 触发位所用的时间为 N6-N5=M6; 第7个 触发位所用的时间为 N7-N6=M7; 第8个 触发位所用的时间为 N8-N7=M8;

大 小 入口:30H 31H 32H 33H 34H 35H 36H 37H

由于上接排序字程序,所以已经按照从大到小排列,做减法后差所以全为正数。

大 - 小

30H - 31H 30H 31H - 32H 31H 32H - 33H 32H 33H - 34H 33H 34H - 35H 34H 35H - 36H 35H 36H - 37H 36H 37H 37H

出口 30H 31H 32H 33H 34H 35H 36H 37H

差 差 差 差 差 差 差 原数

调用延时程序时,37H最先出,30H最后出。

13 / 15

13

6.关于扫尾问题

(1)提出扫尾的概念

我们提出了1个扫尾的新概念:当CPU执行完8个位的下降沿操作后(最多为2.5ms),会有向下1个周期过渡的时间间隔,其主要为2个功能:

①保证下降沿的准确性;

②为舵机的跟踪留出足够的时间;

当PWM信号以最小变化量即(1DIV=8us)依次变化时,舵机的分辨率最高,但是速度会减慢。 例如:先发一个PWM信号N=125,相隔20ms后再发1个PWM信号N=126。那么舵机在20ms内转动了0.74度,计算得出:ω=0.74度/20ms = 37度/秒; HG14-M舵机空载时:ω=300度/秒

发现与最快速度相差8倍之多!

(2)扫尾值的计算

图中有A点、B点,

中断延时2.8ms

A点 B点

舵机从PWM_A发出后开始 Tw 转动,经过△T时间后接收 PWM_A PWM_ B 完毕PWM_B信号后,又重

新开始新的转动。 △T

PWM处在最小极限长度时:

∵Tw=△T - PWM_ B PWM_A = 0.5ms

∴limtTw=2.467ms-0.5ms= 1.967ms PWM_B = 0.5ms

必要条件:△T≥2.467ms

PWM处在最长极限长度时:

∵Tw=△T - PWM_ B PWM_A = 2.5ms

∴limtTw=2.467ms-2.5ms= -0.033ms PWM_B = 2.5ms

必要条件:△T≥2.467ms

为了保证在2种极限情况下舵机都能正常工作,我们取个较长的延时,其经验值为2.8ms;这样舵机都能正常跟随而且速度接近最大值,采用中断法延时2.8ms。

14 / 15

14

本文来源:https://www.bwwdw.com/article/c9l6.html

Top