Neste tutorial vamos fazer a interface de um motor DC com o Arduino UNO e controlar sua velocidade usando o conceito PWM (Pulse Width Modulation). Este recurso é habilitado no UNO para obter tensão variável sobre tensão constante. O método de PWM é explicado aqui; considere um circuito simples como mostrado na figura.
Se o botão for pressionado se a figura, o motor começará a girar e ficará em movimento até que o botão seja pressionado. Essa prensagem é contínua e está representada na primeira onda da figura. Se, para um caso, considerar o botão é pressionado por 8 ms e aberto por 2 ms em um ciclo de 10 ms, durante este caso, o motor não experimentará a tensão completa da bateria de 9 V já que o botão é pressionado apenas por 8 ms, então a tensão do terminal RMS atravessa o motor estará em torno de 7V. Devido a esta tensão RMS reduzida, o motor irá girar, mas a uma velocidade reduzida. Agora, a média de ativação ao longo de um período de 10ms = tempo de ativação / (tempo de ativação + tempo de desativação), isso é chamado de ciclo de trabalho e é de 80% (8 / (8 + 2)).
No segundo e terceiro casos, o botão é pressionado ainda menos tempo em comparação com o primeiro caso. Por causa disso, a tensão do terminal RMS nos terminais do motor diminui ainda mais. Devido a esta tensão reduzida, a velocidade do motor diminui ainda mais. Esta diminuição da velocidade com o ciclo de trabalho continua ocorrendo até um ponto, onde a tensão nos terminais do motor não será suficiente para girar o motor.
Portanto, podemos concluir que o PWM pode ser usado para variar a velocidade do motor.
Antes de prosseguir, precisamos discutir a H-BRIDGE. Agora, este circuito tem principalmente duas funções, a primeira é acionar um motor DC a partir de sinais de controle de baixa potência e a outra é mudar a direção de rotação do motor DC.
figura 1
Figura 2
Todos nós sabemos que para um motor DC, para mudar o sentido de rotação, precisamos mudar as polaridades da tensão de alimentação do motor. Então, para mudar as polaridades, usamos a ponte H. Agora, na figura 1 acima, temos quatro interruptores. Conforme mostrado na figura 2, para o motor girar A1 e A2 estão fechados. Por causa disso, a corrente flui pelo motor da direita para a esquerda, conforme mostrado na 2ª parte da figura 3. Por enquanto, considere que o motor gira no sentido horário. Agora, se os interruptores A1 e A2 estiverem abertos, B1 e B2 serão fechados. A corrente através do motor flui a partir da esquerda para a direita, como mostrado em 1 r parte da figura 3. Esta direção do fluxo de corrente é oposta à primeira e, portanto, vemos um potencial oposto no terminal do motor ao primeiro, de modo que o motor gira no sentido anti-horário. É assim que funciona uma H-BRIDGE. No entanto, motores de baixa potência podem ser acionados por um H-BRIDGE IC L293D.
L293D é um H-BRIDGE IC projetado para acionar motores CC de baixa potência e é mostrado na figura. Este IC consiste em duas pontes H e, portanto, pode acionar dois motores CC. Portanto, este IC pode ser usado para acionar os motores do robô a partir dos sinais do microcontrolador.
Agora, como discutido antes, este IC tem capacidade de alterar a direção de rotação do motor DC. Isso é obtido controlando os níveis de tensão em INPUT1 e INPUT2.
Habilitar PIN |
Pino de entrada 1 |
Pino de entrada 2 |
Direção do motor |
Alto |
Baixo |
Alto |
Vire à direita |
Alto |
Alto |
Baixo |
Vire a esquerda |
Alto |
Baixo |
Baixo |
Pare |
Alto |
Alto |
Alto |
Pare |
Como mostrado na figura acima, para rotação no sentido horário, 2A deve ser alto e 1A deve ser baixo. Da mesma forma, para anti-horário, 1A deve ser alto e 2A deve ser baixo.
Conforme mostrado na figura, o Arduino UNO tem canais 6PWM, então podemos obter PWM (tensão variável) em qualquer um desses seis pinos. Neste tutorial, usaremos o PIN3 como saída PWM.
Hardware: ARDUINO UNO, fonte de alimentação (5v), capacitor 100uF, LED, botões (duas peças), resistor 10KΩ (duas peças).
Software: IDE arduino (Arduino noturno).
Diagrama de circuito
O circuito é conectado na placa de ensaio de acordo com o diagrama de circuito mostrado acima. No entanto, deve-se prestar atenção ao conectar os terminais de LED. Embora os botões mostrem efeito de salto neste caso, não causa erros consideráveis, portanto, não precisamos nos preocupar neste momento.
O PWM da UNO é fácil, em ocasiões normais configurar um controlador ATMEGA para o sinal PWM não é fácil, temos que definir muitos registros e configurações para um sinal preciso, porém no ARDUINO não temos que lidar com todas essas coisas.
Por padrão, todos os arquivos de cabeçalho e registradores são predefinidos pelo ARDUINO IDE, basta chamá-los e teremos uma saída PWM no pino apropriado.
Agora, para obter uma saída PWM em um pino apropriado, precisamos trabalhar em três coisas,
|
Primeiro precisamos escolher o pino de saída PWM de seis pinos, depois disso, precisamos definir esse pino como saída.
Em seguida, precisamos habilitar o recurso PWM do UNO chamando a função “analogWrite (pino, valor)”. Aqui, 'pino' representa o número do pino onde precisamos da saída PWM, estamos colocando-o como '3'. Então, no PIN3, estamos obtendo saída PWM.
O valor é o ciclo de trabalho de ativação, entre 0 (sempre desativado) e 255 (sempre ativado). Vamos aumentar e diminuir esse número pressionando o botão.
O UNO tem uma resolução máxima de “8”, não se pode ir além dos valores 0-255. No entanto, pode-se diminuir a resolução do PWM usando o comando “analogWriteResolution ()”, inserindo um valor de 4-8 entre colchetes, podemos alterar seu valor de PWM de quatro bits para PWM de oito bits.
A chave é mudar o sentido de rotação do motor DC.