sexta-feira, 7 de agosto de 2015

Acionando motores de passo com o Arduino

Motores de passos são equipamentos interessantes uma vez que podemos determinar a velocidade de a quantidade de graus que desejamos que eles virem.

Porém no quesito velocidade não são tão eficientes, uma vez que girando muito rápido, devido a inércia do rotor eles podem girar mais do que o desejado, perdendo passos, ou seja, devem ser utilizados em baixas velocidades.
Você pode encontrar motores de passo em vários lugares: lojas na Internet, impressoras e drives velhos.
Existem vários tipos, o que vamos usar é um motor de passos de 6 fios, comprado na Internet. Esse aqui:
Como comprei o motor na Internet junto veio a descrição dos fios, sendo:
Verde – bobina 1
Marrom – bobina 2
Amarelo – bobina 3
Vermelho – bobina 4
Preto (2 fios) – comum
Caso você use um motor usado, obtido de uma impressora ou scanner, por exemplo, para identificar o fio comum use um multímetro e encontre o fio com a menor resistência entre todos, ele será o comum.
Também precisaremos de uma fonte de alimentação para o motor, já que o Arduino é alimentado com os 5V da porta USB e o motor de passo, invariavelmente, trabalha com 12V. Você deve escolher uma fonte que forneça como saída no máximo 500mA, devido a limitação do circuito integrado que usaremos, descrito mais abaixo. Identificar isso numa fonte hoje em dia é fácil, pois esse tipo de informação vem impresso nela. A que vou usar fornece 12V de saída à 200mA:
Para controlar o motor precisamos de um driver para motor de passo sendo que o CI ULN2003 atende bem a essa necessidade. O CI que usarei seja exatamente esse e que aparece na imagem abaixo:
À esquerda do CI temos os pinos de 1 até 8, de cima para baixo e à direita temos os pinos 9 até 16, de baixo para cima. À esquerda temos as entradas de dados e à direita às saídas. Lembre-se que a saída suporta no máximo 500mA!
Ligaremos o CI obedecendo ao seguinte esquema:
Sendo:
A – pino 3 do Arduino
B – pino 4 do Arduino
C – pino 5 do Arduino
D – pino 6 do Arduino
1 – Bobina 1 do motor
2 – Bobina 2 do motor
3 – Bobina 3 do motor
4 – Bobina 4 do motor
5 – ao comum do motor
12V – ao positivo da fonte
GND – ao negativo da fonte
Zener – Diodo Zener de 12V 0,5W, como o da imagem abaixo:
Vamos montar tudo em uma placa de ensaio (proto-board):
Tudo ligar e verificado, agora é hora de desenvolvermos nosso programa em C para o Arduino:

void setup()
{
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
}
void loop()
{
digitalWrite(3,HIGH);
delay(100);
digitalWrite(3,LOW);
delay(1 00);
digitalWrite(4,HIGH);
delay(100);
digitalWrite(4,LOW);
delay(100);
digitalWrite(5,HIGH);
delay(100);
digitalWrite(5,LOW);
delay(100);
digitalWrite(6,HIGH);
delay(100);
digitalWrite(6,LOW);
delay(100);
}

Com esse código damos um passo completo de cada vez, ou seja, energizamos uma bobina a cada vez.



Podemos melhorá-lo para dar meio passo, ou seja, energizar as bobinas aos pares, assim o motor girará mais suavemente:

 
void setup()
{
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
}
void loop()
{
digitalWrite(3,HIGH);
delay(100);
digitalWrite(4,HIGH);
delay(100);
digitalWrite(3,LOW);
delay(1 00);
digitalWrite(5,HIGH);
delay(100);
digitalWrite(4,LOW);
delay(100);
digitalWrite(6,HIGH);
delay(100);
digitalWrite(5,LOW);
delay(100);
digitalWrite(3,HIGH);
delay(100);
digitalWrite(6,LOW);
}

Alguns pontos nesse projeto a serem considerados:
1. Para inverter a rotação, basta inverter a sequencia da energização das bobinas;
2. Há um aquecimento no CI ULN2003, portanto é preciso uma dissipação desse calor;
3. Existem também aquecimento no motor, quando maior o tempo de uso maior a geração de calor;
4. No caso de uma montagem autônoma será preciso de uma fonte 12V para o motor independente da alimentação 5V para o Arduino;
← Postagem mais recente Postagem mais antiga → Página inicial

0 comentários:

Postar um comentário