伺服:如何在Arduino上使用伺服電機

伺服,伺服電機

如果您想使用 伺服馬達或伺服,帶 Arduino的,在本文中,您將學習入門所需的知識。 我們已經在其他文章中看到了需要使用什麼 電動機, 步進馬達,以及了解此類設備操作所必需的其他概念,例如 PWM.

現在,您可以將另一個新的電子組件添加到 設備列表 分析,你可以去 整合您的DIY項目 添加新功能。

什麼是伺服器?

伺服

Un 伺服馬達簡稱伺服電動機,是一種與常規直流電動機相似的電動機,但其中一些元素使其與眾不同。 在這種情況下,它具有保持指示位置的能力,這是電動機不允許的。

另一方面,伺服器也可以 精確控制 借助一系列內部齒輪和一個系統,該系統的旋轉速度比其他類型的電機要好得多。

這些功能使它特別有趣 應用 機器人技術,或其他需要控制移動和位置的設備,例如打印機或遙控車。 在這種類型的無線電遙控汽車中,有常規的電動機來驅動汽車,以及用於轉向的伺服系統,借助該伺服系統可以精確地控制轉彎。

步進電機與伺服電機的區別

Nema 17

如果你想知道 伺服電機與步進電機的區別,事實是它們可能會混淆,因為在步進電機或步進電機中,旋轉也可以非常精確地控制,其應用與伺服非常相似。 相反,存在一些差異。

這是伺服電機通常使用的 稀土磁鐵,而步進電機則使用更便宜,更傳統的磁體。 因此,儘管保持緊湊,但伺服機構仍可實現更高的轉矩發展。 因此,旋轉力將非常高。

技術特徵

每當您購買伺服器時,都應查閱其技術資料或數據表。 這樣,您將確保 技術特徵 它具有一定的限制,例如電壓,強度,最大負載,扭矩等。 請記住,每個模型都可能完全不同。

例如,如果您看一看最受歡迎的產品之一,那就是Micro Servo 9G SG90 著名的Tower Pro公司,那麼您將具有一些非常獨特的特徵,儘管模型的編程和連接或多或少都是相同的,並且這裡所說的一切對任何人都有用。

在這種情況下,它是一種高質量的電動機,其轉角允許 在-90至90º之間掃動,也就是說,總轉數為180º。 您可以實現的分辨率很高,因此您將能夠一點一點地前進。 例如,在PWM信號限制為 Arduino UNO,您甚至可以從年級到年級取得進步。

同樣,PWM信號也會施加另一個限制,它是每個位置每單位時間可以更改的次數。 例如,由於脈衝的工作時間為1到2毫秒, 20毫秒週期 (50Hz),則伺服器可以每20 ms移動一次。

此外,它的重量為9克,儘管重量輕巧,但仍可以 扭矩或1.8 kg / c的扭矩m與4.8v 這要歸功於其POM齒輪組。

最後,您已經知道,根據要實現的目標,您將不得不選擇一個或另一個模型,以便它具有 項目所需的功能。 也就是說,要電動機移動負載X不同於讓電動機移動負載X,就不一樣了...

在哪裡購買伺服器

伺服馬達

如果您想開始使用這種類型的伺服電機,可以在許多專門商店中找到便宜的產品,也可以在亞馬遜上在線購買它。 例如,以下是一些示例 推薦產品 可能會讓您感興趣:

它們都具有相當好的轉角,但是每個人可以忍受的扭矩基本上不同。 我已經包括 三種不同的模式。 對於大多數應用而言,前者便宜一點就足夠了。 但是,如果您需要一種強度更高的其他應用程序,則可以選擇25和35,它們已經非常出色了...

與Arduino集成

Arduino伺服

如上圖所示, 伺服器非常容易連接 到Arduino。 它只有三根電纜,您可以通過以下方式進行連接:

  • 紅5V
  • 黑色與GND
  • 黃色,帶有Arduino PWM引腳,在這種情況下為-9。

為了對草圖進行編程以開始使用這些類型的引擎,您有幾種選擇。 但是,首先,您必須 添加Arduino IDE庫 驅動這種類型的伺服電機:

  1. 打開Arduino IDE。
  2. 進入程序。
  3. 然後包括庫。
  4. 伺服

至於 草圖代碼,可能很簡單,其中伺服器將通過其停止在0º,90º和180º的位置:

//Incluir la biblioteca del servo
#include <Servo.h>
 
//Declarar la variable para el servo
Servo servoMotor;
 
void setup() {
  // Iniciar el monitor serie
  Serial.begin(9600);
 
  // Iniciar el servo para que use el pin 9 al que conectamos
  servoMotor.attach(9);
}
 
void loop() {
  
  // Desplazar a la posición 0º
  servoMotor.write(0);
  // Esperar 1 segundo
  delay(1000);
  
  // Desplazar a la posición 90º
  servoMotor.write(90);
  // Esperar 1 segundo
  delay(1000);
  
  // Desplazamos a la posición 180º
  servoMotor.write(180);
  // Esperar 1 segundo
  delay(1000);
}

現在,如果你想 逐度移動,則可能是這樣的:

// Incluir la biblioteca servo
#include <Servo.h>
 
// Declarar la variable para el servo
Servo servoMotor;
 
void setup() {
  // Iniciar la velocidad de serie
  Serial.begin(9600);
 
  // Poner el servo en el pin 9
  servoMotor.attach(9);
 
  // Iniciar el servo en 0º
  servoMotor.write(0);
}
 
void loop() {
 
  // Los bucles serán positivos o negativos, en función el sentido del giro
  // Positivo
  for (int i = 0; i <= 180; i++)
  {
    // Desplazar ángulo correspondiente
    servoMotor.write(i);
    // Pausa de 25 ms
    delay(25);
  }
 
  // Negativo
  for (int i = 179; i > 0; i--)
  {
    // Desplazar el ángulo correspondiente
    servoMotor.write(i);
    // Pausa e 25 ms
    delay(25);
  }
}


成為第一個發表評論

發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。