Controle de velocidade do motor DC usando Arduino e potenciômetro

Tempo de leitura: 4 minutes

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.

 

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);  
}