Tutorial: utilizando Arduino e transistor para controlar motor DC

Adquira estes componentes na Loja do Lab de Garagem

Neste tutorial vamos mostrar como controlar um motor DC com Arduino e um transistor utilizando a saída PWM (Pulse Width Modulation). Para saber mais sobre PWM, clique aqui.

Com dois botões, vamos controlar o motor DC conectado ao transistor e por fim o Arduino.

A ligação feitas está demonstrada abaixo:

A bateria de 9V é apenas para indicar a tensão de alimentação. Verifique a tensão necessária do seu motor DC para não queimá-lo. O transistor utilizado neste tutorial é o BD139, mas pode utilizar outro contanto que o transistor seja NPN. Para ver o datasheet, clique aqui.

A programação para controlar o motor DC está mostrada abaixo:


int motorPin = 3;
int incPin = 4;
int decPin = 5;
int val=0;
int incButton = LOW;
int decButton = LOW;

void setup()
{
pinMode(incPin, INPUT);
pinMode(decPin, INPUT);
pinMode(motorPin, OUTPUT);
analogWrite(motorPin, 0);
Serial.begin(9600);
}

void loop()
{
incButton = digitalRead(incPin);
decButton = digitalRead(decPin);
if (incButton == HIGH)
{
val++;
}
if(decButton == HIGH)
{
val=val-1;
}
Serial.println(val);
delay(100);
analogWrite(motorPin, val);
}

Ao apertar o botão da porta digital 4, o motor irá girar mais rápido. E ao apertar o botão da porta digital 5, o motor irá girar mais devagar.

E é isso! Esperamos que tenha gostado! Se tiver dúvidas sobre o tutorial, poste aqui enste blog! Para sugestões de tutoriais, clique aqui! Para ver outros tutoriais e projetos desenvolvidos pela equipe LdG e por outros garagistas, clique aqui e aqui, respectivamente! Até a próxima!

Referências:

http://www.datasheetcatalog.net/pt/datasheets_pdf/B/D/1/3/BD139.shtml

http://labdegaragem.com/profiles/blogs/tutorial-o-que-e-como-utiliz...

http://arduino.cc/en/

Exibições: 59829

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Thiagoor em 24 janeiro 2013 às 23:58

Minha fonte tem 12V e 0,25A e estou tentando utilizar um BC548 para controlar uma ventoinha de 12V e 0,11A.

Quando ligo a ventoinha direto na fonte ela roda em sua velocidade máxima, como esperado, mas se eu coloco o transistor ela perder potencia e roda mais devagar, e o transistor esquenta muito.

Imaginei que esquentasse por conta dos 0,05A a mais, mas porque não roda na velocidade máxima?

Comentário de Edson E.S. (softelli) em 24 janeiro 2013 às 10:51
entretanto, por ser transistor bipolar, vc terá uma queda de tensão na saturação. Por exemplo, se o coletor receber 12v, no emissor encontrará no máximo 11,3v.
Comentário de Edson E.S. (softelli) em 24 janeiro 2013 às 10:46
Thiagoor. Correto: Bc548= Ice max é 0,2A.
Comentário de Thiagoor em 23 janeiro 2013 às 23:47

Para um motor de 12V e 0,11A, qual transistor eu preciso?

O BC548 está correto?

Obrigado!

Comentário de Gessé Haroldo Marietto Junior em 7 outubro 2012 às 19:30

Pessoal, estou tentando fazer com que o arduino de partida em um motor de 5kW via internet (android). Já tenho o arduino com a placa ethernet, mas essa parte de programação me complica. Poderiam me dar uma dica de como posso fazer essa programação? Peguei um tutorial sobre fazer o layout via appinventor no android, mas a duvida é na linguagem C.

Obrigado

 

Comentário de Edson E.S. (softelli) em 29 agosto 2012 às 16:09

Leonardo Barichello. Como temos duas aplicações dos resistores no esquema...

Nos pinos digitais do arduino, o valor comum para pull up e pull down é 10Kohms.

http://arduino.cc/en/Tutorial/DigitalPins

Já, da saída do arduino para o Tip 120, o site abaixo utiliza um resistor de 2.2Kohms.

http://bildr.org/2011/03/high-power-control-with-arduino-and-tip120/

Como utilizo optoacoplamento (comentário abaixo), não preciso do resistor.

Comentário de Leonardo Barichello em 29 agosto 2012 às 14:39

Alguém sabe dizer de quanto é a resistência usada?

Comentário de Edson E.S. (softelli) em 17 agosto 2012 às 17:28
Algumas considerações sobre o circuito proposto:
1 - Se, por acaso, o transistor "fundir" (queimar fechando curto-circuito entre os terminais), pode ser que os 9v passem pelo motor e cheguem à saída PWM do arduino. Para proteger sua saída, utilize optoacopladores (4n25 a 28).
http://www.micropik.com/PDF/4N25.pdf
2 - A partida (com ou sem carga) e o excesso de carga podem fazer com que haja uma corrente invertida, devolvida do enrolamento do motor para o transistor. É exatamente por isso que são colocados diodos em paralelo com os transistores. No meu caso, eu preferi acionar o motor utilizando um TIP 120, que já possui um diodo interno.
http://www.fairchildsemi.com/ds/TI/TIP120.pdf
[]'s
Comentário de Jonnys Moura em 8 agosto 2012 às 10:54

Andre Nascimento, seu acredito q o transistor funcione como uma chave, usando o sinal de baixa tensão de até 5V para liberar o sinal de maior tensão (9V) que alimenta o motor DC. Dessa forma vc não usa saída de tensão do Arduino para acionar o motor e sim para controlar a tensão da bateria q aciona o motor,

Comentário de Andre Nascimento em 2 agosto 2012 às 1:06

Olá,

Uma dúvida, qual a função do transistor nesse circuito? Ele permite que chegue a tensão de 9v ao motor protegendo o circuito, que trabalha a 5v?

Att,

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço