基于51单片机的舵机控制

发布者:灵感狂舞最新更新时间:2021-01-26 来源: eefocus关键字:51单片机  舵机控制  PWM信号 手机看文章 扫描二维码
随时随地手机看文章

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


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

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


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


舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统 其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压 它内部有一个基准电路,产生周期为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°)线性度较好


关键字:51单片机  舵机控制  PWM信号 引用地址:基于51单片机的舵机控制

上一篇:51单片机IO口的输入输出方式
下一篇:电热锅炉温度控制器的设计

推荐阅读最新更新时间:2024-11-19 20:56

基于51单片机的无线信号编解码技术研究
随着微电子、计算机信息技术的迅速发展,由单片机和无线传输模块组成的无线数据通信系统在石油、电力、水文、冶金、安防等行业的无线控制、数据采集、故障报警等诸多领域中得到越来越广泛的应用。而数据的编解码对于无线传输可靠性的影响举足轻重。目前编解码方式主要有硬件编解码和软件编解码两种。本文在对已有硬件及软件编解码技术研究的基础上,设计并通过STC89C516RD+单片机实现了一种以软件方式对传输数据编解码的方法。 1 现有的编解码技术 1.1 硬件编解码技术  目前有多种用于编码和解码的专用芯片,PT2262/PT2272是比较常用的一种。在通常的使用中,一般采用8位地址码和4位数据码,这时编码芯片PT2262和解码芯片PT2272的第1
[单片机]
基于<font color='red'>51单片机</font>的无线<font color='red'>信号</font>编解码技术研究
51单片机I/O口模拟串行通信实现方法
目前普遍采用的MCS51 和PIC 系列单片机通常只有一个(或没有)UART异步串行通信接口,在应用系统中若需要多个串行接口(例如在多机通信系统中,主机既要和从机通信又要和终端通信)的情况下,通常的方法是扩展一片8251 或 8250 通用同步/异步接收发送芯片(USART),需额外占用单片机I/O 资源。本文介绍一种用单片机普通I/O 口实现串行通信的方法,可在单片机的最小应用系统中实现与两个以上串行接口设备的多机通信。 1.串行接口的基本通信方式 串行接口的有异步和同步两种基本通信方式。异步通信采用用异步传送格式,如图1 所示。数据发送和接收均将起始位和停止位作为开始和结束的标志。在异步通信中,起始位占用一位(
[单片机]
<font color='red'>51单片机</font>I/O口模拟串行通信实现方法
如何在PIC单片机的GPIO引脚上生成PWM信号
PWM信号生成是每个嵌入式工程师工具库中的重要工具,它们非常适用于控制伺服电机位置,在转换器/逆变器中切换少量电源电子集成电路等许多应用,甚至用于简单的LED亮度控制。在pic 微控制器中, pwm 信号可以通过设置所需的寄存器使用比较、捕获和 pwm (ccp) 模块生成。 如果我们使用CCP模块,PIC16F877A 只能在引脚RC1和RC2产生PWM信号,由此我们可能会遇到需要更多引脚来实现PWM功能的情况。例如,我想控制6个RC伺服电机,CCP模块是不行的。于是在这种情况下,我们可以使用定时器模块对GPIO引脚进行编程以产生PWM信号,这样我们就可以产生尽可能多的PWM信号。还可以考虑其他硬件技术,比如使用多路复用器
[单片机]
如何在PIC单片机的GPIO引脚上生成<font color='red'>PWM</font><font color='red'>信号</font>
MCS-51单片机指令系统的寻址方式
1、寄存器寻址 寄存器寻址方式可用于访问选定寄存器区的8个工作寄存器R0~R7。由指令操作码的低3位指示所用的寄存器,寄存器A、B、DPTR和C位(位处理机的累加器)也可作为寻址的对象。 2、直接寻址 直接寻址是访问特殊功能寄存器的唯一方法。它也用于访问内部RAM(低128个字节)。采用直接寻址方式的指令是双字节指令,其中第一个字节是操作码,第二个字节是内部RAM或特殊功能寄存器的直接地址。 3、寄存器间接寻址 寄存器间接寻址方式可用于访问内部RAM或外部数据存储器。这种寻址方式是由指令指定某一寄存器的内容作为操作数的地址。 访问内部RAM或外部数据存储器的低256个字节时,可采用R0或R1作为间址寄存器。 4、立即寻址 采用
[单片机]
51单片机硬件知识:封装及参数介绍
看一个人,我们一般会看他的长相。同样,电子元件也要看长相,或者说是形壮,只是说法不一样,我们把它们的长相称为“封装”。 1.单片机的封装: 单片机的封装大概的可以分为:DIP(直插封装)、PLCC(贴片,引脚向内折起)、TQFP(贴片,引脚向外侧伸展)。对DIP封装的单片机的型号及管脚识别方法如下(对于所有的DIP封装的识别方法与此类同)。 对于DIP封装的单片机来说,在外壳正中央印有字(型号)的一面是它的正面,在单片机外壳的正面的一侧边有一个半月型的小坑,同时还有一个圆形的小坑在旁边。这两个标志说明离圆形小坑最近的管脚为单片机的1号管脚。把单片机印有型号的一侧朝上,1号管脚放在左手边,向右依次为2、3、4…20管脚,单片机
[单片机]
基于MCS51单片机的大屏幕LED显示屏高速控制方案
摘要:以MCS51系列单片机为例,介绍单片机对大屏幕LED显示屏的一种高速控制方案。单片机对LED显示屏的显示控制,一般是先从数据存储器读取数据,然后将数据写给LED点阵片。本方案的创新点是:用一条对外部数据存储器的读指令,同时完成对外部数据存储器读和对LED点阵片的写操作。本文详细介绍高速控制方案的电路设计,并简要提示软件编制的要点;最后介绍高速控制方案在大屏幕LED显示屏中的应用。 引言   LED显示屏的基本工作原理是动态扫描。显示控制的过程是先从数据存储器读得字模数据,再通过单片机的串行口或并行口将数据写给LED点阵片,然后再行扫描。   动态扫描方案和静态显示方案相比节省驱动元件,但要求刷新频率高于50 Hz,以避
[单片机]
基于MCS<font color='red'>51单片机</font>的大屏幕LED显示屏高速<font color='red'>控制</font>方案
51单片机定时器计数器原理以及应用(方波、pwm、脉冲计数、高电平脉宽测量)
1.TMOD定时器/计数器工作方式 寄存器 GATE=1时,定时器由INT和TR共同控制,用于测量脉宽; 2.TCON定时器/计数器控制寄存器 3. 2.应用示例: 2.1T0/T1控制外部引脚输出方波 1.设计思路:设置定时计数器工作在定时工作方式,在中断服务子程序中将需要输出方波信号的I/O引脚上的电平翻转即可。 2.仿真电路: 3.代码 2.2PWM波形输出 1.设计思路:51 单片机 可以使用一个定时计数器来控制产生波形的频率,用另外一个定时计数器来控制波形的占空波。 2.仿真原理图同1. 3.具体代码: 3.脉冲计数 1.设计思路:使用T0/T1进行计数时,当外部引脚上检查到一个脉冲
[单片机]
<font color='red'>51单片机</font>定时器计数器原理以及应用(方波、<font color='red'>pwm</font>、脉冲计数、高电平脉宽测量)
TMS320VC5402的HPI与51单片机的接口设计
0 引言 TMS320VC5402是TI公司推出的性价比极高的定点数字信号处理器(DSP)。它具有先进的多总线结构(三条16位数据存储器总线和一条程序存储器总线);其数据/程序寻址空间为1 M×16 bit: 内置4 k×16 bitP/DROM和16 k×16 bit-DARAM;此外,该DSP内含两个多通道缓冲串行口,一个8位并行与外部处理器通信的HPI口,2个16位定时器以及6通道DMA控制器;具有低功耗,适合电池供电设备等特点 。 51系列单片机是一种很经典的单片机。20多年来一直久盛不衰。而且Intel通过授权5l内核,目前已出现了很多第三方生产的51系列产品。这些产品一般都具有较高的时钟频率和较大的存储空间,而且还
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved