详细的舵机控制原理资料.docx

上传人:b****2 文档编号:23035864 上传时间:2023-04-30 格式:DOCX 页数:21 大小:64.34KB
下载 相关 举报
详细的舵机控制原理资料.docx_第1页
第1页 / 共21页
详细的舵机控制原理资料.docx_第2页
第2页 / 共21页
详细的舵机控制原理资料.docx_第3页
第3页 / 共21页
详细的舵机控制原理资料.docx_第4页
第4页 / 共21页
详细的舵机控制原理资料.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

详细的舵机控制原理资料.docx

《详细的舵机控制原理资料.docx》由会员分享,可在线阅读,更多相关《详细的舵机控制原理资料.docx(21页珍藏版)》请在冰豆网上搜索。

详细的舵机控制原理资料.docx

详细的舵机控制原理资料

目录

一.舵机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

一.舵机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的标准方波,这时表现出来的跟随性能很好、很紧密。

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-2

 

1DIV=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.舵机为随动机构

(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)

角度

0

45

90

135

180

N

0

3E

7D

BB

FA

PWM

0.5ms

1ms

1.5ms

2ms

2.5ms

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

舵机的转动方向为:

逆时针为正转

Φ

Φ对应N值

N=#00H,Φ=0度

N=#F5H,Φ=180度

1≤N≤245

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

2.目标规划系统的特征

(1)舵机的追随特性

角度

фB

△ф

фA

舵机的转速为ω

△T

时间

①舵机稳定在A点不动;

②CPU发出B点位置坐标的PWM信号;

③舵机全速由A点转向B点;

△T=△ф÷ω

△ф=фB-фA

④CPU发出B点PWM信号后,应该等待一段时间,利用此时间舵机才能转动至B点。

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

令:

保持时间为Tw

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

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

理论上:

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

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

①1个机器人身上有多个舵机,负载个不相同,所以ω不同;

②某个舵机在不同时刻的外界环境负载也不同,所以ω不同;

则连贯运动时的极限△T难以计算出来。

目前采取的方法是经验选取ω值。

(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度

3.DAV的定义

将185度的转角分为250个平均小份。

则:

每小份为0.74度。

定义如下:

DAV=0.74度

由于:

ω=0.2秒/60度

则:

运行1DAV所需时间为:

0.72度÷0.2秒/60度=2.4mS;

4.DIV的定义

舵机电路支持的PWM信号为0.5mS—2.5mS,总间隔为2mS。

若分为250小份,则2mS÷250=0.008mS=8uS

定义如下:

DIV=8uS

角度

фB

ф

фA

△T

时间

△T=ф÷ω

ф=фB-фA

那么1DAV(0.74度)对应的△T为:

0.74度÷60度/0.2秒=2.467mS.。

5.单舵机调速算法

0.5ms-30ms

测试内容:

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

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

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

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

实践检验出:

下降沿时间参数可以做的很小。

目前实验降至500uS,依然工作正常。

原因是:

(1)舵机电路自动检测上升沿,遇上升沿就触发,以此监测PWM脉宽“头”。

(2)舵机电路自动检测下降沿,遇下降沿就触发,以此监测PWM脉宽“尾”。

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

△T

20ms

△T:

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

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

Tw

极限转动方式

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

具体实验数据参照下表

跟随算法

舵机Tw数据实验表格

Tw值

舵机运转特性

Tw与△T关系

该程序可行度

备注

500us

不能跟随

Tw<△T

不可行

800us

不能跟随

Tw<△T

不可行

1ms

不能跟随

Tw<△T

不可行

1.1ms

跟随

Tw≈△T

可行

最快、平滑

1.2ms

跟随

Tw>△T

可行

最快、平滑

1.6ms

跟随

Tw>△T

可行

最快、平滑

2ms

跟随

Tw>△T

可行

最快、平滑

2.6ms

跟随

Tw>△T

可行

最快、平滑

10ms

跟随

Tw>>△T

可行

较慢、平滑

20ms

跟随

Tw>>△T

可行

较慢、平滑

30ms

跟随

Tw>>△T

可行

较慢、平滑

40ms

跟随

Tw>>△T

可以

较慢、微抖

50ms

跟随

Tw>>△T

可以

很慢、微抖

70ms

跟随

Tw>>△T

不可以

很慢、较抖

100ms

跟随

Tw>>△T

不可以

很慢、较抖

令人质疑的地方为1.1ms时的表现,得出的Tw≈△T;

也就是说1.1ms=2.467ms,显然存在问题。

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

B点的PWM

启动点B

启动点A

Tw

极限转动方式

实际上由A到B的运动时间为:

△T=Tw+(B点的)PWM

三.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个位置个不相同;

端口

P1.7

P1.6

P1.5

P1.4

P1.3

P1.2

P1.1

P1.0

N寄存器

37H

36H

35H

34H

33H

32H

31H

30H

目标位置(度)

180

135

90

60

50

45

0.74

0

N数值(整数)

250

187.5

125

81.1

67.6

62.5

1

0

PWM宽度ms

2.500

2.000

1.500

1.148

1.041

1.000

0.508

0.500

注意:

N为整数,依照上表看出,由于整数原因,定位不能实现的有45度、60度等。

时间T

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

1.PWM宽

2.延时等待

Tw

PWM

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口。

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

ANL端口逻辑参数表

例如:

将P1.5口产生下降沿,就将#0DFH去“ANL”P1口。

逻辑“ANL”指令,冯“0”得“0”,不影响其他位。

具体的程序操作如下:

①开3.5ms定时中断

②取出8个端(P1.0-P1.7)的位置值,也就是8个N值;并赋予相应的端逻辑参数;

M5=N5-N4

M6=N6-N5

M7=N7-N6

M8=N8-N7

M1=N1

M2=N2-N1

M3=N3-N2

M4=N4-N3

③将这8个值由大到小排列,相应端的逻辑参数值也随着N的顺序排列,一一对应;

④将N值做减法,求得:

 

⑤取出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相应的逻辑参数;

⑥8个端的下降沿全部产生完毕,等待一定的Tw值,或等待3.5ms中断的到来;

⑦中断到来后,清理中断标志,然后结束该程序。

RET

注意事项:

当进行逐个排序延时的过程中,CPU要取出M1、M2、M3….M8,那么会有1个取数指令周期,当CPU采用12MHz时为1us。

最终应该在第8个延时,即M8时扣除掉,具体指令参见指令集。

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

入口处

P1.7

P1.6

P1.5

P1.4

P1.3

P1.2

P1.1

P1.0

N值寄存器地址

37H

36H

35H

34H

33H

32H

31H

30H

ANL逻辑数寄存器地址

3FH

3EH

3DH

3CH

3BH

3AH

39H

38H

ANL逻辑数值

#7FH

#BFH

#DFH

#EFH

#F7H

#FBH

#FDH

#FEH

备注:

37寄存器内存放的是P1.7端口的N值;3F寄存器内存放的是P1.7端口的ANL逻

辑参数值;

出口处

从左到右为N值从大到小排列(大>N值>小)

N值寄存器地址

30H

31H

32H

33H

34H

35H

36H

37H

ANL逻辑数寄存器地址

38H

39H

3AH

3BH

3CH

3DH

3EH

3FH

ANL逻辑数值

未知

未知

未知

未知

未知

未知

未知

未知

所谓的“未知”:

由于排列按照大到小顺序,“未知”内存放的为端口信息要根据排序

做相应的调整。

备注:

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

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

38H—3FH内存放ANL数,可以根据其数值判断出是具体那个端口的下降沿。

例如:

其值为“#FBH”那么它就是P1.2;

 

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;

大小

入口:

30H31H32H33H34H35H36H37H

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

大-小

30H-31H30H

31H-32H31H

32H-33H32H

33H-34H33H

34H-35H34H

35H-36H35H

36H-37H36H

37H37H

出口

30H

31H

32H

33H

34H

35H

36H

37H

原数

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

 

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)扫尾值的计算

中断延时2.8ms

图中有A点、B点,

B点

A点

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

PWM_B

PWM_A

Tw

△T

∵Tw=△T-PWM_B

∴limtTw=2.467ms-0.5ms=1.967ms

PWM处在最小极限长度时:

PWM_A=0.5ms

PWM_B=0.5ms

必要条件:

△T≥2.467ms

∵Tw=△T-PWM_B

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

PWM处在最长极限长度时:

PWM_A=2.5ms

PWM_B=2.5ms

必要条件:

△T≥2.467ms

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1