Tutorial: Cum să controlezi servo motorul Tower Pro SG90 cu Arduino UNO

Tower Pro SG90 este un servo motor ieftin și foarte ușor de controlat cu o placă de dezvoltare precum Arduino UNO. În acest tutorial puteți găsi pașii necesari pentru a controla direcția, poziția și viteza servo motorului SG90.

Un tutorial organizat nu strică, așa că l-am împarțit în patru părți:

  1. În prima parte am făcut o scurtă introducere a componentelor necesare pentru a controla servo motorul;
  2. În a doua parte am făcut o scurta introducere a servo motorului SG90;
  3. În partea a treia, am dezmembrat servo motorul pentru a vă arăta componente din mica carcasă de plastic albastră;
  4. În ultima parte, care este probabil și cea mai interesantă, am explicat cum să legați firele de curent la pinii Arduino și codul Arduino pentru a controla direcția, viteza și poziția servo motorului.
Servo motorul SG90

Servo motorul SG90

Pe scurt, un servo motor este folosit:

  • când este necesar un control precis al poziției, și bineînțeles cunoașterea poziției;
  • și când aveți nevoie de controlul precis al vitezei de rotație într-o anumită direcție;

Controlul precis al poziției și al vitezei de rotație se face cu un senzor (care detectează rotația, direcția și viteza de rotație) și un microcontroler. Ambele componente sunt integrate în mica carcasă de plastic, și au rolul de a suna alarma de fiecare dată când motorul se rotește pentru a controla cu o precizie militară miscarile servo motorului.

În robotică, un servo motor este des folosit pentru a controla brațele și mâinile unui robot humanoid, pentru o rotire precisă a senzorilor, etc.

Componente hardware necesare

Pe lângă servo motor și placa Arduino, mai aveți nevoie de fire de curent și o placă pentru prototipuri.

  • 1 x servo motor Tower Pro SG90
  • 1 x Arduino UNO
  • 1 x Breadboard
  • 6 x fire conexiune tata-tata

Tower Pro SG90

SG90 este probabil cel mai ieftin și folosit servo motor din lume. În România servo motorul poate fi găsit la un preț de până în 20 RON. Pe Amazon un astfel de servo motor are un preț de până în 5 dolari. Dacă adaugam taxe și transport, cel mai probabil ajungem la același preț ca și în România.

Câteva cuvinte despre specificații
Pentru a menține poziția fixa a servo motorului în sarcină, este nevoie de cuplu. Să luam drept exemplu o mână de robot. Dacă mâna robotului este în poziție verticală (paralelă cu pământul), forțele gravitaționale acționează asupra componentelor care sunt trase în jos. Pentru a menține poziția mâinii, servo motorul produce un cuplu care anulează forțele care acționează asupra mâinii. Cuplul poate să difere în funcție de tensiunea de alimentare.

SG90 produce un cuplu de 1.80 kg-cm la o tensiune de alimentare de 4.8V. La aceeași tensiune de alimentare, servo motorul are o viteză de 60 de grade la fiecare 0.12 secunde.

Așa arată un Tower Pro SG90 dezasamblat

Așa arată SG90 dezmembrat

Așa arată SG90 dezmembrat

De la stânga la dreapta: carcasă cu albastru, roțile mici din plastic puse cap la cap formează cutia de viteze, motorul de curent continuu, microcontrolerul, senzorul de poziție, și capacul din spatele servo motorului.

Schema și sketch-ul Arduino

Aceeași schemă am folosit-o și pe blogul intorobotics.com unde puteți urmări alte proiecte interesante dezvoltate de mine

Aceeași schemă am folosit-o și pe blogul intorobotics.com unde puteți urmări alte proiecte interesante dezvoltate de mine

Schema cu cele șașe fire de curent, servo motorul și placa Arduino arată ca în imaginea alaturată:
Ar mai fi ceva de adăugat aici. SG90 are trei fire, cu unul mai mult decat un motor de curent continuu. Fiecare fir are o culoare cu următoarea semnificație:

  • firul maroniu se conectează la pinul GND al plăcii Arduino
  • firul roșu la pinul de 5V
  • firul portocaliu se conectează la unul din pinii digitali ai plăcii Arduino. În acest tutorial folosesc pinul 9 al plăcii Arduino

Pentru acest tutorial nu aveți nevoie de baterie pentru a alimenta cu curent placa Arduino sau servo motorul. Dacă lăsați conectată placa Arduino la portul USB al calculatorului, prin portul USB trece 5V și este de ajuns să controlați servo motorul.

Sketch-ul Arduino

/**
 * @file         Cum sa controlezi servo motorul Tower Pro SG90 cu Arduino UNO
 * @author       Calinezu.ro / Calin Dragos
 * @version      V1.0
 * @date         24.02.2017
 * @description  Sketch pentru a controla direcția, poziția și viteza servo motorului SG90 9G cu placa Arduino UNO
 */
 
#include 
 
int servoPin = 9;
 
Servo servo;  
 
int servoAngle = 0;   // servo position in degrees
 
void setup()
{
  Serial.begin(9600);  
  servo.attach(servoPin);
}
 
 
void loop()
{
//controlul directiei si pozitiei

   servo.write(45);      // roteste SG90 la stanga cu 45 de grade
   delay(1000);          // asteapta 1 secunda
   servo.write(90);      // roteste SG90 la 90 de grade (pozitia de centru)
   delay(1000);          // asteapta 1 secunda
   servo.write(135);     // roteste SG90 la 135 de grade
   delay(1000);          // asteapta 1 secunda
   servo.write(90);      // si din nou la pozitia de centru
   delay(1000);

//controlul vitezei 

//schimbarea valoarii din functia delay are ca efect modificarea vitezei
 for(servoAngle = 0; servoAngle < 180; servoAngle++)  //muta servo motorul de la 0 la 180 de grade
  {                                  
    servo.write(servoAngle);              
    delay(50);                  
  }

for(servoAngle = 180; servoAngle > 0; servoAngle--) //si acum inapoi de la 180 de grade la 0
  {                                
    servo.write(servoAngle);          
    delay(10);      
  }
}

Leave a Reply

Câmpurile obligatorii sunt marcate cu *.