Bóson Treinamentos em Ciência e Tecnologia

Controlando velocidade de motor DC com Arduino e Potenciômetro – Projeto

Como controlar velocidade de rotação de motor DC com Arduino

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:

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!

Sair da versão mobile