舵机工作原理
舵机工作原理

舵机工作原理舵机是一种常用于控制机械装置角度的电子元件。
它通常用于模型制作、机器人技术、遥控器系统以及其他需要精确控制角度的应用中。
舵机能够根据输入的电信号来控制输出轴的位置,并能够维持在指定的位置上。
舵机的工作原理可以简单描述为电信号控制旋转角度。
舵机通常由一个直流电动机、一对齿轮和一个反馈控制系统组成。
当输入一个控制信号给舵机时,舵机会根据信号的波形来调整输出轴的位置。
具体来说,舵机的工作原理是通过PWM(脉冲宽度调制)信号来控制。
PWM信号是一种周期性的方波信号,其占空比(脉冲宽度与周期之比)决定了舵机的转动角度。
通常,舵机的控制信号周期为20ms,其中高电平持续时间(通常0.5-2.5ms)决定了舵机的角度。
舵机内部的直流电动机通过齿轮系统将旋转运动转化为线性运动。
舵机的输出轴上有一个凸轮,连接着一个反馈系统。
当输入控制信号时,舵机电路板会根据信号的占空比对电动机进行驱动。
电动机会旋转齿轮并移动凸轮,同时反馈传感器监测输出轴的位置,将信息回传给电路板。
电路板会根据反馈信息调整控制信号以使输出轴保持在指定角度。
舵机的工作原理还包括一个关键的概念:舵机的控制范围。
舵机通常有一个工作范围,即可以控制的角度范围。
舵机的控制范围由舵机的设计以及输入的控制信号决定。
一般而言,舵机的控制范围在0到180度之间,但也有一些舵机可以实现360度的连续旋转。
需要注意的是,舵机通常需要与外部电源和控制器相连才能正常工作。
外部电源提供电力,控制器提供PWM信号控制舵机的角度。
总结而言,舵机是一种通过电信号控制旋转角度的电子元件。
它的工作原理基于PWM信号控制电动机的转动,通过齿轮系统和反馈控制来实现精确的角度控制。
舵机的控制范围通常在0到180度之间,但也有一些舵机可以实现连续360度的旋转。
因此,舵机是许多机械装置和控制系统中不可或缺的重要组件。
舵机工作原理

引言概述:舵机是一种常用于机械控制系统中的装置,主要用于控制运动装置的旋转或线性运动。
它在航空、机械工程、汽车、无人机等领域中都有广泛的应用。
本文将详细介绍舵机的工作原理,包括其结构、原理、控制信号等方面的内容。
正文:一、舵机的基本结构舵机通常由电机、减速器、位置传感器和电子控制电路等组成。
1. 电机:舵机一般采用直流电机,包括转子和定子。
电机通过转动来控制舵机的位置。
2. 减速器:舵机中的减速器用于减小电机的转速,并通过齿轮和齿条等机械传动装置将转动转化为线性或旋转运动。
3. 位置传感器:舵机常用的位置传感器有光电传感器和磁性传感器等,用于测量舵机的位置并反馈给电子控制电路。
4. 电子控制电路:舵机的电子控制电路负责接收控制信号,并根据控制信号控制电机和减速器的运转。
二、舵机的工作原理1. 控制信号输入:舵机的工作由控制信号决定,控制信号一般为脉冲宽度调制(PWM)信号。
信号的脉宽决定了舵机的位置。
2. 位置控制:控制信号被电子控制电路接收后,经过一定的处理,电子控制电路会根据控制信号的脉宽决定舵机的位置。
3. 反馈控制:舵机的位置传感器会不断测量舵机的位置,并将测量结果反馈给电子控制电路。
电子控制电路通过与目标位置的比较,调整电机和减速器的运转,以实现舵机的稳定控制。
4. 输出控制:根据电子控制电路的控制信号,舵机的电机和减速器会运转,从而实现位置的控制。
三、舵机的控制信号1. 脉宽范围:舵机的控制信号通常具有一个特定的脉宽范围,一般为1ms到2ms之间。
脉宽的最小值和最大值对应舵机的最左和最右位置。
2. 中立位置:控制信号的脉宽为舵机的中立位置。
舵机通过将控制信号设置为中立位置,可以保持在中间位置不动。
3. 工作速度:舵机的工作速度受控制信号的脉宽变化速度影响,脉宽变化越快,舵机的响应速度越快。
4. 工作精度:舵机的工作精度由控制信号和位置传感器的精度共同决定,控制信号的精度越高,舵机的工作精度越高。
舵机的工作原理

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

舵机的工作原理介绍舵机是一种常见的电动机械驱动装置,广泛应用于遥控模型、机器人、无人机等领域。
舵机的工作原理是通过电路控制电机的转动,并通过一系列机械装置将旋转的运动转化为线性的运动,产生所需的输出力矩。
工作原理舵机的核心是一个直流电机,通常为有刷直流电机。
舵机内部由电机、减速装置和位置反馈装置组成。
其工作原理可以简单分为以下几个步骤:1. 控制信号输入控制信号是通过舵机的控制线输入的,控制线通常使用PWM信号控制。
PWM信号的频率通常为50Hz,控制脉宽的占空比决定了舵机的角度位置。
2. 位置反馈舵机内置一个位置反馈装置,用于检测舵机当前的角度位置。
位置反馈装置通常是一个旋转可变电阻或光电编码器。
3. 控制电路接收到控制信号后,控制电路会根据信号的脉宽来决定控制电机的方向和速度。
控制电路一般由芯片和一些电子元件组成,可以实现对电机的精确控制。
4. 电机驱动控制电路将控制信号转化为适合电机驱动的信号,通过驱动电路将电流传递给电机。
电机驱动通常采用H桥电路,可以实现电机的正反转。
5. 转动和输出力矩电机根据接收到的驱动信号进行转动,通过减速装置将电机的高速旋转转化为舵机输出杆的线性运动。
舵机输出杆的运动产生了力矩,可以控制外部装置的运动。
舵机的应用舵机因其精准的控制能力和可靠的性能,在许多领域得到了广泛应用。
1. 遥控模型舵机常用于遥控模型的控制,例如飞机的方向舵、升降舵,汽车的转向舵等。
舵机可以根据遥控信号实现模型的各种运动,提升遥控模型的趣味性和可玩性。
2. 机器人舵机在机器人领域中也有重要应用,可以控制机器人的肢体运动。
通过配合多个舵机的工作,可以实现机器人的各种复杂动作,如行走、抓取等。
3. 无人机在无人机领域,舵机被广泛用于控制无人机的旋翼和舵面。
舵机可以实现无人机的姿态调整,使其保持平衡和稳定飞行。
舵机的选择和使用注意事项选择合适的舵机对于系统的性能至关重要。
在选择舵机时,需要考虑以下几个因素:1. 动力需求舵机的工作电压和电流要符合系统的需求。
舵机工作原理

舵机工作原理舵机是一种常用于控制机械装置运动的设备,被广泛应用于无人机、机器人、车辆航模等领域。
它通过接收来自控制器的信号,控制舵机的位置和角度,从而实现对机械装置的精确控制。
本文将详细介绍舵机的工作原理和操作方式。
一、舵机的组成舵机由电机、减速器、控制电路和反馈机构组成。
1. 电机:舵机通常采用DC有刷电机作为驱动源。
直流电机的特点是转速高、响应快。
2. 减速器:舵机中的减速器主要用来减小电机输出轴的转速,增加扭矩输出。
常见的舵机减速器有齿轮减速器、行星减速器等。
3. 控制电路:舵机的控制电路是用来控制电机的转动方向和角度的关键部分。
控制电路通常采用H桥驱动电路来控制电机的正反转。
4. 反馈机构:舵机中的反馈机构用来实时检测舵机的位置和角度信息,并将其反馈给控制电路。
通常采用位置传感器(如光电编码器)或角度传感器(如霍尔效应传感器)来实现。
二、舵机的工作原理舵机通过控制电路接收外部信号,并通过电机和减速器转动输出轴来改变机械装置的位置或角度。
舵机工作原理的核心是控制电路中的位置控制回路和PID控制算法。
1. 位置控制回路:位置控制回路是舵机工作的基础。
它的主要任务是接收外部信号,将其转化为控制信号,并控制电机转动到相应的位置。
位置控制回路主要由控制芯片和位置传感器组成。
控制芯片负责解析控制信号,并将其转化为电机驱动信号。
位置传感器则实时监测舵机输出轴的位置,并将其反馈给反馈机构。
控制芯片根据反馈信号和目标位置信号的比较结果,调整电机的转动方向和速度,使得输出轴转动到目标位置。
2. PID控制算法:舵机的PID控制算法用于精确控制舵机输出轴的位置。
PID控制算法通过比较目标位置和实际位置的差异,产生一个误差信号,然后根据误差信号计算出控制信号。
PID控制器包括三个部分:比例(P)控制器、积分(I)控制器和微分(D)控制器。
比例控制器根据误差信号的大小来调整输出信号的大小;积分控制器根据误差信号的累积值来调整输出信号的积累量;微分控制器根据误差信号的变化速率来调整输出信号的变化速率。
舵机的工作原理

舵机的工作原理舵机是一种常见的电动机械装置,广泛应用于机器人、无人机、航模、机械臂等设备中,用于控制和调节机械部件的运动。
舵机的工作原理主要涉及到电机、电子电路和反馈控制。
一、舵机的组成部分舵机主要由电机、电子电路和反馈系统组成。
1. 电机:舵机通常采用直流电机或步进电机作为驱动源。
电机通过转动输出轴来驱动机械部件的运动。
2. 电子电路:舵机内部的电子电路主要包括控制电路、驱动电路和信号处理电路。
控制电路接收来自外部的控制信号,将其转换为电流或电压信号,用于驱动电机。
驱动电路则负责将控制电路输出的信号转换为电机所需的电流或电压。
信号处理电路则用于处理反馈信号,实现闭环控制。
3. 反馈系统:舵机通常配备有位置反馈装置,例如旋转电位器或编码器。
反馈系统可以实时监测舵机输出轴的位置,并将信息反馈给控制电路,从而实现精确的位置控制。
二、舵机的工作原理舵机的工作原理可以简单分为三个步骤:接收控制信号、驱动电机、反馈控制。
1. 接收控制信号:舵机通过接收来自外部的控制信号来确定输出轴的位置。
常见的控制信号是脉冲宽度调制(PWM)信号。
PWM信号的周期一般为20ms,脉宽范围通常为1ms到2ms。
舵机根据接收到的脉宽信号来确定输出轴的位置。
2. 驱动电机:控制电路接收到控制信号后,将其转换为电流或电压信号,通过驱动电路传递给电机。
电机根据接收到的信号来产生相应的转矩,驱动输出轴的运动。
电机的转动方向和速度取决于控制信号的脉宽和频率。
3. 反馈控制:舵机通常配备有位置反馈装置,反馈系统实时监测输出轴的位置,并将信息反馈给控制电路。
控制电路根据反馈信号与控制信号的差异来调整输出轴的位置,实现闭环控制。
通过不断的反馈控制,舵机可以精确地控制输出轴的位置。
三、舵机的应用舵机广泛应用于各种机械设备中,以实现精确的位置控制和运动调节。
以下是一些舵机的应用场景:1. 机器人:舵机用于控制机器人的关节,实现机器人的各种动作,例如行走、抓取、转动等。
舵机的工作原理

舵机的工作原理引言概述:舵机是一种常见的控制装置,广泛应用于机器人、遥控模型、无人机等领域。
它通过接收控制信号来实现精确的角度控制,具有快速响应和高精度的特点。
本文将详细介绍舵机的工作原理,包括信号解析、电机驱动、反馈控制等方面。
一、信号解析1.1 脉冲宽度调制(PWM)舵机接收的控制信号是一种脉冲宽度调制信号(PWM)。
脉冲的周期通常为20毫秒,高电平的脉冲宽度决定了舵机的角度位置。
通常,1.5毫秒的脉冲宽度对应舵机的中立位置,较短的脉冲宽度使舵机转到一侧,较长的脉冲宽度使舵机转到另一侧。
1.2 控制信号解码舵机内部的电路会解析接收到的控制信号。
首先,它会将脉冲信号进行整形和增益放大,然后通过一个比较器将脉冲信号转换为数字信号。
接着,舵机会将数字信号与一个内部的角度表进行比较,以确定舵机应该转到哪个角度位置。
1.3 信号频率舵机还可以通过控制信号的频率来判断是否处于异常工作状态。
通常,合法的控制信号频率为50赫兹,如果接收到的频率超出了合法范围,舵机会进入错误状态或保护状态。
二、电机驱动2.1 直流电机舵机内部通常采用直流电机来实现角度调节。
直流电机由一个电枢和一个永磁体组成,电枢通过电流控制来产生转矩。
舵机内部的驱动电路可以根据控制信号的大小和方向,控制电流的流向和大小,从而驱动电机转动到指定的角度位置。
2.2 驱动电路舵机的驱动电路通常由一个H桥电路组成。
H桥电路可以实现电流的正反向控制,从而控制电机的转向。
通过改变电流的方向和大小,舵机可以根据控制信号精确地调整到指定的角度位置。
2.3 电机驱动的注意事项在实际应用中,为了保护电机和延长舵机的寿命,需要注意控制信号的合理范围和频率。
过大的电流或频繁的启停会导致电机过热或损坏,因此需要根据舵机的规格和工作要求来选择合适的控制信号。
三、反馈控制3.1 位置反馈为了提高舵机的精度和稳定性,一些高级舵机还配备了位置反馈装置。
位置反馈装置可以实时监测舵机的角度位置,并将实际位置与控制信号要求的位置进行比较。
舵机工作原理

舵机工作原理
舵机是一种常见的电机装置,它通过收到控制信号来精确控制输出轴的位置。
舵机是一种闭环控制系统,它由电机、位置反馈装置、控制电路和输出轴组成。
下面将详细介绍舵机的工作原理。
首先,舵机内部的电源供电,将电能转化为机械能。
电源通电后,控制电路将控制信号转换为相应的电流控制电机工作。
舵机内部的电机是一种直流电机,通常是核心式或无心式电机。
电流经过电机,产生磁场作用于电机的定子和转子。
位置反馈装置是舵机的一个重要组成部分,其作用是实时感应输出轴的位置,并将这一信息反馈给控制电路。
位置反馈装置通常采用旋转变阻器或光电编码器等传感器。
当输出轴发生偏离时,位置反馈装置将感知到并将偏差信息传递给控制电路。
控制电路根据接收到的控制信号和位置反馈信息,进行逻辑计算和补偿控制。
控制电路将根据偏差信息,调节电流的大小和方向,使输出轴恢复到期望的位置。
通过控制电路输出的电流调节电机的转动力矩,以实现输出轴的准确位置控制。
当输出轴达到期望位置后,位置反馈装置将停止向控制电路发送偏差信息,控制电路也停止调节电流,保持输出轴的稳定位置。
总之,舵机的工作原理是通过电源供电,控制信号经过控制电
路转换为控制电流,作用于电机产生力矩,通过位置反馈装置感知输出轴的位置,并根据偏差信息进行控制电流的调节,最终实现输出轴的精确位置控制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
控制思想该模块的程序框图如图4.5 所示。
车模在行驶过程中不断采样赛道信息,并通过分析车模与赛道相对位置判断车模所处赛道路况,是弯道还是直道,弯道时是左转还是右转。
直道时小车舵机状态保持不变,弯道时左转或右转,计算转弯半径。
我们所用舵机的标准PWM 周期为20ms,转动角度最大为左右90度,PWM调制波如图7.2所示。
当给舵机输入脉宽为0.5ms,即占空比为0.5/20=2.5%的调制波时,舵机右转90度;当给舵机输入脉宽为1.5ms,即占空比为1.5/20=7.5%的调制波时,舵机静止不动;当给舵机输入脉宽为2.5ms,即占空比为2.5/20=12.5%的调制波时,舵机左转90度。
可以推导出舵机转动角度与脉冲宽度的关系计算公式为:注:其中t为正脉冲宽度(ms);θ为转动角度;当左转时取加法计算,右转时取减法计算结果。
当我们根据赛道弯度计算出转动角度以后便可以根据舵机的参数计算出脉冲宽度,控制舵机转动,舵机转角与PWM脉宽关系如表4-1所示。
在具体操作中PWM调制波的周期可以设置在20ms左右一定范围内,比如设置为10ms 或是30ms均可以使舵机正常转动,但是设置周期较长时,系统延迟时间较多,舵机转向会出现滞后,导致赛车冲出跑道;设置周期如果过短,系统输出PWM 调制波不稳定,舵机转动也会受影响,不能实现赛车的精确转向。
经过反复测试,最终把输出PWM 调制波周期设定为13ms (用计数器实现)。
运行电机的转速以及舵机的转角,在软件上都是通过对PWM 波占空比进行设置来相应控制的。
前面提到,舵机转角控制需要将两个八位寄存器合成为一个十六位寄存器。
程序中的舵机位置信号,当PWM调制波周期设为13ms时,因为总线频率为24MHz,用时钟SB,可计算得到16进制参数为9870H,舵机中间位置时占空比16进制参数为1680H,要分配给PWM6和7,分配时这2个端口的赋值必须是16进制,那么PWM模块初始化赋值为PWMPER6= 0x98,PWMPER7= 0x70,PWMDTY6= 0x16,PWMDTY7= 0x80,因此这就牵涉到如何将1个十进制数分配为2个十六进制数问题。
有2种方案,一种是除法取余,另一种是移位操作,前者编译生成的代码比后者要多,所以采用移位操作来实现,即取高位时与0xFF00先作“&”计算,然后将所得到的数向右移8位(>>8),即可取得高8位;同理,取低8位时只要与0x00FF作“&”计算即可(算法)。
2、结构和控制一般来讲,舵机主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位计5k、直流电机、控制电路板等。
工作原理:控制电路板接受来自信号线的控制信号(具体信号待会再讲),控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。
舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目标停止。
舵机的基本结构是这样,但实现起来有很多种。
例如电机就有有刷和无刷之分,齿轮有塑料和金属之分,输出轴有滑动和滚动之分,壳体有塑料和铝合金之分,速度有快速和慢速之分,体积有大中小三种之分等等,组合不同,价格也千差万别。
例如,其中小舵机一般称作微舵,同种材料的条件下是中型的一倍多,金属齿轮是塑料齿轮的一倍多。
需要根据需要选用不同类型。
舵机的输入线共有三条,红色中间,是电源线,一边黑色的是地线,这辆根线给舵机提供最基本的能源保证,主要是电机的转动消耗。
电源有两种规格,一是4.8V,一是6.0V,分别对应不同的转矩标准,即输出力矩不同,6.0V对应的要大一些,具体看应用条件;另外一根线是控制信号线,Futaba的一般为白色,JR的一般为桔黄色。
另外要注意一点,SANWA的某些型号的舵机引线电源线在边上而不是中间,需要辨认。
但记住红色为电源,黑色为地线,一般不会搞错。
舵机的控制信号为周期是20ms的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0-180度,呈线性变化。
也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。
舵机内部有一个基准电路,产生周期20ms,宽度1.5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。
由此可见,舵机是一种位置伺服的驱动器,转动范围不能超过180度,适用于那些需要角度不断变化并可以保持的驱动当中。
比方说机器人的关节、飞机的舵面等。
常见的舵机厂家有:日本的Futaba、JR、SANWA等,国产的有北京的新幻想、吉林的振华等。
现举Futaba S3003来介绍相关参数,以供大家设计时选用。
之所以用3003是因为这个型号是市场上最常见的,也是价格相对较便宜的一种(以下数据摘自Futaba产品手册)。
尺寸(Dimensions):40.4×19.8×36.0 mm 重量(Weight):37.2 g 工作速度(Operating speed):0.23 sec/60°(4.8V) 0.19 sec/60°(6.0V) 输出力矩(Output torque):3.2 kg.cm (4.8V) 4.1 kg.cm (6.0V) 由此可见,舵机具有以下一些特点:>体积紧凑,便于安装;>输出力矩大,稳定性好;>控制简单,便于和数字系统接口;正是因为舵机有很多优点,所以,现在不仅仅应用在航模运动中,已经扩展到各种机电产品中来,在机器人控制中应用也越来越广泛。
3、用单片机来控制正是舵机的控制信号是一个脉宽调制信号,所以很方便和数字系统进行接口。
只要能产生标准的控制信号的数字设备都可以用来控制舵机,比方PLC、单片机等。
这里介绍利用51系列单片机产生舵机的控制信号来进行控制的方法,编程语言为C51。
之所以介绍这种方法只是因为笔者用2051实现过,本着负责的态度,所以敢在这里写出来。
程序用的是我的四足步行机器人,有删改。
单片机并不是控制舵机的最好的方法,希望在此能起到抛砖引玉的作用。
2051有两个16位的内部计数器,我们就用它来产生周期20 ms的脉冲信号,根据需要,改变输出脉宽。
基本思路如下(请对照下面的程序):我用的晶振频率为12M,2051一个时钟周期为12个晶振周期,正好是1μs,计数器每隔1μs计一次数。
以计数器1为例,先设定脉宽的初始值,程序中初始为1.5ms,在for循环中可以随时通过改变a 值来改变,然后设定计数器计数初始值为a,并置输出p12为高位。
当计数结束时,触发计数器溢出中断函数,就是void timer0(void) interrupt 1 using1 ,在子函数中,改变输出p12为反相(此时跳为低位),在用20000(代表20ms周期)减去高位用的时间a,就是本周期中低位的时间,c=20000-a,并设定此时的计数器初值为c,直到定时器再次产生溢出中断,重复上一过程。
# include <reg51.h> #define uchar unsigned char ;#define uint unsigned int uint a,b,c,d;/*a为舵机1的脉冲宽度,b为舵机2的脉冲宽度,单位1μs */ /*c、d为中间变量*//*以下定义输出管脚*/sbit p12=P1^2; sbit p13=p1^3; sbit p37=P3^7;/*以下两个函数为定时器中断函数*//*定时器1,控制舵机1,输出引脚为P12,可自定义*/void timer0(void) interrupt 1 using 1 {p12=!p12; /*输出取反*/ c=20000-c; /*20000代表20 ms,为一个周期的时间*/TH0=-(c/256); TL0=-(c%256); /*重新定义计数初值*/if(c>=500&&c<=2500)c=a; else c="20000-a" ; /*判断脉宽是否在正常范围之内*//*定时器2,控制舵机2,输出引脚为P13,可自定义*/void timer1(void) interrupt 3 using 1 {p13=!p13; d=20000-d;TH1=-(d/256); TL1=-(d%256); if(d>=500&&d<=2500)d=b; elsed="20000-b";/*主程序*/ void main(void) {TMOD=0x11; /*设初值*/ p12=1;p13=1; a=1500; b=1500; /*数值1500即对应1.5ms,为舵机的中间90度的位置*/ c=a;d=b; TH0=-(a/256); TL0=-(a%256);TH1=-(b/256); TL1=-(b%256); /*设定定时器初始计数值*/ EA=1; ET0=1; TR0=1;EX0=1;EX1=1; ET1=1; TR1=1;PX0=0; PX1=0; IT1=1; IT0=1; /*设定中断优先级*/ for(;;) {/*在这个for循环中,可以根据程序需要在任何时间改变a、b值来改变脉宽的输出时间,从而控制舵机*/因为在脉冲信号的输出是靠定时器的溢出中断函数来处理,时间很短,因此在精度要求不高的场合可以忽略。
因此如果忽略中断时间,从另一个角度来讲就是主程序和脉冲输出是并行的,因此,只需要在主程序中按你的要求改变a值,例如让a从500变化到2500,就可以让舵机从0度变化到180度。
另外要记住一点,舵机的转动需要时间的,因此,程序中a值的变化不能太快,不然舵机跟不上程序。
根据需要,选择合适的延时,用一个a递增循环,可以让舵机很流畅的转动,而不会产生像步进电机一样的脉动。
这些还需要实践中具体体会。
舵机的速度决定于你给它的信号脉宽的变化速度。
举个例子,t=0试,脉宽为0.5ms,t=1s时,脉宽为1.0ms,那么,舵机就会从0.5ms 对应的位置转到1.0ms对应的位置,那么转动速度如何呢?一般来讲,3003的最大转动速度在4.8V时为0.23s/60度,也就是说,如果你要求的速度比这个快的话,舵机就反应不过来了;如果要求速度比这个慢,可以将脉宽变化值线性到你要求的时间内,做一个循环,一点一点的增加脉宽值,就可以控制舵机的速度了。
当然,具体这一点一点到底是多少,就需要做试验了,不然的话,不合适的话,舵机就会向步进电机一样一跳一跳的转动了,尝试改变这“一点”,使你的舵机运动更平滑。