法律状态公告日
法律状态信息
法律状态
2019-03-05
授权
授权
2019-02-19
著录事项变更 IPC(主分类):G05B19/042 变更前: 变更后: 申请日:20160616
著录事项变更
2016-10-26
实质审查的生效 IPC(主分类):G05B19/042 申请日:20160616
实质审查的生效
2016-08-31
公开
公开
技术领域
本发明属于机器人应用控制领域,具体涉及一种基于52系列单片机的多路舵机控制方法。
背景技术
随着当今社会科技发展迅速,处理器的功能在不停的提升,性能不断的被优化,而在各行业应用了很多年的52系列的单片机由于没有自带pwm的端口,所以在很多领域的应用受到了很大的限制,尤其是机器人的领域,没有多路的pwm使得52系列单片机被挡在了多自由度机器人的门外;但是52系列单片机由于在价格和稳定性等方面的优势勉强没有被市场淘汰;如何将52系列单片机应用到在多机舵机的控制板上,进而降低成本成为一个急需解决的问题。
发明内容
发明目的:本发明针对上述现有技术存在的问题做出改进,即本发明公开了一种基于52系列单片机的多路舵机控制方法,其可以使没有pwm输出口的52系列单片机实现高精确度多路可调pwm波,可以利用这些可以调节的pwm波来控制多路舵机,使52系列的功能更加的完善。
技术方案:一种基于52系列单片机的多路舵机控制方法,包括 以下步骤:
(1)搭建控制框架,该控制框架包括:
T0中断模块:按照设定的中断顺序依次给T0定时器中需要控制的端口赋初值;
T1中断模块:按照设定的中断顺序依次给T1定时器中需要控制的端口赋初值;
定时器定时初值比较模块,用于判断T0定时器和T1定时器初值的大小,依据比较的结果更改低优先级的定时器的定时初值;
舵机控制模块,用来存放和改变T0定时器和T1定时器所需要控制的端口的定时初值;
(2)按照周期为20ms,脉冲宽度为0.5ms~2.5ms标准舵机进行定时时间分配,每路舵机的高电平持续时间为0.5ms~2.5ms,然后将需要控制的端口等分成多个端口组,并对该多个端口组进行排序,每一个端口组包括两个端口,该端口两个分别受T0定时器和T1定时器控制;
(3)将所有端口组的端口的电平变为低电平;
(4)对T0定时器和T1定时器进行初始化配置,同时T0定时器和T1定时器初始化的初值差小于0.5ms;
(5)对T0定时器和T1定时器进行赋值;
(51)通过T0中断模块控制TO定时器进入中断,将第一端口组中T0定时器控制的端口变为高电平,同时为T0定时器赋初值,T0定时器初值为舵机控制模块中此路端口对应的定时初值;
(52)通过T1中断模块控制T1定时器进入中断,将第一端口组中T1定时器控制的端口变为高电平,同时为T1定时器赋初值,T1定时器初值为舵机控制模块中此路端口对应的定时初值;
(53)通过定时器定时初值比较模块比较中步骤(51)得到的T0定时器初值和步骤(52)得到的T1定时器初值的大小,通过比较的结果改变低优先级T1定时器的高电平的初值
(531)若T0定时器初值大于T1定时器初值,则对T1定时器初值重新进行赋值,其值等于步骤(52)得到的T1定时器初值减去T1,T1的值为T0定时器进入中断时到赋初值开始时的时间;
(532)若T0定时器初值等于T1定时器初值,则对T1定时器初值重新进行赋值,其值等于步骤(52)得到的T1定时器初值减去T2,T2的值为T0定时器进入中断时到赋初值开始时的时间;
(532)若T0定时器初值小于T1定时器初值,则调换T0和T1的中断优先级,对T0定时器初值重新进行赋值,其值等于步骤(52)得到的T0定时器初值减去T3,T3的值为T1定时器进入中断时到赋初值开始时的时间;
(54)通过T0中断模块控制T0定时器进入中断,将第一端口组中T0定时器控制的端口由高电平改为低电平,同时为T0定时器进行二次赋值,T0定时器二次赋值等于2.5ms减去T0定时器初值;
(55)通过T1中断模块控制T1定时器进入中断,将第一端口组中T1定时器控制的端口由高电平变为低电平,并对T1定时器进行二次赋值,T1定时器二次赋值等于2.5ms-T1定时器初值;
(6)遍历所有的端口组,重复步骤(51)~(55),直到T0定时器和T1定时器中断关闭为止。
进一步地,步骤(2)中若所需要控制的端口的数量为奇数,多余的一路端口随机分配给T0定时器或T1定时器。
更进一步地,若所需要控制的端口的数量为奇数,多余出来一路端口不需要对初值进行比较。
有益效果:本发明公开的一种基于52系列单片机的多路舵机控制方法具有以下有益效果:
1、将价格低廉且稳定性好的52系列单片机应用到机器人控制领域,节约成本;
2、同时可以应用到其他需要pwm的领域;
3、对52单片机的应用范围进一步拓展。
具体实施方式:
下面对本发明的具体实施方式详细说明。
具体实施例1
一种基于52系列单片机的多路舵机控制方法,包括以下步骤:
(1)搭建控制框架,该控制框架包括:
T0中断模块:按照设定的中断顺序依次给T0定时器中需要控制的端口赋初值;
T1中断模块:按照设定的中断顺序依次给T1定时器中需要控制的端口赋初值;
定时器定时初值比较模块,用于判断T0定时器和T1定时器初值的大小,依据比较的结果更改低优先级的定时器的定时初值;
舵机控制模块,用来存放和改变T0定时器和T1定时器所需要控制的端口的定时初值;
(2)按照周期为20ms,脉冲宽度为0.5ms标准舵机进行定时时间分配,每路舵机的高电平持续时间为0.5ms,然后将需要控制的端口等分成多个端口组,并对该多个端口组进行排序,每一个端口组包括两个端口,该端口两个分别受T0定时器和T1定时器控制;
(3)将所有端口组的端口的电平变为低电平;
(4)对T0定时器和T1定时器进行初始化配置,同时T0定时器和T1定时器初始化的初值差小于0.5ms;
(5)对T0定时器和T1定时器进行赋值;
(51)通过T0中断模块控制TO定时器进入中断,将第一端口组中T0定时器控制的端口变为高电平,同时为T0定时器赋初值,T0定时器初值为舵机控制模块中此路端口对应的定时初值;
(52)通过T1中断模块控制T1定时器进入中断,将第一端口组中T1定时器控制的端口变为高电平,同时为T1定时器赋初值,T1定时器初值为舵机控制模块中此路端口对应的定时初值;
(53)通过定时器定时初值比较模块比较中步骤(51)得到的T0定时器初值和步骤(52)得到的T1定时器初值的大小,通 过比较的结果改变低优先级T1定时器的高电平的初值
(531)若T0定时器初值大于T1定时器初值,则对T1定时器初值重新进行赋值,其值等于步骤(52)得到的T1定时器初值减去T1,T1的值为T0定时器进入中断时到赋初值开始时的时间;
(532)若T0定时器初值等于T1定时器初值,则对T1定时器初值重新进行赋值,其值等于步骤(52)得到的T1定时器初值减去T2,T2的值为T0定时器进入中断时到赋初值开始时的时间;
(532)若T0定时器初值小于T1定时器初值,则调换T0和T1的中断优先级,对T0定时器初值重新进行赋值,其值等于步骤(52)得到的T0定时器初值减去T3,T3的值为T1定时器进入中断时到赋初值开始时的时间;
(54)通过T0中断模块控制T0定时器进入中断,将第一端口组中T0定时器控制的端口由高电平改为低电平,同时为T0定时器进行二次赋值,T0定时器二次赋值等于2.5ms减去步骤(53)得到的T0定时器初值;
(55)通过T1中断模块控制T1定时器进入中断,将第一端口组中T1定时器控制的端口由高电平变为低电平,并对T1定时器进行二次赋值,T1定时器二次赋值等于2.5ms-步骤(53)得到的T1定时器初值;
(6)遍历所有的端口组,重复步骤(51)~(55),直到T0定 时器和T1定时器中断关闭为止。
进一步地,步骤(2)中若所需要控制的端口的数量为奇数,多余的一路端口随机分配给T0定时器或T1定时器。
更进一步地,若所需要控制的端口的数量为奇数,多余出来一路端口不需要对初值进行比较。
具体实施例2
与具体实施例1大致相同,区别仅仅在于:
步骤(2)中按照周期为20ms,脉冲宽度为2.5ms标准舵机进行定时时间分配,每路舵机的高电平持续时间为2.5ms。
具体实施例3
与具体实施例1大致相同,区别仅仅在于:
步骤(2)中按照周期为20ms,脉冲宽度为1ms标准舵机进行定时时间分配,每路舵机的高电平持续时间为1ms。
上面对本发明的实施方式做了详细说明。但是本发明并不限于上述实施方式,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
机译: 用单片机的舵机语言编写程序的系统
机译: 一种实现多功能单片机和多功能单片机的方法
机译: 单片机及其控制方法以及具有该单片机的ic卡