- Bahan yang Dibutuhkan
- Menghitung Kecepatan dan Menampilkannya di Speedometer Analog
- Diagram Sirkuit dan Koneksi
- Penjelasan Pemrograman
Mengukur kecepatan / rpm Kendaraan atau motor selalu menjadi proyek yang menarik untuk dicoba. Dalam proyek ini, kita akan membuat Speedometer Analog menggunakan Arduino. Kami akan menggunakan modul IR Sensor untuk mengukur kecepatan. Ada cara / sensor lain untuk ini, seperti hall sensor untuk mengukur kecepatan, tetapi menggunakan sensor IR itu mudah karena modul sensor IR adalah perangkat yang sangat umum dan kita bisa mendapatkannya dengan mudah dari pasaran dan juga bisa digunakan pada semua jenis Kendaraan bermotor.
Dalam proyek ini, kami akan menunjukkan kecepatan dalam bentuk analog dan digital. Dengan melakukan proyek ini, kami juga akan meningkatkan keterampilan kami dalam mempelajari motor Arduino dan Stepper karena proyek ini melibatkan penggunaan Interrupts dan Timer. Pada akhir proyek ini Anda akan dapat menghitung kecepatan dan jarak yang ditempuh oleh objek yang berputar dan menampilkannya pada layar LCD 16x2 dalam format digital dan juga pada pengukur analog. Jadi mari kita mulai dengan Speedometer dan Sirkuit Odometer ini dengan Arduino
Bahan yang Dibutuhkan
- Arduino
- Motor stepper bipolar (4 kabel)
- Pengemudi motor stepper (Modul L298n)
- Modul sensor IR
- Layar LCD 16 * 2
- Resistor 2.2k
- Menghubungkan kabel
- Papan tempat memotong roti.
- Sumber Daya listrik
- Hasil cetak gambar speedometer
Menghitung Kecepatan dan Menampilkannya di Speedometer Analog
Sensor IR adalah perangkat yang dapat mendeteksi keberadaan suatu objek di depannya. Kami telah menggunakan dua bilah rotor (kipas) dan menempatkan sensor IR di dekatnya sedemikian rupa sehingga setiap kali bilah berputar, sensor IR mendeteksinya. Kami kemudian menggunakan bantuan pengatur waktu dan Interupsi di Arduino untuk menghitung waktu yang dibutuhkan untuk satu putaran penuh motor.
Di sini, di proyek ini, kami telah menggunakan interupsi prioritas tertinggi untuk mendeteksi rpm dan kami telah mengonfigurasinya dalam mode naik. Sehingga setiap kali keluaran sensor LOW ke High, fungsi RPMCount () akan dijalankan. Dan karena kita telah menggunakan dua bilah rotor, artinya fungsinya akan dipanggil 4 kali dalam satu putaran.
Setelah waktu yang dibutuhkan diketahui, kita dapat menghitung RPM dengan menggunakan rumus di bawah ini, Di mana 1000 / waktu yang dibutuhkan akan memberi kita RPS (revolusi per detik) dan selanjutnya mengalikannya dengan 60 akan memberi Anda RPM (revolusi per menit)
rpm = (60/2) * (1000 / (milis () - waktu)) * REV / bladesInFan;
Setelah mendapatkan RPM, kecepatan dapat dihitung dengan rumus yang diberikan:
Kecepatan = rpm * (radius 2 * Pi *) / 1000
Kita tahu bahwa Pi = 3,14 dan radius 4,7 inci
Tetapi pertama-tama kita perlu mengubah radius menjadi meter dari inci:
radius = ((radius * 2.54) /100.0) meter Kecepatan = rpm * 60.0 * (2.0 * 3.14 * radius) / 1000.0) dalam kilometer per jam
Di sini kita telah mengalikan rpm dengan 60 untuk mengubah rpm menjadi rph (revolusi per jam) dan dibagi dengan 1000 untuk mengubah meter / jam ke Kilometer / jam.
Setelah kecepatan dalam kmh kita dapat menunjukkan nilai-nilai ini secara langsung melalui LCD dalam bentuk digital tetapi untuk menunjukkan kecepatan dalam bentuk analog kita perlu melakukan satu perhitungan lagi untuk mengetahui tidak. Langkah, motor stepper harus bergerak untuk menunjukkan kecepatan pada meteran analog.
Di sini kami telah menggunakan motor stepper bipolar 4 kawat untuk pengukur analog, yang memiliki 1,8 derajat berarti 200 langkah per revolusi.
Sekarang kita harus menunjukkan 280 Kmh pada speedometer. Jadi untuk menunjukkan 280 Kmh motor stepper perlu bergerak 280 derajat
Jadi kami memiliki maxSpeed = 280
Dan maxSteps akan
maxSteps = 280 / 1.8 = 155 langkah
Sekarang kami memiliki fungsi dalam kode Arduino kami yaitu fungsi peta yang digunakan di sini untuk memetakan kecepatan menjadi beberapa langkah.
Langkah = peta (speed, 0, maxSpeed , 0, maxSteps);
Jadi sekarang kita punya
langkah = peta (kecepatan, 0,280,0,155);
Setelah menghitung langkah-langkah tersebut kita dapat langsung menerapkan langkah-langkah tersebut pada fungsi motor stepper untuk menggerakkan motor stepper. Kita juga perlu memperhatikan langkah atau sudut saat ini dari motor stepper dengan menggunakan perhitungan yang diberikan
currSteps = Langkah langkah = currSteps-preSteps preSteps = currSteps
di sini currSteps adalah langkah-langkah saat ini yang berasal dari perhitungan terakhir dan preSteps adalah langkah-langkah terakhir yang dilakukan.
Diagram Sirkuit dan Koneksi
Diagram rangkaian untuk Speedometer Analog ini sederhana, disini kami telah menggunakan LCD 16x2 untuk menunjukkan kecepatan dalam bentuk digital dan motor stepper untuk memutar jarum speedometer analog.
LCD 16x2 terhubung pada pin analog Arduino berikut.
RS - A5
RW - GND
EN - A4
D4 - A3
D5 - A2
D6 - A1
D7 - A0
Sebuah resistor 2.2k digunakan untuk mengatur kecerahan LCD. Modul sensor IR, yang digunakan untuk mendeteksi bilah kipas untuk menghitung rpm, dihubungkan ke interupsi 0 berarti pin D2 Arduino.
Disini kita telah menggunakan driver motor stepper yaitu modul L293N. Pin IN1, IN2, IN3 dan IN4 dari driver motor stepper terhubung langsung ke D8, D9, D10, dan D11 dari Arduino. Sisa koneksi diberikan dalam Diagram Sirkuit.
Penjelasan Pemrograman
Kode lengkap untuk Arduino Speedomete r diberikan di bagian akhir, di sini kami menjelaskan beberapa bagian penting darinya.
Di bagian pemrograman, kami telah menyertakan semua pustaka yang diperlukan seperti pustaka motor stepper, pustaka LCD LiquidCrystal, dan pin yang dideklarasikan untuk mereka.
#include
Setelah ini, kami mengambil beberapa variabel dan makro untuk melakukan perhitungan. Perhitungan sudah dijelaskan di bagian sebelumnya.
REV byte volatil; rpm int panjang unsigned, RPM; st panjang unsigned = 0; waktu lama tanpa tanda tangan; int ledPin = 13; int led = 0, RPMlen, prevRPM; int flag = 0; int flag1 = 1; # Define bladesInFan 2 float radius = 4.7; // inci int preSteps = 0; float stepAngle = 360.0 / (float) stepsPerRevolution; float minSpeed = 0; float maxSpeed = 280.0; float minSteps = 0; float maxSteps = maxSpeed / stepAngle;
Setelah ini, kita menginisialisasi LCD, Serial, interupsi dan motor Stepper dalam fungsi pengaturan
void setup () { myStepper.setSpeed (60); Serial.begin (9600); pinMode (ledPin, OUTPUT); lcd.begin (16,2); lcd.print ("Speedometer"); penundaan (2000); attachmentInterrupt (0, RPMCount, RISING); }
Setelah ini, kita membaca rpm dalam fungsi loop dan melakukan perhitungan untuk mendapatkan kecepatan dan mengubahnya menjadi langkah-langkah untuk menjalankan motor stepper untuk menunjukkan kecepatan dalam bentuk analog.
void loop () { readRPM (); radius = ((radius * 2.54) /100.0); // mengkonversi dalam meter int Speed = ((float) RPM * 60.0 * (2.0 * 3.14 * radius) /1000.0); // RPM dalam 60 menit, diameter ban (2pi r) r adalah radius, 1000 untuk diubah dalam km int Steps = map (Speed, minSpeed, maxSpeed, minSteps, maxSteps); if (flag1) { Serial.print (Kecepatan); Serial.println ("Kmh"); lcd.setCursor (0,0); lcd.print ("RPM:"); lcd.print (RPM); lcd.print (""); lcd.setCursor (0,1); lcd.print ("Kecepatan:"); lcd.print (Kecepatan); lcd.print ("Km / jam"); flag1 = 0; } int currSteps = Langkah-langkah;int langkah = currSteps-preSteps; preSteps = currSteps; myStepper.step (langkah); }
Di sini kita memiliki fungsi reapRPM () untuk menghitung RPM.
int readRPM () { if (REV> = 10 or millis ()> = st + 1000) // IT AKAN DIPERBARUI SETELAH 10 PEMBACAAN atau 1 detik dalam idle { if (flag == 0) flag = 1; rpm = (60/2) * (1000 / (milis () - waktu)) * REV / bladesInFan; waktu = milis (); REV = 0; int x = rpm; sementara (x! = 0) { x = x / 10; RPMlen ++; } Serial.println (rpm, DEC); RPM = rpm; penundaan (500); st = milis (); flag1 = 1; } }
Akhirnya, kita memiliki rutinitas interupsi yang bertanggung jawab untuk mengukur revolusi benda
batalkan RPMCount () { REV ++; jika (led == LOW) { led = HIGH; } lain { led = LOW; } digitalWrite (ledPin, led); }
Ini adalah bagaimana Anda bisa membuat Speedometer Analog menggunakan Arduino. Ini juga dapat dibangun menggunakan sensor Hall dan kecepatan dapat ditampilkan pada ponsel pintar, ikuti tutorial Arduino Speedometer ini.