Eletronica digital com Arduino – Controlando servo-motor.

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.

Para o artigo de hoje, vamos controlar um servo-motor, dividido em dois posts. 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 motor quando necessário, para esquerda ou direita.

Felizmente, já existe uma biblioteca pronta para manipulação de servo-motores 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:

Espero que essa semana eu consiga comprar de alguma forma uma ponte H L293D. Se alguém na capital de São Paulo tiver o componente e/ou lojas para recomendar, por favor entre em contato.

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Deixe uma resposta