robotica

bora fazer o robô se movimentar?

Se você está seguindo a montagem do nosso robô deve estar se perguntando: tá mas quando a gente vai ver ele se movimentando?  Bom, chegou a hora de programarmos o nosso amiguinho e nessa jornada vou utilizar o Ardublock, mBlock e a  IDE padrão do Arduino  como ambientes de desenvolvimento. Vamos por parte, aqui você pode ver um tutorial do Ardublock com a instalação e explicação da maioria dos blocos.

Ambiente de programação escolhido, vamos falar um pouco sobre alguns termos que apareceram na montagem e que são importantes para entendermos a programação do robô. O primeiro é a Ponte H, o nosso robô utiliza 4 motores de corrente contínua e a corrente requerida por esses motores é maior que as correntes presentes nas saídas do Arduíno, sendo mais conveniente e seguro para não queimar o Arduíno, não ligar diretamente os motores a ele.

A solução para esse problema é um circuito bastante conhecido na eletrônica: a ponte H, que é capaz de controlar o sentido de giro do motor e a velocidade, capacidades excelente já que estamos falando de um robô móvel.

Poderíamos implementar esse circuito mas existe essa ponte em um circuito integrado e que pode ser utilizado com o Arduíno: o módulo Ponte H. Utilizei o módulo L298, aqui você pode ver o Datasheet deste módulo.

ponteh

Na Ponte H os pinos:

  • IN1 e IN2 acionam o Motor A
  • IN3 e IN4 acionam o Motor B

E para controlarmos os sentidos de giro de cada um dos motores (A ou B)aplicamos uma tensão a esses pinos combinando-os de 4 formas possíveis:

  • 0V em ambos os pinos: motor desligado
  • 5V em ambos os pinos: motor freado
  • 0V no IN1 e 5v no IN2: motor girando no sentido A
  • 5V no IN1 e 0V no IN2:motor girando no sentido B

Se você quer mais detalhes da especificação da ponte H aqui tem um post muito interessante, vale a pena a leitura. Como o enfoque desta série de posts é a montagem, programação e aplicação de um robô com Arduíno, vamos aplicar o que a gente viu até agora sobre motores e ponte H ao nosso robô e para isso vamos utilizar o ArduBlock.

No caso do nosso robô existem 4 motores, como podemos controlar o sentido de movimentação do nosso robô utilizando uma ponte H que tem somente o Motor A e o Motor B como canais para esse controle?

A convenção que eu utilizei no robô foi: Motor A – rodas da esquerda e Motor B – rodas da direita, ou seja, o sinal que eu mandar para os dois motores que estão ligados nas rodas da direita será o mesmo, o mesmo acontece para as rodas da esquerda. O controle vai ser feito como se tivéssemos dois motores: Direita e Esquerda.

Assim para girar o motor A no sentido A (que no caso dessa montagem é anti-horário) temos que aplicar 0V no IN1 e 5V no IN2, IN1 está ligado ao pino 3 e IN2 ao pino 5 do Arduino, isso faz com que o robô gire ao redor do seu próprio eixo. Como queremos fazer com que ele ande para frente teremos que aplicar a mesma ideia no motor B, cujos pinos na ponte H são IN3 e IN4 e no Arduino 9 e 6. Ah e eu liguei nos pinos PWM para poder controlar a velocidade dos motores, mas isso a gente vai ver em outro post!!!

Os pinos digitais funcionam da seguinte forma:

  • eles podem ser usados para escrever um valor neles, o que leva a mudança de estado do sensor, motor ou o quer que seja que esteja ligado neles,
  • ou podem trabalhar para ler valores vindos dos sensores, motores ou o quer que seja que esteja ligado a eles,
  • os valores que podem ser lidos ou escritos nestes pinos são:HIGH e LOW
    • HIGH: indica 5V
    • LOW: indica 0V

Quando se está trabalhando com pinos digitais está se trabalhando com LÓGICA DIGITAL, que possui somente DOIS valores possíveis: VERDADEIRO OU FALSO, TRUE  OU FALSE, 1 OU 0, ALTO OU BAIXO, LUZ ACESA OU LUZ APAGADA. Em todos esses casos temos somente dois valores sendo usados em diversos cenários e situações.

Para exemplificar vamos fazer um código usando o ArduBlock para movimentar o nosso robô para frente.

andarFrenteArduBlock

Com esse código eu utilizei dois tipos de bloco do ArduBlock:

sempre

esse bloco faz com que o que estiver “dentro” dele seja executa para sempre, ou melhor dizendo, enquanto o Arduino estiver alimentado com energia.

setapinodigitaleste bloco permite colocar o valor de um determinado pino para HIGH ou LOW, você pode escolher qual pino deseja setar.

Como para movimentar cada motor preciso setar dois pinos,realizei a mesma operação 4 vezes mudando o valor do pino e o valor que seria escrito. Lembre-se que no nosso robô trabalhamos com o conjunto de rodas da direita e conjunto de rodas da esquerda.

E para andar para trás? Para isso é preciso somente mudar o sentido de giro dos motores.

andarTrasArduBlock

Muita coisa né? Mas confesso que estava louca para chegar nessa parte  de programação do robô. Pra ajudar bora fazer um resumo dos principais pontos deste post:

  • ponte H
  • motores DC
  • pinos digitais
  • logica digital: valores utilizados na lógica digital
  • Ardublock
    • bloco que faz o código rodar para sempre
    • como mudar o valor de um pino digital

Bom por hoje era isso!!! Próximos posts tem mais programação e robótica com Arduino, até a próxima jornada. Dúvidas e sugestões, só deixar comentário 😉 !!!!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s