Aquele seu projeto está ficando grande demais e com muitos motores para controlar? Talvez seja a hora de partir para um controlador de motores integrado, como o Arduino Motor Shield L293D:
Esse shield é compatível com Arduino Uno e Arduino Mega, possui dois chips L293D, cada um composto por 2 pontes H (um conceito que já abordamos no artigo Controle de motor CC com o L293D – Ponte H), além de um CI 74HC595. Tudo isso para controlar até 4 motores DC, 2 Servos (alimentados por 5v) ou 2 motores de passo. Lembrando que a corrente máxima suportada por cada L293D é de 600 mA, com picos de 1.2A.
Nas laterais da placa temos os terminais (com parafusos) para conexão dos motores DC ou motores de passo. Na parte superior esquerda, conectores de 3 pinos permitem a conexão de até 2 servos. Um led na parte central da placa indica não só o funcionamento do shield como também que há alimentação para os motores:
A tensão de entrada pode variar de 4,5 à 25 Vcc. Para utilização de alimentação externa, não se esqueça de retirar o jumper PWR.
Como a maioria dos shields, você tem à disposição os pinos que sobram quando você não está controlando motores, obviamente, e também alguns pinos que estão sempre disponíveis:
- Pinos disponíveis : os pinos analógicos de A0 a A5, que também podem ser utilizados como pinos digitais 14 a 19. Também estão disponíveis os pinos 2 e 13.
- Pinos utilizados para controle de motores DC e motores de passo : 11,3,5 e 6, além dos pinos 4,7, 8 e 12.
- Pinos utilizados para controle de servo motores : pinos 9 (servo 1) e 10 (servo 2)
Para utilizar os pinos que sobram, você pode soldar uma barra de pinos ao shield nos furos correspondentes, como fizemos no nosso shield:
Essa é uma visão geral sobre a estrutura desse shield. Para utilizá-lo com o Arduino, precisaremos da biblioteca AFMotor, disponível nesse link.
Quando você descompacta o arquivo, é criada uma pasta chamada adafruit-Adafruit-Motor-Shield-library-4bd21ca. Renomeie essa pasta simplesmente para AFMotor, e coloque-a dentro da pasta LIBRARIES da IDE do seu Arduino.
Se você quiser controlar 2 motores DC de 5 volts, por exemplo, utilize alimentação externa e monte o circuito da seguinte maneira:
O programa abaixo gira cada motor em um sentido diferente, e depois de 5 segundos inverte essa rotação. Os principais comandos utilizados são :
motor.setSpeed(velocidade) – Ajusta a velocidade de rotação do motor, podendo ser um valor entre 0 (mínimo) e 255 (máximo)
motor.run(sentido) – Aciona o motor. A variável sentido pode ter o valor FORWARD (move o motor no sentido horário), BACKWARD (sentido inverso/anti-horário) ou RELEASE, que determina a parada do motor:
// Programa: Arduino Motor Shield - Controle motores DC // Autor: Arduino e Cia // carrega a biblioteca AFMotor #include <AFMotor.h> // Define o motor1 ligado a conexao 1 AF_DCMotor motor1(1); // Define o motor2 ligado a conexao 4 AF_DCMotor motor2(4); void setup() { // Define a velocidade maxima para os motores 1 e 2 motor1.setSpeed(255); motor2.setSpeed(255); } void loop() { // Aciona o motor 1 no sentido horario motor1.run(FORWARD); // Aciona o motor 2 no sentido anti-horario motor2.run(BACKWARD); // Aguarda 5 segundos delay(5000); // Desliga os 2 motores motor1.run(RELEASE); motor2.run(RELEASE); // Aciona o motor 1 no sentido anti-horario motor1.run(BACKWARD); // Aciona o motor 2 no sentido horario motor2.run(FORWARD); // Aguarda 5 segundos delay(5000); // Desliga os 2 motores motor1.run(RELEASE); motor2.run(RELEASE); }
Em um próximo artigo, vamos mostrar como controlar um motor de passo utilizando o Arduino Motor Shield L293D. Até lá !
Atualizado: Controlando motores de passo 28BYJ-48 com o Arduino Motor Shield L293D
Veja também: Controlando servo motor com o Motor Shield L293D