GithubHelp home page GithubHelp logo

robonaticos / motorcomencoder Goto Github PK

View Code? Open in Web Editor NEW
10.0 2.0 2.0 237 KB

:arrows_counterclockwise: Faça a contagem dos pulsos do seu motor LEGO

Arduino 100.00%
encoder lego legoencoder encoder-quadrature lego-arduino arduino motor

motorcomencoder's Introduction

Girando seu motor LEGO com Encoder no Arduino


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.

Como funciona os Encoders de Quadratura

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

Ligando o motor LEGO no Arduino

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

O que são portas de interrupção e por que utilizá-las?

No Arduino, assim como em qualquer outro microcontrolador, pode-se utilizar interrupções para priorizar ou não tarefas afim de realiza-las no momento em que a interrupção for detectada.

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

Rodando a programação

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

motorcomencoder's People

Contributors

feosilva avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.