Controlando motores DC com o Arduino

Olá a todos,

nesse post aprenderemos como utilizar motores DC em nossos projeto com Arduino. Os motores DC são utilizamos em robôs ou brinquedos de radiocontrole para movimentá-los. Porém esses motores consomem mais potência do que os pinos de controle do Arduino podem fornecer e por esse motivo não podemos conectar os motores diretamente nos pinos digitais do Arduino.

Para contornar esse problema utilizamos drivers de potência que são circuitos que permitem que um sinal de baixa potência controle o fluxo de energia de uma fonte de alta potência. Podemos construir esse tipo de circuito com o uso de transistores, mas existem circuitos integrados (CIs) que já possuem esses circuitos montados.

No nosso circuito utilizaremos um CI chamado L239D que é um circuito driver de potencia chamado de ponte H. Esse tipo de circuito permite controlarmos um motor DC nos dois sentidos (horário e anti-horário). A velocidade do motor poderá ser controlada pelo uso da técnica de PWM onde a velocidade do motor será proporcional a largura do pulso.

O CI L239D possui dois circuitos ponte H que suportam até 36V e 1A, portanto é possível controlarmos dois motores DC com até essa potência com apenas um L239D. Os pinos do L239D devem ser contados como na figura abaixo:

Pinagem do CI L293D
Pinagem do CI L293D

O primeiro passo é conectarmos os terminais 4, 5, 12 e 13 do L293D no terra (GND) do Arduino e em seguida os terminais 1, 8, 9 e 16 também do L293D no pino 5V do Arduino. Agora conecte os terminais 2 e 7 do CI nos pinos do Arduino que controlarão o giro do motor (horário e anti-horário). Para finalizar conecte os pinos do motor nos terminais 3 e 6 do L293D.

Circuito montado
Circuito montado

Abaixo temos o esquema elétrico e o desenho elaborado no simulador:

Diagrama do circuito
Diagrama do circuito
Modelo do circuito
Modelo do circuito

Passaremos agora para o código que controlará o motor DC.

O primeiro passo é declarar as constantes que indicarão os pinos do Arduino que controlarão o motor. Na sequência configure esses pinos como saída, com a função pinMode utilizando a constante OUTPUT. Deixe o motor parado deixando os dois pinos em estado LOW. Encerre a inicialização do programa configurando a porta serial:

Início do Programa
Início do Programa

Passaremos para o desenvolvimento da função loop, que fará a leitura da porta serial e controlará a rotação do motor DC. O primeiro passo é verificar com o método available se há caracteres para serem lidos da porta serial. Caso não exista caracteres na porta serial o programa deve aguardar 300 milissegundos e encerrar essa execução da função loop com o comando return.

Existindo caracteres para serem lidos, deveremos utilizar o método read para obtê-los. Caso tenha sido enviado o caractere A, deixaremos um dos pinos em estado LOW, e no outro pino utilizaremos o PWM com valor 128 para o motor girar em um sentido. Quando for enviado o caractere L faremos ação contrária e o motor girará no outro sentido. Ao enviarmos o caractere de espaço em branco deixaremos os dois pinos com valor LOW para parar o motor.

Código da função loop
Código da função loop

Compile o código, transfira o programa e acesse o monitor serial. Envie um caractere A ou L para fazer o motor girar em um sentido. Envie o caractere espaço para fazer o motor parar. Se desejar altere o valor do PWM de 128 para outro valor para alterar a velocidade do motor.

Onde encontrar alguns dos componentes:

Obrigado pela atenção e até o próximo post!

Deixe um comentário

O seu endereço de e-mail não será publicado.