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...
Comentar
Olá,
muito bom seu trabalho, se eu precisar inverter a rotação do motor na programação, como faço? Algo como 5 segundos num sentido e 5 no inverso.
O Arduino mini tem portas suficientes para tudo isso?
Boa noite a todos os garagistas. Gostaria de saber se posso substituir o motor por um Cooler de 12V. Todo este esquema seria o mesmo? Aguardo a resposta de vocês.
Qual transistor vc utilizou??
Bom dia a todos .
Estou tentando criar um pequeno robo onde e necessario que o acionamento do motor de passo seja atraves de um botão , o codigo que estou usando esta abaixo, gostaria de saber se algem pode me ajudar ensinando como adicionar um botão para acionar o codigo abaixo .
#include <Stepper.h>
const int stepsPerRevolution = 64;
Stepper myStepper(stepsPerRevolution, 8,9,10,11);
void setup() {
myStepper.setSpeed(200);
}
void loop() {
// velocidade por setSpeed()
for (int i = 0; i < 32; i++)
{
myStepper.step(64);
}
delay(1000);
// velocidade por delay
/*for (int i = 0; i < 32; i++)
{
for (int j = 0; j < 64; j++)
{
myStepper.step(1);
delay(2);
}
}*/
for (int i = 0; i < 32; i++)
{
myStepper.step(-64);
}
delay(1000);
}
Perdoem a ignorância pessoal. Ali no código eu vejo que é feita escrita na porta serial, mas na imagem do protótipo não vejo onde ela é usada. Mais uma vez peço desculpas pela falta de conhecimento, ainda não trabalhei com Arduino. Abc.
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).
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!
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
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:
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
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)