Controlar um motor DC significa:
- Iniciar e parar o motor
- Mude a direção de funcionamento do motor para frente (CW) ou reversa (CCW)
- Variar a velocidade do motor (RPM)
Todos os diferentes tipos de controladores de motor CC controlam a velocidade e a direção do motor. Eles usam diferentes tipos de dispositivos de entrada como
- Dois botões (ou talvez um único botão) são usados para iniciar e parar o motor
- A chave do tipo SPDT é usada para selecionar a direção do motor como CW ou CCW
- O potenciômetro é usado para variar a velocidade do motor
- Em alguns controladores, dois botões são usados para aumentar e diminuir a velocidade do motor (em vez do potenciômetro)
Portanto, todos esses controladores de motor DC requerem botões, um potenciômetro, uma chave SPDT e talvez outros componentes para controlar a velocidade e direção do motor.
Mas neste projeto, apenas um codificador rotativo é usado para controlar totalmente o motor DC.
Significa que podemos
- Variar a velocidade do motor
- Altere a direção do motor e
- Iniciar/parar motor
Com apenas um codificador rotativo. O codificador rotativo substitui todos os componentes acima, como botões, potenciômetro, interruptor, etc.
O projeto utiliza um codificador rotativo com uma placa de desenvolvimento Arduino NANO para controlar a velocidade e direção do motor DC. Ele também usa um módulo driver de motor (L293). O projeto completo pode ser construído com poucos componentes – módulos. Então vamos ver como isso é feito
Vamos primeiro coletar as coisas necessárias
Lista de itens obrigatórios
Placa de desenvolvimento Arduino NANO
Motor 12V CC
Módulo acionador de motor
Módulo codificador rotativo
Agora, primeiro construiremos o circuito e depois veremos seu funcionamento e operação. É simples construir este circuito porque precisamos conectar apenas 3 módulos. Pode-se construí-lo facilmente usando apenas fios de jumper e uma placa de ensaio. Aqui está o snap do circuito.
Diagrama de circuito
Conforme mostrado na figura, o circuito é construído usando três módulos – codificador rotativo, Arduino NANO e driver de motor DC L298.
- O módulo codificador rotativo possui 5 pinos de interface. Destes 5 pinos – 2 pinos são para Vcc e Gnd, e eles estão conectados com saída de 5 V e Gnd da placa Arduino.
- Seus outros 3 pinos, SW, DI e CLK, estão conectados aos pinos digitais D12, D2 e D3 da placa Arduino, respectivamente.
- O módulo driver do motor DC é usado para acionar o motor e fornecer a tensão e a corrente necessárias. Possui 4 entradas para acionar 2 motores DC, dos quais são utilizadas 2 entradas IN1 e IN2.
- As saídas PWM D5 e D6 da placa Arduino estão conectadas a estes IN1 e IN2 que são usados para acionar o motor
- Um motor de 12 V CC está conectado a OUT1 e OUT2 do módulo acionador do motor, conforme mostrado
- A placa Arduino e o módulo driver do motor recebem 12 V da fonte de alimentação externa
Funcionamento do circuito
Como eu disse antes, o mais interessante deste circuito é que, usando apenas este codificador rotativo, podemos…
- Ligue ou pare o motor
- Altere a direção do motor
- Varie a velocidade do motor
Explicarei primeiro como funciona o circuito e depois explicarei como ele é feito.
- Inicialmente, quando a alimentação de 12 V é aplicada à placa Arduino e ao módulo driver do motor, o motor é parado
- O motor começa a funcionar em qualquer direção (sentido horário ou anti-horário) quando o interruptor do codificador rotativo é pressionado. Quando o interruptor é pressionado novamente – o motor para. Assim, pressionando alternadamente o interruptor – o motor funciona ou para
- Enquanto o motor estiver funcionando no sentido horário, se começarmos a girar o codificador na mesma direção (sentido horário) – ele continuará aumentando a velocidade do motor até atingir o máximo.
- Caso contrário, enquanto o motor estiver funcionando no sentido horário, e se começarmos a girar o codificador na direção reversa (sentido anti-horário) – ele começará a diminuir a velocidade do motor até parar
- Agora, à medida que o codificador é girado ainda mais no sentido anti-horário, o motor começa a funcionar lentamente no sentido anti-horário e continua aumentando a velocidade até o máximo no sentido anti-horário
- Assim, a velocidade do motor aumenta e diminui em qualquer direção girando o codificador no sentido horário e anti-horário
- Assim, pode-se definir facilmente a velocidade desejada e a direção do motor usando apenas o codificador rotativo
Para entender o funcionamento do circuito em detalhes, primeiro precisamos entender o funcionamento de um codificador rotativo.
Funcionamento do codificador rotativo
O codificador rotativo consiste em um disco com fenda conectado ao pino C de aterramento comum e dois pinos de contato A e B, conforme mostrado na figura.
Ao girar o botão, A e B entram em contato com o pino C de aterramento comum, em uma ordem específica de acordo com a direção em que você está girando o botão.
Quando entram em contato com o terreno comum, produzem sinais. Esses sinais são deslocados 90° fora de fase entre si quando um pino entra em contato com o outro pino. Isso é chamado codificação de quadratura.
Quando você gira o botão no sentido horário, o pino A se conecta primeiro, seguido pelo pino B. Quando você gira o botão no sentido anti-horário, o pino B se conecta primeiro, seguido pelo pino A.
Ao rastrear quando cada pino se conecta e se desconecta do solo, podemos usar essas mudanças de sinal para determinar como o botão está sendo girado. Você pode fazer isso simplesmente observando o estado de B quando A muda de estado.
Quando o A muda de estado:
- se B e A não forem iguais, então o botão foi girado no sentido horário
- se B e A forem iguais, então o botão foi girado no sentido anti-horário
Veja a figura abaixo
Portanto, essas saídas A e B são pinos DI e CLK do módulo codificador rotativo. O Arduino verifica a saída de pulso de ambos e determina que o codificador está girado no sentido horário ou anti-horário.
Se o motor estiver girando no sentido horário em alguma velocidade e
- Caso 1 – o codificador também é girado no sentido horário, então o Arduino aumentará a largura do PWM em D5 – então a velocidade do motor aumentará. se o codificador for girado continuamente no sentido horário – o motor atinge a velocidade máxima
- Caso 2 – se o codificador for girado no sentido anti-horário, o Arduino diminuirá a largura do PWM em D5, diminuindo a velocidade do motor. E girar o codificador no sentido anti-horário continuamente fará com que a largura do PWM em D5 seja 0 e pare o motor uma vez. Continue a girar o codificador na mesma direção, aumentando a largura do PWM em D6, e o motor começará a girar no sentido anti-horário. Se alguém continuar girando o codificador no sentido anti-horário, a largura PWM em D6 se torna máxima e o motor atinge a velocidade máxima no sentido anti-horário.
O funcionamento e operação completos do circuito são baseados no programa baixado na memória FLASH do microcontrolador Arduino ATMega328. O programa é escrito em linguagem C usando Arduino IDE. O programa usa a biblioteca DC_Motor para variar a velocidade e direção do motor DC. Consulte a documentação da biblioteca DC_Motor para obter mais detalhes. aqui está o código do programa