首页 理论教育 单片机原理与应用技术-定时器/计数器初值及舵机控制程序

单片机原理与应用技术-定时器/计数器初值及舵机控制程序

时间:2023-10-28 理论教育 版权反馈
【摘要】:设角度为α,可以得到周期脉冲高电平延时时长th和脉冲低电平延时时长tl,见表达式(8-1)和式(8-2):th=0.5ms+α/180°×2ms (8-1)tl=20ms-th (8-2)再根据3.1.2节的方法计算定时器/计数器在工作模式1的预置初值Xh和Xl。图8-29 在0°~180°按不同速度转动的控制函数流程图图8-30 舵机多方式运转的主程序流程图4.C语言源程序

单片机原理与应用技术-定时器/计数器初值及舵机控制程序

如上所述,舵机的控制是通过改变周期脉冲的占空比实现的,因此,利用单片机定时器/计数器的定时溢出功能产生脉冲波即可精确控制舵机。下面通过两个实例介绍舵机的软件设计思路。

1.控制舵机转动到任意指定角度

此种方式是舵机控制的最基本操作。只要根据指定角度所对应的脉冲占空比,计算出定时器/计数器的定时常数,就能产生相应的脉冲波。设角度为α(取值范围是0°~180°),可以得到周期脉冲高电平延时时长th和脉冲低电平延时时长tl,见表达式(8-1)和式(8-2):

th=0.5ms+α/180°×2ms (8-1)

tl=20ms-th (8-2)

再根据3.1.2节的方法计算定时器/计数器在工作模式1的预置初值XhXl。其中晶振频率fOSC=12MHz,机器周期T=1μs,预置初值Xh可以通过表达式(8-3)计算:

(216-Xh)×1μs=th (8-3)

代入th的表达式(8-1),并统一用微秒表示,得:

Xh=216-500+α/180°×2000≈FE0CH-α×11 (8-4)

Xl=216-20000-Xh=1B1E0H-Xh (8-5)

舵机转动到指定角度的控制函数流程图见图8-28,用C语言实现。软件设计思路为:构造函数Servo_Rotate_to_Angle(角度值),输入角度值为0°~180°之间任一指定角度,代入上述关系式计算高电平、低电平的定时预置值,调用舵机动作函数Servo_Action()执行相应操作,具体流程如图8-28a所示。在舵机动作函数Servo_Action()中,定时器/计数器装载高电平的定时时间预置值,启动定时器/计数器并在舵机I/O端口置1,等待定时器溢出标志置位并将其清零;舵机I/O口产生低电平的定时时间预置值方法与之类似,具体流程图如图8-28b所示。

978-7-111-49886-5-Chapter08-82.jpg

图8-28 舵机转动到指定角度的控制函数流程图

2.在0°~180°转动范围内控制舵机转动速度

上例所述方法是控制舵机使其转动至某个指定的角度位置,这种方法受控的舵机在其最高转动速度(舵机标称的转动速度)下运行,但现实情况中往往需要调节舵机的转速来适应具体任务的需求。

基于舵机转动角度与周期脉冲的高电平宽度有着一对一的关系,假设舵机的摆臂要从角度β转动到角度γ,则两者角度差θ为:

θ=|β-γ| (8-6)

引入变量Δθ作为每周期的角度增量,k代表周期脉冲个数的整数,则有:(www.xing528.com)

θ=kΔθ (8-7)

因此,当Δθ↑,舵机在下一周期到达的角度↑,转速↑,需要输入的脉冲个数↓;反之,当Δθ↓,舵机在下一周期到达的角度↓,转速↓,需要输入的脉冲个数↑。

本例中的受控舵机从0°旋转至180°,由输入速度参数调整舵机的转动速度。程序设计的关键在于把角度增量Δθ转化为定时器/计数器预置值增量。设s为速度参数,相应修改高电平、低电平预置值,得到与第n个周期的关系为:

978-7-111-49886-5-Chapter08-83.jpg

其中ns的乘积不大于2000(对应角度值180°)。构造函数Servo_Horizontal_Rotation(速度增量),设置变量time(取值范围0≤time≤2000),每次循环中都根据上述关系计算高电平、低电平的定时器/计数器预置值,并传递至舵机动作函数执行相关操作,在0°~180°按不同速度转动的控制函数流程图见图8-29。

3.主程序流程

主程序结合了上述舵机两种运转方式,软件流程构思为:首先按照例1的方式将舵机以标准速度(快速)从初始角度转至56°,延时1s,再转至112°,接着以标准速度(快速)回转到0°;然后按照例2的方式,以速度3(慢速)从0°转至180°,延时1s,接着以标准速度(快速)回转到0°;最后以速度9(中速)从0°转至180°,程序完成。舵机多方式运转的主程序流程图见图8-30。

978-7-111-49886-5-Chapter08-84.jpg

图8-29 在0°~180°按不同速度转动的控制函数流程图

978-7-111-49886-5-Chapter08-85.jpg

图8-30 舵机多方式运转的主程序流程图

4.C语言源程序

978-7-111-49886-5-Chapter08-86.jpg

978-7-111-49886-5-Chapter08-87.jpg

978-7-111-49886-5-Chapter08-88.jpg

978-7-111-49886-5-Chapter08-89.jpg

978-7-111-49886-5-Chapter08-90.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈