Controlando velocidade de motor DC com Arduino e Potenciômetro – Projeto
Controle de velocidade de motor DC com Arduino e Potenciômetro
Por Fábio dos Reis
Em nosso projeto anterior mostramos como acionar um pequeno motor DC usando o Arduino, transístor e um relé. Agora, vamos dar um passo adiante, criando um controle de velocidade para o motor, por meio de um potenciômetro.
Podemos controlar a velocidade de um motor variando a tensão aplicada a ele. Quanto menor a tensão, nais devagar o motor gira, e aumentando a tensão, ele passa a girar mais rápido. Para variar a tensão podemos usar um potenciômetro, funcionando como um divisor de tensão.
Porém, essa não é a técnica mais adequada para controlar a velocidade de motores de corrente contínua, pois é muito ineficiente – uma grande quantidade de energia é perdida na forma de calor dissipado pela resistência do potenciômetro. Uma forma melhor é usar a técnica de PWM para controlar a quantidade de energia que irá acionar o motor.
Para simplificar um pouco o circuito, iremos usar apenas o transistor para chavear o motor, sem o uso do relé. O transistor irá controlar a velocidade de rotação do motor por meio do controle de corrente que o atravessa, usando um sinal PWM fornecido pelo Arduino, por meio da função analogWrite().
O ciclo ativo (duty cicle) do sinal PWM será, por sua vez, controlado por um potenciômetro, que poderemos ajustar para variar a velocidade do motor.
Vamos à listagem de materiais necessários:
Lista de materiais:
- 1 Arduino Uno
- 1 Potenciômetro de 1kΩ
- 1 Resistor de 1kΩ
- 1 Transistor 2N2222 (NPN) ou equivalente
- 1 Diodo 1N4004 ou equivalente
- 1 Fonte de 6 a 9V (dependendo do motor controlado)
- 1 Motor DC 6 a 9V
- Matriz de contatos
- Fios diversos
Diagrama esquemático do circuito
A seguir temos o diagrama esquemático de nosso projeto. Note que o resistor R1 está conectado ao pino 6 do Arduino, que é capaz de fornecer o sinal PWM necessário. Porém, nem todos os pinos digitais do Arduino fornecem saída em PWM, e você deve prestar atenção nesse detalhe, pois se usar um pino errado, o controle de velocidade não será possível.
Confira a pinagem de um Arduino Uno aqui, para descobrir quais pinos podem fornecer saída PWM.
Código do sketch
A seguir temos o código-fonte de nosso sketch. Trata-se de um código bem simples, no qual declaramos duas constantes, MOTOR e POT para ajustarmos os pinos de ligação do motor e do potenciômetro, respectivamente, e uma variável valor que irá receber o valor lido a partir do potenciômetro.
const int MOTOR = 6; const int POT = 0; int valor = 0; void setup() { pinMode(MOTOR, OUTPUT); } void loop() { valor = analogRead(POT); valor = map(valor,0,1023,0,255); analogWrite(MOTOR,valor); }
Ajustamos o pino do motor para ser saída de sinal, e na função loop() realizamos a leitura do valor atual da tensão fornecida a partir do divisor de tensão formado com o potenciômetro. Esse valor é mapeado para o intervalo entre 0 e 255, que é o intervalo de valores válidos para o PWM (pois a entrada analógica fornece valor de tensão em resolução de 10 bits, portanto, entre 0 e 1023), e, finalmente, o valor lido e mapeado é enviado, via PWM, para o controle eletrônico do motor, via transistor no circuito.
Testando o circuito
Após montar e revisar o circuito, e criar o código e enviá-lo para o Arduino, basta ligar a fonte do motor, e girar o eixo do potenciômetro para ver o motor girar com maior ou menor velocidade.
Caso o motor não gire, ou não mude de velocidade ao rotacionar o potenciômetro, verifique tanto as ligações na matriz de contatos quanto o código-fonte do circuito.
A imagem a seguir mostra o circuito de controle de velocidade de motor DC com Arduino montado em matriz de contatos:
Em nosso próximo projeto vamos controlar a direção de rotação do motor DC, usando uma ponte H.
Até mais!
Bom dia eu gostaria de saber mais sobre o Kali Linux gostaria de fazer o curso Meus movimentos dos braços e das mãos são limitados tem como eu instalar teclado virtual no Kali Linux
Ola bom dia!gostaria de saber qual arduino posso comprar ?e acessórios que posso reduzir á velosidade de um motor de 110vts ?