0

Controlando um servomotor com Arduino

Um servomotor é um dispositivo eletrónico muito parecido a um motor de corrente contínua mas que tem a capacidade de se mover em qualquer posição dentro do seu alcance de operação, e manter-se estável nessa posição, permitindo controlar a velocidade da rotação.

Um servomotor está formado por uns cabos de ligação (5V + 1 linha de controlo), uma unidade de controlo numa placa de circuito impresso que servem para alimentar e controlar um motor de corrente contínua. Este motor faz rodar uma caixa de engrenagens que reduzem a velocidade e aumentam o movimento binário e por sua vez arrastam um potenciómetro que regula o alcance de operação.

 

Componentes necessários

Neste tutorial vamos ensiná-lo como fazer funcionar um servomotor com Arduino de maneira simples usando a livraria Servo.h, incluído no ambiente de desenvolvimento Arduino.

Para este tutorial vamos usar um servomotor Tower PRO SG90 que funciona a 5V e consume uns 750mA no máximo. Como já sabe, a corrente que nos oferece o pino de 5V do Arduino são 50mA/pino como máximo, por isso alimentar o servomotor diretamente a partir do Arduino fica descartado.

INFO: Para a realização deste tutorial vamos necessitar de uma fonte de alimentação externa para o servomotor que nos ofereça 5v e 1A aproximadamente para trabalhar com algo de margem, podem ser umas pilhas, uma bateria, um carregador de telemóvel, etc…

Montagem e ligações

 

Ligamos o negativo e o positivo do servo aos pinos GND e VCC da nossa fonte de alimentação, conectamos o cabo de controlo ao pino digital 9 (PWM) do Arduino e colocamos um GND (negativo) comum entre a fonte de alimentação e o Arduino. Sem este ultimo passo o servo não vai funcionar.

Sketch de ensaio

Como sempre, preparamos um sketch fácil. É muito fácil de entender.

 
#include <servo.h>  //Incluimos a livraria servo.h
   
Servo servo1;  // Cria um Objeto servo chamado Servo1  
int posição;  // Definimos a variável que indica a posição do servo  
   
void setup()  
{  
  servo1.attach(9);  // Selecionamos o pino 9 como o pino de controlo para o servo  
}  
   
void loop()
// Com a função MAP establecemos uma relação proporcional 
// entre a pulsação minima (0) com o grau minimo (0 grau)
// e tambem a pulsação maxima (1023) com o grau maximo (180 graus)
{  
  
  posição= 0;                                  // Estabelecemos o valor da posição a 0 graus
  posição= map(posição, 0, 1023, 0, 180);     // Estabelecemos a relação entre os graus de rotação e o PWM  
  servo1.write(posição);                // Escrevemos a posição com o mapa de valores ao servo  
  delay(2000);                           //  Damos um tempo para que seja capaz de se mover 
  posição= 90;                                // Estabelecemos o valor de la posição a 90 graus
  posição= map(posição, 0, 1023, 0, 180);    // Estabelecemos a relação entre os graus de rotação e o PWM  
  servo1.write(posição);                // Escrevemos a posição com o mapa de valores ao servo  
  delay(2000);                           //  Damos um tempo para que seja capaz de se mover  
  posição= 180;                                // Estabelecemos o valor de a posição a 180 graus
  posição= map(posição, 0, 1023, 0, 180);     // Estabelecemos a relação entre os graus de rotação e o PWM  
  servo1.write(posição);                // Escrevemos a posição com o mapa de valores ao servo  
  delay(2000);                           //  Damos um tempo para que seja capaz de se mover 

}

 

Todos os produtos utilizados neste artigo podem ser encontrados na Loja de Eletrónica e Robótica – ElectroFun.

Gostaram deste artigo? Deixem o vosso comentário no formulário a baixo e partilhem com os vossos amigos.

Não se esqueçam de fazer like na nossa Página no Facebook.

Podem ainda colocar as vossas dúvidas no nosso Forum da Comunidade Arduino em Portugal ou no nosso Grupo no Facebook Arduino Portugal – Qual o teu projeto?

Comments

Comentários

Jaime Mota

Deixar uma resposta