伺服电机(servo motor )

伺服电机是指在伺服系统中控制机械元件运转的发动机,是一种补助马达间接变速装置。
伺服电机可以控制速度,位置精度非常准确,可以将电压信号转化为转矩和转速以驱动控制对象。
伺服电机转子转速受输入信号控制,并能快速反应,在自动控制系统中,用作执行元件,且具有机电时间常数小、线性度高、始动电压等特性,可把所收到的电信号转换成电动机轴上的角位移或角速度输出。分为直流和交流伺服电动机两大类,其主要特点是,当信号电压为零时无自转现象,转速随着转矩的增加而匀速下降。


舵机

舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前,在高档遥控玩具,如飞机、潜艇模型,遥控机器人中已经得到了普遍应用。
舵机主要是由外壳、电路板、驱动马达、减速器与位置检测元件所构成。其工作原理是由接收机发出讯号给舵机,经由电路板上的 IC驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回讯号,判断是否已经到达定位。
位置检测器其实就是可变电阻,当舵机转动时电阻值也会随之改变,藉由检测电阻值便可知转动的角度。
一般的伺服马达是将细铜线缠绕在三极转子上,当电流流经线圈时便会产生磁场,与转子外围的磁铁产生排斥作用,进而产生转动的作用力。依据物理学原理,物体的转动惯量与质量成正比,因此要转动质量愈大的物体,所需的作用力也愈大。舵机为求转速快、耗电小,于是将细铜线缠绕成极薄的中空圆柱体,形成一个重量极轻的无极中空转子,并将磁铁置於圆柱体内,这就是空心杯马达。
为了适合不同的工作环境,有防水及防尘设计的舵机;并且因应不同的负载需求,舵机的齿轮有塑胶及金属之区分,金属齿轮的舵机一般皆为大扭力及高速型,具有齿轮不会因负载过大而崩牙的优点。较高级的舵机会装置滚珠轴承,使得转动时能更轻快精准。


伺服电机与步进电机的性能比较

步进电机作为一种开环控制的系统,和现代数字控制技术有着本质的联系。在目前国内的数字控制系统中,步进电机的应用十分广泛。随着全数字式交流伺服系统的出现,交流伺服电机也越来越多地应用于数字控制系统中。为了适应数字控制的发展趋势,运动控制系统中大多采用步进电机或全数字式交流伺服电机作为执行电动机。虽然两者在控制方式上相似(脉冲串和方向信号),但在使用性能和应用场合上存在着较大的差异。

现就二者的使用性能进行如下比较:
  • 控制精度不同
    两相混合式步进电机步距角一般为 1.8°、0.9°,五相混合式步进电机步距角一般为0.72 °、0.36°。也有一些高性能的步进电机通过细分后步距角更小。如三洋公司(SANYO DENKI)生产的二相混合式步进电机其步距角可通过拨码开关设置为1.8°、0.9°、0.72°、0.36°、0.18°、0.09°、0.072°、0.036°,兼容了两相和五相混合式步进电机的步距角。
    交流伺服电机的控制精度由电机轴后端的旋转编码器保证。以三洋全数字式交流伺服电机为例,对于带标准2000线编码器的电机而言,由于驱动器内部采用了四倍频技术,其脉冲当量为360°/8000=0.045°。对于带17位编码器的电机而言,驱动器每接收131072个脉冲电机转一圈,即其脉冲当量为360°/131072=0.0027466°,是步距角为1.8°的步进电机的脉冲当量的1/655。
  • 低频特性不同
    步进电机在低速时易出现低频振动现象。振动频率与负载情况和驱动器性能有关,一般认为振动频率为电机空载起跳频率的一半。这种由步进电机的工作原理所决定的低频振动现象对于机器的正常运转非常不利。当步进电机工作在低速时,一般应采用阻尼技术来克服低频振动现象,比如在电机上加阻尼器,或驱动器上采用细分技术等。
    交流伺服电机运转非常平稳,即使在低速时也不会出现振动现象。交流伺服系统具有共振抑制功能,可涵盖机械的刚性不足,并且系统内部具有频率解析机能(FFT),可检测出机械的共振点,便于系统调整。
  • 矩频特性不同
    步进电机的输出力矩随转速升高而下降,且在较高转速时会急剧下降,所以其最高工作转速一般在300~600RPM。交流伺服电机为恒力矩输出,即在其额定转速(一般为2000RPM或3000RPM)以内,都能输出额定转矩,在额定转速以上为恒功率输出。
  • 过载能力不同
    步进电机一般不具有过载能力。交流伺服电机具有较强的过载能力。以三洋交流伺服系统为例,它具有速度过载和转矩过载能力。其最大转矩为额定转矩的二到三倍,可用于克服惯性负载在启动瞬间的惯性力矩。步进电机因为没有这种过载能力,在选型时为了克服这种惯性力矩,往往需要选取较大转矩的电机,而机器在正常工作期间又不需要那么大的转矩,便出现了力矩浪费的现象。
  • 运行性能不同
    步进电机的控制为开环控制,启动频率过高或负载过大易出现丢步或堵转的现象,停止时转速过高易出现过冲的现象,所以为保证其控制精度,应处理好升、降速问题。交流伺服驱动系统为闭环控制,驱动器可直接对电机编码器反馈信号进行采样,内部构成位置环和速度环,一般不会出现步进电机的丢步或过冲的现象,控制性能更为可靠。
  • 速度响应性能不同
    步进电机从静止加速到工作转速(一般为每分钟几百转)需要200~400毫秒。交流伺服系统的加速性能较好,以山洋400W交流伺服电机为例,从静止加速到其额定转速3000RPM仅需几毫秒,可用于要求快速启停的控制场合。
    综上所述,交流伺服系统在许多性能方面都优于步进电机。但在一些要求不高的场合也经常用步进电机来做执行电动机。所以,在控制系统的设计过程中要综合考虑控制要求、成本等多方面的因素,选用适当的控制电机。


伺服电机优点【其他电机(如步进电机)相比】:


1、精度:实现了位置,速度和力矩的闭环控制;克服了步进电机失步的问题;


2、转速:高速性能好,一般额定转速能达到2000~3000转;


3、适应性:抗过载能力强,能承受三倍于额定转矩的负载,对有瞬间负载波动和要求快速起动的场合特别适用;


4、稳定:低速运行平稳,低速运行时不会产生类似于步进电机的步进运行现象。适用于有高速响应要求的场合;


5、及时性:电机加减速的动态相应时间短,一般在几十毫秒之内;


6、舒适性:发热和噪音明显降低。


简单点说就是:平常看到的那种普通的电机,断电后它还会因为自身的惯性再转一会儿,然后停下。而伺服电机和步进电机是说停就停,说走就走,反应极快。但步进电机存在失步现象。


舵机控制

  • 舵机工作原理:

由接收机或者单片机发出信号给舵机,其内部有一个基准电路,产生周期为20ms,宽度为1.5ms 的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经由电路板上的IC 判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到达定位。
适用于那些需要角度不断变化并可以保持的控制系统。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。一般舵机旋转的角度范围是0 度到180 度。
舵机的转动的角度是通过调节PWM(脉冲宽度调制)信号的占空比来实现的,标准PWM(脉冲宽度调制)信号的周期固定为20ms(50Hz)。
理论上脉宽分布应在1ms到2ms 之间,但是,事实上脉宽可由0.5ms 到2.5ms 之间,脉宽和舵机的转角0°~180°相对应。
由于舵机品牌不同,对于同一信号,不同舵机旋转的角度也会有所不同。


实例演示

    了解了上面这些烦人的基础知识,下面我们进行一个通过Arduino控制舵机的实例。

本实验所需要的元器件很少:Arduino Pro MINI*1、舵机*1、跳线若干。

用Arduino 控制舵机的方法有两种:
  • 第一种是通过Arduino具备PWM的数字I/O接口产生占空比不同的方波,模拟产生PWM 信号进行舵机定位.

  • 第二种是直接利用Arduino 自带的Servo 函数进行舵机控制,这种控制方法的优点在于程序编写简便,缺点是只能控制2 路舵机。因为Arduino 自带函数只能利用D9、D10 接口。
    Arduino 的驱动能力有限,所以当需要控制1 个以上的舵机时需要外接电源。


方法1代码示例:

/**通过串口,让舵机转动到用户输入数字所对应的角度数的位置。将角度打印显示到屏幕上。将舵机信号线接在D3接口*/int servoPin = 3;    //定义D3连接伺服舵机信号线3,5,6,9,10,11均可int myAngle;      //定义角度变量int val;void setup(){pinMode(servoPin,OUTPUT);//设定舵机接口为输出接口Serial.begin(9600);//连接到串行端口,波特率为9600Serial.println("Please input Angle." );}void loop(){val=Serial.read();    //读取串行端口的值if(val>='0' && val<='9'){val = val - '0';    //将特征量转化为数值变量,myAngle = val*(180/9);//将数字转化为角度Serial.print("moving servo to ");Serial.print(val,DEC);Serial.println();analogWrite(servoPin,myAngle);}}


方法2代码示例:
Arduino
#include <Servo.h>
/**
attach()
设定舵机的接口,只有9或10接口可利用。
write()
用于设定舵机旋转角度的语句,可设定的角度范围是0°到180°。
writeMicroseconds() 
用于设定舵机旋转角度的语句,直接用微秒作为参数。
read()
用于读取舵机角度的语句,可理解为读取最后一条write()命令中的值。
attached()
判断舵机参数是否已发送到舵机所在接口。
detach()
使舵机与其接口分离,该接口(9或10)可继续被用作PWM接口。
*/
Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created
int pos = 0; // variable to store the servo position
void setup(){
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop(){
pos = 90;
myservo.write(pos); // 设定舵机转动的初始角度
delay(100);
for(pos; pos < 135; pos++){ // 设置转动角 1-180向右转,每一步转动1度
myservo.write(pos); //设定舵机转动的角度
delay(100);
}
delay(1000);
pos = 90;
myservo.write(pos);
delay(1000);
for(pos; pos>=45; pos--){
myservo.write(pos);
delay(100);
}
}

以上就是控制舵机的两种方法,各有优缺点大家根据自己的喜好和需要进行选择。不足之处还请大家批评指正。


    感谢一直关注着禾灮成长进步的朋友们。你们的信任、支持和鼓励,鞭策着我们一路走到了今天。感谢所有的合作伙伴,我们相互促进,共同见证了彼此的成长。感谢所有曾经在禾灮彼此倚靠、相互鼓励、携手同心、砥砺同行的兄弟姐妹。这里承载了我们的青春与热血。禾灮,感谢有你。未来,我们将一如既往,砥砺前行。禾灮·小楊2018.07.04

单片机-控制-伺服电机-舵机相关推荐

  1. 51单片机控制SG90舵机、MG90S舵机

    舵机的控制信号为周期是20ms 的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0-180度,呈线性变化.也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应 ...

  2. stm32单片机控制伺服电机转动固定角度

    stm32单片机控制伺服电机转动固定角度 在用伺服电机进行二维平台移动时,会涉及让二维平台移动一个步长的情况,落实到伺服电机上,就是让伺服电机转动一个固定的角度.所以本文说说让伺服电机转动固定角度,然 ...

  3. 51单片机控制sg90舵机

    1.PWM PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就 ...

  4. STM32F103单片机控制SG90舵机

    前言 在智能衣柜系统中,试用SG90旋转0°-180°,模拟衣柜的开关门,舵机正转开门,180°-0°反转模拟一个关门的现象. 一,SG90舵机 1.1SG90链接: [淘宝]https://m.tb ...

  5. 51单片机控制小舵机

    以前从没有想过写博客,但是最近发现以前的代码老是找不到,而且找到了也不一定想得起当时的逻辑,很麻烦,所以打算写写提醒一下自己. 最近老板让做一个扫描二维码装钥匙的小盒子,就给个小舵机和3D打印机,传动 ...

  6. 单片机控制舵机matlab仿真,单片机舵机控制程序教程及proteus仿真原理图

    单片机控制舵机的proteus仿真原理图: 单片机舵机控制程序教程,在压缩包中可下载全部内容: 单片机源程序: /******************************************* ...

  7. 【51单片机STC89C52】IO口模拟PWM控制SG90舵机

    一.PWM PWM ,英文名 Pulse Width Modulation ,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进 行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编 ...

  8. 【Proteus仿真】51单片机8路舵机点动±90°点动控制

    [Proteus仿真]51单片机8路舵机点动±90°点动控制 Proteus仿真 Proteus连线图 程序代码 #include<reg52.h>sbit PWM0 = P1^0; sb ...

  9. 基于STC8G2K64S4单片机控制小车循迹(直流电机和步进电机)

    基于STC8G2K64S4单片机控制小车循迹 #前言 本文从硬件和软件两方面介绍了使用STC8G2K64S4单片机控制舵机的方法,并使用步进电机和直流电机来举例说明 之前说讲了如何用STC8G2K64 ...

  10. stc8a控制MG90S舵机

    1.实验目的: 利用硬件PWM进行控制舵机: 硬件PWM使用P6端口: 2.实验设备: 单片机开发板stc8a8k最小核心板: 7pin的OLED MG90S舵机: 3.原理: 舵机的控制原理, 舵机 ...

最新文章

  1. isolate-user-vlan隔离用户vlan的配置
  2. Linux下socket最大连接数 ulimit -n 最大值修改
  3. jQuery浏览器版本判断
  4. 分发器上的会话代理进程控制脚本使用说明
  5. IT程序人生:学会写程序能从事哪些技术岗位?
  6. vSphere 5.5:使用 RVC VSAN 监控工具第 2 部分
  7. C++模板Trait
  8. 嵌入式软件设计必看书籍
  9. 服务器在线测速系统源码_亲测可用
  10. Redis数据丢失问题
  11. 中国电信短信网关程序源码
  12. 双十一报告(B站平台)|品牌、UP主内容营销如何实现共赢?
  13. 宫崎骏动画里的新垣结衣见过没?这个开源动漫生成器让你的照片秒变手绘日漫
  14. 被动扫描、主动扫描的概念
  15. 计算机编程ebcdic码,EBCDIC和BCD码
  16. FPGA数字信号处理(四)Quartus FIR IP核实现
  17. GIS地图瓦片、坐标转换基本概念
  18. 最近失业了,在做副业的路上走了很多坑
  19. zbb20181006 maven配置阿里云中央仓库
  20. 谈谈后端业务系统的微服务化改造

热门文章

  1. Unity TextMesh Pro 常用汉字及字母符号
  2. Code jock使用笔记
  3. 案例分享:Qt管道焊接参数条码打印系统(条码打印机TSC 244 Pro、打印条码、打印中文、打印字符、多张连续打印)
  4. ExtJS入门到精通视频教程下载 ExtJS视频教程
  5. JavaScript高级程序设计(第三版)pdf版 下载
  6. user-agent 批量汇总+随机返回一个
  7. Vs2015常见错误码:error LNK2019: 无法解析的外部符号;error C2011:类型重定义;
  8. 绝对式编码器的ssi协议 stm32 hal
  9. 前任3丨《前任3》里的这三种爱情,你都有过哪一种
  10. vim编辑器的基本用法