Ako ovládať servomotor s Arduino

Ako Ovladat Servomotor S Arduino



Servomotory je typ elektrického zariadenia, ktoré dokáže s veľkou presnosťou meniť alebo otáčať polohu objektu. Na začiatku boli použité na ovládanie krídel RC lietadiel, o chvíľu neskôr sa dostali k robotike, humanoidným robotom a mnohým automatizačným projektom. Na rozdiel od krokových motorov je ich pohyb obmedzený medzi 0o až 180o.

Servomotory majú zvyčajne ramená, ktoré je možné ovládať pomocou Arduina. Servomotory pozostávajú z riadiaceho systému, ktorý zabezpečuje spätná väzba o aktuálnej polohe hriadeľa motora táto spätná väzba umožňuje pohybovať sa s veľkou presnosťou.

Pinout servomotora

Väčšina servomotorov má zvyčajne tri kolíky:







  • Pin Vcc (normálne červený 5V)
  • GND kolík (normálne čierny 0V)
  • Pin vstupného signálu (prijímajte PWM signál z Arduina)



Fungovanie servomotora

Servomotor môžeme ovládať pripojením kolíka Vcc na 5V a kolíka GND na 0V. Na termináli žltej farby poskytujeme a PWM signál, ktorý riadi uhol natočenia servomotora. Šírka PWM signálu nám udáva uhol, pod ktorým bude motor otáčať ramenom.



Ak sa pozrieme do Datasheetu servomotorov, dostaneme nasledujúce parametre:





  • Časový úsek signálu PWM
  • Minimálna šírka pre PWM
  • Maximálna šírka pre PWM

Všetky tieto parametre sú preddefinované v knižnici Arduino Servo.

Servomotory s Arduino

Servomotory sa s Arduino veľmi ľahko ovládajú vďaka Servo knižnica čo nám pomáha prispôsobiť náš kód podľa potreby a umožňuje nám otáčať rameno serva v požadovanom uhle.



Všetky tri vyššie uvedené parametre sú pevne stanovené v knižnici Servo. Pomocou týchto parametrov môžeme riadiť uhol servomotora nasledujúcim spôsobom:

  • Ak je šírka signálu PWM = WIDTH_MAX, servo sa otočí o 180o
  • Ak je šírka signálu PWM = WIDTH_MIIN, servo sa otočí na 0o
  • Ak šírka signálu PWM leží medzi nimi WIDTH_MAX a WIDTH_MIN servomotor sa bude otáčať medzi 0o a 180o

Na niektorých pinoch Arduina môžeme vygenerovať požadovaný PWM signál. PWM signál bude privedený na vstupný signálny kolík servomotora. Pripojenie zostávajúcich dvoch kolíkov serva k 5V a GND Arduina.

Ako ovládať servomotor pomocou Arduina

Tu vysvetlím, ako môžeme pripojiť a naprogramovať náš servomotor pomocou Arduina. Všetko čo potrebuješ je:

  • Arduino UNO
  • Kábel USB B
  • Servo motor
  • Štartovacie drôty

Ako naprogramovať servo s Arduino

Nasleduje niekoľko jednoduchých krokov:

Krok 1: Zahrnúť preddefinovanú servo knižnicu:

# zahŕňajú < Servo.h >

Krok 2: Vytvorenie objektu Servo:

Servo myservo;

Tip: V prípade, že ovládate viac ako jeden servomotor, musíte vytvoriť viac servo objektov:

Servo myservo1;
Servo myservo2;

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

myservo.pripojiť ( 9 ) ;

Krok 4: Otočte uhol servomotora na požadovanú hodnotu, napríklad 90o:

myservo.píšte ( poz ) ;

Arduino kód

Otvorte príklad programu servomotora z Súbor>Príklad>Servo>Sweep , otvorí sa nové okno s naším náčrtom serva:

#include

Servo myservo; // je vytvorený servo objekt pre ovládanie servomotora
int poz = 0 ; // na uloženie polohy serva sa vytvorí nová premenná
neplatné nastavenie ( ) {
myservo.pripojiť ( 9 ) ; // toto bude nastaviť Arduino pin 9 pre PWM výstup
}
prázdna slučka ( ) {
pre ( poz. = 0 ; poz. = 0 ; poz -= 1 ) { // ide z 180 do 0 stupňa
myservo.píšte ( poz ) ; // povedzte servu, aby prešlo do polohy „pos“.
meškanie ( 5 ) ; // čaká pre 5 ms, aby sa servo dostalo do polohy
}
}

Akonáhle je program skompilovaný a načítaný, servomotor sa začne pomaly otáčať od počiatočnej polohy 0 stupňov do 180 stupňov, jeden stupeň po druhom, rovnako ako kroky. Keď sa motor otočí o 180 stupňov, začne sa otáčať v opačnom smere k počiatočnému bodu, t. j. 0 stupňov.

Schémy

Ako ovládať servomotor pomocou potenciometra

Polohu servomotora môžeme ovládať aj ručne. K tomu potrebujeme a Potenciometer . Potenciometer má tri kolíky. Pripojte dva vonkajšie kolíky k 5V Vcc a GND Arduina a stredný jeden k kolíku A0 na doske Arduino.

Ako naprogramovať servo pomocou potenciometra

Väčšina náčrtu pre potenciometer je rovnaká ako v predchádzajúcom príklade. Jediným rozdielom je nová premenná val a pripnúť je definovaný pred časťou kódu nastavenia a slučky.

int potpin = A0;
int val;

Analógový kolík A0 v slučkovej sekcii slúži na odčítanie hodnôt pre potenciometer s funkciou analogRead() . Dosky Arduino obsahujú 10-bitový ADC (Analog to Digital Converter), ktorý nám dáva hodnoty medzi 0 a 1023 v závislosti od polohy potenciometra:

val = analógPrečítať ( pripnúť ) ;

Nakoniec sme použili mapa() Funkcia premapuje čísla od 0 do 1023 podľa uhla serva, ako vieme, servomotory sa môžu otáčať iba medzi 00 a 1800.

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

Arduino kód

Otvorený náčrt gombíka dostupný v Arduino IDE, prejdite na Súbory>Príklady>Servo>Knob . Otvorí sa nové okno, ktoré nám ukáže náš náčrt gombíka pre servo:

#include
Servo myservo; // Vytvorenie názvu objektu servo myservo
int potpin = A0; // definujúci analógový kolík pre potenciometer
int val; // premenlivý ktoré bude čítať analógové hodnoty pinov pre potenciometer

neplatné nastavenie ( ) {
myservo.pripojiť ( 9 ) ; // definovaný kolík 9 pre PWM vstupný signál serva na Arduino
}
prázdna slučka ( ) {
val = analógPrečítať ( pripnúť ) ; // číta hodnotu z potenciometra ( hodnota medzi 0 a 1023 )
val = mapa ( val, 0 , 1023 , 0 , 180 ) ; // škálovať hodnotu, ktorá sa má použiť so servom ( hodnota medzi 0 a 180 )
myservo.píšte ( val ) ; // nastavuje polohu serva so škálovanou hodnotou
meškanie ( pätnásť ) ; // čaká pre servo dostať do polohy
}

Vyššie uvedený kód nám pomôže ovládať hriadeľ servomotora pomocou potenciometra, hriadeľ sa bude otáčať medzi 0 a 180 stupňami. Môžeme tiež udržiavať rýchlosť spolu so smerom serva pomocou neho.

Schéma obvodu

Koľko servomotorov môžem pripojiť k Arduinu?

Maximálny počet servomotorov, ktoré Arduino UNO zvládne, je až 12 s knižnicou Arduino pre servo a max. 48 serv možno spojiť s doskami ako Mega.

Tip: Servo môžeme spustiť priamo pomocou prúdu Arduino, ale nezabudnite, že servomotory odoberajú viac ako 500 mA potom sa vaša doska Arduino môže automaticky resetovať a stratiť napájanie. Odporúča sa vždy použiť vyhradený napájací zdroj pre servomotory.

Záver

V tomto návode sme pokryli riadiaci mechanizmus servomotorov s Arduinom. Prebrali sme základy ovládania polohy a rýchlosti serva pomocou potenciometra. Teraz máte predstavu o servo a možnostiach pre vašu robotiku, RC projekty a automatizáciu pomocou serva sú nekonečné.