Jak ovládat servomotor s Arduino

Jak Ovladat Servomotor S Arduino



Servomotory je typ elektrického zařízení, které může s velkou přesností měnit nebo otáčet polohu předmětu. V začátcích byly použity k ovládání křídel RC letadel, o chvíli později se dostaly k robotice, humanoidním robotům a mnoha automatizačním projektům. Na rozdíl od krokových motorů je jejich pohyb omezen mezi 0o až 180o.

Servomotory mají obvykle ramena, která lze ovládat pomocí Arduina. Servomotory se skládají z řídicího systému, který zajišťuje zpětná vazba o aktuální poloze hřídele motoru umožňuje tato zpětná vazba pohybovat se s velkou přesností.

Pinout servomotoru

Většina servomotorů má obvykle tři kolíky:







  • Pin Vcc (normálně červený 5V)
  • GND kolík (normálně černý 0V)
  • Pin vstupního signálu (příjem PWM signálu z Arduina)



Provoz servomotoru

Servomotor můžeme ovládat připojením pinu Vcc na 5V a pinu GND na 0V. Na žlutém terminálu poskytujeme a PWM signál, který řídí úhel natočení servomotoru. Šířka PWM signálu nám udává úhel, pod kterým motor otočí rameno.



Pokud se podíváme do Datasheetu servomotorů, dostaneme následující parametry:





  • Časová perioda signálu PWM
  • Minimální šířka pro PWM
  • Maximální šířka pro PWM

Všechny tyto parametry jsou předdefinovány v knihovně Arduino Servo.

Servomotory s Arduinem

Servomotory se s Arduino velmi snadno ovládají díky Servo knihovna což nám pomáhá přizpůsobit náš kód podle potřeby a umožňuje nám otočit rameno serva v požadovaném úhlu.



Všechny tři výše uvedené parametry jsou pevně dané v knihovně serv. Pomocí těchto parametrů můžeme řídit úhel servomotoru následujícím způsobem:

  • Pokud je šířka signálu PWM = WIDTH_MAX, servo se otočí o 180o
  • Pokud je šířka signálu PWM = WIDTH_MIIN, servo se otočí na 0o
  • Pokud šířka signálu PWM leží mezi nimi WIDTH_MAX a WIDTH_MIN servomotor se bude otáčet mezi 0o a 180o

Na některém z pinů Arduina můžeme vygenerovat požadovaný PWM signál. PWM signál bude dán na pin vstupního signálu servomotoru. Připojení zbývajících dvou pinů serva k 5V a GND Arduina.

Jak ovládat servomotor pomocí Arduina

Zde vysvětlím, jak můžeme připojit a naprogramovat náš servomotor pomocí Arduina. Vše co potřebuješ je:

  • Arduino UNO
  • USB B kabel
  • Servomotor
  • Startovací dráty

Jak programovat servo s Arduino

Následuje několik jednoduchých kroků:

Krok 1: Zahrnout předdefinovanou knihovnu serv:

# zahrnout < Servo.h >

Krok 2: Vytvořit objekt serva:

Servo myservo;

Tip: V případě, že ovládáte více než jeden servomotor, musíte vytvořit více servo objektů:

Servo myservo1;
Servo myservo2;

Krok 3: Nastavte ovládací kolík (9) na Arduino Uno, který posílá PWM signál do vstupního portu serva:

myservo.připojit ( 9 ) ;

Krok 4: Otočte úhel servomotoru na požadovanou hodnotu, například 90o:

myservo.write ( poz ) ;

Arduino kód

Otevřete ukázkový program servomotoru z Soubor>Příklad>Servo>Sweep otevře se nové okno s naším náčrtem serva:

#include

Servo myservo; // je vytvořen servo objekt pro ovládání servomotoru
int pos = 0 ; // pro uložení polohy serva je vytvořena nová proměnná
neplatné nastavení ( ) {
myservo.připojit ( 9 ) ; // tohle bude soubor Arduino pin 9 pro PWM výstup
}
prázdná smyčka ( ) {
pro ( poz. = 0 ; poz. = 0 ; pos -= 1 ) { // jde od 180 na 0 stupně
myservo.write ( poz ) ; // řekněte servu, aby přešlo do polohy „pos“.
zpoždění ( 5 ) ; // čeká pro 5 ms, aby se servo mohlo dostat do polohy
}
}

Jakmile je program zkompilován a nahrán, servomotor se začne pomalu otáčet od výchozí polohy 0 stupňů do 180 stupňů, jeden stupeň po druhém, stejně jako kroky. Když se motor otočí o 180 stupňů, začne se otáčet v opačném směru ke svému výchozímu bodu, tj. 0 stupňů.

Schémata

Jak ovládat servomotor pomocí potenciometru

Polohu servomotoru můžeme ovládat i ručně. K tomu potřebujeme a Potenciometr . Potenciometr má tři piny. Připojte dva vnější kolíky k 5V Vcc a GND Arduina a prostřední jeden ke kolíku A0 na desce Arduino.

Jak programovat servo s potenciometrem

Většina náčrtu pro potenciometr je stejná jako v předchozím příkladu. Jediným rozdílem je nová proměnná val a připnout je definována před částí kódu nastavení a smyčky.

int potpin = A0;
int val;

Analogový pin A0 ve smyčce slouží ke čtení hodnot pro Potenciometr s funkcí analogRead() . Desky Arduino obsahují 10bitový ADC (Analog to Digital Converter), který nám dává hodnoty mezi 0 a 1023 v závislosti na poloze potenciometru:

val = analogPřečíst ( připnout ) ;

Nakonec jsme použili mapa() Funkce pro přemapování čísel od 0 do 1023 podle úhlu serva, jak víme, servomotory se mohou otáčet pouze mezi 00 a 1800.

val = mapa ( val, 0 , 1023 , 0 , 180 ) ;

Arduino kód

Náčrt otevřeného knoflíku dostupný v Arduino IDE, přejděte na Soubory>Příklady>Servo>Knob . Otevře se nové okno, které nám ukáže náš náčrt knoflíku pro servo:

#include
Servo myservo; // Vytvoření názvu objektu servo myservo
int potpin = A0; // definující analogový pin pro potenciometr
int val; // variabilní který vůle číst analogové hodnoty pinů pro potenciometr

neplatné nastavení ( ) {
myservo.připojit ( 9 ) ; // definovaný pin 9 pro PWM vstupní signál serva na Arduinu
}
prázdná smyčka ( ) {
val = analogPřečíst ( připnout ) ; // čte hodnotu z potenciometru ( hodnota mezi 0 a 1023 )
val = mapa ( val, 0 , 1023 , 0 , 180 ) ; // škálovat hodnotu pro použití se servem ( hodnota mezi 0 a 180 )
myservo.write ( val ) ; // nastavuje polohu serva se škálovanou hodnotou
zpoždění ( patnáct ) ; // čeká pro servo, aby se dostalo do polohy
}

Výše uvedený kód nám pomůže ovládat hřídel servomotoru pomocí potenciometru, hřídel se bude otáčet mezi 0 a 180 stupni. Můžeme také udržovat rychlost spolu se směrem serva pomocí toho.

Kruhový diagram

Kolik servomotorů mohu připojit k Arduinu?

Maximální počet servomotorů, které Arduino UNO zvládne, je až 12 s knihovnou Arduino pro servo a max. 48 serv lze propojit s deskami jako Mega.

Spropitné: Můžeme přímo spustit servo pomocí proudu Arduino, ale nezapomeňte, že servomotory odebírají více než 500 mA pak se vaše deska Arduino může automaticky resetovat a ztratit napájení. Pro servomotory se doporučuje vždy používat vyhrazený napájecí zdroj.

Závěr

V tomto tutoriálu jsme probrali ovládací mechanismus servomotorů s Arduinem. Probrali jsme základy ovládání polohy a rychlosti serva pomocí potenciometru. Nyní máte představu o servomotorech a možnosti pro vaši robotiku, RC projekty a automatizaci pomocí serva jsou nekonečné.