数字舵机与模拟舵机控制方法与性能比较我觉得你应该看看.docx
《数字舵机与模拟舵机控制方法与性能比较我觉得你应该看看.docx》由会员分享,可在线阅读,更多相关《数字舵机与模拟舵机控制方法与性能比较我觉得你应该看看.docx(8页珍藏版)》请在冰豆网上搜索。
![数字舵机与模拟舵机控制方法与性能比较我觉得你应该看看.docx](https://file1.bdocx.com/fileroot1/2022-11/23/6c31a7a4-bb9e-49f1-9f7d-e166574c7d55/6c31a7a4-bb9e-49f1-9f7d-e166574c7d551.gif)
数字舵机与模拟舵机控制方法与性能比较我觉得你应该看看
一、舵机的原理
标准的舵机有3条导线,分别是:
电源线、地线、控制线,如图2所示。
以日本FUTABA-S3003型舵机为例,图1是FUFABA-S3003型舵机的内部电路。
3003舵机的工作原理是:
PWM信号由接收通道进入信号解调电路BA6688的12脚进行解调,获得一个直流偏置电压。
该直流偏置电压与电位器的电压比较,获得电压差由BA6688的3脚输出。
该输出送入电机驱动集成电路BAL6686,以驱动电机正反转。
当电机转动时,通过级联减速齿轮带动电位器Rw1旋转,直到电压差为O,电机停止转动。
舵机的控制信号是PWM信号,利用占空比的变化,改变舵机的位置。
有个很有趣的技术话题可以稍微提一下,就是BA6688是有EMF控制的,主要用途是控制在高速时候电机最大转速。
原理是这样的:
收到1个脉冲以后,BA6688内部也产生1个以5K电位器实际电压为基准的脉冲,2个脉冲比较以后展宽,输出给驱动使用。
当输出足够时候,马达就开始加速,马达就能产生EMF,这个和转速成正比的。
因为取的是中心电压,所以正常不能检测到的,但是运行以后就电平发生倾斜,就能检测出来。
超过EMF判断电压时候就减小展宽,甚至关闭,让马达减速或者停车。
这样的好处是可以避免过冲现象(就是到了定位点还继续走,然后回头,再靠近)
一些国产便宜舵机用的便宜的芯片,就没有EMF控制,马达、齿轮的机械惯性就容易发生过冲现象,产生抖舵
电源线和地线用于提供舵机内部的直流电机和控制线路所需的能源.电压通常介于4~6V,一般取5V。
注意,给舵机供电电源应能提供足够的功率。
控制线的输入是一个宽度可调的周期性方波脉冲信号,方波脉冲信号的周期为20ms(即频率为50Hz)。
当方波的脉冲宽度改变时,舵机转轴的角度发生改变,角度变化与脉冲宽度的变化成正比。
某型舵机的输出轴转角与输入信号的脉冲宽度之间的关系可用围3来表示。
二、数码舵机VS模拟舵机
数码舵机比传统的模拟舵机,在工作方式上有一些优点,但是这些优点也同时带来了一些缺点。
传统的舵机在空载的时候,没有动力被传到舵机马达。
当有信号输入使舵机移动,或者舵机的摇臂受到外力的时候,舵机会作出反应,向舵机马达输出驱动电压。
由第一节的电路分析我们知道——马达是否获得驱动电压,取决于BA6688的第3脚是否输出一个电压信号给BAL6686马达驱动IC。
数码舵机最大的差别是在于它处理接收机的输入信号的方式。
相对与传统的50脉冲/秒的PWM信号解调方式,数码舵机使用信号预处理方式,将频率提高到300脉冲/秒。
因为频率高的关系,意味着舵机动作会更精确,“无反应区”变小。
以下的三个图表各显示了两个周期的开/关脉冲。
图1是空载的情况;图2是脉冲宽度较窄,比较小的动力信号被输入马达;图3是更宽,持续时间更长的脉冲,更多的输入动力。
您可以想象,一个短促的脉冲,紧接着很长的停顿,这意味着舵机控制精度是不够高的,这也是为什么模拟舵机有“无反应区”的存在。
比如说,舵机对于发射机的细小动作,反应迟钝或者根本就没有反应。
而数码舵机提升了脉冲密度,轻微的信号改变都会变的可以读取,这样无论是遥控杆的轻微变动,或者舵机摇臂在外力作用下的极轻微变动,都会能够检测出来,从而进行更细微的修正。
三、数码舵机的缺点:
以上我们已经知道数码舵机会更精确这个优点,那么我们来看数码舵机的缺点
1、数码舵机需要消耗更多的动力。
其实这是很自然的。
数码舵机以更高频率去修正马达,这一定会增加总体的动力消耗。
2、相对教短的寿命。
其实这是很自然的。
马达总在转来转去做修正,这一定会增加马达等转动部位的消耗。
四、拟人化比喻
技术性的东西说了这么多,也许很多对电路原理不熟悉的朋友还是不明白,呵呵,举个简单的例子来说明吧!
比如遥控器是老师,舵机控制电路是家长,舵机的马达是小孩
现在的任务是老师要求家长辅导孩子做一个动作,比如倒立
以数字舵机而言,家长自主地给这个动作设置了非常非常严格的标准,他要求孩子倒立时在鞋面上摆一个竖立的硬币,然后盯着硬币,硬币向左一震动他在右边给孩子一鞭子,硬币向右一震动他在左边给孩子一鞭子.........总之他要求的不再是老师要求的“倒立”,而是倒立以后顶一枚不倒的硬币..........
模拟舵机的家长部分则是柔和派,老师要求倒立是吧?
他忠实地按老师的要求,让孩子倒立起来,孩子身体的轻微调整他不去关注了,他只关心是不是偏移了老师的标准,呵呵
五、实际应用选择
我们已经知道模拟舵机对于极轻微的外力干扰导致舵机盘移位的敏感度,和舵机执行命令的精确度,是不如数码舵机的了,那么我们是不是应该尽量使用数码舵机呢?
?
?
我个人而言不是这么认为。
首先——舵机的素质,其实不单纯是电路决定的,还有舵机的齿轮精度,还有非常非常关键的舵机电位器的精度。
一颗质量上乘的模拟舵机,往往比电路虽然是数码但是零件却是普通货色的数码舵机更准确,更不会抖舵。
其次,要知道我们在模型车上应用的时候,很多时候太高的精度并不是好事!
比如你玩1/8的车,特别是大脚车和越野车,那么烂的路面导致车时而滑动适合腾空,动不动就是零点几秒、N公分的偏差,舵机的微秒级别敏感、微米级别精度对整个事件能起怎么改善?
?
那叫神经质的舵机反应...........
其实应用在1/8车辆上,一颗0.1秒反应的模拟舵机是更合适的搭配。
它会更省电,更顺滑,不会那么神经质。
而且最重要的——它不会在一台转向虚位有几毫米的1/8越野车上,去不停地吱吱叫着去找那0.1毫米的居中(其实你即使把舵机连杆给它拆掉,让舵机空转,它也往往找不到那0.1毫米的居中,只是自己不停地吱吱叫着折腾自己而已,哈哈)
实际的应用上,我建议是1/10的竞赛级别房车,暴力型的飞机,可以选用数码舵机。
所谓神经质配神经质,呵呵。
其实我个人选择舵机,更看重的是品牌和玩家反响,而不是某些山寨工厂一力鼓吹的什么狗屁数码........
下面这篇文章,我大致看过,是符合科学原理的,想学习知识的可以看看。
注意吸收知识,要由根本上去分析,而不是以讹传讹!
否则你必定就象很多人一样去坚守“数码舵机比模拟舵机快”这个完全错误的观点,呵呵,那会被真正掌握知识的人暗地里面耻笑的数码舵机常见问题原理分析及解决:
一、数码舵机与模拟舵机的区别
传统模拟舵机和数字比例舵机(或称之为标准舵机)的电子电路中无MCU微控制器,一般都称之为模拟舵机。
老式模拟舵机由功率运算放大器等接成惠斯登电桥,根据接收到模拟电压控制指令和机械连动位置传感器(电位器)反馈电压之间比较产生的差分电压,驱动有刷直流电机伺服电机正/反运转到指定位置。
数字比例舵机是模拟舵机最好的类型,由直流伺服电机、直流伺服电机控制器集成电路(IC),减速齿轮组和反馈电位器组成,它由直流伺服电机控制芯片直接接收PWM(脉冲方波,一般周期为20ms,脉宽1~2ms,脉宽1ms为上限位置,1.5ms为中位,2ms为下限位置)形式的控制驱动信号,迅速驱动电机执行位置输出,直至直流伺服电机控制芯片检测到位置输出连动电位器送来的反馈电压与PWM控制驱动信号的平均有效电压相等,停止电机,完成位置输出。
数码舵机电子电路中带MCU微控制器故俗称为数码舵机,数码舵机凭借比之模拟舵机具有反应速度更快,无反应区范围小,定位精度高,抗干扰能力强等优势已逐渐取代模拟舵机在机器人、航模中得到广泛应用。
数码舵机设计方案一般有两种:
一种是MCU+直流伺服电机+直流伺服电机控制器集成电路(IC)+减速齿轮组+反馈电位器的方案,以下称为方案1,另一种是MCU+直流伺服电机+减速齿轮组+反馈电位器的方案,以下称为方案2。
市面上加装数码驱动板把模拟舵机改数码舵机属方案1。
二、舵机电机调速原理及如何加快电机速度
常见舵机电机一般都为永磁直流电动机,如直流有刷空心杯电机。
直流电动机有线形的转速-转矩特性和转矩-电流特性,可控性好,驱动和控制电路简单,驱动控制有电流控制模式和电压控制两种模式。
舵机电机控制实行的是电压控制模式,即转速与所施加电压成正比,驱动是由四个功率开关组成H桥电路的双极性驱动方式,运用脉冲宽度调制(PWM)技术调节供给直流电动机的电压大小和极性,实现对电动机的速度和旋转方向(正/反转)的控制。
电机的速度取决于施加到在电机平均电压大小,即取决于PWM驱动波形占空比(占空比为脉宽/周期的百分比)的大小,加大占空比,电机加速,减少占空比电机减速。
所以要加快电机速度:
1、加大电机工作电压;2、降低电机主回路阻值,加大电流;二者在舵机设计中要实现,均涉及在满足负载转矩要求情况下重新选择舵机电机。
三、数码舵机的反应速度为何比模拟舵机快
很多模友错误以为:
“数码舵机的PWM驱动频率300Hz比模拟舵机的50Hz高6倍,则舵机电机转速快6倍,所以数码舵机的反应速度就比模拟舵机快6倍”。
这里请大家注意占空比的概念,脉宽为每周期有效电平时间,占空比为脉宽/周期的百分比,所以大小与频率无关。
占空比决定施加在电机上的电压,在负载转矩不变时,就决定电机转速,与PWM的频率无关。
模拟舵机是直流伺服电机控制器芯片一般只能接收50Hz频率(周期20ms)~300Hz左右的PWM外部控制信号,太高的频率就无法正常工作了。
若PWM外部控制信号为50Hz,则直流伺服电机控制器芯片获得位置信息的分辨时间就是20ms,比较PWM控制信号正比的电压与反馈电位器电压得出差值,该差值经脉宽扩展(占空比改变,改变大小正比于差值)后驱动电机动作,也就是说由于受PWM外部控制信号频率限制,最快20ms才能对舵机摇臂位置做新的调整。
数码舵机通过MCU可以接收比50Hz频率(周期20ms)快得多的PWM外部控制信号,就可在更短的时间分辨出PWM外部控制信号的位置信息,计算出PWM信号占空比正比的电压与反馈电位器电压的差值,去驱动电机动作,做舵机摇臂位置最新调整。
结论:
不管是模拟还是数码舵机,在负载转矩不变时,电机转速取决于驱动信号占空比大小而与频率无关。
数码舵机可接收更高频率的PWM外部控制信号,可在更短的周期时间后获得位置信息,对舵机摇臂位置做最新调整。
所以说数码舵机的反应速度比模拟舵机快,而不是驱动电机转速比模拟舵机快。
四、数码舵机的无反应区范围为何比模拟舵机小
根据上述对模拟舵机的分析可知模拟舵机约20ms才能做一次新调整。
而数码舵机以更高频率的PWM驱动电机。
PWM频率的加快使电机的启动/停止,加/减速更柔和,更平滑,更有效的为电机提供启动所需的转矩。
就象是汽车获得了更小的油门控制区间,则启动/停止,加/减速性能更好。
所以数码舵机的无反应区比模拟舵机小。
五、模拟舵机加装数码舵机驱动板并未提升反应速度
根据以上分析可知,模拟舵机加装数码舵机驱动板,要提升反应速度,PMW外部控制信号(如陀螺仪送来的尾舵机信号)的频率必须加快,如果还是50Hz,那舵机反应速度当然就没提升了。
六、如何选择舵机电机
舵机电机按直流伺服电机的标准选用,根据电机种类、负载力矩、转速、工作电压等要求。
舵机一般都用空心杯电动机,有用有刷的,也有用无刷无感的。
空心杯电动机属于直流永磁、伺服微特电机,与普通电机的主要区别采用是无铁芯转子,也叫空心杯型转子。
具有以下优势:
1、最大的能量转换效率(衡量其节能特性的指标):
其效率一般在70%以上,部分产品可达到90%以上(普通铁芯电机在15-50%);
2、激活、制动迅速,响应极快:
机械时间常数小于28毫秒,部分产品可以达到10毫秒以内,在推荐运行区域内的高速运转状态下,转速调节灵敏;
3、可靠的运行稳定性:
自适应能力强,自身转速波动能控制在2%以内;
4、电磁干扰少:
采用高品质的电刷、换向器结构,换向火花小,可以免去附加的抗干扰装置;
5、能量密度大:
与同等功率的铁芯电机相比,其重量、体积减轻1/3-1/2;转速-电压、转速-转矩、转矩-电流等对应参数都呈现标准的线性关系。
七、如何选择舵机反馈电位器
舵机反馈电位器按种类、精度,耐用性的标准选用,导电塑料电位器的精度和耐磨程度大大优于其他如线绕电位器类型。
八、舵机控制死区、滞环、定位精度、输入信号分辨率、回中性能的认识
每一个闭环控制系统由于信号的振荡等原因,输入信号和反馈信号不可能完全相等,这就涉及到控制死区和滞环的问题,系统无法辨别输入信号和反馈信号的差异范围就是控制死区范围。
舵机自动控制系统由于信号震荡、机械精度等原因造成控制系统在控制死区范围外的小范围老是做调整,为使舵机在小范围内不对震荡做调整,这就需要引入滞环的作用了。
滞环比控制死区大,一般控制死区范围为±0.4%,滞环可设置为±2%,输入信号和反馈信号的差值在滞环内电机不动作,输入信号和反馈信号的差值进入滞环,电机开始制动-停止。
定位精度取决于舵机系统的整体精度:
如控制死区、机械精度、反馈电位器精度、输入信号分辨率。
输入信号分辨率指舵机系统对输入信号最小分辨范围,数码舵机输入信号分辨率大大优于模拟舵机。
回中性能取决于滞环和定位精度。
九、舵机为何会老发出吱吱的响声
舵机老发出吱吱的来回定位调整响声,是由于有的舵机无滞环调节功能,控制死区范围调得小,只要输入信号和反馈信号老是波动,它们的差值超出控制死区,舵机就发出信号驱动电机。
另没有滞环调节功能,如果舵机齿轮组机械精度差,齿虚位大,带动反馈电位器的旋转步,步范围就已超出控制死区范围,那舵机必将调整不停,吱吱不停。
十、为何有的舵机炸机易烧电路板
有的舵机选用的功率器件电流大同时系统中设计有或芯片自带有过流保护功能,能检测出堵转过流及短路状态迅速停止电机驱动信号。
还有可在电机回路接压敏电阻防止瞬间过压及在功率器件前端设计有吸收电容。
此类舵机炸机堵转不容易烧电路板和电机。
与舵机是金属齿还是塑料齿并无绝对关系。
十一、舵机为何抖舵
控制死区敏感,输入信号和反馈信号因各种原因波动,差值超出范围,舵臂动,所以抖舵。
1、结构和控制
一般来讲,舵机主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位计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等,国产的有北京的新幻想、吉林的振华等。
现举FutabaS3003来介绍相关参数,以供大家设计时选用。
之所以用3003是因为这个型号是市场上最常见的,也是价格相对较便宜的一种(以下数据摘自Futaba产品手册)。
尺寸(Dimensions):
40.4×19.8×36.0mm
重量(Weight):
37.2g
工作速度(Operatingspeed):
0.23sec/60°(4.8V)
0.19sec/60°(6.0V)
输出力矩(Outputtorque):
3.2kg.cm(4.8V)
4.1kg.cm(6.0V)
由此可见,舵机具有以下一些特点:
>体积紧凑,便于安装;
>输出力矩大,稳定性好;
>控制简单,便于和数字系统接口;
正是因为舵机有很多优点,所以,现在不仅仅应用在航模运动中,已经扩展到各种机电产品中来,在机器人控制中应用也越来越广泛。
3、用单片机来控制
正是舵机的控制信号是一个脉宽调制信号,所以很方便和数字系统进行接口。
只要能产生标准的控制信号的数字设备都可以用来控制舵机,比方PLC、单片机等。
这里介绍利用51系列单片机产生舵机的控制信号来进行控制的方法,编程语言为C51。
之所以介绍这种方法只是因为笔者用2051实现过,本着负责的态度,所以敢在这里写出来。
程序用的是我的四足步行机器人,有删改。
单片机并不是控制舵机的最好的方法,希望在此能起到抛砖引玉的作用。
2051有两个16位的内部计数器,我们就用它来产生周期20ms的脉冲信号,根据需要,改变输出脉宽。
基本思路如下(请对照下面的程序):
我用的晶振频率为12M,2051一个时钟周期为12个晶振周期,正好是1/1000ms,计数器每隔1/1000ms计一次数。
以计数器1为例,先设定脉宽的初始值,程序中初始为1.5ms,在for循环中可以随时通过改变a值来改变,然后设定计数器计数初始值为a,并置输出p12为高位。
当计数结束时,触发计数器溢出中断函数,就是voidtimer0(void)interrupt1using1,在子函数中,改变输出p12为反相(此时跳为低位),在用20000(代表20ms周期)减去高位用的时间a,就是本周期中低位的时间,c=20000-a,并设定此时的计数器初值为c,直到定时器再次产生溢出中断,重复上一过程。
这是WORD板,如果嫌网页版阅读不方便,欢迎下载,呵呵O(∩_∩)O~赚点贡献…………
#include
#defineucharunsignedchar
#defineuintunsignedint
uinta,b,c,d;
/*a为舵机1的脉冲宽度,b为舵机2的脉冲宽度,单位1/1000ms*/
/*c、d为中间变量*/
/*以下定义输出管脚*/
sbitp12=P1^2;
sbitp13=p1^3;
sbitp37=P3^7;
/*以下两个函数为定时器中断函数*/
/*定时器1,控制舵机1,输出引脚为P12,可自定义*/
voidtimer0(void)interrupt1using1
{p12=!
p12;/*输出取反*/
c=20000-c;/*20000代表20ms,为一个周期的时间*/
TH0=-(c/256);TL0=-(c%256);/*重新定义计数初值*/
if(c>=500&&c<=2500)c=a;
elsec="20000-a";/*判断脉宽是否在正常范围之内*/
}
/*定时器2,控制舵机2,输出引脚为P13,可自定义*/
voidtimer1(void)interrupt3using1
{p13=!
p13;
d=20000-d;
TH1=-(d/256);TL1=-(d%256);
if(d>=500&&d<=2500)d=b;
elsed="20000-b";
}
/*主程序*/
voidmain(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
X1=0
T1=1
T0=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度,也就是说,如果你要求的速度比这个快的话,舵机就反应不过来了;如果要求速度比这个慢,可以将脉宽变化值线性到你要求的时间内,做一个循环,一点一点的增加脉宽值,就可以控制舵机的速度了。
当然,具体这一点一点到底是多少,就需要做试验了,不然的话,不合适的话,舵机就会向步进电机一样一跳一跳的转动了,尝试改变这“一点”,使你的舵机运动更平滑。
还有一点很重要,就是舵机在每一次脉宽值改变的时候总会有一个转速由零增加再减速为零的过程,这就是舵机会产生像步进电机一样运动的原因。