Manual

do

Maker

.

com

Controlando servo-motor com Arduino

Controlando servo-motor com Arduino

Demorei a escrever mais artigos sobre Arduino porque para dar continuidade ao controle de motores precisarei de um CI L293D, que é um circuito integrado que faz o papel de ponte H dispensando a criação de um circuito para isso, incluindo o diodo. Assim que conseguir comprá-lo, daremos continuidade no controle de um motor que abre e fecha a porta do drive cd CD/DVD. Procurem por um motor desses em assistências técnicas. Normalmente isso já é lixo eletrônico e você poderá consegui-lo até gratuitamente. Por enquanto, vamos controlando servo-motor com Arduino, que também é bastante divertido.

Estive controlando servo-motor com Arduino esses dias e decidi dividir em duas partes. Nesse, basicamente controlaremos a direção por um potenciômetro. No próximo veremos como automatizar o funcionamento do motor e posteriormente criaremos uma função para movimentar o servo-motor quando necessário, para esquerda ou direita.

Felizmente, já existe uma biblioteca pronta para manipulação de servo-motor que vem no SDK do Arduino. O código para movimentação do servo-motor seria basicamente esse:

#include <Servo.h>

// Criação de um objeto que permitira controlar o servo
Servo servo1;

/* Declaração da variavel para o pino que vai ler o
valor do potenciometro, neste caso é o pino analogico 0 */
int pinopot = 0;

// Declaração da variavel onde vai ser colocado o valor lido do pino analogico 0
int valor;

void setup()
{
// Porta onde ira ser ligado o servo (porta digital)
servo1.attach(8);
}

void loop()
{
// leitura do valor do potenciometro para a variavel valor
valor = analogRead(pinopot);

/* Escala para que o valor do potenciometro possa corresponder a um valor de posiçao no servo.
Isso equivale a 180 graus, contando do comeco ao fim do potenciometro */
valor = map(valor, 0, 1023, 0, 179);

// Gira o servo de acordo com a escala da linha acima
servo1.write(valor);

// Espera de 1 milisegunda para que o servo possa atingir a sua posiçao
delay(1);
}

Repassando as conexões

Confesso que não sei se há um padrão na ordem dos fios para cada tipo de servo. De cores, tenho certeza que muda de marca para marca. Estou utilizando o servo-motor de 5g da RC Timer, que vai de 4.8v a 6v; perfeito para utilizar no Arduino para pequenos projetos. Ele tem um torque de 1kg/cm, o suficiente para fazermos nosso robozinho. Os fios desse servo tem as cores: -Laranja -Vermelho -Marrom

Não tenho os fios das mesmas cores para interligar ao servo, então fiz o seguinte: Marrom - Azul Vermelho - Vermelho Laranja - Branco

Na imagem abaixo, note os fios no potenciômetro sliding.

  • O laranja está na porta analógico 0.
  • O preto (paralelo ao laranja) é o terra e está ligado ao terra do Arduino.
  • O Azul (logo atrás do preto, na mesma fileira) é uma extensão do terra ligado ao Marrom do servo.
  • O verde (ao fundo, do outro lado do potenciômetro) está ligado ao 5v do Arduino.
  • O vermelho (na mesma fileira do verde) está ligado ao Vermelho do servo.
  • O branco está conectado do Laranja do servo ao pino digital 8 do Arduino.

O potenciômetro pode ser qualquer um de 10k. Na verdade, para simular um volante (pois o servo utilizaremos como controlador de um eixo) seria melhor utilizar um potenciômetro circular analógico.

O resultado pode ser visto nesse simples video.

Recomendo também a leitura desse controle digital dos servo-motor, utilizado no robô, também citado nesse segundo artigo.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.