Tutorial: utilizando Arduino e transistor para controlar motor DC

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.labdegaragem.org/loja/index.php/29-arduino.html

http://www.labdegaragem.org/loja/index.php/32-kits/starter-kit-com-...

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: 7115

Tags: arduino, controlando, dc, motor, transistor, tutorial

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 Marcelo Nogy de Oliveira em 30 janeiro 2013 às 11:01

Pessoal, eu preciso controlar um motor DC de 24v 5A porém necessito que a velocidade seja controlada através de um potenciômetro, pois preciso de diversas faixas de velocidade nesse motor.

Minha dúvida é se posso usar este circuito no motor de 24v 5A DC (claro que alimentando o motor com 24v) e quais seriam as alterações necessárias no cirucito e no código para que e possa variar a velocidade com um potenciômetro ( de 0 a 100% da velocidade do motor).

Comentário de Thiagoor em 26 janeiro 2013 às 11:28

Descobri meu erro, eu estava ligando da fonte de 12V para o transistor até a ventoinha, e eu deveria ligar os 12V direto na ventoinha para depois ligar no transistor.

Valeu!

Comentário de Thiagoor em 25 janeiro 2013 às 15:55
Putz, vc falou um pouco grego comigo, pois sou iniciante. Hehe
Quis fazer um projetinho de controle de ventoinha para aprender a mexer com transistores, e por conta disso encontrei um tutorial que o cara recomendava esse transistor por agüentar até 30V. E como não deu certo pensei que eu poderia estar fazendo alguma coisa errada ou o transistor poderia não ser o indicado.
Vc poderia me indicar um transistor para minha situação?
Meu cooler requer 12V e 110mA, e possuo duas fontes, uma de 250mA e outra de 1000mA, ambas de 12V.
Foi me indicado também um TIP122, será que esse daria certo?
Obrigado pela ajuda!
Abraço.
Comentário de Edson E.S. (softelli) em 25 janeiro 2013 às 0:49

Tente fazer uma curva de subida no PWM, durante a partida, isto é, no microcontrolador, faça uma rampa para retardar a partida em 10 segundos.

Depois dá uma pesquisada em outro transistor de uso geral

http://www.datasheetcatalog.net/pt/datasheets_pdf/2/N/3/9/2N3904.shtml

Comentário de Edson E.S. (softelli) em 25 janeiro 2013 às 0:43

Thiagoor,

A fonte pode ter muitos amperes a mais do que o dispositivo nela utilizado (assim como uma caixa d`água tem mais do que uma torneira).

Eu disse abaixo que o BC548 suportava 200mA, mas é de pico (na partida, talvez...) não é de corrente constante. Ele suporta 100mA de corrente constante. http://www.datasheetcatalog.org/datasheets/150/128424_DS.pdf

Além disso, há uma diferença de potencial (ddp) no transistor bipolar quando saturado (ele não funciona exatamente como uma chave, pois não fornece toda a tensão da fonte para a carga).

Parece-me que o seu BC548 está trabalhando no limite (P=U*I), se o consumo da ventoinha é o mesmo e a tensão é baixada durante a saturação do transistor, então a corrente tende a subir além do limite do transistor.

Há divergências quanto ä corrente constante suportado no coletor desse transistor:

http://www.b-kainka.de/Daten/Transistor/BC548.pdf

http://www.fairchildsemi.com/ds/BC/BC547.pdf

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

 

Publicidade

Convide um amigo para o Lab!

 Loja Lab de Garagem

Novo!

Garagino Rev1

Por: R$ 29,00

Ou em até 6x de

R$ 5,18 

Novo!

Estação de Solda

Temperatura Ajustável - 50W

Por: R$ 150,00

Ou em até 18x de

R$ 10,00

 

Exclusividade do LdG!

Android 4.0 Mini PC

Por: R$ 195,00

Ou em até 18x de

R$ 13,00

Osciloscópio Digital

(ADS1102C) - 100MHz - 2 Canais

Por: R$ 1920,00

Ou em até 18x de

R$ 127,96

© 2013   Criado por Marcelo Rodrigues.

Badges  |  Relatar um incidente  |  Termos de serviço