舵机简介及其单片机控制方法

合集下载

舵机的原理与单片机控制(二)2024

舵机的原理与单片机控制(二)2024

舵机的原理与单片机控制(二)引言概述:舵机是一种常见的机电设备,广泛应用于机器人、遥控模型等领域。

本文将进一步介绍舵机的原理及其与单片机的控制方法。

正文内容:一、舵机的原理1. 舵机的结构组成:电机、减速器、控制电路和位置反馈装置。

2. 舵机的工作原理:利用电机的转动驱动控制电路,通过调整控制电路的输出脉冲宽度来实现舵机的转动。

3. 舵机的位置反馈装置:通过位置传感器实时检测舵机的转动角度,并将反馈信号传递给控制电路进行修正。

二、单片机控制舵机的基本原理1. 单片机的控制方式:通过控制IO口产生控制信号,即PWM 信号,来控制舵机的转动。

2. PWM信号的特点:通过调整PWM信号的高低电平持续时间来实现对舵机的控制,通常控制信号的占空比与舵机的转动角度成正比。

3. 单片机编程:使用单片机的编程语言,通过设定PWM信号的占空比来控制舵机的转动角度。

4. 控制舵机的程序设计:通过设置PWM信号的周期和占空比,利用适当的算法控制舵机的速度和位置。

三、舵机的常见问题及解决方法1. 舵机抖动问题:可通过增加控制信号的稳定性和校准舵机的中值来解决。

2. 舵机发热问题:可通过降低PWM信号的频率和增加散热系统来解决。

3. 舵机运转不稳定问题:可通过调整PWM信号的占空比和校正舵机的位置反馈装置来解决。

四、舵机控制的优化方法1. 控制算法优化:利用PID控制算法来提高舵机的精确度和稳定性。

2. 舵机模型参数的优化:通过调整舵机的工作电压和扭矩参数,提高其性能和适应性。

3. 舵机控制系统的设计优化:考虑电源、信号线路、控制器等因素,提高舵机控制的整体效果。

五、舵机控制应用案例1. 机器人舵机控制:通过单片机对舵机进行控制,实现机器人的运动和动作。

2. 遥控模型舵机控制:利用遥控器与接收机之间的通信,控制舵机来实现遥控模型的转动和动作。

总结:本文详细介绍了舵机的工作原理和单片机控制方法,以及舵机常见问题的解决方法和控制优化的途径。

舵机工作原理与控制方法

舵机工作原理与控制方法

舵机工作原理与控制方法舵机是一种用于控制机械装置的电机,它可以通过控制信号进行位置或角度的精确控制。

在舵机的工作原理和控制方法中,主要涉及到电机、反馈、控制电路和控制信号四个方面。

一、舵机的工作原理舵机的核心部件是一种称为可变电容的设备,它可以根据控制信号的波形来改变电容的值。

舵机可分为模拟式和数字式两种类型。

以下是模拟式舵机的工作原理:1.内部结构:模拟式舵机由电机、测速电路、可变电容和驱动电路组成。

2.基准电压:舵机工作时,系统会提供一个用于参考的基准电压。

3.控制信号:通过控制信号的波形的上升沿和下降沿来确定舵机的角度。

4.反馈:舵机内部的测速电路用于检测当前位置,从而实现位置的精确控制。

5.驱动电路:根据测速电路的反馈信号来控制电机的转动方向和速度,从而实现角度的调整。

二、舵机的控制方法舵机的控制方法一般采用脉冲宽度调制(PWM)信号来实现位置或角度的控制。

以下是舵机的两种常见控制方法:1.脉宽控制(PWM):舵机的控制信号是通过控制信号的脉冲宽度来实现的。

通常情况下,舵机的控制信号由一系列周期为20毫秒(ms)的脉冲组成,脉冲的高电平部分的宽度决定了舵机的位置或角度。

典型的舵机控制信号范围是1ms到2ms,其中1ms对应一个极限位置,2ms对应另一个极限位置,1.5ms对应中立位置。

2.串行总线(如I2C或串行通信):一些舵机还支持通过串行总线进行控制,这些舵机通常具有内置的电路来解码接收到的串行信号,并驱动电机转动到相应的位置。

这种控制方法可以实现多个舵机的同时控制,并且可以在不同的控制器之间进行通信。

三、舵机的控制电路与控制信号1.控制电路:舵机的控制电路通常由微控制器(如Arduino)、驱动电路和电源组成。

微控制器用于生成控制信号,驱动电路用于放大和处理控制信号,电源则为舵机提供所需的电能。

2.控制信号的生成:控制信号可以通过软件或硬件生成。

用于舵机的软件库通常提供一个函数来方便地生成适当的控制信号。

舵机简介及其单片机控制方法

舵机简介及其单片机控制方法

1、概述舵机最早出现在航模运动中。

在航空模型中,飞行机的飞行姿态是通过调节发动机和各个控制舵面来实现的。

举个简单的四通飞机来说,飞机上有以下几个地方需要控制:1.发动机进气量,来控制发动机的拉力(或推力);2.副翼舵面(安装在飞机机翼后缘),用来控制飞机的横滚运动;3.水平尾舵面,用来控制飞机的俯仰角;4.垂直尾舵面,用来控制飞机的偏航角;遥控器有四个通道,分别对应四个舵机,而舵机又通过连杆等传动元件带动舵面的转动,从而改变飞机的运动状态。

舵机因此得名:控制舵面的伺服电机。

不仅在航模飞机中,在其他的模型运动中都可以看到它的应用:船模上用来控制尾舵,车模中用来转向等等。

由此可见,凡是需要操作性动作时都可以用舵机来实现。

2、结构和控制一般来讲,舵机主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位计5k、直流电机、控制电路板等。

工作原理:控制电路板接受来自信号线的控制信号(具体信号待会再讲),控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。

舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目标停止。

舵机的基本结构是这样,但实现起来有很多种。

例如电机就有有刷和无刷之分,齿轮有塑料和金属之分,输出轴有滑动和滚动之分,壳体有塑料和铝合金之分,速度有快速和慢速之分,体积有大中小三种之分等等,组合不同,价格也千差万别。

例如,其中小舵机一般称作微舵,同种材料的条件下是中型的一倍多,金属齿轮是塑料齿轮的一倍多。

需要根据需要选用不同类型。

舵机的输入线共有三条,红色中间,是电源线,一边黑色的是地线,这辆根线给舵机提供最基本的能源保证,主要是电机的转动消耗。

电源有两种规格,一是4.8V,一是6.0V,分别对应不同的转矩标准,即输出力矩不同,6.0V对应的要大一些,具体看应用条件;另外一根线是控制信号线,Futaba的一般为白色,JR的一般为桔黄色。

舵机的单片机控制

舵机的单片机控制

舵机的单片机控制第一章:引言舵机是一种常见的机械驱动器件,广泛应用于模型航空、机器人、自动化设备以及家用电器等领域。

其具备精准控制旋转角度的能力,可以根据输入的信号控制输出轴的位置,使其按照预定的角度旋转。

单片机技术作为现代控制系统中重要的组成部分,被广泛应用于舵机控制中,本文将以单片机控制舵机为研究对象,探讨其工作原理和控制方法。

第二章:舵机原理舵机由电机和返回电路组成,输入控制信号后,通过电机驱动轴实现角度调节。

其内部包含了一个减速装置以及一个位置反馈装置(旋转电位器或磁编码器)。

通过控制电机的转速和方向,从而实现舵机输出轴的位置调整。

值得注意的是,舵机的控制信号通常为PWM信号。

第三章:单片机控制舵机3.1 舵机控制信号的生成单片机通过PWM信号控制舵机的角度。

PWM信号可以通过计时器/计数器来生成,并通过定时器的频率和占空比来控制输出信号的特性。

其中,舵机的控制信号通常具有20ms的周期,占空比在0.5ms到2.5ms之间可以实现0°到180°的转动范围。

因此,单片机需要根据需要设定合适的定时器参数。

3.2 单片机舵机控制电路单片机与舵机之间需要一个适配电路,将单片机输出的PWM信号转化为舵机可以接受的信号。

适配电路通常由操作放大器、电阻和电容组成。

其作用是将较低电平的单片机信号放大到舵机所需要的电平范围,以便舵机可以接收到正确的控制信号。

3.3 程序设计程序设计是单片机控制舵机的关键。

根据舵机的控制信号特性,通过适当的算法和参数设置,可以实现精确的舵机控制。

程序设计需要考虑到舵机控制的实时性和精确性,采用中断方式和定时器中断来实现。

第四章:舵机控制实验为验证单片机控制舵机的效果,进行了一系列实验。

实验中通过改变PWM信号的占空比以及角度范围,观测舵机输出的转动情况。

实验结果表明,单片机可以精确控制舵机的转动角度,并具备实时性能。

第五章:结论单片机控制舵机是一种成熟且常见的应用。

单片机控制舵机

单片机控制舵机

单片机控制舵机章节一:引言舵机是一种能够精确控制角度的电动执行元件,广泛应用于机器人、航模模型、自动门窗等领域。

而单片机作为一种嵌入式系统,具有高性能、低功耗和易编程等特点,是控制舵机的理想选择。

本论文将介绍单片机控制舵机的原理、方法和应用。

章节二:舵机原理与工作原理舵机是由一个电机和一个控制电路组成。

电机驱动舵轮旋转,而控制电路则根据输入信号产生相应的输出脉冲,控制电机驱动舵轮转动的位置和角度。

舵机的工作原理可以分为三个阶段:解码脉冲、驱动电机和反馈传感。

在解码脉冲阶段,舵机接收控制信号,将其转化为输出脉冲信号。

在驱动电机阶段,舵机根据输出脉冲信号驱动电机旋转。

在反馈传感阶段,舵机通过内置的位置传感器反馈当前位置信息给控制电路,以实现闭环控制。

章节三:单片机控制舵机的方法单片机控制舵机的方法主要包括PWM控制和定时中断控制。

PWM控制是通过改变脉宽来控制舵机的角度。

单片机通过定时器产生一定频率的PWM信号,占空比表示舵机的角度位置。

定时中断控制是通过定时中断产生一系列的脉冲信号,根据脉冲信号的频率和宽度来控制舵机的位置和角度。

在具体实现中,可以使用脉宽编码来表示舵机的位置信息,可以使用软件算法来驱动舵机旋转,也可以使用硬件模块来实现舵机的控制。

章节四:单片机控制舵机的应用单片机控制舵机的应用十分广泛。

在机器人领域,单片机控制舵机可以控制机器人的头部、手臂和腿部,实现精确的动作控制。

在航模模型中,单片机控制舵机可以控制模型的机翼、尾翼和升降舵,实现精确的飞行控制。

在自动门窗领域,单片机控制舵机可以实现门窗的开启和关闭,实现自动化管理。

综上所述,单片机控制舵机是一种高效、灵活和可靠的控制方法,可以应用于多个领域。

通过合理的算法设计和硬件布局,单片机可以实现精确控制舵机的位置和角度,满足各种实际需求。

未来,随着单片机技术的不断发展,单片机控制舵机的应用将会越来越广泛。

通过单片机控制舵机,可以实现精确的位置和角度控制,提高了机器人、航模模型和自动门窗等设备的灵活性和智能化水平。

单片机控制舵机

单片机控制舵机

舵机如下所示:有三根线,一般依次是地,电源(5V左右),信号(信号的幅值>=3.3V),不清楚各个脚打开舵机一测量就知道了。

2.其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。

它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。

最后,电压差的正负输出到电机驱动芯片决定电机的正反转。

当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。

当然我们可以不用去了解它的具体工作原理,知道它的控制原理就够了。

就象我们使用晶体管一样,知道可以拿它来做开关管或放大管就行了,至于管内的电子具体怎么流动是可以完全不用去考虑的。

3.舵机的控制:舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。

以180度角度伺服为例,那么对应的控制关系是这样的:0.5ms--------------0度;1.0ms------------45度;1.5ms------------90度;2.0ms-----------135度;2.5ms-----------180度;重要说明:1:上面部分还是成线形关系的,Y=90X-45(X单位是ms,Y单位是度数:)2:上面所说的0度45度等是指度45度位置(什么意思呢:我说明一下就知道了,就拿45度位置来说,若舵机停在0度位置,下载45度位置程序后则舵机停在45度,即顺时针走了45度,若当时舵机在135度位置,则反转90度到45度位置。

所以舵机不存在正转反转问题。

这点非常重要。

3:若想转动到45度位置,要一直产生1.0ms的高电平(即PA0=1;Delay(1ms);PA0=0;Delay(20ms);要不停的产生这个高低电平,产生PWM脉冲请看下形象描述吧:下面是我在ATMEGA32上的测试程序,开发软件:ICC AVR#include <iom32v.h>typedef struct BYTE_BIT{unsigned BIT0:1;unsigned BIT1:1;unsigned BIT2:1;unsigned BIT3:1;unsigned BIT4:1;unsigned BIT5:1;unsigned BIT6:1;unsigned BIT7:1;}BYTEBIT;#define SET_BIT8_FORMAT(Addr) (*((volatile BYTEBIT *)&Addr)) # define PORTB_BIT SET_BIT8_FORMAT(PORTB)# define _PB0 PORTB_BIT.BIT0# define _PB1 PORTB_BIT.BIT1# define _PB2 PORTB_BIT.BIT2# define _PB3 PORTB_BIT.BIT3# define _PB4 PORTB_BIT.BIT4# define _PB5 PORTB_BIT.BIT5# define _PB6 PORTB_BIT.BIT6# define _PB7 PORTB_BIT.BIT7/*delay(1)延时时间为300USdelay(80)延时时间为20mSdelay(4)延时时间为1mSdelay(8)延时时间为2mSdelay(6)延时时间为1.55mSdelay(2)延时时间为0.55MSdelay(10)延时时间为2.5mS*/void Delay(int j){ int i;for(;j>0;j--){for(i=0;i<35;i++);}}void main(void) {int i,j;DDRB=0XFF;while(1){//2.0ms 135度位置_PB7=1;Delay(8);_PB7=0;Delay(74);/*//1.0ms 45度位置_PB7=1;Delay(4);_PB7=0;Delay(78);//1.5ms 90度位置_PB7=1;Delay(6);_PB7=0;Delay(78);// 2.5ms 180度位置_PB7=1;Delay(10);_PB7=0;Delay(72);//0.5ms 0度位置_PB7=1;Delay(2);_PB7=0;Delay(78);*/}}测试过绝对可以。

单片机控制舵机程序

单片机控制舵机程序

单片机控制舵机程序第一章:引言单片机作为一种重要的嵌入式系统开发工具,广泛应用于各个领域,舵机作为一种常用的机械驱动装置,也在各种应用中得到广泛的应用。

本论文通过设计单片机控制舵机的程序,旨在探究单片机如何通过编程实现舵机的精确控制。

第二章:舵机的基本原理舵机是一种常见的位置式伺服机构,它可以通过控制信号控制其角度位置,实现精确的运动控制。

它由直流电机、减速机构、位置检测传感器和驱动控制电路组成。

通过单片机控制舵机,可以实现根据需要精确调整舵机的位置和速度。

第三章:单片机控制舵机的设计与实现本章主要介绍如何使用单片机来控制舵机。

首先,需要选择合适的单片机和舵机。

常见的单片机有51系列、AVR、STM32等,而舵机则有舵机舵盘、舵机电机和舵机控制器等。

随后,在硬件设计上,需要连接单片机和舵机,并根据舵机的电气特性设计相应的电路保护措施。

在软件设计上,需要编写单片机的控制程序。

通过控制程序发送特定的PWM(脉宽调制)信号给舵机,从而控制舵机的角度位置和运动速度。

第四章:单片机控制舵机的应用与改进在本章中,将介绍单片机控制舵机的应用与改进。

首先,在机器人领域,单片机控制舵机可以实现机器人的运动与动作控制,从而实现更复杂的功能。

其次,在航模、智能家居等领域,单片机控制舵机也应用广泛,可以实现遥控、智能调节等功能。

最后,对现有的单片机控制舵机的程序进行改进,如优化舵机的运动曲线、增加舵机的控制精度等,可以提升系统的性能。

总结:本论文通过设计单片机控制舵机的程序,探究了单片机通过编程实现舵机的精确控制的原理和方法。

同时,介绍了舵机的基本原理和单片机控制舵机的设计与实现过程,并讨论了单片机控制舵机的应用与改进。

通过本论文的研究,可以帮助读者了解和应用单片机控制舵机的技术,为单片机在舵机控制方面的应用提供参考。

第五章:实验及结果分析在本章中,我们将介绍根据上述设计和实现的单片机控制舵机的程序的实验,并对实验结果进行分析。

单片机舵机角度控制

单片机舵机角度控制

单片机舵机角度控制章节一:绪论近年来,随着科技的发展和应用领域的不断扩大,单片机成为了现代电子技术领域中不可或缺的一部分。

单片机舵机角度控制作为其中一个重要的应用,广泛应用于机器人、航模等领域。

本文旨在探讨单片机舵机角度控制的原理和实现方法,以及相关的优化方案。

章节二:单片机舵机角度控制的原理2.1 舵机的基本原理舵机是一种用来控制角度的驱动器件,它内部包含电机、减速机构和位置反馈装置。

其工作原理是通过控制电机的旋转方向和速度来调整舵机的输出角度。

2.2 单片机舵机控制的原理单片机作为舵机控制的核心部件,可以通过PWM信号来控制舵机的转动角度。

通过控制PWM信号的占空比,可以控制电机的转速,从而实现对舵机角度的精确控制。

章节三:单片机舵机角度控制的实现方法3.1 硬件设计舵机角度控制的硬件设计包括舵机的连接方式和电源电路的设计。

选择合适的舵机连接方式可以减少电源负载和电源干扰,提高舵机的响应速度和精度。

3.2 软件设计单片机舵机角度控制的软件设计包括舵机控制程序的编写和舵机角度的校正算法。

舵机控制程序主要负责控制PWM信号的产生,并根据需要调整舵机的角度;舵机角度的校正算法则是为了保证舵机能够精确控制到指定的角度。

章节四:单片机舵机角度控制的优化方案4.1 控制算法优化针对舵机在转动过程中的非线性特性和稳定性问题,可以采用PID控制算法进行优化。

PID控制算法通过对误差、偏差和积分项的综合计算,实现对舵机角度控制的精确调整和快速响应。

4.2 硬件优化通过选用高精度的舵机和高性能的电源电路,可以提高舵机的控制精度和响应速度。

另外,合理设计电路板布局和降低信号干扰也是硬件优化的关键。

总结:本文首先介绍了单片机舵机角度控制的原理,包括舵机的基本原理和单片机控制舵机的原理。

然后详细讨论了单片机舵机角度控制的实现方法,包括硬件设计和软件设计。

最后,针对单片机舵机角度控制存在的问题和局限性,提出了优化方案,包括控制算法优化和硬件优化。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

舵机简介及其单片机控制方法(转贴)由于rocky于Sun May 18, 2003 12:59 pm 向本人提出希望了解有关舵机的知识,现将本人在航空模型运动中和机器人制作中积累的一点点经验写出来,奉献给大家,希望本文能起到抛砖引玉的作用。

但由于时间仓促,难免有不正确的地方,热情欢迎大家批评指教。

1、概述舵机最早出现在航模运动中。

在航空模型中,飞行机的飞行姿态是通过调节发动机和各个控制舵面来实现的。

举个简单的四通飞机来说,飞机上有以下几个地方需要控制:1.发动机进气量,来控制发动机的拉力(或推力);2.副翼舵面(安装在飞机机翼后缘),用来控制飞机的横滚运动;3.水平尾舵面,用来控制飞机的俯仰角;4.垂直尾舵面,用来控制飞机的偏航角;遥控器有四个通道,分别对应四个舵机,而舵机又通过连杆等传动元件带动舵面的转动,从而改变飞机的运动状态。

舵机因此得名:控制舵面的伺服电机。

不仅在航模飞机中,在其他的模型运动中都可以看到它的应用:船模上用来控制尾舵,车模中用来转向等等。

由此可见,凡是需要操作性动作时都可以用舵机来实现。

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/1000 ms,计数器每隔1/1000 ms计一次数。

以计数器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 intuint a,b,c,d;sbit p12=P1^2;sbit p13=p1^3;sbit p37=P3^7;void timer0(void) interrupt 1 using 1 { p12=!p12;c=20000-c;TH0=-(c/256); TL0=-(c%256);if(c>=500&&c<=2500)c=a;else c=20000-a;}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;else d=20000-b;}void main(void){TMOD=0x11;p12=1;p13=1;a=1500;b=1500;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;PT1=1;PT0=1;for(;;){}}因为在脉冲信号的输出是靠定时器的溢出中断函数来处理,时间很短,因此在精度要求不高的场合可以忽略。

因此如果忽略中断时间,从另一个角度来讲就是主程序和脉冲输出是并行的,因此,只需要在主程序中按你的要求改变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度,也就是说,如果你要求的速度比这个快的话,舵机就反应不过来了;如果要求速度比这个慢,可以将脉宽变化值线性到你要求的时间内,做一个循环,一点一点的增加脉宽值,就可以控制舵机的速度了。

当然,具体这一点一点到底是多少,就需要做试验了,不然的话,不合适的话,舵机就会向步进电机一样一跳一跳的转动了,尝试改变这“一点”,使你的舵机运动更平滑。

还有一点很重要,就是舵机在每一次脉宽值改变的时候总会有一个转速由零增加再减速为零的过程,这就是舵机会产生像步进电机一样运动的原因。

请问一下,舵机转动速度是如何控制的?这个比较简单吧,驱动普通舵机只要一个口线直接接舵机信号线就行了。

软件上可以用“分时复用比较法(我自己想的名字)”来做。

简单来说就是:设置一个定时器让它按舵机最小分辨率的周期来溢出,溢出后让某个寄存器从1开始到最大值不断重复,这个最大值不一定是0FFH,可以根据自己的需要设。

每次定时器溢出的时候进入中断,寄存器加1后和每个舵机的预设值进行比较,判断是否改变高电平的宽度。

这个比较一般只能处理不多的几路(要保证在下个定时器中断前完成比较)。

因为舵机信号的脉宽最大只有2.5MS,在处理这几路舵机的时候把其它的舵机信号都拉低。

当处理完这几路的时候,也就是定时器从1到最大值完成一次后,(这时候前面处理过的几路应该都是低电平了)把下次需要处理的几路都拉高。

然后再比较这几路该什么时候拉低,依次循环,直到总时间达到20MS,再回过头来处理刚开始处理的几路。

一、电路原理电路如图1所示,由检测传感器、单片机电路和数码显示电路等组成。

检测传感器由永久磁铁和开关型霍尔集成电路UGN3020.组成。

UGN3020由霍尔元件、放大器、整形电路及集电极开路输出电路等组成,其功能是把磁信号转换成电信号,图2a是其内部框图。

霍尔元件H为磁敏元件,当垂直于霍尔元件的磁场强度随之变化时,其两端的电压就会发生变化,经放大和整形后,即可在③脚输出脉冲电信号。

其工作特性如图2b所示。

由于有一定的磁滞效应,可保证开关无抖动。

B叩为工作点“开”的磁场强度,Brp为释放点“关”的磁场强度。

永久磁铁固定在车轮的辐条上,UGN3020固定在车轮的叉架上。

检测传感器的工作原理如下:车轮每转一周,磁铁经过UGN3020一次,其③脚就输出一个脉冲信号。

UGN3020输出的脉冲信号作为单片机AT89C2051的外中断信号,从P3.2口输人。

单片机测量脉冲信号的个数和脉冲周期。

根据脉冲信号的个数计算出里程,根据脉冲信号的周期计算出速度并送数码管显示。

相关文档
最新文档