当前位置:首页 >> 信息与通信 >>

舵机工作原理详解及智能车单片机(飞思卡尔)控制的实现(程序)


舵机工作原理详解及单片机( 舵机工作原理详解及单片机(飞思卡尔和 51)控制的实现(程序) )控制的实现(程序)
1、概述 舵机最早出现在航模运动中。 在航空模型中, 飞行机的飞行姿态是通过调节发动机和各个控 制舵面来实现的。举个简单的四通飞机来说,飞机上有以下几个地方需要控制: 1.发动机进气量,来控制发动机的拉力(或推力); 2.副翼舵面(安装在飞机机翼后缘),用来

控制飞机的横滚运动; 3.水平尾舵面,用来控制飞机的俯仰角; 4.垂直尾舵面,用来控制飞机的偏航角; 遥控器有四个通道,分别对应四个舵机,而舵机又通过连杆等传动元件带动舵面的转动,从 而改变飞机的运动状态。舵机因此得名:控制舵面的伺服电机。 不仅在航模飞机中,在其他的模型运动中都可以看到它的应用:船模上用来控制尾舵,车模 中用来转向等等。由此可见,凡是需要操作性动作时都可以用舵机来实现。

2、结构和控制 一般来讲,舵机主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位 舵盘、减速齿轮组、

计 5k、直流电机、控制电路板等。 、直流电机、

工作原理:控制电路板接受来自信号线的控制信号(具体信号待会再讲),控制电机转
动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相 连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板, 进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目标停止。 舵机的基本结构是这样,但实现起来有很多种。例如电机就有有刷和无刷之分,齿轮有塑料 和金属之分, 输出轴有滑动和滚动之分, 壳体有塑料和铝合金之分, 速度有快速和慢速之分, 体积有大中小三种之分等等, 组合不同, 价格也千差万别。 例如, 其中小舵机一般称作微舵, 同种材料的条件下是中型的一倍多, 金属齿轮是塑料齿轮的一倍多。 需要根据需要选用不同 类型。

舵机的输入线共有三条,红色中间,是电源线,一边黑色的是地线,这辆根线 红色中间, 给舵机提供最基本的能源保证,主要是电机的转动消耗。电源有两种规格, 给舵机提供最基本的能源保证 ,一是 4.8V,一 是 6.0V,分别对应不同的转矩标准 分别对应不同的转矩标准,即输出力矩不同,6.0V 对应的要大一些 对应的要大一些,具体看应用 条件;另外一根线是控制信号线,Futaba JR 的一般为白色,JR 的一般为桔黄

色。 另外要注意一点, SANWA 的某些型号的舵机引线电源线在边上而不是中间 需要辨认。 的某些型号的舵机引线电源线在边上而不是中间, 但记住红色为电源,黑色为地线 黑色为地线,一般不会搞错。

舵机的控制信号为周期是 20ms 的脉宽调制(PWM)信号,其中脉 的脉宽调制( )信号, 2.5ms, 冲宽度从 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) (Operating speed):0.23 sec/60° (4.8V) 0.19 sec/60° (6.0V) 输出力矩(Output torque):3.2 kg.cm (4.8V) 3.2 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 int uinta,b,c,d; /*a 为舵机 1 的脉冲宽度,b 为舵机 2 的脉冲宽度,单位 1/1000 ms */ /*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; else d="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;PT1=1;PT0=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 度,也就是说,如果你要求的速度比这个快的话,舵机就反 应不过来了;如果要求速度比这个慢,可以将脉宽变化值线性到你要求的时间
内, 做一个循环, 一点一点的增加脉宽值, 做一个循环, 一点一点的增加脉宽值, 就可以控制舵机的速度了。 当然,具体这一点一点到底是多少,就需要做试验了,不然的话,不合 具体这一点一点到底是多少 一点到底是多少, 适的话,舵机就会向步进电机一样一跳一跳的转动了,尝试改变这“一点”,使 你的舵机运动更平滑。还有一点很重要,就是舵机在每一次脉宽值改变的

时候总会有一个转速由零增加再减速为零的过程, 这就是舵机会产生 时候总会有一个转速由零增加再减速为零的过程, 像步进电机一样运动的原因


相关文章:
舵机工作原理详解及智能车单片机(飞思卡尔)控制的实现(程序)
舵机工作原理详解及智能车单片机(飞思卡尔)控制的实现(程序)_信息与通信_工程科技_专业资料。舵机最早出现在航模运动中。在航空模型中,飞行机的飞行姿态是通过调节...
飞思卡尔 智能车舵机控制
飞思卡尔智能车舵机控制程序及方法很有用 ...这个方法不错,特别在单片机中.比如:你如果连 续...舵机工作原理详解及智能... 6页 1下载券 飞思...
飞思卡尔智能车舵机原理及参数和测试_全
飞思卡尔智能车舵机原理及参数和测试_全_工学_高等...使用传统单片机控制舵机的方案也有很多,多是利用定时...飞思卡尔舵机测试程序 3页 免费 飞思卡尔舵机控制 ...
基于飞思卡尔单片机的智能车设计
中文题目:基于飞思卡尔单片机的智能车设计 外文题目:...实现对赛 车转向控制,进而识别赛道达到路径寻迹...程序、转速检测程序、电机和舵机驱动程序等相关程序。...
舵机简介及其单片机控制方法(转)很好很实用的程序
舵机简介及其单片机控制方法(转)很好很实用的程序_工学_高等教育_教育专区。舵机简介及其单片机控制方法(转 很好很实用的程序 舵机简介及其单片机控制方法 转)很好很...
[控制类] 飞思卡尔智能车舵机调试工具
VB 编写一个调试舵机的上位机程序,通 过串口与单片机通讯,来实现舵机的实时调节...飞思卡尔智能车舵机和测... 3页 免费 舵机工作原理详解及智能... 6页 1下载...
基于飞思卡尔单片机的智能小车设计与应用
基于飞思卡尔单片机的智能小车设计与应用_信息与通信_...波控制电机模块和舵机 模块, 从而达到控制小车的速度...程序让小车各个部分协调工作, 让小车行驶并能够实现...
舵机及转向控制原理
51 单片机舵机测试程序 1、概述 舵机也叫伺服电机, 最早用于船舶上实现其转向功能,由于可以通过程序连 续控制其转角,因而被广泛应用智能小车实现转向以及机器人...
舵机控制原理
如何利用程序实现转向 8、51 单片机舵机测试程序 1...程序连 续控制其转角,因而被广泛应用智能小车实现...但是如果连接像飞思卡尔之类芯片,由 于飞思卡尔...
更多相关标签:
飞思卡尔智能车舵机 | 飞思卡尔智能车大赛 | 飞思卡尔智能车 | 飞思卡尔智能车论坛 | 飞思卡尔智能车官网 | 飞思卡尔智能车电磁组 | 飞思卡尔智能车竞赛 | 飞思卡尔智能车制作 |