• COMPONENTE
    SERVO MOTOR 9G

O que é?

O servo motor SG90 é um atuador que pode ser controlado em um ângulo específico através do sinal PWM do arduino. Contém um motor DC no interior de seu acoplamento, o qual trabalha em conjunto com um jogo de engrenagens de redução, fazendo com que sua velocidade seja reduzida e seu torque seja aumentado consideravelmente.

O servo motor SG90 não gira livremente, apenas em ângulos e posições específicas. Este modelo pode girar aproximadamente 180º (90º em cada direção). Isso é possível graças a um circuito controlador e um potenciômetro presentes em seu interior. Dessa forma, o micro servo mostra-se ideal para dar movimento aos mecanismos de robôs e máquinas.

Servo motor arduino
Servo motor arduino

Propriedades

Existem servos de tamanhos, modelos, ângulos de rotação e torques diferentes. Alguns com engrenagens de plástico, outros de metal, tornando o servo mais resistente e robusto. Todos possuem três fios de interface, sendo um deles para sinal de controle, e dois deles para alimentação.

Montagem dos componentes

Abaixo temos um código exemplo que faz o servo fazer um movimento de 180º de um lado a outro.

LISTA DOS COMPONENTES

  • 1 x Arduino Uno SMD
  • 1 x Cabo USB para comunicação
  • 1 x Servo motor 9g
  • 3 x Jumpers macho/macho
Esquema montagem servo motor

Código exemplo

O código de exemplo abaixo é referente ao esquema ilustrado acima.

IDE Arduino
// biblioteca inclusa na IDE
#include <Servo.h> //inclusão da biblioteca Servo.h

const int pinoServo = 6; //pino digital utilizado pelo servo motor
 
Servo s;    //objeto do tipo servo
int pos;    //variável para receber o valor da posição do servo
 
void setup (){
    s.attach(pinoServo);  //associação do pino digital ao objeto do tipo servo
    s.write(0);        //o motor inicia em 0º
}

void loop(){
    for(pos = 0; pos < 180; pos++){ //para "pos" igual a 0, e enquanto "pos" menor que 180, aumenta 1 em "pos"
    s.write(pos);   //escreve o valor da posição que o servo deve girar
    delay(15);  //pausa de 15 milissegundos
    }
    delay(1000);  //intervalo de 1 segundo
    for(pos = 180; pos >= 0; pos--){  //para "pos" igual a 180, enquanto "pos" maior ou igual que 0, diminui 1 em "pos"
        s.write(pos);   //escreve o valor da posição que o servo gira
        delay(15);      //pausa de 15 milissegundos
    }
}

IDE Arduino