Roda de Medição Precisa DIY com Arduino Nano e Encoder Rotativo
Componentes e Materiais
- Arduino Nano R3 × 1
- LCD Padrão Adafruit 16×2 (Branco no Azul) × 1
- Encoder Rotativo com Botão × 1
- Potenciômetro Monovoltas 10 kΩ × 1
- Resistor 221 Ω × 1
Ferramentas Necessárias
- Ferro de solda
Aplicativos e Serviços Online
- Arduino IDE
Sobre este Projeto
Uma roda de medição é uma ferramenta de medição para construção. A roda gira e, usando cinemática rotacional básica (s = rθ), determina-se a distância entre dois pontos.
O vídeo mostra um modelo funcional reduzido feito com:
- Arduino Nano
- Encoder rotativo
- Display LCD 16×2
- Potenciômetro 10k
- Resistor 220 Ω
Princípio de Funcionamento
O encoder mede o número de rotações, mas devemos converter rotação em distância percorrida. A distância depende do diâmetro da roda. O encoder avança N passos por rotação completa (360°). Passos por rotação variam de 8 a 48 conforme o encoder. Supondo N passos/rotação e R raio da roda:
Distância por rotação = 2 × π × R
Distância por passo = 2 × π × R / N
Escrevi um código simples para este propósito; a distância percorrida é exibida no LCD em centímetros. No código, alteramos os valores de "N" e "R" conforme os componentes usados.
No meu caso, a roda foi impressa em 3D e todo o conjunto montado em uma haste de alumínio, como visto no vídeo.
Código
/* Measuring Wheel
* by Mirko Pavleski
* https://www.youtube.com/channel/UCHLzc76TZel_vCTy0Znvqyw
*/
#include <LiquidCrystal.h>
LiquidCrystal lcd(5, 6, 7, 8, 9, 10);
int pin1 = 2;
int pin2 = 3;
int Pos = 0;
int State;
int LastState;
const float pi = 3.14;
const float R = 3.25; // raio da roda em cm
const int N = 40; // passos por rotação do encoder
float distance = 0;
void setup() {
pinMode(pin1, INPUT_PULLUP);
pinMode(pin2, INPUT_PULLUP);
lcd.begin(16, 2);
lcd.print("MEASURING WHEEL");
LastState = digitalRead(pin1);
}
void loop() {
State = digitalRead(pin1);
if (State != LastState) {
if (digitalRead(pin2) != State) {
Pos++; // sentido horário
} else {
Pos--; // anti-horário
}
}
distance = ((2 * pi * R) / N) * Pos;
lcd.setCursor(0, 1);
lcd.print(distance);
lcd.setCursor(5, 1);
lcd.print("cm ");
LastState = State;
}
Esquemático
Processo de manufatura
- Construa um Relógio Retrô Numitron com Arduino: Simples, Confiável e Eficiente
- Construa um Jogo em Tempo Real com Giroscópio: Arduino Nano + Sensor MPU-6050
- Construa um Sensor de Obstáculos Simples com Arduino – Tutorial Fácil com LED IR e Fotodiodo
- Construa um Voltímetro DIY com Arduino e Display Nokia 5110 – Guia Passo a Passo
- MobBob: Construa Seu Próprio Robô Arduino, Controlado via Smartphone Android
- Crie um Medidor IoT Web com Arduino, Yaler e IFTTT
- Medidor de Frequência DIY – Até 6,5 MHz com Arduino Nano
- Monitore a Qualidade do Ar com Precisão usando o Sensor Sharp GP2Y1010AU0F
- Contador Geiger Portátil com Arduino Nano: Construa o Seu
- Construa um Relógio Despertador Confiável com RTC DS1302 e Arduino UNO