segunda-feira, 27 de junho de 2011

Motores DC

     Primeiramente, para ligar um motor DC no arduino, precisamos montar um pequeno circuito. Porque o arduino não tem corrente suficiente para ligar um motor, a corrente que o arduino tem é de 40mA e dependendo do motor, precisa de mais que isso, uns 50mA em diante.
     Existem n maneiras para montar um circuito para pode ligar o motor, vou mostrar só uma delas como mostra a imagem a seguir:
     O resistor que usei é de 1kohm, diodo 1N4007, transistor TIP120 e a bateria é que serve para ligar o motor. Lembrando também que existe varias maneiras para ligar um motor, a programação praticamente é igual a do Blink também pode ser feita pelo for mas precisa usar uma porta pwm, só que em vez do LED vai ligar um motor DC.

Programação:
int motor= 9;  //Variável 9 que declarei como motor
void setup()
{
  pinMode(motor, OUTPUT);  //Porta Digital do arduino, pino 9 (pwm)
}
void loop()
{
  digitalWrite(motor, HIGH); //Motor Liga por
  delay(1000);                   // 1segundo = 1000 milissegundos
  digitalWrite(motor, LOW); //Motor Desliga por
  delay(1000);                  //1segundo = 1000 milissegundos
}
     Como vocês viram, mudou quase nada da programação Blink, mas como a porta 9, é uma porta pwm, logo vocês podem mudar a corrente, em vez de HIGH pode-se colocar 255 (corrente máxima ou outro valor para andar) e em vez de LOW pode colocar como 0 (corrente nula ou um valor muito baixo para ele andar bem de vagar), mas lembrando de que precisa mudar de digitalWrite para analogWrite. Fazendo isso, podemos controlar a velocidade dos motores, leds, qualquer componente.

Vídeo:

Até mais...

12 comentários:

Leonardo disse...

Fala eduardo blz?!

se ao inves de de High e/ou Low , poderia ultilizar "random",tipo assim.

analogWrite(motor,random(255));
delay(1000);

o motivo disso é q preciso de motores girando de forma aleatória.

Eduardo Almeida disse...

Mas esse random(), dentro dele foi declarado que a variável máximo a ser declarado é de 255. Caso você use mesmo o motor, seria bom usar um valor minimo que consiga acionar o motor e o valor máximo 255.

Na teoria essa programação funcioná sim mas prefiro verificar antes a programação pare ver se funciona 100% mas como estou um pouco atarefado, logo responderei com a programação.

Mas olhando assim, creio que não há porque de não funcionar.

Unknown disse...

Ola Eduardo,

Estou começando no mundo arduino, e tenho muitas duvidas como controlar motor nele, estou querendo controlar 2 motores nos 2 sentidos (frete, tras) você tem alguma dica.

Obrigado

Eduardo Almeida disse...

Olá... Você pode usar a ponte H usando transistores ou CI
Explicação: http://arduino-projetos.blogspot.com.br/2011/07/ponte-h.html
Com Transistor: http://arduino-projetos.blogspot.com.br/2011/09/ponte-h.html
Com CI: http://arduino-projetos.blogspot.com.br/2011/06/motorshield.html

Existe outras maneiras e outros CIs para poder fazer o controle dos motores em ambos os sentidos, da até para fazer com relé mas acho desnecessário.

Espero que tenha ajudado... até mais

Elvis Kinucris disse...

Poderia ser mais especifico quanto a montagem?

A programação parece ser super simples e super igual o blink, mas não entendi muito bem o desenho, o esquemático rs

Comprei um Arduino a pouco tempo, tenho vários motores desses e meu kit veio com muitos acessórios, ainda não pude ver o tutorial que veio junto com meu Kit, mas estou fuçando sempre no Google e muitas vezes encontro desenhos esquemáticos como o seu onde é até fácil compreensão, mas gostaria de entender oq ue está acontecendo rs

O que é "Porta pwm" por que deve se ligar na porta 9 e não na 13 (Que foi onde eu liguei meu LED rs)

Essas explicações "básicas" mas que vão fazer toda a diferença pra mim que não tenho muito conhecimento sobre os componentes em geral :/

Eduardo Almeida Cariani disse...

Elvis... primeiramente no arduino nem todos os pinos tem a porta PWM eu escolhi uma porta aleatória PWM que no meu caso foi a 9 mas poderia ser qualquer outra porta PWM, a 13 seria uma porta digital comum.
PWM é uma sigla ingles que traduzida significa Modulação Largura de Pulso,você controla a largura do pulso nume determinada frequência em que o arduino funciona e vai fazendo o controle da intensidade da luz ou da velocidade do motor. Pino digital funciona como nivel alto e nível baixo, 5v e 0v respectivamente no Arduíno você fazendo o controle por PWM você vai controlar a largura em que o pulso vai ficar em nível alto e baixo, isso tudo numa velocidade muito grande por causa da frequência, do clock do Arduíno trabalha. Com essa quantidade de largura em que vai pro nível alto e baixo que faz o controle da intensidade da carga (se irá acender um LED fraco ou forte ou controlar a velocidade do motor)

A programação é que nem o Blink realmente, mas usando essa programação coloquei como nível alto, rodar com a velocidade máxima e nível baixo que seria desligado. Caso fosse usar realmente a porta PWM a programação iria mudar um pouco em vez de digitalWrite(pin, HIGH ou LOW), serial analogWhite(pin, 0-255 onde faz o controle da carga).

O circuito é bem simples realmente, o transistor é usado como chave, o Arduino irá dar um sinal para a base do transistor permitindo a passagem da corrente. Em grosso modo para facilitar a explicação seria assim: a corrente sai do polo positivo da bateria passa pelo motor e fica retido no coletor do transistor, com o sinal que você der na base do componente a corrente vai passar do coletor para o emissor e voltar para o polo negativo da bateria.

Tentei explicar o máximo que pude, qualquer coisa manda outro comentário ou um e-mail também pesquise muito no pai Google que tem muita coisa interessando com o Arduino

inteldx4 disse...

boa noite...

to começando agora com arduino e estou com problemas para fazer um pequena programação.. se vcs podem me ajudar é o seguinte...

tenho um motor dc... e quero controlar esse motor com 3 botões
EXEMPLO:

BOTÃO A= ele gira para frente
BOTÃO B= gira para trais
BOTÃO C= controla a velocidade de rotação

então na pratica seria assim...

quando eu aperta o botão A (e continuando apertado)ele não iria partir sem que eu apertasse o botão C ( só da um toque no botão)
ai a cada toque no botão C ele tivesse uma rotação diferente... como se fosse a macha de um carro...

quando eu soltasse o botão A ele pare de girar... mas quando eu apertar novamente ele continue a mesma "macha" que estava antes.
pretendo colocar 3 velocidades diferentes... quando chegasse na 3 e eu aperta o botão de novo ele volta pro 1...

bom, se alguém tiver o código pronto eu agradeço...
mas se alguém me dar dicas de como programar, também será bem vindo...

meu e-mail deividcosta_@hotmail.com

muito obrigado

Idna Galvão disse...

olá, queria saber como posso ligar o motor por 1s, e depois desliga lo completamente.

mii wii club disse...

não entendi o uso do diodo pode me explicar?

Alexandre Ribeiro disse...

Olá Eduardo. Teria algum problema se eu usar um mosfet nesse caso e quais os diodos alternativos eu poderia usar ao invés do 1N4007?

Rodrigo Molgado disse...

Olá Eduardo, amigo eu procuro um projeto para controlar um motor de vidro elétrico de carro subir e descer, porém existem algumas considerações, eu vou usar 2 chaves fim de curso, segundo eu pretendo usar uma chave on/off para fazer a respectiva função de subir e descer, você poderia me ajudar :)

Rodrigo Molgado disse...

Olá Eduardo, amigo eu procuro um projeto para controlar um motor de vidro elétrico de carro subir e descer, porém existem algumas considerações, eu vou usar 2 chaves fim de curso, segundo eu pretendo usar uma chave on/off para fazer a respectiva função de subir e descer, você poderia me ajudar :)

Postar um comentário

 
Blogger Templates