如果您想使用 伺服馬達或伺服,帶 Arduino的,在本文中,您將學習入門所需的知識。 我們已經在其他文章中看到了需要使用什麼 電動機, 步進馬達,以及了解此類設備操作所必需的其他概念,例如 PWM.
現在,您可以將另一個新的電子組件添加到 設備列表 分析,你可以去 整合您的DIY項目 添加新功能。
什麼是伺服器?
Un 伺服馬達簡稱伺服電動機,是一種與常規直流電動機相似的電動機,但其中一些元素使其與眾不同。 在這種情況下,它具有保持指示位置的能力,這是電動機不允許的。
另一方面,伺服器也可以 精確控制 借助一系列內部齒輪和一個系統,該系統的旋轉速度比其他類型的電機要好得多。
這些功能使它特別有趣 應用 機器人技術,或其他需要控制移動和位置的設備,例如打印機或遙控車。 在這種類型的無線電遙控汽車中,有常規的電動機來驅動汽車,以及用於轉向的伺服系統,借助該伺服系統可以精確地控制轉彎。
步進電機與伺服電機的區別
如果你想知道 伺服電機與步進電機的區別,事實是它們可能會混淆,因為在步進電機或步進電機中,旋轉也可以非常精確地控制,其應用與伺服非常相似。 相反,存在一些差異。
這是伺服電機通常使用的 稀土磁鐵,而步進電機則使用更便宜,更傳統的磁體。 因此,儘管保持緊湊,但伺服機構仍可實現更高的轉矩發展。 因此,旋轉力將非常高。
技術特徵
每當您購買伺服器時,都應查閱其技術資料或數據表。 這樣,您將確保 技術特徵 它具有一定的限制,例如電壓,強度,最大負載,扭矩等。 請記住,每個模型都可能完全不同。
例如,如果您看一看最受歡迎的產品之一,那就是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,就不一樣了...
在哪裡購買伺服器
如果您想開始使用這種類型的伺服電機,可以在許多專門商店中找到便宜的產品,也可以在亞馬遜上在線購買它。 例如,以下是一些示例 推薦產品 可能會讓您感興趣:
-
AZDelivery伺服MG90S Micro:承重13.4公斤。
- 歐盟創新:最大25公斤/厘米。
- 歐盟創新:另一個防水型號,最大承重35kg / cm。
它們都具有相當好的轉角,但是每個人可以忍受的扭矩基本上不同。 我已經包括 三種不同的模式。 對於大多數應用而言,前者便宜一點就足夠了。 但是,如果您需要一種強度更高的其他應用程序,則可以選擇25和35,它們已經非常出色了...
與Arduino集成
如上圖所示, 伺服器非常容易連接 到Arduino。 它只有三根電纜,您可以通過以下方式進行連接:
- 紅5V
- 黑色與GND
- 黃色,帶有Arduino PWM引腳,在這種情況下為-9。
為了對草圖進行編程以開始使用這些類型的引擎,您有幾種選擇。 但是,首先,您必須 添加Arduino IDE庫 驅動這種類型的伺服電機:
- 打開Arduino IDE。
- 進入程序。
- 然後包括庫。
- 伺服
至於 草圖代碼,可能很簡單,其中伺服器將通過其停止在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); } }