Jak propojit servomotory s Arduino

Jak propojit servomotory s Arduino

V tomto příspěvku se naučíme, co je to servomotor, jak funguje, jak komunikovat s mikrokontrolérem a co tento motor odlišuje od ostatních motorů.

Jako nadšenec elektroniky bychom narazili na mnoho druhů motorů, zde se podíváme na speciální typ motoru nazývaného servomotor.



Co je to servomotor?

Servomotor nebo jednoduše servo je speciální typ motoru, který je určen k přesné kontrole polohy, zrychlení a rychlosti. Na rozdíl od všech ostatních typů motorů se servo může otáčet pouze o 180 stupňů obousměrně. Má mechanické převody a zarážku, které omezují úhlové otáčení serva.



Typický servomotor:

Servomotory se používají v robotice, CCTV kamerách, RC automobilech, lodích, hračkách, letadlech atd. Serva se používají tam, kde nepotřebujeme pokračovat v rotačním pohybu, ale uzamkneme se ve specifické poloze nebo pohybujeme určitým nákladem řízenou rychlostí v rámci pohyblivého úhlového limitu.

Servo není jen motor jako jiné typy, ale je to modul, který kombinuje normální stejnosměrný / střídavý motor, skupinu převodů, řídicí elektroniku a systém zpětné vazby. Podívejme se na jednotlivé zmíněné fáze podrobně.



Stejnosměrný / střídavý motor, který je použit na servo modulu, může být střídavý nebo kartáčovaný motor, na většině hobby serv se používá stejnosměrný motor a střídavé motory se používají v průmyslových aplikacích. Motor poskytuje rotační vstup do serva. Motor se uvnitř serva otáčí několika stovkami otáček a výstupní otáčky jsou asi 50krát nebo vícekrát menší než jeho otáčky.

Dalším stupněm je sestava ozubeného kola, která řídí úhlové otáčení a rychlost serva. Ozubené kolo může být vyrobeno z plastu nebo kovu v závislosti na objemnosti nákladu. Obecně jsou stejnosměrné motory provozovány při vysokých otáčkách a nízkém točivém momentu, převodové ústrojí převede přebytečné otáčky na točivý moment. Malý motor tak zvládne obrovské zatížení.

Dalším stupněm je řídicí elektronika, která se skládá z MOSFETů a integrovaných obvodů pro řízení otáčení motoru. V servomotorech je vždy k dispozici systém zpětné vazby pro sledování aktuální polohy pohonu.



V servech je obvykle zpětnovazební komponenta potenciometr, který je přímo spojen s rotujícím aktuátorem. Potenciometr funguje jako dělič napětí, který se přivádí do řídicí elektroniky. Tato zpětná vazba pomáhá řídicí elektronice určit množství energie dodávané motoru.

Servomotor ve pevné poloze se bude zdráhat pohybovat ze své aktuální polohy, pokud se pokusí vyrušit jakoukoli vnější sílu. Zpětnovazební systém sleduje aktuální polohu a napájí motor proti vnějšímu rušení.

Výše uvedený scénář je stejný, když servo pohybuje svým aktuátorem. Řídicí systém bude kompenzovat vnější sílu a bude se pohybovat stanovenou rychlostí.

Nyní už toho o servomotoru a jeho funkčním mechanismu víte dost. Podívejme se, jak řídit servomotory pomocí mikrokontroléru.

Servomotory mají 3 svorky na rozdíl od ostatních motorů, které mají 2 svorky, dvě pro napájení (jmenovité napětí 5 V) a jednu pro řídicí signál. Vodiče jsou barevně zbarveny pro snadnou identifikaci svorek.

Řídicí signály serv jsou PWM na frekvenci 50 Hz. Šířka impulzu signálu určuje polohu ramene ovladače. Typický hobby servomotor pracuje s šířkou pulzu od 1 do 2 milisekund.

Použitím řídicího signálu šířky impulzu 1 ms udrží pohon v poloze 0 stupňů. Použitím řídicího signálu šířky impulzu 2 ms se pohon udrží v poloze 180 stupňů. Přivedení signálů mezi 1–2 ms udrží pohon v úhlu 0–180 stupňů. Tomu lze lépe porozumět na obrázku níže.

Nyní byste pochopili, jak je servo řízeno pulzní šířkovou modulací (PWM).

Nyní se naučíme, jak propojit servomotor s Arduinem.

Kruhový diagram:

jak propojit servomotor s Arduino.

Zapojení je snadné a srozumitelné. Pokud používáte objemný servomotor, potřebujete externí napájení. Pokud se pokusíte napájet ze zdroje Arduino, přetížíte USB port v počítači.

Pokud máte podobné servo, které je znázorněno na začátku článku, můžete jej napájet z napájecího zdroje Arduino 5 V, který je také uveden v prototypu autora.

Autorův prototyp:

Arduino potřebuje k manipulaci knihovnu serv, usnadnilo to náš úkol a je již v IDE Arduino.

Program:

//--------Program developed by R.Girish--------//
#include
Servo motor
int pos = 0
int t=10
void setup()
{
motor.attach(7)
}
void loop()
{
A:
pos=pos+1
motor.write(pos)
delay(t)
if(pos==180) { goto B}
goto A
B:
pos=pos-1
motor.write(pos)
delay(t)
if(pos==0) { goto A}
goto B
}
//--------Program developed by R.Girish--------//

Výše uvedený program zametá akční člen 0 až 180 stupňů vpravo a 180 až 0 stupňů vlevo a opakuje cyklus. Jedná se o jednoduchý program pro testování serva, které budete možná potřebovat k napsání vlastního kódu pro vaše přizpůsobené aplikace.




Dvojice: Obvod řídicí jednotky ventilu vodního čerpadla se dvěma potrubími Další: Porozumění zapojení regulátoru napětí motocyklu