O Funcionamento do Servo motor é através de um pequeno motor que possibilita controle de rotação precisa, trabalhando com tensão geralmente de 5V. Ele responsável por fazer esta movimentação exata é algum tipo de controlador instalado pelo projetista, entre eles, o Arduino.
No terminal de saída existem 3 fios: Preto, Vermelho, Branco. Dos quais, o preto é alimentação negativa, ou seja, 0V, o Vermelho para alimentação com 5V e o Branco serve para receber a onda quadrada de programação que definirá o ângulo do servo, que será definido através da largura do pulso alto da onda. Vejamos a imagem exemplificativa abaixo:
O tempo entre pulsos é medido em milissegundos (ms), mas para facilitar este serviço o grupo Arduino® criou uma biblioteca para uso em servo motores, juntamente com esta biblioteca estaremos demonstrando no vídeo abaixo o funcionamento do servo em conjunto com um potenciômetro e pelo Arduino.
Teste Prático de Funcionamento do Servo Motor:
Produtos utilizados no teste:
- 1 x Servo Motor Posição 180º 4.2Kg/cm tipo Futaba S3003;
- 1 x Arduino;
- 1 x Protoboard;
- 1 x Potenciômetro;
- Jumpers.
Montagem Física (Hardware):
A montagem é muito simples, basta seguir os passos da imagem abaixo:
Funcionamento do Código (Software):
O código utiliza a biblioteca do Arduino “Servo”, esse código transforma os valores de 0 a 180º em ondas quadrados para dar o exato ângulo desejado. Deste modo, através das portas analógicas realizaremos as leituras do potenciômetro e converteremos estes valores com a função “map”.
Código para teste:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// Controlando a posição do servo através de um potenciômetro com resistor variável; #include <Servo.h> Servo myservo; // Cria o objeto servo para controlar o motor; int potpin = 0; // Pino analógico utilizado para ligar o potenciômetro; int val; // Variável para ler o valor do pino analógico; void setup() { myservo.attach(9); // Atribui o pino 9 ao servo motor; } void loop() { val = analogRead(potpin); // Realiza a leitura do potenciômetro(valor entre 0 e 1023); val = map(val, 0, 1023, 0, 179); // Escala o potenciômetro para trabalhar junto ao servo (valor entre 0 e 180); myservo.write(val); // Define a posição do servo em relação ao valor do potenciômetro; delay(15); // Tempo de resposta do servo motor; } |
Conclusão:
O Servo motor apresenta funcionamento exemplar, alcançando ótimos resultados quando utilizado, principalmente pela alta qualidade que possui, além de um torque excelente para o seu tamanho. Durante os testes apresentou bom rendimento, mostrando-se muito preciso, ideal para aeromodelismo ou projetos robóticos com variadas aplicações.