我写本教程的目的是向您展示如何使用Arduino UNO板控制SG90 9G微型伺服电机的方向,位置和速度。我知道,如果您是一名具有机器人经验的业余爱好者,则很容易控制此伺服电机,但是像往常一样,您在该领域不会错过任何东西。即使这样,如果本教程对您来说无聊,这里还是Arduino UNO廉价项目的列表。

教程:如何使用Arduino UNO控制Tower Pro SG90伺服
教程的组织方式:
- 我将首先简要介绍控制伺服电机所需的零件。
- 然后,我对Tower Pro SG90伺服器进行了概述。
- 我将伺服电机分解为零件,向您展示零件;
- 最后,我去了练习部分,向您展示了如何连接TowerPro SG90,编写Arduino草图以及一些有关伺服电机的技巧。
伺服电机可以精确控制角位置,速度和加速度。它’s like you’在您的汽车方向盘上。您可以精确控制汽车的速度和方向。
可以非常严格地控制角位置,速度和加速度’必须在没有用于位置反馈的传感器的情况下进行。电机旋转时,此传感器会发出警报。但是即使如此,还是有一些更复杂的东西可以控制伺服电机的所有阶段。它’是一个专用控制器,可使伺服器内的微小物体以军事精度移动。
反馈传感器,控制器和电动机。一世’m just asking –为什么需要伺服电机?如果需要控制对象的位置,旋转传感器,移动手臂和腿部,驱动轮和轨道等,这些伺服器必不可少。
1.所需硬件
这不是一个复杂的项目,但是我们仍然需要一些部分。幸运的是,所有组件都很便宜,并且可以在全球范围内使用。
要控制TowerPro SG90伺服器,您将需要以下部件:
- 1 x TowerPro SG90伺服电机(价格〜$ 5)
- 1个Arduino UNO(价格〜$ 21)
- 1 x面包板(价格〜$ 4.4 /件)
- 6 x跳线(价格〜$ 6.7)
2. 的Tower Pro SG90 伺服
Tower Pro SG90伺服是市场上最便宜的伺服电机之一。即使’便宜,不到5美元,唐’尝试用手旋转伺服电机,因为这可能会损坏电机。
让’简要概述SG90规格。
例如,您需要扭矩来控制物体的位置,这个重量为0.32盎司(9.0克)的小盒子可以在4.8V电压下提供25.0盎司(1.80千克-厘米)的扭矩。在4.8V时,伺服速度为0.12秒/ 60°。所有这些规格对于这个小塑料盒来说确实令人印象深刻。好吧,还有其他高端伺服器比SG90伺服器有更多的肌肉,但是这些高端伺服器可以’击败了SG90伺服器的价格。 SG90便宜到足以在它们破裂时扔掉。
3.看一下SG90微型伺服器的内部

内部SG90伺服
在微型伺服器内部,您可以从上图中找到零件。顶盖装有塑料齿轮,而中盖装有直流电动机,控制器和电位计。
4.如何连接TowerPro SG90,Arduino草图和一些技巧
考虑到您已经有一个Arduino UNO,SG90伺服器和六根线,您的电路应如下所示(加上方案):

Arduino的 SG伺服电机控制架构

Arduino的 SG伺服电机控制电路
这是要注意的事情。伺服电机有三根引线,比直流电机多一根。每根引线都有颜色代码。因此,您必须将棕色线从微型伺服器连接到Arduino的GND引脚。将红色导线从伺服器连接到Arduino上的+ 5V。最后,将橙色线从SG90伺服器连接到Arduino上的数字引脚(引脚9)。
Arduino的使事情变得简单。在本教程中,我将使用直接通过Arduino通过USB供电的SG90伺服器。您也可以这样做。
的Arduino sketch
在下面您可以找到控制伺服的Arduino草图’s方向,电机位置和SG90伺服器的速度。在到达Arduino代码之前,我想写一些关于
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | / * 进入机器人 * / #包括 伺服器 //add '<' and '>' before and after 伺服器 整型 伺服针 = 9; 伺服 伺服系统; 整型 伺服角度 = 0; //伺服位置(以度为单位) 虚空 设定() { 序列号.开始(9600); 伺服系统.连接(伺服针); } 虚空 循环() { //控制伺服方向和电机位置 伺服系统.写(45); //将SG90伺服器向左旋转45度 延迟(1000); //等待1秒 伺服系统.写(90); //将SG90伺服器旋转回90度(中心位置) 延迟(1000); //等待1秒 伺服系统.写(135); //将SG90伺服右转135度 延迟(1000); //等待1秒 伺服系统.写(90); //将SG90伺服器旋转回90度(中心位置) 延迟(1000); //结束控制伺服方向和电机位置 //控制伺服速度 //如果您更改延迟值(从示例更改为50到10),则伺服速度会更改 对于(伺服角度 = 0; 伺服角度 < 180; 伺服角度++) //将微伺服从0度移到180度 { 伺服系统.写(伺服角度); 延迟(50); } 对于(伺服角度 = 180; 伺服角度 > 0; 伺服角度- ) //现在将微伺服从0度移回180度 { 伺服系统.写(伺服角度); 延迟(10); } //结束控制伺服速度 } |
您也可以破解SG 90微型伺服器
SG90微型伺服器可以转动您的机械手。这非常好,因为伺服箱的形状可帮助您将其连接到机器人机箱。但是SG90伺服器的旋转存在问题。它’s关于最大旋转180度的旋转。
在这种情况下,您需要对其进行破解以使其连续旋转。这是一个微妙的操作,需要时间和注意。在进行任何操作之前,请确保您有多余的钱或其他微型伺服器。’re doing this wrong.
这个 本教程逐步向您展示如何破解Tower Pro SG 90微型伺服器以实现连续旋转。
最后,我希望本教程能帮助您学习如何使用Arduino UNO控制Tower Pro SG 90微型伺服器。另外,不要’别忘了在社交网络上分享该教程,以帮助其他人学习控制他们的微型伺服器。
免责声明:此帖子包含会员链接。
感谢您提供了出色的教程,我做到了,而且效果很好,我正在训练激活arduino uno的伺服mg996R,但没有成功。
再次感谢你
很棒的帖子!感谢您的教程。
附言:代码中有一点错字,您将角度设置为45度,您的注释中说’设置为50。只是一个小错误。 ðŸ™,
HY,
你有权利。我已改正错误。
Mg995是相对较重的电动机,可以直接由微控制器供电。电源必须单独提供。我通常使用4aa NiMh电池组,每节电池的最大容量为2100mAh,可用于几个mg995电机,并且效果很好。
你好
我尝试用PWM控制伺服电机。我需要一个20ms的周期和900µs至2ms的柔韧性占空比来设置伺服器的方向。我使用的是LPC2148。您可以给我任何ARM新手的建议吗?如果有的话,请给我任何参考代码。
提前致谢
你好
对不起,我不知道’没有使用LPC 2148的经验。
伺服周围的(大于/小于)使其被视为html标签,从而消失了。可能只是在chrome(或一般来说是Blink渲染引擎)中,我隐约感觉到这种情况在某些时候已经改变或有所不同。用。。。来代替</>修复(或修复应该自动执行的操作)。
的“Replace with”零件应该渲染</> – comments take </>作为html标签以及它。
我解决了这个问题
伺服电机显示90可以旋转到哪个角度
我在编译时收到此消息
编译arduino genuino / uno时出错
抱歉:为董事会arduino genuino / uno编译时出错
使用#include
只是一件小事:我的Arduino IDE v 1.8.5中的include必须是#include(注意大写字母)‘S’),而不是小的‘s’例如。否则,不错的教程!
我正在使用arduino genuino / uno,但我也有同样的疑问(退出状态1
Error compiling 对于 board Arduino的 / Genuino Uno .)
我也有同样的问题
退出状态1
Error compiling 对于 board Arduino的 / Genuino Uno .
我有同样的问题,但更改了小写“s” in “servo.h” to an Upper case “S” as “Servo.h”
先生
我想知道我是否需要在项目中使用单独的电源(电池)。我正在使用Arduino连接2个红外传感器,1个塔式专业伺服SG90和1个LCD屏幕。
我的伺服器昨天在此代码上正常工作,但是今天不再工作了,有人可以帮我吗
#包括
伺服伺服;
虚空 设定(){
序列号.begin(9600);
myservo.attach(10);
//最初必须停止伺服
myservo.write(90);
}
无效循环(){
//开始顺时针旋转
//继续进行正确的转弯
// 延迟(TURN_TIME);
//停止转弯
myservo.write(95);
延迟(3000);
myservo.write(0);
延迟(105);
//等待12h
// 延迟(10000);
}
程序中存在错误头文件名不正确
#包括 伺服器 ====should be==== #包括 伺服
参考:
编译器返回错误
Error compiling 对于 board Arduino的 / Genuino Uno .)
#包括
问题:步进器如何记住它在哪里’s at?
例如,如果我将其从90度移至100度并转动arduino,则下次启动时是否知道90度在哪里或假定当前位置为90度?
嗨我’我试图制造一个迷你自动贩卖机,我需要马达。这是我唯一能找到的一种,我剪掉了末端部分,因为我需要直线而不是那个连接器。现在我无法正常工作。我尝试了所有可能的组合以及一个新的9v电池,并且电动机刚刚胜出’旋转。有人知道怎么了吗?救命!
我的伺服赢了’t不能完整旋转180度,似乎短了5度。一世’尝试在程序中输入185,但没有’没有任何区别。我可以用手将伺服器旋转到其到达的位置。
我没有运气这是我的错误消息:
Arduino的:1.8.9(Windows Store 1.8.21.0)(Windows 10),开发板:“Arduino/Genuino Uno”
构建选项已更改,所有重建
ServerMoter:7:10:错误:#include期望“FILENAME” or
#包括 伺服器 //add ” before and after 伺服器
^
退出状态1
#包括期望“FILENAME” or
该报告将包含更多信息
“在编译过程中显示详细输出”
文件中启用的选项-> Preferences.
我可以让它工作超过180度吗
的scketch wire colors are not the colors 对于 the actual 伺服系统.