舵机控制原理
舵机工作原理与控制方法

舵机工作原理与控制方法舵机是一种用于控制机械装置的电机,它可以通过控制信号进行位置或角度的精确控制。
在舵机的工作原理和控制方法中,主要涉及到电机、反馈、控制电路和控制信号四个方面。
一、舵机的工作原理舵机的核心部件是一种称为可变电容的设备,它可以根据控制信号的波形来改变电容的值。
舵机可分为模拟式和数字式两种类型。
以下是模拟式舵机的工作原理:1.内部结构:模拟式舵机由电机、测速电路、可变电容和驱动电路组成。
2.基准电压:舵机工作时,系统会提供一个用于参考的基准电压。
3.控制信号:通过控制信号的波形的上升沿和下降沿来确定舵机的角度。
4.反馈:舵机内部的测速电路用于检测当前位置,从而实现位置的精确控制。
5.驱动电路:根据测速电路的反馈信号来控制电机的转动方向和速度,从而实现角度的调整。
二、舵机的控制方法舵机的控制方法一般采用脉冲宽度调制(PWM)信号来实现位置或角度的控制。
以下是舵机的两种常见控制方法:1.脉宽控制(PWM):舵机的控制信号是通过控制信号的脉冲宽度来实现的。
通常情况下,舵机的控制信号由一系列周期为20毫秒(ms)的脉冲组成,脉冲的高电平部分的宽度决定了舵机的位置或角度。
典型的舵机控制信号范围是1ms到2ms,其中1ms对应一个极限位置,2ms对应另一个极限位置,1.5ms对应中立位置。
2.串行总线(如I2C或串行通信):一些舵机还支持通过串行总线进行控制,这些舵机通常具有内置的电路来解码接收到的串行信号,并驱动电机转动到相应的位置。
这种控制方法可以实现多个舵机的同时控制,并且可以在不同的控制器之间进行通信。
三、舵机的控制电路与控制信号1.控制电路:舵机的控制电路通常由微控制器(如Arduino)、驱动电路和电源组成。
微控制器用于生成控制信号,驱动电路用于放大和处理控制信号,电源则为舵机提供所需的电能。
2.控制信号的生成:控制信号可以通过软件或硬件生成。
用于舵机的软件库通常提供一个函数来方便地生成适当的控制信号。
舵机的控制方式和工作原理介绍

舵机的控制方式和工作原理介绍舵机是一种常见的电动执行元件,广泛应用于机器人、遥控车辆、模型飞机等领域。
它通过电信号控制来改变输出轴的角度,实现精准的位置控制。
本文将介绍舵机的控制方式和工作原理。
一、舵机的结构和工作原理舵机的基本结构包括电机、减速装置、控制电路以及输出轴和舵盘。
电机驱动输出轴,减速装置减速并转动输出轴,而控制电路则根据输入信号来控制电机的转动或停止。
舵机的主要工作原理是通过PWM(脉宽调制)信号来控制。
PWM信号是一种周期性的方波信号,通过调整占空比即高电平的时间来控制舵机的位置。
通常情况下,舵机所需的控制信号频率为50Hz,即每秒50个周期,而高电平的脉宽则决定了输出轴的角度。
二、舵机的控制方式舵机的控制方式主要有模拟控制和数字控制两种。
1. 模拟控制模拟控制是指通过改变输入信号电压的大小,来控制舵机输出的角度。
传统的舵机多采用模拟控制方式。
在模拟控制中,通常将输入信号电压的范围设置在0V至5V之间,其中2.5V对应于舵机的中立位置(通常为90度)。
通过改变输入信号电压的大小,可以使舵机在90度以内左右摆动。
2. 数字控制数字控制是指通过数字信号(如脉宽调制信号)来控制舵机的位置。
数字控制方式多用于微控制器等数字系统中。
在数字控制中,舵机通过接收来自微控制器的PWM信号来转动到相应位置。
微控制器根据需要生成脉宽在0.5ms至2.5ms之间变化的PWM信号,通过改变脉宽的占空比,舵机可以在0度至180度的范围内进行精确的位置控制。
三、舵机的工作原理舵机的工作原理是利用直流电机的转动来驱动输出轴的运动。
当舵机接收到控制信号后,控制电路将信号转换为电机驱动所需的功率。
电机驱动输出轴旋转至对应的角度,实现精准的位置控制。
在舵机工作过程中,减速装置的作用非常重要。
减速装置可以将电机产生的高速旋转转换为较低速度的输出轴旋转,提供更大的扭矩输出。
这样可以保证舵机的运动平稳且具有较大的力量。
四、舵机的应用领域舵机以其精准的位置控制和力矩输出,广泛应用于各种领域。
舵机的工作原理

舵机的工作原理引言概述:舵机是一种常见的电机控制装置,广泛应用于机器人、遥控模型、航空模型等领域。
它的工作原理是通过接收控制信号,控制电机的转动角度,从而实现精确的位置控制。
本文将详细介绍舵机的工作原理。
一、电机驱动部分1.1 电机类型舵机常用的电机类型有直流电机和步进电机。
直流电机具有转速高、输出扭矩大的特点,适用于需要快速响应和高扭矩输出的应用场景。
而步进电机则具有精确控制位置的能力,适用于需要高精度定位的场合。
1.2 电机驱动电路舵机的电机驱动电路通常由电机驱动芯片和功率放大器组成。
电机驱动芯片负责接收控制信号,并将其转化为电机的转动角度。
功率放大器则负责驱动电机,提供足够的电流和电压,以确保电机能够正常工作。
1.3 控制信号舵机的控制信号通常采用脉冲宽度调制(PWM)信号。
控制信号的脉冲宽度决定了舵机的转动角度,通常以周期为20ms的方波信号为基准,通过改变高电平的脉冲宽度来控制舵机的位置。
二、反馈传感器部分2.1 位置反馈舵机通常内置有位置反馈传感器,用于实时监测电机的转动角度。
位置反馈传感器可以是光电编码器、霍尔传感器等,通过检测转子的位置变化来反馈给控制系统,以实现闭环控制。
2.2 电流反馈除了位置反馈外,舵机还可以通过电流传感器来实现电流反馈。
电流反馈可以监测电机的负载情况,以避免过载或过电流的情况发生,并保护舵机的安全运行。
2.3 温度反馈舵机还可以通过温度传感器来实现温度反馈。
温度反馈可以监测舵机的工作温度,一旦温度过高,就可以及时采取措施进行散热或降低负载,以保护舵机的正常运行。
三、控制算法部分3.1 位置控制算法舵机的位置控制算法通常采用PID控制算法。
PID控制算法通过不断调整舵机的控制信号,使得实际位置与目标位置之间的误差最小化,从而实现精确的位置控制。
3.2 速度控制算法除了位置控制外,舵机还可以实现速度控制。
速度控制算法通常基于位置控制算法的基础上,通过对位置误差的微分来计算速度指令,从而实现对舵机转速的控制。
舵机速度控制原理

舵机速度控制原理一、简介舵机是一种常见的电机装置,用于控制机器人或其他设备的角度或位置。
舵机速度控制是指调节舵机旋转的速度,使其能够按照预定的速度进行移动。
本文将深入探讨舵机速度控制的原理及相关知识。
二、舵机基本原理舵机的基本原理是通过提供电流来驱动电机转动,同时通过电子电路控制电机的角度。
舵机通常由一个电机、一个位置传感器和一个电子电路组成。
当电流通过电机时,电机开始旋转。
位置传感器会监测电机的角度,并将这一信息传输给电子电路。
电子电路会根据接收到的角度信号,控制电机的转动,使其停留在特定的位置。
三、舵机速度控制原理舵机速度控制是在舵机基本原理的基础上,通过控制电机旋转的速度来实现的。
下面将介绍舵机速度控制的原理和实现方法。
1. PWM信号控制舵机速度的控制是通过改变PWM信号来实现的。
PWM即脉宽调制信号,它的工作原理是通过改变信号的脉冲宽度来控制电机的转速。
舵机所接收的PWM信号通常是一个周期为20ms的方波信号,脉冲宽度在0.5ms到2.5ms之间,其中1.5ms为中间位置。
脉冲宽度越大,舵机转动的角度也越大,速度也就越快。
2. 舵机控制电路为了实现舵机的速度控制,需要添加一个舵机控制电路。
舵机控制电路通常由微控制器、驱动电路和PWM信号发生器组成。
微控制器负责接收输入的速度指令,并将其转换成相应的PWM信号。
驱动电路负责放大电流并驱动电机转动。
PWM信号发生器则用于生成PWM信号,并将其发送给舵机。
3. 控制算法舵机速度控制的实现还需要控制算法的支持。
常见的控制算法有以下几种:•开环控制:根据速度指令直接控制PWM信号的脉冲宽度。
这种方法简单但不够准确,容易受到外界干扰而导致误差增大。
•闭环控制:根据速度指令和实际转速的差异,通过调整PWM信号来控制舵机的速度。
闭环控制能够更精确地控制舵机的速度,但需要额外的位置传感器来监测实际转速。
•PID控制:PID控制是一种常用的闭环控制算法,通过比较实际转速和目标转速的差异,计算出一个修正量,再通过调整PWM信号的脉冲宽度来控制舵机的速度。
舵机角度控制原理

舵机角度控制原理
舵机是一种常见的电机驱动装置,用于控制物体的角度位置。
它由电机、减速装置和反馈控制系统组成,通过控制电机的旋转方向和速度,以实现对舵机输出角度的控制。
舵机的控制原理主要包括以下几个方面:
1. PWM信号控制:舵机通常使用PWM(脉宽调制)信号进
行控制。
PWM信号的高电平时间决定了舵机输出角度的位置,通常情况下,1ms的高电平时间代表舵机输出角度为0度,
2ms的高电平时间代表舵机输出角度为180度。
控制系统通过
改变PWM信号的高电平时间,可以实现对舵机输出角度的控制。
2. 位置反馈:舵机一般都内置了位置反馈装置,通常采用电位器或编码器来实现。
通过位置反馈装置,控制系统可以实时监测舵机的输出角度,从而提供给反馈控制系统进行比较和调整。
这样可以保证舵机输出角度的准确性和稳定性。
3. PID控制算法:PID控制算法是一种常用的控制算法,用于
实现舵机输出角度的精确控制。
PID控制算法根据当前输出角
度与目标输出角度之间的差异,计算出一个控制量,用于调节舵机的电机驱动电压或电流。
PID控制算法可以根据具体应用
的需求进行调优,以实现良好的控制性能。
总结起来,舵机角度控制的原理主要是通过PWM信号控制舵
机的输出角度,借助位置反馈装置实现对输出角度的实时监测
和调整,使用PID控制算法对舵机的驱动电压或电流进行调节,以实现精确且稳定的角度控制。
舵机的控制方式和工作原理介绍

舵机的控制方式和工作原理介绍舵机是一种常见的电动执行器,广泛应用于机械设备、机器人、航模等领域。
它通过接收控制信号来调节输出轴的角度,实现精确的位置控制。
本文将介绍舵机的控制方式和工作原理,供读者参考。
一、PWM控制方式PWM(Pulse Width Modulation)控制是舵机最常用的控制方式之一。
它通过改变控制信号的脉宽来控制舵机的角度。
具体来说,一种典型的PWM控制方式是使用50Hz的周期性信号,脉宽为0.5~2.5ms的方波信号,其中0.5ms对应的是舵机的最小角度,2.5ms对应的是舵机的最大角度。
PWM控制方式的实现比较简单,可以使用单片机、微控制器或者专用的PWM模块来生成PWM信号。
一般情况下,控制信号的频率为50Hz,也可以根据实际需求进行调整。
通过调节控制信号的脉宽,可以精确地控制舵机的角度。
二、模拟控制方式模拟控制方式是舵机的另一种常用控制方式。
它通过改变输入信号的电压值来控制舵机的角度。
典型的模拟控制方式是使用0~5V的电压信号,其中0V对应的是舵机的最小角度,5V对应的是舵机的最大角度。
模拟控制方式的实现需要使用DAC(Digital-to-Analog Converter)将数字信号转换为相应的模拟电压信号。
通过改变模拟电压的大小,可以控制舵机的角度。
需要注意的是,模拟控制方式对输入信号的精度要求较高,不能容忍较大的误差。
三、数字信号控制方式数字信号控制方式是近年来舵机控制的新发展,它使用串行通信协议(如UART、I2C、SPI等)将数字信号传输给舵机,并通过解析数字信号控制舵机的角度。
数字信号控制方式可以实现更高精度、更复杂的控制功能,适用于一些对角度精度要求较高的应用。
数字信号控制方式的实现需要使用带有相应通信协议支持的控制器或者模块,通过编程来实现对舵机的控制。
在这种控制方式下,控制器可以同时控制多个舵机,可以实现多轴运动控制的功能。
另外,数字信号控制方式还可以支持PID控制和反馈控制等高级控制算法。
舵机工作原理与控制方法

舵机工作原理与控制方法舵机是一种常见的机电一体化设备,用于控制终端设备的角度或位置,广泛应用于遥控模型、机器人、自动化设备等领域。
下面将详细介绍舵机的工作原理和控制方法。
一、舵机工作原理:舵机的工作原理可以简单归纳为:接收控制信号-》信号解码-》电机驱动-》位置反馈。
1.接收控制信号舵机通过接收外部的控制信号来控制位置或角度。
常用的控制信号有脉宽调制(PWM)信号,其脉宽范围一般为1-2毫秒,周期为20毫秒。
脉宽与控制的位置或角度呈线性关系。
2.信号解码接收到控制信号后,舵机内部的电路会对信号进行解析和处理。
主要包括解码脉宽、信号滤波和信号放大等步骤。
解码脉宽:舵机会将输入信号的脉宽转换为对应的位置或角度。
信号滤波:舵机通过滤波电路来消除控制信号中的噪声,使得控制稳定。
信号放大:舵机将解码后的信号放大,以提供足够的电流和功率来驱动舵机转动。
3.电机驱动舵机的核心部件是电机。
接收到解码后的信号后,舵机会驱动电机转动。
电机通常是直流电机或无刷电机,通过供电电压和电流的变化控制转动速度和力矩。
4.位置反馈舵机内部通常搭载一个位置传感器,称为反馈装置。
该传感器能够感知电机的转动角度或位置,并反馈给控制电路。
控制电路通过与目标位置或角度进行比较,调整电机的驱动信号,使得电机逐渐趋近于目标位置。
二、舵机的控制方法:舵机的控制方法有脉宽控制方法和位置控制方法两种。
1.脉宽控制方法脉宽控制方法是根据控制信号的脉宽来控制舵机的位置或角度。
控制信号的脉宽和位置或角度之间存在一定的线性关系。
一般来说,舵机收到脉宽为1毫秒的信号时会转动到最左位置,收到脉宽为2毫秒的信号时会转动到最右位置,而脉宽为1.5毫秒的信号舵机则会停止转动。
2.位置控制方法位置控制方法是根据控制信号的数值来控制舵机的位置或角度。
与脉宽控制方法不同,位置控制方法需要对控制信号进行数字信号处理。
数值范围一般为0-1023或0-4095,对应着舵机的最左和最右位置。
舵机速度控制原理

舵机速度控制原理舵机是一种常见的电机,主要用于控制机器人、模型船、飞机等设备的运动。
舵机速度控制是控制舵机转动速度的一种技术,可以实现精确的运动控制。
本文将详细介绍舵机速度控制原理。
一、舵机基础知识1. 舵机结构舵机由电机、减速器、位置反馈装置、控制电路和输出轴组成。
其中,电机通过减速器将高速旋转转换为低速高扭矩输出,位置反馈装置可以测量输出轴位置,并将其反馈给控制电路,从而实现精确的位置控制。
2. 舵机工作原理当输入PWM信号时,舵机会根据信号占空比来确定输出轴的位置。
PWM信号周期一般为20ms,占空比范围为0-100%。
当占空比为0%时,输出轴处于最左侧;当占空比为50%时,输出轴处于中心位置;当占空比为100%时,输出轴处于最右侧。
二、舵机速度控制原理1. PWM信号频率与周期PWM信号频率指每秒钟PWM信号重复出现的次数。
PWM信号周期指PWM信号一次完整的周期所需要的时间。
一般来说,PWM信号频率越高,控制精度越高,但同时也会增加计算负担和电路复杂度。
PWM信号周期越短,输出轴转动速度就越快。
2. 舵机速度控制方法舵机速度控制可以通过改变PWM信号占空比来实现。
当占空比较小时,输出轴转动速度较慢;当占空比较大时,输出轴转动速度较快。
因此,可以通过改变PWM信号占空比的大小来控制舵机的转动速度。
3. 舵机加减速控制方法为了实现更加精确的运动控制,可以采用舵机加减速控制方法。
该方法主要分为两个阶段:加速阶段和匀速阶段。
在加速阶段中,PWM信号占空比逐渐增大,输出轴转动速度逐渐增快;在匀速阶段中,PWM信号占空比保持不变,输出轴转动速度保持恒定。
当需要停止时,则采用减速阶段,在该阶段中PWM信号占空比逐渐减小,输出轴转动速度逐渐减慢,直到停止。
三、舵机速度控制电路设计1. 舵机速度控制电路原理图舵机速度控制电路主要由PWM信号发生器、加减速电路、H桥驱动电路和舵机组成。
其中,PWM信号发生器用于产生PWM信号;加减速电路用于实现舵机加减速控制;H桥驱动电路用于控制输出轴的转向;舵机则是被控制的对象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
舵机的相关原理与控制原理1. 什么是舵机:在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。
舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。
舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。
目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普遍。
舵机是一种俗称,其实是一种伺服马达。
还是看看具体的实物比较过瘾一点:2.其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。
它内部有一个基准电路,产生周期为20ms,宽度为1.5m s的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。
最后,电压差的正负输出到电机驱动芯片决定电机的正反转。
当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。
当然我们可以不用去了解它的具体工作原理,知道它的控制原理就够了。
就象我们使用晶体管一样,知道可以拿它来做开关管或放大管就行了,至于管内的电子具体怎么流动是可以完全不用去考虑的。
3.舵机的控制:舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。
以180度角度伺服为例,那么对应的控制关系是这样的:0.5ms--------------0度;1.0ms------------45度;1.5ms------------90度;2.0ms-----------135度;2.5ms-----------180度;请看下形象描述吧:这只是一种参考数值,具体的参数,请参见舵机的技术参数。
小型舵机的工作电压一般为4.8V或6V,转速也不是很快,一般为0.22/60度或0.18/60度,所以假如你更改角度控制脉冲的宽度太快时,舵机可能反应不过来。
如果需要更快速的反应,就需要更高的转速了。
要精确的控制舵机,其实没有那么容易,很多舵机的位置等级有1024个,那么,如果舵机的有效角度范围为180度的话,其控制的角度精度是可以达到180/1024度约0.18度了,从时间上看其实要求的脉宽控制精度为2000/1024us约2us。
如果你拿了个舵机,连控制精度为1度都达不到的话,而且还看到舵机在发抖。
在这种情况下,只要舵机的电压没有抖动,那抖动的就是你的控制脉冲了。
而这个脉冲为什么会抖动呢?当然和你选用的脉冲发生器有关了。
一些前辈喜欢用555来调舵机的驱动脉冲,如果只是控制几个点位置伺服好像是可以这么做的,可以多用几个开关引些电阻出来调占空比,这么做简单吗,应该不会啦,调试应该是非常麻烦而且运行也不一定可靠的。
其实主要还是他那个年代,单片机这东西不流行呀,哪里会哟!使用传统单片机控制舵机的方案也有很多,多是利用定时器和中断的方式来完成控制的,这样的方式控制1个舵机还是相当有效的,但是随着舵机数量的增加,也许控制起来就没有那么方便而且可以达到约2微秒的脉宽控制精度了。
听说AVR也有控制32个舵机的试验板,不过精度能不能达到2微秒可能还是要泰克才知道了。
其实测试起来很简单,你只需要将其控制信号与示波器连接,然后让试验板输出的舵机控制信号以2微秒的宽度递增。
为什么FPPA就可以很方便地将脉宽的精度精确地控制在2微秒甚至2微秒一下呢。
主要还是delay memory这样的具有创造性的指令发挥了功效。
该指令的延时时间为数据单元中的立即数的值加1个指令周期(数据0出外,详情请参见delay指令使用注意事项)因为是8位的数据存储单元,所以memory中的数据为(0~255),记得前面有提过,舵机的角度级数一般为1024级,所以只用一个存储空间来存储延时参数好像还不够用的,所以我们可以采用2个内存单元来存放舵机的角度伺服参数了。
所以这样一来,我们可以采用这样的软件结构了:舵机驱动的应用场合:1. 高档遥控仿真车,至少得包括左转和右转功能,高精度的角度控制,必然给你最真实的驾车体验.2. 多自由度机器人设计,为什么日本人设计的机器人可以上万RMB的出售,而国内设计的一些两三千块也卖不出去呢,还是一个品质的问题.3. 多路伺服航模控制,电动遥控飞机,油动遥控飞机,航海模型等用单片机PWM信号进行舵机控制在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。
舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。
舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。
其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。
它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。
最后,电压差的正负输出到电机驱动芯片决定电机的正反转。
当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。
图1舵机的控制要求舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置。
一般舵机的控制要求如图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是硬件连接图。
图3PWA信号的计数和输出电路基于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°)线性度较好。