历史上的今天
返回首页

历史上的今天

今天是:2025年01月26日(星期日)

2021年01月26日 | 基于51单片机的舵机控制

2021-01-26 来源:eefocus

简介:基于单片机的舵机控制方法具有简单、精度高、成本低、体积小的特点,并可根据不同的舵机数量加以灵活应用


在机器人机电控制统中,舵机控制效果是性能的重要影响因素 舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。

基于单片机的舵机控制方法具有简单、精度高、成本低、体积小的特点,并可根据不同的舵机数量加以灵活应用


在机器人机电控制系统中,舵机控制效果是性能的重要影响因素 舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口


舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统 其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压 它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出 最后,电压差的正负输出到电机驱动芯片决定电机的正反转 当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动 舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置 一般舵机的控制要求如图1所示

图1 舵机的控制要求


单片机实现舵机转角控制


可以使用FPGA、模拟电路、单片机来产生舵机的控制信号,但FPGA成本高且电路复杂 对于脉宽调制信号的脉宽变换,常用的一种方法是采用调制信号获取有源滤波后的直流电压,但是需要50Hz(周期是20ms)的信号,这对运放器件的选择有较高要求,从电路体积和功耗考虑也不易采用 5mV以上的控制电压的变化就会引起舵机的抖动,对于机载的测控系统而言,电源和其他器件的信号噪声都远大于5mV,所以滤波电路的精度难以达到舵机的控制精度要求


也可以用单片机作为舵机的控制单元,使PWM信号的脉冲宽度实现微秒级的变化,从而提高舵机的转角精度 单片机完成控制算法,再将计算结果转化为 PWM信号输出到舵机,由于单片机系统是一个数字系统,其控制信号的变化完全依靠硬件计数,所以受外界干扰较小,整个系统工作可靠


单片机系统实现对舵机输出转角的控制,必须首先完成两个任务:首先是产生基本的PWM周期信号,本设计是产生20ms的周期信号;其次是脉宽的调整,即单片机模拟PWM信号的输出,并且调整占空比 当系统中只需要实现一个舵机的控制,采用的控制方式是改变单片机的一个定时器中断的初值,将20ms分为两次中断执行,一次短定时中断和一次长定时中断 这样既节省了硬件电路,也减少了软件开销,控制系统工作效率和控制精度都很高


具体的设计过程:


例如想让舵机转向左极限的角度,它的正脉冲为2ms,则负脉冲为20ms-2ms=18ms,所以开始时在控制口发送高电平,然后设置定时器在2ms后发生中断,中断发生后,在中断程序里将控制口改为低电平,并将中断时间改为18ms,再过18ms进入下一次定时中断,再将控制口改为高电平,并将定时器初值改为2ms,等待下次中断到来,如此往复实现PWM信号输出到舵机 用修改定时器中断初值的方法巧妙形成了脉冲信号,调整时间段的宽度便可使伺服机灵活运动


为保证软件在定时中断里采集其他信号,并且使发生PWM信号的程序不影响中断程序的运行(如果这些程序所占用时间过长,有可能会发生中断程序还未结束,下次中断又到来的后果),所以需要将采集信号的函数放在长定时中断过程中执行,也就是说每经过两次中断执行一次这些程序,执行的周期还是20ms 软件流程如图2所示

图2 产生PWM信号的软件流程


如果系统中需要控制几个舵机的准确转动,可以用单片机和计数器进行脉冲计数产生PWM信号


脉冲计数可以利用51单片机的内部计数器来实现,但是从软件系统的稳定性和程序结构的合适性看,宜使用外部的计数器,还可以提高CPU的工作效率 实验后从精度上考虑,对于FUTABA系列的接收机,当采用1MHz的外部晶振时,其控制电压幅值的变化为0.6mV,而且不会出现误差积累,可以满足控制舵机的要求 最后考虑数字系统的离散误差,经估算误差的范围在±0.3%内,所以采用单片机和8253、8254这样的计数器芯片的PWM信号产生电路是可靠的 图3是硬件连接图

图3 PWA信号的计数和输出电路


基于8253产生PWM信号的程序主要包括三方面内容:一是定义8253寄存器的地址,二是控制字的写入,三是数据的写入 软件流程如图4所示,具体代码如下


//关键程序及注释:


//定时器T0中断,向8253发送控制字和数据


void T0Int() interrupt 1


{


TH0 = 0xB1;


TL0 = 0xE0; //20ms的时钟基准


//先写入控制字,再写入计数值


SERVO0 = 0x30; //选择计数器0,写入控制字


PWM0 = BUF0L; //先写低,后写高


PWM0 = BUF0H;


SERVO1 = 0x70; //选择计数器1,写入控制字


PWM1 = BUF1L;


PWM1 = BUF1H;


SERVO2 = 0xB0; //选择计数器2,写入控制字


PWM2 = BUF2L;


PWM2 = BUF2H;


}

图4 基于8253产生PWA信号的软件流程


当系统的主要工作任务就是控制多舵机的工作,并且使用的舵机工作周期均为20ms时,要求硬件产生的多路PWM波的周期也相同 使用51单片机的内部定时器产生脉冲计数,一般工作正脉冲宽度小于周期的1/8,这样可以在1个周期内分时启动各路PWM波的上升沿,再利用定时器中断T0确定各路PWM波的输出宽度,定时器中断T1控制20ms的基准时间


第1次定时器中断T0按20ms的 1/8设置初值,并设置输出I/O口,第1次T0定时中断响应后,将当前输出I/O口对应的引脚输出置高电平,设置该路输出正脉冲宽度,并启动第2次定时器中断,输出I/O口指向下一个输出口 第2次定时器定时时间结束后,将当前输出引脚置低电平,设置此中断周期为20ms的1/8减去正脉冲的时间,此路 PWM信号在该周期中输出完毕,往复输出 在每次循环的第16次(2×8=16)中断实行关定时中断T0的操作,最后就可以实现8路舵机控制信号的输出


也可以采用外部计数器进行多路舵机的控制,但是因为常见的8253、8254芯片都只有3个计数器,所以当系统需要产生多路PWM信号时,使用上述方法可以减少电路,降低成本,也可以达到较高的精度 调试时注意到由于程序中脉冲宽度的调整是靠调整定时器的初值,中断程序也被分成了8个状态周期,并且需要严格的周期循环,而且运行其他中断程序代码的时间需要严格把握


在实际应用中,采用51单片机简单方便地实现了舵机控制需要的PWM信号 对机器人舵机控制的测试表明,舵机控制系统工作稳定,PWM占空比 (0.5~2.5ms 的正脉冲宽度)和舵机的转角(-90°~90°)线性度较好


推荐阅读

史海拾趣

ASC Capacitors公司的发展小趣事

随着公司规模的不断扩大和产品质量的不断提升,ASC Capacitors开始积极拓展市场。公司不仅在国内市场上取得了显著成绩,还成功打入国际市场,产品远销海外。通过与全球知名企业的合作,ASC Capacitors进一步提升了品牌知名度和影响力,成为了电容器行业的佼佼者。

BNS Solutions公司的发展小趣事

随着电子行业的不断发展,新技术和新应用层出不穷。BNS Solutions公司紧跟时代步伐,不断加大研发投入,推动技术创新。公司团队不断探索新技术、新材料的应用,开发出了一系列具有创新性和前瞻性的电子产品。这些产品不仅提高了行业的整体技术水平,还引领了行业变革的潮流。通过持续创新,BNS Solutions公司在电子行业中保持了领先地位,成为了行业的佼佼者。

CWIND公司的发展小趣事

在激烈的市场竞争中,CWIND公司始终坚持以客户为中心的服务理念。公司建立了完善的客户服务体系,为客户提供从产品咨询、购买到售后服务的全方位支持。同时,公司还注重品牌建设和宣传推广工作。通过加大广告投放力度、举办品牌活动等方式,CWIND逐渐提升了品牌知名度和美誉度。在消费者心中树立起了良好的品牌形象和口碑效应。

东科半导体(DK)公司的发展小趣事

随着公司产品的不断升级和市场需求的不断增长,东科半导体(DK)公司开始积极拓展国内外市场。公司加强与全球知名企业的合作,产品成功进入苹果、华为、OPPO等一线品牌的供应链。同时,东科还积极参加国际电子展会和论坛,展示公司的最新技术和产品,提升了公司的品牌知名度和影响力。

FASTRAX公司的发展小趣事

随着公司业务的不断发展,FASTRAX开始积极拓展海外市场,并与多家国际知名企业建立了战略合作关系。通过与这些企业的合作,FASTRAX不仅获得了更多的市场份额,也学习到了先进的管理经验和技术知识。这些合作经验为FASTRAX的持续发展奠定了坚实的基础。

思瑞浦微电子科技(3PEAK INCORPORATED)公司的发展小趣事

2012年,瑞士公司u-blox宣布以1300万欧元收购FASTRAX 100%的股权。这一并购事件引起了业界的广泛关注。u-blox看中了FASTRAX在GPS接收模块领域的领先地位和技术实力,希望通过并购加强其在定位市场的竞争优势。并购完成后,FASTRAX成为u-blox集团的重要一员,继续为全球客户提供优质的GPS产品和服务。

问答坊 | AI 解惑

寻求高手

有个单子要交,需要用到单片机,高薪寻求高手合作。有意请加QQ:85288499,请注明:单片机…

查看全部问答>

verilog英文版教材

verilog英文版教材 …

查看全部问答>

逆变电源

一款简单的逆变电路…

查看全部问答>

多功能数码手套

这是专为I玩转T数码产品而设计的手套,这个皮手套在拇指、食指和中指上有特别设计。 拇指的指套是用魔术贴横向粘住的,当需要操作闹钟,不,手机等设备时,可以撕开,露出拇指,方便操作。食指的指套上就只是多了一层防滑皮 中指上则有一个小钮, ...…

查看全部问答>

问个比较弱的问题~

没有GUI的根文件系统,能不能使用中文?如果能怎么加?…

查看全部问答>

我有一个WINDOWS MOBILE的PDA,用的三星CPU,有高手能把这个系统改成WINCE.NET么?当然是要付费的,价钱商量.

我有一个WINDOWS MOBILE的PDA,用的三星CPU,有高手能把这个系统改成WINCE.NET么?当然是要付费的,价钱商量. 联系我QQ:86163938  MSN:myfm3a@hotmail.com 急…

查看全部问答>

DirectDraw和DirectShow如何协调,正十分迷茫中

我开发一个游戏,采取独占模式,想在DIRECTDRAWSURFACE表面开辟一块区域用于播放视频,现在是没有办法看见视频播放的画面, 但是如果我把DirectDraw相关的代码去掉,只保留播放视频的代码,视频是能够正常播放的。另外请教高手知道如何使用MediaPl ...…

查看全部问答>

变频恒压供水的基本知识

一、变频恒压供水的特点1. 节能,可以实现节电20%-40%,能实现绿色用电。2. 占地面积小,投入少,效率高。3. 配置灵活,自动化程度高,功能齐全,灵活可靠。4. 运行合理,由于是软起和软停,不但可以消除水锤效应,而且电机轴 ...…

查看全部问答>

购买或者黑金FPGA开发板换购ARM开发板,野火,神舟均可,多退少补。

我的FPGA板子是今年4月份在黑金官方淘宝店买的 RMB399 换购野火开发板或者神舟开发板。 不愿换购的话。 RMB 270 收野火(+液晶+jlink) RMB 200收神舟(+液晶+jlink) 可以的话 加QQ 411101807 这个论坛不常上,请直接加QQ,学生党,非诚 ...…

查看全部问答>

MSP430G2开发板 ,LaunchPad实验板 元件 学习 TPS77301DGK品牌TI封装MSOP8

MSP430G2开发板 ,LaunchPad实验板 元件 学习 TPS77301DGK品牌TI封装MSOP8 大概:TPS77301DGK升降压稳压管复位IC供应小结 1.5-- 5.5v 常用的电源电压监督员(中职),或重置输出电压。 可能相关 :当前级接上高阻抗的后级它主要提供适切的输出电压 ...…

查看全部问答>