collapse

* Links de Robótica

* Posts Recentes

URGENTE - display de 7 segmentos com backpack por zordlyon
[Hoje às 11:18]


Preços e fabricantes de pcb por Sérgio_Sena
[Ontem às 10:20]


Palavras Cruzadas por Njay
[Ontem às 02:24]


Isaac Asimov - I, Robot por senso
[18 de Setembro de 2017, 03:41]


Apresentação por TigPT
[17 de Setembro de 2017, 07:31]


ic SL440 da Plessey? por senso
[16 de Setembro de 2017, 13:11]


Compra Colectiva RS-Amidata por brunus
[15 de Setembro de 2017, 22:31]


Ideias para construir um quadrúpede simples por zordlyon
[15 de Setembro de 2017, 10:18]


Preparar bancada de testes por jm_araujo
[14 de Setembro de 2017, 10:24]


Mitos: mudança da ilumação tradicional p/ iluminação a LEDs? por LVirtual
[14 de Setembro de 2017, 07:46]

Autor Tópico: [Tutorial] Arduino + MotorShield V3.0  (Lida 6067 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline AndréD.

  • Mini Robot
  • *
  • Mensagens: 180
    • AndreD Robotics
[Tutorial] Arduino + MotorShield V3.0
« em: 29 de Agosto de 2009, 14:12 »
Boas Pessoal...


Estive a testar o meu MotorShield e como tal decidi fazer um pequeno tutorial a explicar como podem controlar dois motores DC através do vosso arduino mais o motorshield.

A minha ideia será a seguinte, como sabem o motorshield permite controlar motores DC e motores de passo, como não tive tempo nem tenho o material necessário para testar estes três tipos de actuadores vou apenas colocar o controlo de motores DC, assim que tiver o material para os outros dois tipos de actuadores farei um tutorial e colocarei aqui neste mesmo tópico, para ficar-mos com um sitio que tenho tudo sobre o MotorShield V3.0.

Espero que gostem.

Como montar Motor Shield V3.0 - Arduino


Material Necessário (Hardware):
- Base Com Dois Motores DC
- Arduino
- MotorShield V3.0
- 4X Crocodilos
- Parafuso
- Chave Philips (Estrela)
- Rectângulo de Pele (ou outro material nao condutor) para proteger o arduino
- Cabo USB
- Computador


Material Necessário (Software):
- Arduino 0017 (Disponível em arduino.cc)


1º Passo

Arranjar uma base que tenha 2 motores DC (por sorte eu ja tinha uma ca em casa, do meu primeiro robot segue linhas)




2º Passo

Limpar a base e retirar toda a electrónica que nela estiver (se tiver).






3º Passo

Colocar o material nao condutor na base, colocar o arduino em cima e agarrar tudo isto com o parafuso á base.




4º Passo

Depois colocar o MotorShield em cima do arduino, neste processo temos de ter atenção onde ficam os pinos encaixados, sendo que o Vin do MotorShield terá que ficar em contacto com o Vin do Arduino e o pino 0 do MotorShield com o Pino 3 do Arduino.




5º Passo

Vamos agora iniciar a programação...

Temos de ter o esquema da placa presente para que possamos entender o seu funcionamento. o esquema esta disponivel aqui

Entao abrimos o documento com o esquema (Motor_control_v3.0_sch.pdf) e o Arduino 0017 para começarmos a programar.

Verificamos o seguinte:

Se DIRA = 0 o motor 1 anda para a frente
Se DIRA = 1 o motor 1 anda para tras
Se DIRB = 0 o motor 2 anda para a frente
Se DIRB = 1 o motor 2 anda para tras

Se DIRA = 0  e DIRB = 0 o motor 1 e o 2 andam em simultaneo para a frente
Se DIRA = 1  e DIRB = 1 o motor 1 e o 2 andam em simultaneo para tras

Se DIRA = 0 vai virar para a esquerda
Se DIRB = 0 vai virar para a direita

Se DIRA = 0 e DIRB = 1 vai rodar para a esquerda rapido (motor 1 anda para a frente e o motor dois anda para tras)

Se DIRA = 1 e DIRB = 0 vai rodar para a direita rapido (motor 1 anda para tras e o motor dois anda para a frente)


Depois desta fase podemos entao começar a programar.

O codigo que desenvolvi foi o seguinte:

Código: [Seleccione]
/*Codigo Desenvolvido Para Controlo de 2 Motores DC com o MotorSHieldV3.0
By: AndréD.*/


int PWMA=10; //pino pwm do motor 1
int PWMB=11; //pino pwm do motor 2
int DIRA=12; //pino de controlo do motor 1
int DIRB=13; //pino de controlo do motor 1

void setup()
{
analogWrite(PWMA,255); //definir PWM do motor 1 para velocidade máxima (0 a 255)
analogWrite(PWMB,255); //definir PWM do motor 2 para velocidade máxima (0 a 255)
}

void loop()
{
frente(); //chama a função frente
delay(5000); //os motores andam para a frente durante 5 segundos
  stop_(); // chama a funçao stop
  delay(1000); // permanece imovel durante 1 segundo
tras(); //chama a funçao tras
delay(5000); //os motores andam para a tras durante 5 segundos
  stop_(); // chama a funçao stop
  delay(1000); // permanece imovel durante 1 segundo
sp_esquerda(); //chama a funçao sp_esquerda
delay(5000); //o motor 1 anda para a frente e o motor 2 anda para tras permitindo assim uma viragem rapida para a esquerda
  stop_(); // chama a funçao stop
  delay(1000); // permanece imovel durante 1 segundo
sp_direita(); //chama a funçao sp_direita
delay(5000); //o motor 1 anda para a tras e o motor 2 anda para frente permitindo assim uma viragem rapida para a direita
  stop_(); // chama a funçao stop
  delay(1000); // permanece imovel durante 1 segundo
esquerda(); //chama a funçao esquerda
delay(5000); //o motor 1 roda para a frente permitindo assim uma viragem a esquerda
  stop_(); // chama a funçao stop
  delay(1000); // permanece imovel durante 1 segundo
direita(); //chama a funçao direita
delay(5000); //o motor 2 roda para a frente permitindo assim uma viragem a direita
  stop_(); // chama a funçao stop
  delay(1000); // permanece imovel durante 1 segundo
}

void frente()
{
//ver nota no inicio do programa
analogWrite(PWMA, 255);
analogWrite(PWMB, 255);
digitalWrite(DIRA,LOW);
digitalWrite(DIRB,LOW);
}

void tras()
{
//ver nota no inicio do programa
analogWrite(PWMA, 255);
analogWrite(PWMB, 255);
digitalWrite(DIRA,HIGH);
digitalWrite(DIRB,HIGH);
}

void sp_esquerda()
{
//ver nota no inicio do programa
analogWrite(PWMA, 255);
analogWrite(PWMB, 255);
digitalWrite(DIRA,LOW);
digitalWrite(DIRB,HIGH);
}

void sp_direita()
{
//ver nota no inicio do programa
analogWrite(PWMA, 255);
analogWrite(PWMB, 255);
digitalWrite(DIRA,HIGH);
digitalWrite(DIRB,LOW);
}

void esquerda()
{
//ver nota no inicio do programa
analogWrite(PWMA, 255);
analogWrite(PWMB, 255);
digitalWrite(DIRA,LOW);
}

void direita()
{
//ver nota no inicio do programa
analogWrite(PWMA, 255);
analogWrite(PWMB, 255);
digitalWrite(DIRB,LOW);
}

void stop_() {       // Esta funçao define o PWM a 0 para que a plataforma possa parrar.
analogWrite(PWMA, 0);
analogWrite(PWMB, 0);
}

Já testei e está a funcionar, se houver algum problema ou algo que acham que devo alterar é so sugerirem.


6º Passo

Depois de termos o MotorShield em cima do Arduino e a programação feita e pronta a ser testada vamos fazer as ligações aos motores com os crocodilos, da forma representada em baixo:

Neste passo e muito importante que as ligações nao fiquem em contacto umas com as outras, para isso dobrem um pouco os pinos nas saidas dos motores para que os crocodilos "estejam á vontade".










7º Passo

Vamos agora proceder ao Upload do codigo para o arduino.

 - Primeiro ligamos o USB ao Arduino



 - Depois ao PC



 - Depois é so carregar no botao de Upload



 - E por fim esperar que no canto inferior esquerdo apareça a mensagem "Done Uploading"



NOTA: Se neste passo acontecer algo e nao aparecer essa mensagem, recomendo a verificarem o codigo e/ou se o cabo está correctamente ligado ao PC e ao Arduino.


8º Passo

Testar a base a andar...

(Video Brevemente Disponivel) -> Tou sem Camera...

Espero que tenham Gostado e peço desculpa por algum erro que possa surgir...

Cumps
AndréD.




« Última modificação: 04 de Dezembro de 2009, 16:21 por TigPT »

Offline ricardo-reis

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.300
Re:Arduino + MotorShield V3.0
« Responder #1 em: 29 de Agosto de 2009, 14:34 »
 ;) boa, boa.. queres dizer-nos quais são as ideias k tens pra este projecto?

Offline AndréD.

  • Mini Robot
  • *
  • Mensagens: 180
    • AndreD Robotics
Re:Arduino + MotorShield V3.0
« Responder #2 em: 29 de Agosto de 2009, 14:38 »
;) boa, boa.. queres dizer-nos quais são as ideias k tens pra este projecto?

Boas...

Se me estas a perguntar isso por causa da base, nao tenho qualquer ideia já que esta é apenas uma base para testes...

Em relação á parte do projecto tenho um em mente mas nao é com esta base, e por enquanto nao vou adientar nada, já que ainda é uma coisa um pouco prematura.

Cumps
AndréD.

Offline amando96

  • Mini Robot
  • *
  • Mensagens: 1.627
  • MAC address? But I have windows...
    • Projects, News, Blog, Tutorials
Re:Arduino + MotorShield V3.0
« Responder #3 em: 29 de Agosto de 2009, 15:34 »
está um bom tutorial :)

talvez deva comprar um motor shield tambem :)

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.726
Re:Arduino + MotorShield V3.0
« Responder #4 em: 29 de Agosto de 2009, 17:32 »
Muito boa explicação, mesmo muito bem documentado.

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.505
    • GrcByte - Projectos
Re: [Tutorial] Arduino + MotorShield V3.0
« Responder #5 em: 04 de Dezembro de 2009, 15:52 »
é pa muito boa explicação! Não tenho arduino mas já ando a pensar comprar 1 há algum tempo! O meu medo é fazer os circuitos e programação C mas aqui no fórum estou a ver muito boas explicações por isso acho que me vou aventurar e comprar o material deste projecto :)

Tenho 2 motores DC para fazer andar e antes de ver este fórum andei a 'namorar' isto, mas a todos os emails que enviei a esta empresa a pedir mais info não responderam.. por isso acho que com o Arduino é muito mais fácil tb devido à quantidade de informações ajuda existente na web.

Abraço

Offline Fifas

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 2.060
  • El RoboSapiens
Re: [Tutorial] Arduino + MotorShield V3.0
« Responder #6 em: 04 de Dezembro de 2009, 16:10 »
Olha o almamater :D Bem-vindo ;)

Não tenhas medo de nao conseguires fazer algo com o arduino. O que nao falta é ajuda, principalmente aqui no forum :D

Cria um novo topico com as tuas duvidas, etc..só para nao deixar off-topic aqui. Já agora, dá mais informaçoes dos teus motores ;)

Quanto ao tópico, não sei porquê ainda nao o tinha visto :P Muito boa explicação André ;)

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.234
    • Tiago Rodrigues
Re: [Tutorial] Arduino + MotorShield V3.0
« Responder #7 em: 04 de Dezembro de 2009, 16:22 »
Parabéns pelo tutorial André.

Adicionei o link para a montagem do Motor shield que tinhas feito antes:
http://lusorobotica.com/index.php/topic,1390.0.html

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.505
    • GrcByte - Projectos
Re: [Tutorial] Arduino + MotorShield V3.0
« Responder #8 em: 08 de Novembro de 2010, 11:53 »
Uma pergunta de cromix  ;D

Se quiser ligar motores de por ex. 7V não o posso fazer usando esta Shield?

Tenho esta Motor Shield e também uma da DFROBOT que dizem que em ambos os canais pode forncer até 1A a motores de 7 - 12V.. neste caso como é feito? a voltagem fornecida é de acordo com a Bateria que alimenta o Arduino? se quiser ligar um motor de 7V e se tiver o arduino ligado a 12V os motores recebem 12V?


Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.505
    • GrcByte - Projectos
Re: [Tutorial] Arduino + MotorShield V3.0
« Responder #9 em: 09 de Novembro de 2010, 14:31 »
Ok.. acho que já percebi, se colocar 9v como bateria e se quiser enviar apenas 3v para os motores tenho de enviar um valor de PWM +/- de 30%. Acho que seja isto