sexta-feira, 8 de março de 2013

Arduino & Motor DC

Neste post vou apresentar um pequeno projeto com o Arduino, a ideia é simples, controlar um motor DC.





O projeto vai incluir um potenciómetro para regular a velocidade do motor.

O circuito é o apresentado a seguir, criado com o fritzing.

Como o motor consome mais energia do que o Arduino lhe pode fornecer vamos utilizar uma pilha de 9V só para o motor. O truque está no transistor IRF520 MOSFET que vai controlar a energia que o motor recebe, da pilha de 9V, em função do valor que o Arduino lhe vai enviar.

O transistor tem 3 pernas: a base, o coletor e o emissor. A base está ligada ao pino digital do Arduino, o coletor é ligado ao motor e o emissor é ligado no neutro. O transistor além de funcionar como interruptor, ligado e desligado o motor, vai funcionar como um acelerador pois quanto maior o valor da base maior a corrente que flui entre o emissor e o coletor.

Antes de definir a velocidade do motor o Arduino lê o valor do potenciómetro, ajusta a escala, no potenciómetro vai de 0 a 1023, para um valor entre 0 e 255 e depois envia esse valor para a porta onde a base do transistor está ligada.

A porta do potenciómetro é analógica o que permite ler valores entre 0 e 1023.

Por outro lado a porta do transistor é digital e a variação da velocidade é conseguida através da técnica PWM - Pulse With Modulation.

Por fim temos de ligar o Arduino à terra da pilha de 9V.

O código fica assim:
Primeiro as constantes e as variáveis

const int potPin=0;  //pino onde o potenciometro fica ligado
const int transistorPin=9;  //pino onde fica ligado o transistor
int potValue=0;  //valor lido do potenciometro

Depois a função setup (é executada uma vez quando o programa arranca)
void setup(){
  pinMode(transistorPin,OUTPUT);
  Serial.begin(9600);
}

Por fim o ciclo (Repetido eternamente)
void loop(){
  potValue=analogRead(potPin)/4;
  analogWrite(transistorPin,potValue);
  Serial.println(potValue);
}


Além do código que lê os valores do potenciómetro e escreve para a porta do transistor incluí código para debug, enviando os valores para o computador através do cabo USB.

E a magia acontece...

Mas, sim tem um mas, o motor só pode rodar numa direção.

É um projeto simples mas que pode ser reutilizado para energias maiores, dependendo dos valores que o transistor suportar.

Por segurança incluí um diodo para proteger o Arduino de eventuais descargas que o motor possa gerar quando pára.

Projeto para download.

Sem comentários:

Enviar um comentário