Como acionar um motor DC usando o Arduino e um Relé
Acionando um motor DC com Arduino
Por Fábio dos Reis
Neste projeto vamos mostrar como acionar um pequeno motor DC utilizando o Arduino e alguns poucos componentes eletrônicos discretos.
Motores DC (de corrente contínua) encontram inúmeras aplicações, tais como o controle de robôs, pequenos veículos, abrir e fechar de portas, em aparelhos de CD e DVD, e muitas outras aplicações.
A principal característica de um motor de corrente contínua é rotacionar continuamente quando submetido a ma tensão DC. Eles são encontrados em diversos tamanhos, e no geral possuem um custo baixo. Neste projeto, por exemplo, o custo do motor utilizado é zero, pois eu o aproveitei de um CD player antigo – e quebrado – que foi desmontado.
Neste primeiro projeto vamos simplesmente mostrar como acionar o motor – ligando-o e desligando-o por meio de sinais vindos do Arduino. Nos próximos projetos também mostraremos como controlar a velocidade dos motores, alternar sua direção de rotação e muito mais.
Lista de materiais:
- Arduino UNO
- Transístor 2N2222 ou similar (NPN)
- Resistor 1kΩ
- Relé SPDT de 5V
- Diodo 1N4004 ou equivalente
- Motor DC (retirado de brinquedos ou um drive de CD/DVD, ou comprado)
- Matriz de contatos
- Fonte de alimentação à parte ou bateria de 9V (para o motor)
Cargas indutivas
Os motores DC necessitam de uma corrente muito maior do que o Arduino pode fornecer, além de criarem picos de tensão que podem danificar os circuitos onde estão conectados. Por esta razão, vamos acionar o motor utilizando uma fonte de alimentação separada, além de isolá-lo do circuito por meio de um relé, o qual será acionado por um transistor.
Porém, a própria bobina do relé pode causar picos de tensão que podem danificar seu Arduino. Por conta disso, usamos um diodo para proteger o circuito contra a tensão reversa gerada.
O Circuito:
Usamos uma fonte externa (de 9V) para alimentar o motor, pois o Arduino não é capaz de fornecer a corrente necessária para acioná-lo, podendo inclusive ser permanentemente danificado se você o fizer. Vamos usar um transistor para acionar o relé, ao qual por sua vez conectaremos o motor DC que iremos controlar. O transistor trabalha como uma chave, pois ao aplicarmos uma pequena corrente em sua base, ele permite que uma corrente muito maior flua entre coletor e emissor, onde o relé está ligado.
Código
O código do circuito é extremamente simples, consistindo em um sketch que ativa e desativa o nível lógico no pino 8 do Arduino, o qual por sua vez liga e desliga o relé que controla o motor DC:
int pinoTransistor = 8; void setup() { pinMode(pinoTransistor, OUTPUT); } void loop() { digitalWrite(pinoTransistor, HIGH); delay(4000); digitalWrite(pinoTransistor, LOW); delay(4000); }
Você pode também experimentar o acionamento do motor DC sem o uso do relé, conectando-o diretamente ao transistor. Mas não se esqueça do diodo de proteção, mesmo nesse caso. Veja a seguir o circuito que você pode montar para acionar o motor sem usar o relé (o código permanece o mesmo):
Note que o terra do Arduino e da fonte do motor devem ser conectados em um ponto comum.
Assim que o sketch for carregado no Arduino, ligue a alimentação do motor e, se tudo correr bem, você verá o motor ligando e girando por 4 segundos, então sendo desligado automaticamente e permanecendo parado por outros quatro segundos.
No próximo projeto vamos aprender a controlar a velocidade de rotação do motor usando a técnica de PWM.
Até!
Boa noite, boa apresentação, mas sugiro usar trasnsistores mais fortes mesmo para um pequeno motor, tal como o BD135.
Excelente Ivo, com certeza!
Bom dia. Por que não usar o pulso direto ao rele? Ligaria a fonte externa pra alimentar o rele e o motor e o arduino enviaria apenas o pulso pra acionar o rele.
O Arduino pode não conseguir fornecer corrente suficiente para acionar diretamente o relé, além do risco de dano ao microcontrolador por conta de tensão reversa gerada na bobina do relé.