Já tentou utilizar o encoder dos motores LEGO e não conseguiu?
Nessa programação é possível fazer a contagem dos pulsos do Encoder e girar até determinado número de pulsos.
OBS: É possível integrar esse código com um sistema de controle P.I.D. para que melhore a perfomance e a precisão do giro do motor. O controle em malha aberta é usado para os motores de passos. Já os motores DC necessitam de sistemas mais sofisticados de controle em malha fechada. Como citado em tópicos anteriores o elemento que faz essa realimentação é o encoder rotativo. Este elemento converte movimento rotativo em pulsos elétricos, com isso, ele é capaz de fornecer, quando ligado a um eixo de motor ou em uma roda, informações de distância e velocidade.
A principal especificação de um encoder rotativo é quanto a sua resolução, normalmente expressa em pulsos por revolução (ppr). Por exemplo, um encoder de 512ppr gera 512 pulsos quando o elemento ligado a ele (motor ou roda) executa uma volta.
O encoder rotativo mais utilizado em robótica é o encoder de quadratura, pois além contar os pulsos em um determinado elemento rotativo (roda ou motor) ele também identifica o sentido do movimento. Estes encoders podem ser ópticos ou magnéticos e possuem dois sinais de saída (canais A e B) que consiste de duas ondas quadradas defasadas 90° uma da outra, a frequência destas ondas indica a velocidade do elemento que está sendo medido e o sinal da defasagem indica o sentido de giro.
Fonte: https://kleberufu.wixsite.com/micromousebrasil/single-post/2015/05/01/Encoders
Para ligar os motores LEGO no Arduino você precisará de um Driver de Motor (Ponte-H) para definir o sentido do motor e de uma bateria.
Os motores LEGO do NXT e EV3 possuem 6 fios em seu conector que tem as seguintes funções:
- Preto: Positivo/Negativo do Motor (Ligar na Ponte-H)
- Branco: Positivo/Negativo do Motor (Ligar na Ponte-H)
- Vermelho: GND do Encoder (Conectar em todo GND do circuito)
- Verde: Alimentação do Encoder (Alimentação 5V do Encoder)
- Amarelo: Saída 1 do Encoder (Ligar em uma porta de interrupção no Arduino)
- Azul: Saída 2 do Encoder (Ligar em uma porta de interrupção no Arduino)
Abaixo segue foto de todo circuito para realizar os testes com o Encoder:
https://www.tinkercad.com/things/9quqieeksfp
Informações técnicas dos motores de LEGO você encontra em:
http://www.philohome.com/motors/motorcomp.htm
As portas de interrupção ou também conhecidas como interrupts param a execução do código para realizar uma tarefa que pode ter sido detectada por uma ação externa (um botão pressionado, um sensor lido...) ou por detecções em software (temporizadores ou sinais na própria programação). Ao final da tarefa detectada pela interrupção, o código continua normalmente.
No caso de leitura de pulsos nos encoders devemos usar portas de interrupção para que a leitura seja feita na mudança de estado do encoder e não atrasando todo o processamento do microcontrolador. Em muitos casos, o microcontrolador é responsável por mais de uma tarefa além da leitura dos encoders e por conta disso é indispensável a utilização do uso de portas de interrupção. É altamente recomendável utilizar um único microcontrolador somente para a leitura e controle dos motores/encoders, para não sobrecarregar as suas tarefas e conseguir rodar tranquilamente as tasks do seu robô/projeto.
📳: As portas de interrupção no Arduino UNO são as portas 2 e 3 e no Arduino Mega as portas 2, 3, 18, 19, 20, 21
Maiores informações de portas de interrupção e quais são elas, consulte em:
https://www.arduino.cc/en/Reference/AttachInterrupt
Depois de fazer toda ligação do circuito, instale primeiro a biblioteca "Encoder.h" no seu Arduino.
📘 Link da Biblioteca:
https://github.com/PaulStoffregen/Encoder
📔 Como instalar uma biblioteca no Arduino:
https://www.robocore.net/tutoriais/adicionando-bibliotecas-na-ide-arduino.html
Após feita a instalação da biblioteca, abra a programação 'MotorComEncoder.ino' e teste o código 😄
Realização - Equipe Robonáticos:
- Felipe Oliveira Silva
- Antonio Pereira de Lima Neto
- Giovanna Ferreira Diodato
- Felipe de Souza Tiozo
Apoio - Equipe maxBots
- Robson Amorim