Lekcija 8 – Servo motor

Na pin broj 6 Arduino pločice spojimo servo motor SG90 i napišimo program koji će svake sekunde mijenjati položaj osovine servo motora kako slijedi: 30o, 60o, 90o, 180o, zatim nazad na 90o, 0o i neka se to ponavlja.

Komponente:

  • 1 * Arduino UNO R3 mikrokontroler,
  • 1 * USB kabal,
  • 1 * Servo motor SG90,
  • 3 * Kratkospojničke žice (muško-muške)

Šta je servo motor?

Servo motor je sistem zatvorene petlje koji koristi povratnu informaciju o položaju za upravljanje svojim kretanjem i konačnim položajem. Postoji mnogo vrsta servo motora, a njihova glavna karakteristika je mogućnost precizne kontrole položaja njihove osovine.          

U ovoj lekciji koristimo popularni plavi hobi servo motor SG90 koji ima obrtni moment od 1,5 kg/cm sa samo 9 grama. Često se koristi u RC automobilima, RC avionima, robotici i industriji.

Postoje četiri glavne komponente unutar hobi servo motora: DC motor, zupčanici, potenciometar i upravljački krug.

DC motor ima veliku brzinu i mali obrtni moment, ali zupčanici smanjuju brzinu na oko 60 obrtaja u minuti i istovremeno povećavaju obrtni moment.

Potenciometar je pričvršćen na krajnji zupčanik ili izlaznu osovinu, tako da kako se osovina okreće, potenciometar se također okreće, proizvodeći napon koji je vezan za apsolutni ugao osovine.

U upravljačkom krugu ovaj se napon potenciometra uspoređuje s naponom koji dolazi iz signalne linije. Ako je potrebno, kontroler aktivira integrisani H-most koji omogućuje rotaciju motora u bilo kojem smjeru dok dva signala ne dostignu razliku od nule.

Ovim se aktuatorom može upravljati pomoću signala moduliranog širinom pulsa (PWM) od 50 Hz, koji proizvodi impuls svakih 20 milisekundi. Položaj aktuatora može se podesiti promjenom trajanja impulsa između 1 ms i 2ms i obično se mogu rotirati od 0o do 180o (imaju fizičko ograničenje kretanja). Položaj servo uređaja može se kontrolisati samo PWM signalom.

Servo motori troše mnogo energije, posebno kada su izloženi velikom momentu. Za rad servo motora SG90 optimalni napon je 5V. Budući da se pin od 5V Arduino pločice napaja direktno preko USB sabirnice, računar će ga ograničiti na oko 500 mA. Sa jednim ili dva spojena servo motora, USB napajanje bi trebalo držati opterećenje. Nakon što prekoračite dva servo motora, najbolje je koristiti zasebno napajanje. Obavezno spojize pin GND sa Arduino pločice na negativni priključak napajanja aktuatora.

Servo motor SG 90 ima tri izvoda: napajanje, uzemljenje i upravljački signal.

Izvod za napajanje je tipično crvena boja  i spajamo ga na pin 5V na Arduino pločici.

Izvod za uzemljenje je obično crna ili smeđa boja i spajamo ga na pin GND na Arduino pločici.

Signalni izvod je žuta, narandžasta ili bijela boja i spajamo ga na digitalni pin (PWM) na Arduino pločici.

Postupak

1. Izgradite sklop

2. Program

lekcija8
C++
/***********************************************************
Servo motor
STEM Lab
***********************************************************/

#include <Servo.h>                    // Uključivanje biblioteke Servo

Servo myservo;                        // Kreiranje objekta Servo za kontrolu servo motora

void setup() {
    myservo.attach(6);                // Definiranje pina 6 kao pina za upravljanje servo motorom
    myservo.write(0);                 // Postavite polugu servo motora u početni položaj (0 stupnjeva)
}

void loop() {                         // Stalno se izvršava
    myservo.write(30);                // Pomjerite polugu servo motora u položaj (30 stupnjeva)
    delay(1000);                       // Postavite vrijeme čekanja, 1000 milisekundi (1 sekunda)

    myservo.write(60);                // Pomjerite polugu servo motora u položaj (60 stupnjeva)
    delay(1000);                       // Postavite vrijeme čekanja, 1000 milisekundi (1 sekunda)

    myservo.write(90);                // Pomjerite polugu servo motora u položaj (90 stupnjeva)
    delay(1000);                       // Postavite vrijeme čekanja, 1000 milisekundi (1 sekunda)

    myservo.write(180);               // Pomjerite polugu servo motora u položaj (180 stupnjeva)
    delay(1000);                       // Postavite vrijeme čekanja, 1000 milisekundi (1 sekunda)

    myservo.write(90);                // Pomjerite polugu servo motora u položaj (90 stupnjeva)
    delay(1000);                       // Postavite vrijeme čekanja, 1000 milisekundi (1 sekunda)

    myservo.write(0);                 // Pomjerite polugu servo motora u položaj (0 stupnjeva)
    delay(1000);                       // Postavite vrijeme čekanja, 1000 milisekundi (1 sekunda)
}

3. Prenesite program na Arduino UNO pločicu.

Udruženje STEM Lab osnovano je početkom 2021. godine udruživanjem nastavnog osoblja OŠ „Huso Hodžić“ Tešanj koje je učestvovalo u osnivanju STEM kabineta tokom realizacije dijela „EGG projekta“ koji je finansirala vlada Kraljevine Norveške preko UNDP-a za BiH, uz uslov sufinansiranja Ministarstva za obrazovanje, nauku, kulturu i sport Ze-do kantona i Općine Tešanj.

74260 Tešanj
+387 61 616 067