Lekcja 10: Ruchy bracie, ruchy! - serwomechnizmy.

Serwomechanizm to wyspecjalizowany silnik, który może wykobywać obroty o określony kąt. Umiejętność programowania serwomechanizmu przyda się nam w przyszłości, gdy będziemy chcieli zbudować robota, który będzie posiadał zdolność widzenia i orientacji w przestrzeni. Tak jak głowa ludzka, tak głowa robota musi mieć możliwość obracania się wokół osi pionowej w celu przeszukiwania sztucznym okiem przedmiotów na drodze.
Do pracy wykorzystamy serwomechanizm Serwo Tower Pro SG-50 micro, którego opis poniżej:

Serwo Tower Pro SG-50 micro (Parametry dla napięcia 4,8 V)
  • Moment: 0,7 kg*cm (0,069 Nm)
  • Prędkość: 0,1 s./60°
  • Wymiary: 21,4 x 11,4 x 22 mm
  • Masa: 10 g

Na początek budujemy schemat, w którym będziemy bezpośrednio z kodu wydawać polecenia obrotu o zadany kąt.


Kod:

          #include < Servo.h>
          Servo serwo; 
          void setup(){
                serwo.attach(9);  
            }
          void loop(){
                serwo.write(0);                  
                delay(150);
                serwo.write(180);                  
                delay(150);
            }

W linii 1 dołączamy bibliotekę Servo.
W linii 2 tworzymy nowy obiekt z klasy Servo o nazwie serwo. Trzeba to zwrócić uwagę na to, że obiekt nazwaliśmy z 'w' w nazwie, a sama klasa ma literę 'v'.
W linii 4 wskazujemy na pin obsługujący serwomechanizm - u nas 9.
W linii 7 wydajemy polecenie ustawienia kąta na 0 stopni.
Po przerwie w linii 8 wydajemy polecenie w linii 9 do obrotu o 180 sopni. Otrzymamy w ten sposób ciągłe obroty z 0 do 180 co 150 milisekund.

Teraz zastosujemy dodatkowo potencjometr do sterowania kątem obrotu.

Ze schematu wynika, że na (+) serwomechnizmu dołączamy napięcie 5V, do złącza (Pulse) dołączamy pin sterujący - u nas pin 9, zaś do złącza (-) podłączamy GND. Dodatkowo potencjometrem 100kOhm podłączonym do analogowego wejścia - u nas A2 - będziemy sterować wartością kąta obrotu.

Piszemy kod jak poniżej:

        #include < Servo.h>
        Servo serwo; 
        int potencjometr = 2;
        int wartosc;
        void setup(){
                serwo.attach(9);  
        }
        void loop(){
                wartosc = analogRead(potencjometr);    
                wartosc = map(wartosc, 0, 1023, 0, 179);    
                serwo.write(wartosc);                  
                delay(15);                           
        }

W kodzie mamy kilka zmian.
W linii 3 definiujemy pin potencjometru - u nas pin analogowy 2.
W linii 4 definiujemy zmienną wartość przechowującą kąt obrotu.
W linii 9 zczytujemy wartość z patencjometru do zeminnej wartosc.
W linii 10 ustalamy zakres przeliczając wartość w zakresie 0-1023 i kąta 0 - 180 stopni.
W linii 11 ustawiamy kąt na serwomechnizmie wysyłając zmienną wartosc.
W linii 12 robimy krótką przerwę.
Więcej poleceń i funkcji obsługujących serwomechnizmy można znaleźć na stronie Arduino.



Powrót do spisu materiałów

Nowy zakup

Zakupiliśmy nowy moduł Arduino Leonardo i Yun z obsługą sieci przez Ethernet i WiFi.

Nowe czujniki

Mamy nowe czujniki żyroskopowe. Możemy kontrolować położenie robota.

Zajęcia otwarte

Zapraszamy na zajęcia otwarte uczniów klas SP, które odbywają się w każdy poniedziałek w godz. 15.00-16.00 (Prosimy o kontakt w celu zebrania grupy).