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.
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?