Membuat Roda Pengukur DIY yang Akurat dengan Arduino Nano & Enkoder Rotatif
Komponen dan Perlengkapan
Arduino Nano R3
×
1
LCD Standar Adafruit - 16x2 Putih pada Biru
×
1
Enkoder Rotatif dengan Tombol Tekan
×
1
Potensiometer Putaran Tunggal- 10k ohm
×
1
Resistor 221 ohm
×
1
Alat dan Mesin yang Diperlukan
Paku Solder (umum)
Aplikasi dan Layanan Online
Arduino IDE
Tentang Proyek Ini
Roda pengukur adalah alat ukur konstruksi. Roda berputar dan, menggunakan kinematika rotasi dasar (s=rθ), Anda dapat menentukan jarak antara dua titik.
Video di bawah ini menunjukkan model fungsional yang dikurangi dari perangkat tersebut yang dibuat dengan beberapa komponen:
- Arduino Nano
- Enkoder rotatif
- Layar LCD 16x2
- Pot. 10k
- Resistor 220 ohm
Prinsip kerjanya adalah sebagai berikut:
Enkoder rotatif mengukur jumlah putaran tetapi kita harus mengonversi putaran menjadi jarak yang ditempuh. Jarak yang ditempuh bergantung pada diameter roda. Enkoder rotatif bergerak N langkah dalam satu putaran lengkap (360 derajat). Langkah per putaran bergantung pada enkoder rotatif yang dapat bervariasi dari 8 hingga 48. Anggap N adalah langkah per putaran dan R adalah jari-jari roda.
Jarak yang ditempuh dalam satu Putaran = 2xπxR
Jarak yang ditempuh dalam satu Langkah = 2xπxR/N
Saya menulis kode yang sangat sederhana untuk tujuan ini dan jarak yang ditempuh ditampilkan pada layar LCD dalam sentimeter. Bergantung pada komponen yang digunakan dalam kode kita mengubah nilai “N” dan “R”.
Dalam kasus saya roda dibuat dengan printer 3D dan seluruh rangkaian dipasang pada batang aluminium, seperti yang terlihat dalam video.
Kode
Kode
KodeC/C++
/* Measurning Whell * * 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; const int N = 40; float distance = 0; void setup() { pinMode (pin1 ,INPUT_PULLUP); pinMode (pin2 ,INPUT_PULLUP); lcd.begin(16, 2); lcd.print("MEASURNING WHEEL"); LastState = digitalRead(pin1); } void loop() { State = digitalRead(pin1); if (State != LastState){ if (digitalRead(pin2) != State) { Pos ++; } else { Pos --; } } distance = ((2*pi*R)/N) * Pos ; lcd.setCursor(0, 1); lcd.print( distance); lcd.setCursor(5, 1); lcd.print("cm "); LastState = State; }