电子开发 | 基础入门 | 电路原理图 | 姊舰鍥惧疄渚� | PLC鍩虹   銆婂鏋滃枩娆㈡湰绔欙紝璇锋寜 Ctrl+D 鎵嬪姩鏀惰棌锛佹劅璋㈡偍鐨勬敮鎸併€�涓€璧峰涔犱竴璧疯繘姝ワ紝鐢靛瓙寮€鍙戠帇娆㈣繋鎮紒.

电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册

★电路公式手册,最新版《电子电路公式计算器》,电路公式查询手册 电路公式计算器【电子从业人员必备手册】
☆十天学会单片机实例100 c语言 chm格式。资料内容详细,覆盖例子多,内容广【电子从业人员必备手册】
搜索: 您现在的位置: 电子开发网 >> 基础入门 >> 伺服电机与控制 >> 正文

使用servo.h控制SG90舵机,伺服电机控制编程

作者:佚名    文章来源:本站原创    点击数:1926    更新时间:2019-05-30

本文将继续围绕舵机的控制进行,我们将以Tower Pro (辉盛)SG90舵机的控制为例,因为SG90是市面上价格较便宜,也是实验中用得最多的产品之一。

舵机

使用servo.h控制SG90舵机 

舵机(servo motor),常用于遥控模型飞机,所以又常称为RC伺服电机(RC Servo,Radio Control Servo,Remote Control Servo)。详见:什么是舵机?

舵机里含有直流马达、齿轮箱、轴柄、以及控制电路,我们可透过信号控制轴柄的转动角度,大概都是0到180度,但不同厂牌型号会有不同的范围;经由齿轮箱降速后,变成适当可用的转速,并且提供更高的转矩(扭力)。详见:舵机的工作原理

不过每个厂牌型号的舵机可允许旋转的角度各不相同,也就是说可接受的信号脉冲范围也不相同,必须查阅产品资料规格书,若超出范围可能会损害舵机。下面是Tower Pro SG90的规格:

111

重量:9g

尺寸:23*12.2*29mm

工作电压:4.8V转矩:1.8kg-cm,当工作电压为4.8V时

运转速度:0.1秒 ∕ 60度 ,当工作电压为4.8V时

脉冲宽度范围:500~2400µs

死频带宽度(dead band width):10µs

从中我们可知,可允许的脉冲范围是500~2400µs,也就是0.5~2.4ms,比刚刚说的一般范围还要宽,也就代表这个舵机能旋转的角度更大。另外有项值得一提的数据是死频带宽度,意思是说,因为信号可能不稳定而上下起伏,当这一次脉冲宽度与上一次相差不超过死频带宽度时,舵机便不会动作。

servo.h控制舵机

本次试验,我们直接用Arduino的5V脚为舵机供电。若使用超过两个舵机,则应该使用独立的电源为舵机供电,记得共地。信号脚使用Arduino的D9。 Arduino内建操控舵机的标准库,使用方法非常简单。在如何使用Arduino舵机库servo.h一文中,我们也进行了相关函数的介绍。下面以操控舵机的旋转角度为例,来看看servo.h如何控制舵机。本实验使用此servo.h代码库时,D9与D10无法输出PWM信号,于是我们将舵机的信号线接在数位脚位9或10。 代码如下:

#include <Servo.h>
Servo myservo; // 建立Servo实例,控制舵机
void setup()
{
myservo.attach(9); // 连接D9,舵机的信号线
}
void loop()
{
for(int i = 0; i <= 180; i+=1){
myservo.write(i); // 使用write,传入角度值,从0度转到180度
delay(20);
}
for(int i = 180; i >= 0; i-=1){
myservo.write(i);// 使用write,传入角度值,从180度转到0度
delay(20);
}
}

不过Servo.h预设的脉冲宽度范围是544到2400µs,跟SG90舵机的500到2400差了一些些,我们可修正此点。

#include <Servo.h>
Servo myservo;
void setup()
{
myservo.attach(9, 500, 2400); // 修正脉冲宽度范围
myservo.write(90); // 开始先置中90度
delay(3000);
}
void loop()
{
for(int i = 500; i <= 2400; i+=100){
myservo.writeMicroseconds(i); // 直接以脉冲宽度控制
delay(300);
}
for(int i = 2400; i >= 500; i-=100){
myservo.writeMicroseconds(i);
delay(300);
}
}

这里需要注意的,使用舵机前必须查询舵机的规格参数表,查到正确的脉冲宽度范围,如果与servo.h的预设范围有偏差,需要采用“myservo.attach(9, 500, 2400)”的方式进行修正。使用writeMicroseconds函数时也要注意,不能传入超出范围的值,否则可能会损坏舵机。


Tags:舵机,伺服电机  
责任编辑:admin
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
    没有任何评论
电子开发网:汇集综合各类电子制作与电路图的网站,plc工控技术,模电数电知识,单片机EDA等等!荟萃电路图网站精华,为工程师创造价值。欢迎关注微信公众号:电子开发网!
资料包下载
 [闁告娲滄晶鏍嫉妤﹁法銈柡鍌︽嫹]闁告ぞ绀侀妵澶屸偓娑崇細缁变即宕¢弴鐘差暬闁哄牆鎼悿鍕瑹閿燂拷100 c閻犲浄鎷�
 [閺夌儐鍨▎銏㈢尵閿燂拷]濞戞挸顦宠ぐ绀烲C閻庢冻缂氱弧鍕鐠恒劍鍩傞弶鐑嗗灟濞嗩敩X-TR
 [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]LM324閺夆晜鍔栭弬锟�4~20mA閺夌儑鎷�1~5V闁汇垹鐏氱粊锟�
 [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]LM386濡炲湱绮悗顒佹媴閹捐顔婇柛蹇擃儔椤ユ捇寮ㄩ幆褋浜i柛锝冨妼鐢拷
 [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]936闁绘帒锕よぐ鎾偨娴e啰鐔呴柛妯煎枔閹﹪宕堕敓锟�
 [闁告娲滄晶鏍嫉妤﹁法銈柡鍌︽嫹]閻℃帒鎳庨敍鎰枖閵忥紕銈撮悹鐚存嫹+婵炴挴鏅涚€癸拷+闁硅翰鍎撮鐔兼儍閸曨偄绀�
 [闂侇偅姘ㄩ弫銈夋偨闂堟稓鎽嶉悹浣瑰礃椤撳憡娼娆愵偨]S7-200PLC闁汇劌瀚挒銏ゆ儑閻旀槒鎷ù鐙呮嫹 S7_2
 [閺夌儐鍨▎銏㈢尵閿燂拷]S7-200閹煎瓨鎸婚弸鍐╃鐠佸湱绀勯柛蹇g厜缁憋拷,STEP7
 [閺夌儐鍨▎銏㈢尵閿燂拷]ModbusPoll闁告粌顒爋dbusSalve闁稿骏鎷�
 [閺夌儐鍨▎銏㈢尵閿燂拷]STEP7婵☆垪鍓濈€氭瑩鏌岃箛鏂跨樄濞寸姰鍊曠花锟� Smart_
 [閺夌儐鍨▎銏㈢尵閿燂拷]Modbus閻犲鍟抽惁顖滃垝閸撗傜触 v1.024 缂備緤鎷�
 [閺夌儐鍨▎銏㈢尵閿燂拷]Modscan32闁告粌顒爋dsim32,modb
 [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]89c51闁稿繐顦遍悵娑㈠棘闁稖闆归柣顏嗗櫐缁辨獤rotues
 [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]濞戞挸娲ら崟楣冨储閸炴姰otues濞寸姾娉曞﹢锛勭矙鐎n亞纰嶆繝褎鍔楅悥锟�
 [闁活澀绲婚惌鐐鐠恒劍鍩傞悹浣瑰礃椤擄拷]51闁告娲滄晶鏍嫉閸濆嫬鍧婄紒瀣舵嫹 protues濞寸姾娉曞﹢锟�
热门文章
  • 此栏目下没有热点文章
最新文章
 简单三极管逆变器
 TL494制作50HZ逆变
 80W简单的功放电路
 555制作的简易电子
 850热风枪电路图原
 直流12v荧光灯电路
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询