- Modulação de largura de pulso:
- Material Necessário
- Diagrama de circuito
- Código e Explicação
- Controle de velocidade do motor DC usando Arduino
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 e 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, T ON = HIGH tempo da onda quadrada T OFF = LOW tempo da 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 8 ms e aberta por 2 ms em um ciclo de 10 ms, o motor estará LIGADO apenas no tempo de 8 ms. Agora, a média do terminal ao longo de um período de 10 ms = 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 pode 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 é 5 V e o ciclo de trabalho é 50% e, portanto, a tensão média do terminal será 2,5 V.
No terceiro caso, o ciclo de trabalho é de 20% e a tensão média do terminal é de 20% da tensão da bateria.
Usamos PWM com Arduino em muitos de nossos projetos:
- Dimmer LED baseado em Arduino usando PWM
- Ventilador com temperatura controlada usando Arduino
- Controle de motor DC usando Arduino
- Controle de velocidade do ventilador AC usando Arduino e TRIAC
Você pode aprender mais sobre PWM passando por vários projetos baseados em PWM.
Material Necessário
- Arduino UNO
- motor DC
- Transistor 2N2222
- Potenciômetro 100k ohm
- Capacitor 0,1uF
- Tábua de pão
- 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 abaixo, temos inicializado o c1 variável e c2 e atribuído A0 pino analógico para a saída do potenciómetro e 12 th Pin para 'PWM'.
int pwmPin = 12; pote interno = 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 o pino 12 como saída pinMode (pot, INPUT); // declara o 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. Então, subtraia o valor de c2 de 1024 e salve o resultado em c1. Em seguida, fazer o PWM pino 12 th de Arduino ALTO e, em seguida, após um atraso de valor c1 fazer essa LOW pinos. 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á tensões de entrada entre 0 e 5 volts em valores inteiros entre 0 e 1024. Portanto, se multiplicarmos anlogValue de entrada por (5/1024), obteremos o valor digital da tensão de entrada. Aprenda aqui como usar a entrada ADC no Arduino.
loop vazio () { c2 = analogRead (pot); c1 = 1024-c2; digitalWrite (pwmPin, HIGH); // define o pino 12 HIGH delayMicroseconds (c1); // espera por c1 uS (tempo alto) digitalWrite (pwmPin, LOW); // define o pino 12 LOW 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. 100K ohm potenciómetro é conectado ao pino A0 entrada analógica do Arduino UNO e o motor de corrente contínua é ligada à 12 th 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.