I18 - Como usar o micro servo motor 9g SG90 com Arduino

Intermediário - Projeto 18

Micro servo motor se move a cada 15 graus com Arduino

Objetivo

Mostrar como controlar o micro servo motor 9g SG90 pela plataforma Arduino. O projeto consiste em girar o eixo do servo motor até 180º, porém com pausas de 500ms a cada 15º. Ao atingir 180º, o eixo retornará para a posição inicial em 0º, repetindo o ciclo sucessivamente. Também veremos neste tutorial como testar o servo motor via exemplo nativo do IDE do Arduino. No projeto, sempre que o servo motor for ligado, seu eixo retornará à 0º independente da posição que ele se encontra.

Definições

Micro Servo Motor: é um micro atuador eletromecânico que apresenta rotação do seu eixo proporcional ao comando emitido por um sinal digital, que pode ser por um microcontrolador, como pela placa Arduino, por exemplo. Portanto, com um micro servo motor é possível controlar a posição e a velocidade de rotação do seu eixo com precisão. Por estas características, os servos motores são muito utilizados em projetos de robótica e mecatrônica.

Observações:

a. Diferente dos motores tradicionais de corrente contínua, o eixo do servo motor só tem movimento rotativo quando recebe um comando para atualizar a sua posição.

b. O eixo do servo motor não gira continuamente como os demais motores de corrente contínua, mas sim até a uma posição especificada por um comando enviado.

c. O servo motor é portanto um atuador rotativo para controle de posição, que atua com precisão e velocidade controlada a partir de um comando emitido por um microcontrolador.

O micro servo motor é composto pelos seguintes componentes principais:

a. Atuador: formado por um motor de corrente contínua (a maioria) em conjunto com um sistema de engrenagens integradas responsável pela redução da velocidade e aumento de torque. Os servos trabalham com atuadores de até 180º de liberdade de giro (que é o que vamos utilizar neste projeto), mas existem modelos que trabalham com até 360º de liberdade de giro.

b. Encoder: sensor para medir a posição atualizada do eixo.

c. Controlador e circuitos complementares: São circuitos de controle do servo motor responsáveis para corrigir a posição e velocidade do atuador, com base nos comandos recebidos e na posição informada pelo encoder.

Micro Servo Motor 9g SG90: Este micro servo motor específico é bastante utilizado em projetos com Arduino, por ser compacto, de baixo custo, de boa qualidade e de baixo peso (9g). Ideal portanto, para aplicações em projetos robóticos, aeromodelismo e projetos eletrônicos em geral que utilizam sistemas microcontrolados.

Acessórios: um cabo de 3 pinos referente a alimentação e controle 3 tipos de braços (cruzetas) com parafusos de fixação.

Obs.: Neste projeto poderá ser utilizado qualquer tipo de braço de acionamento. Também não é necessário fixá-lo com parafuso, basta encaixá-lo no eixo do servo e em qualquer posição desejada.

Especificação:

 Modelo SG90
 Tensão de Alimentação     3,0 - 6,0V
 Corrente de Operação 0,1 - 1,2A
 Temperatura de Operação                                -30 ~ 60ºC
 Conector JR (Universal)
 Comprimento do cabo 24,5cm
 Liberdade de giro 180º
 Velocidade a 4.8V 0,12 seg/60º (sem carga)
 Torque a 4.8V 1,2 kg-cm
 Torque a 6V 1,6 kg-cm
 Dimensões 32 x 30 x 12 mm
 Peso 9g

ATENÇÃO: Este servo motor pode necessitar de mais potência do que existe disponível por padrão em uma porta USB. No caso do motor trepidar ou falhar, conecte uma alimentação externa de uma bateria, por exemplo, para alimentar apenas o servo motor. A utilização de uma fonte de alimentação externa é sempre necessária quando se utiliza mais de um micro servo motor 9g SG90 conectados no mesmo Arduino.

Aplicação

Para fins didáticos e projetos com robótica, aeromodelismo, automodelismo, nautimodelismo, automação de processos e controles eletromecânicos em geral.

Componentes necessários

Referência

Componente

Quantidade

Imagem

Observação

Jumpers Kit cabos ligação macho / macho 1  
Micro Servo Motor Micro Servo 9g SG90 1  

Voltagem de Operação 3,0 - 7,2V
Ângulo de rotação 180 graus
Velocidade 0,12 seg/60Graus (4,8V) sem carga
Torque 1,2 kg.cm (4,8V) e 1,6 kg.cm (6,0V)
Temperatura de Operação -30C ~ +60C
Tipo de Engrenagem Nylon
Tamanho cabo 245mm
Dimensões 32 x 30 x 12mm
Peso 9g

(datasheet)

Arduino UNO Arduino UNO R3 1

Você poderá utilizar uma placa Arduino UNO original ou similar

Montagem do Circuito

Conecte os componentes como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. O Arduino deve estar totalmente desconectado da fonte de energia enquanto você monta o circuito.

Atenção

1. A montagem do micro servo motor 9g SG90 deve seguir a configuração abaixo:

  • Cabo marrom (ou preto em algumas marcas) - Deve ser conectado ao pino GND do Arduino ou ao polo negativo de uma fonte de alimentação externa
  • Cabo vermelho -  Deve ser conectado a um pino 5V do Arduino ou ao polo positivo de uma fonte de alimentação externa
  • Cabo laranja - Deve ser conectado a um pino digital do Arduino configurado como saída. No projeto, utilizamos o pino 9 do Arduino.

1.1. Utilieze "jumpers" macho-macho para fazer as conexões com o Arduino.

 2. A imagem abaixo mostra a montagem do nosso projeto:

Usando a biblioteca servo.h

1. Para controlar um servo motor com o Arduino é necessária a utilização da biblioteca Servo. Essa biblioteca nativa já vem instalada no IDE do Arduino e portanto não há a necessidade de mais nenhuma instalação.

1.1. A biblioteca Servo suporta até 12 motores na maioria das placas Arduino e 48 no Arduino Mega.

ATENÇÃO: Nas placas Arduino, exceto a Mega, o uso da biblioteca desabilita a funcionalidade analogWrite() (PWM) nos pinos 9 e 10, haja ou não um servo motor nesses pinos. Na placa Mega, até 12 servos podem ser usados sem interferir a funcionalidade PWM e quando o uso for de 13 a 48 motores a biblioteca desabilita a funcionalidade PWM nos pinos 11 e 12.

1.2. A biblioteca Servo não possui comando específico para controlar a velocidade do servo motor. Para isso, você pode controlar usando via programação (delays, PWM) ou instalando alguma outra biblioteca que permite controlar alterações na velocidade do motor por comando próprio.

2. Para obter mais informações sobre a biblioteca servo acesse o link: biblioteca Servo

3. Repositório GitHub: Ir para o repositório GitHub

Testando o componente

1. Para testarmos o funcionamento e a conexão do micro servo motor 9g com o Arduino vamos utilizar o exemplo da biblioteca Servo que já vem instalada no IDE do Arduino:

1.1. No IDE do Arduino, na aba [Arquivo] selecione [Exemplos]. Localize e selecione [Servo]. Depois clique em [Sweep] para abrir o sketch do exemplo.

 1.2. Com o Arduino conectado no USB do computador, clique no botão [Carregar] para fazer o upload e rodar o programa.

2. O servo motor deverá funcionar de forma semelhante à simulação abaixo. (Clique no botão Iniciar Simulação):

Código do Projeto (Sketch)

1. Faça o download e abra o arquivo projetoI18.ino no IDE do Arduino: DOWNLOAD - projetoI18.ino

Se preferir, copie e cole o código abaixo no IDE do Arduino.

/*******************************************************************************
*
*    I18 - Como usar o micro servo 9g SG90 com Arduino
*    Autor: Angelo Luis Ferreira
*    06/04/2022
*    http://squids.com.br/arduino
*
*******************************************************************************/
#include                         //biblioteca para controle do servo motor

// criar instancias
Servo servo;                              // cria o objeto "servo" para controle do servo motor

// variáveis globais
int pos = 0;                              // variável para armazenar a posicção do servo
byte stopPos;                             // variável para amazenar posições de parada do servo
// constantes
const byte stepPos = 15;                  // define a incremento para parar o servo (a cada 15 graus)


void setup() {
  servo.attach(9);                        // define conexão do servo no pino 9 do Arduino
}

void loop() {
  stopPos = stepPos;                      // define a primeira parada de cada cilco em 15 graus
  runServo();                             // vai da posição 0 até 180º e volta para a posição inicial
}
  
void runServo() {
  // vai de zero a 180º e para por 500ms a cada 15º
  for (pos = 0; pos <= 180; pos += 1) {   // vai de zero a 180 graus, girando o eixo a cada 1º
     if (pos == stopPos) {                // para o servo durante 500ms a cada 15 graus
       delay(500);                        // espera 500ms
       stopPos += stepPos;                // acrescenta mais 15 graus (para a próxima parada)
     }
    servo.write(pos);                     // diz ao servo para ir para a posição da variável 'pos'
    delay(15);                            // espera 15ms para o servo alcançar a posição
  }

   // vai de 180º a 0º sem paradas
   for (pos = 180; pos >= 0; pos -= 1) {   // vai de 180º para a posição inicial, girando o eixo a cada 1º
    servo.write(pos);                     // diz ao servo para ir para a posição da variável 'pos'
    delay(15);                            // espera 15ms para o servo alcançar a posição
  }
}

Vídeo

Como o projeto deve funcionar

1. Ao iniciar o programa o eixo do micro servo vai imediatamente para a posição zero grau.

2. O eixo dos servo motor começa então a girar a cada 1º durante o período de 15 milissegundos.

3. Ao atingir 15º, o eixo estaciona por 500 milissegundos.  Isso se repete a cada 15º, até o eixo atingir 180º.

3. Ao atingir 180º, o eixo dos servo motor retorna até a posição inicial de 0º, girando também 1º a cada 15 milissegundos.

4. Ao atingir 0º é iniciado um novo ciclo.

Desafios

Com base neste projeto, resolva o seguinte desafio:  Desafio 97

O anúncio abaixo ajuda a manter o Squids Arduino funcionando

Comentários

×

Infomações do site / SEO








×

Adicionar Marcadores