Controle de velocidade do motor DC usando Arduino e potenciômetro
O motor DC é o motor mais utilizado em projetos de robótica e eletrônica. Para controlar a velocidade do motor DC, temos vários métodos, como a velocidade pode ser controlada automaticamente com base na temperatura, mas neste projeto o método PWM será usado para controlar a velocidade do motor DC. Aqui neste projeto de controle de velocidade do motor Arduino, a velocidade pode ser controlada girando o botão do potenciômetro.
Conteudo
Modulação de largura de pulso:
O que é PWM? PWM é uma técnica em que podemos controlar a tensão ou potência. Para entender de forma mais simples, se você estiver aplicando 5 volts para acionar um motor, então o motor se moverá com alguma velocidade; agora, se reduzirmos a tensão aplicada em 2 meios, aplicamos 3 volts ao motor, então a velocidade do motor também diminui. Este conceito é usado no projeto para controlar a tensão usando PWM. Explicamos o PWM em detalhes neste artigo. Verifique também este circuito onde o PWM é usado para controlar o brilho do LED: 1 Watt LED Dimmer.
% Ciclo de trabalho = (TON / (TON + TOFF)) * 100 Onde, TON = tempo ALTO da onda quadrada TOFF = tempo BAIXO de onda quadrada
Agora, se a chave na figura for fechada continuamente por um período de tempo, o motor será continuamente LIGADO durante esse tempo. Se a chave for fechada por 8ms e aberta por 2ms em um ciclo de 10ms, o motor estará LIGADO apenas no tempo de 8ms. Agora, a média do terminal ao longo de um período de 10ms = tempo de ligar/(tempo de ligar + tempo de desligar), isso é chamado de ciclo de trabalho e é de 80% (8/ (8+2)), então a média a tensão de saída será 80% da tensão da bateria. Agora, o olho humano não consegue ver que o motor está ligado por 8 ms e desligado por 2 ms, então vai parecer que o motor CC está girando a 80% da velocidade.
No segundo caso, a chave é fechada por 5ms e aberta por 5ms por um período de 10ms, de modo que a tensão média do terminal na saída será 50% da tensão da bateria. Diga se a tensão da bateria é 5V e o ciclo de trabalho é 50% e, portanto, a tensão média do terminal será 2,5V.
No terceiro caso, o ciclo de trabalho é de 20% e a tensão média do terminal é de 20% da tensão da bateria.
Material Necessário
- Arduino UNO
- Motor DC
- Transistor 2N2222
- Potenciômetro 100k ohm
- Capacitor 0,1uF
- ProtoBoard
- Jumping Wires
Diagrama de circuito
O diagrama de circuito para o controle de velocidade do motor Arduino DC usando PWM é geven abaixo:
Código e Explicação
O código completo para Arduino DC Motor Control usando potenciômetro é fornecido no final.
No código a seguir, inicializamos as variáveis c1 e c2 e atribuímos o pino analógico A0 para a saída do potenciômetro e o 12º pino para ‘pwm’.
int pwmPin = 12; int pot = A0; int c1 = 0; int c2 = 0;
Agora, no código abaixo, definindo o pino A0 como entrada e 12 (que é o pino PWM) como saída.
void setup() { pinMode(pwmPin, OUTPUT); // declara pino 12 como Saida pinMode(pot, INPUT); // declara pino A0 como entrada }
Agora, em void loop(), estamos lendo o valor analógico (de A0) usando analogRead (pot) e salvando-o na variável c2. Em seguida, subtraia o valor de c2 de 1024 e salve o resultado em c1. Em seguida, torne o pino PWM 12º do Arduino ALTO e, depois de um atraso de valor c1, torne esse pino BAIXO. Novamente, após um atraso de valor c2, o loop continua.
A razão para subtrair o valor analógico de 1024 é que o Arduino Uno ADC tem resolução de 10 bits (portanto, os valores inteiros de 0 – 2 ^ 10 = 1024 valores). Isso significa que ele mapeará as tensões de entrada entre 0 e 5 volts em valores inteiros entre 0 e 1024. Portanto, se multiplicarmos a entrada anlogValue por (5/1024), obteremos o valor digital da tensão de entrada.
void loop() { c2= analogRead(pot); c1= 1024-c2; digitalWrite(pwmPin, HIGH); // define o pino 12 ALTO delayMicroseconds(c1); // aguarda c1 uS (hora alta) digitalWrite(pwmPin, LOW); // define o pino 12 BAIXO delayMicroseconds(c2); // espera por c2 uS (tempo baixo) }
Controle de velocidade do motor DC usando Arduino
Neste circuito, para controlar a velocidade do motor DC, usamos um potenciômetro de 100K ohm para alterar o ciclo de trabalho do sinal PWM. O potenciômetro de 100K ohm é conectado ao pino de entrada analógica A0 do Arduino UNO e o motor DC é conectado ao 12º pino do Arduino (que é o pino PWM). O funcionamento do programa Arduino é muito simples, pois ele lê a tensão do pino analógico A0. A tensão no pino analógico é variada usando o potenciômetro. Depois de fazer alguns cálculos necessários, o ciclo de trabalho é ajustado de acordo com ele.
Por exemplo, se alimentarmos o valor 256 para a entrada analógica, o tempo HIGH será 768ms (1024-256) e o tempo LOW será 256ms. Portanto, significa simplesmente que o ciclo de trabalho é de 75%. Nossos olhos não conseguem ver essa oscilação de alta frequência e parece que o motor está continuamente LIGADO com 75% da velocidade. Então é assim que podemos realizar o controle de velocidade do motor usando o Arduino.
Código
int pwmPin = 12; // atribui o pino 12 à variável pwm int pot = A0; // atribui a entrada analógica A0 ao potenciômetro variável int c1 = 0; // declara a variável c1 int c2 = 0; // declara a variável c2 void setup() // setup loop { pinMode(pwmPin, OUTPUT); pinMode(pot, INPUT); } void loop() { c2= analogRead(pot); c1= 1024-c2; // subtrai c2 de 1000 ans salva o resultado em c1 digitalWrite(pwmPin, HIGH); delayMicroseconds(c1); digitalWrite(pwmPin, LOW); delayMicroseconds(c2); }