Micro Servo Motor SG90

Para projetos de robótica e mecatrônica


Na robótica, o servo motor é responsável por movimentar braços, pernas e mãos dos robôs. No automodelismo o servo motor é utilizado para virar as rodas dianteiras dos carrinhos e no aeromodelismo é utilizado para controlar os flaps das asas dos aviões.

Ao utilizar o Micro Servo Motor SG90 9g é possível controlar o giro e a posição do mesmo através dos comandos enviados pela plataforma microcontrolada. Após o envio do comando para que o servo altere sua posição, o mesmo verifica sua posição atual e em seguida executa o comando girando até a posição indicada.

Especificações:

  • Modelo: SG90
  • Marca do servo: Tower Pro
  • Tensão de operação: 3 a 6VDC
  • Posição (máxima): 180° de giro
  • Material das engrenagens: nylon
  • Temperatura de trabalho: -30º a 60º celsius
  • Torque: 1,2 Kg/cm (4,8VDC) / 1,6 Kg/cm (6VDC)

O seguinte firmware girar o eixo do servo até 180° e em seguida retornar à 0°. Ao ligar o servo, o eixo irá retornar à 0° independente da posição em que ele se encontra.


BIBLIOTECAS NECESSARIAS


Para o controle da posição do servo, é necessario instalar a biblioteca Servo.h a partir do Gerenciador de Bibliotecas do Arduino IDE. Ferramentas>Gerenciar Bibliotecas… ou por meio do atalho Ctrl+Shift+I. Em seguida, busque por Servo e clique em instalar.

Servo SG90
#include <Servo.h>        //INCLUSÃO DA BIBLIOTECA NECESSÁRIA
const int pinoServo = 10; //PINO DIGITAL UTILIZADO PELO SERVO  
    
Servo s;                  //OBJETO DO TIPO SERVO
int pos;                  //POSIÇÃO DO SERVO
    
void setup (){
    s.attach(pinoServo);  //ASSOCIAÇÃO DO PINO DIGITAL AO OBJETO DO TIPO SERVO
    s.write(0);           //INICIA O MOTOR NA POSIÇÃO 0º
}

void loop(){
    for(pos = 0; pos < 120; pos++){  //PARA "pos" IGUAL A 0, ENQUANTO "pos" MENOR QUE 120, INCREMENTA "pos"
        s.write(pos);                //ESCREVE O VALOR DA POSIÇÃO QUE O SERVO DEVE GIRAR
        delay(15);                   //INTERVALO DE 15 MILISSEGUNDOS
    }
    delay(1000);                     //INTERVALO DE 1 SEGUNDO
    for(pos = 120; pos >= 0; pos--){ //PARA "pos" IGUAL A 120, ENQUANTO "pos" MAIOR OU IGUAL QUE 0, DECREMENTA "pos"
        s.write(pos);                //ESCREVE O VALOR DA POSIÇÃO QUE O SERVO DEVE GIRAR
        delay(15);                   //INTERVALO DE 15 MILISSEGUNDOS
    }
}