Daftar Isi:

Gunakan Arduino untuk Menampilkan RPM Mesin: 10 Langkah (dengan Gambar)
Gunakan Arduino untuk Menampilkan RPM Mesin: 10 Langkah (dengan Gambar)

Video: Gunakan Arduino untuk Menampilkan RPM Mesin: 10 Langkah (dengan Gambar)

Video: Gunakan Arduino untuk Menampilkan RPM Mesin: 10 Langkah (dengan Gambar)
Video: Membaca RPM Mesin Dengan Interupt Arduino 2024, November
Anonim
Gunakan Arduino untuk Menampilkan RPM Mesin
Gunakan Arduino untuk Menampilkan RPM Mesin
Gunakan Arduino untuk Menampilkan RPM Mesin
Gunakan Arduino untuk Menampilkan RPM Mesin
Gunakan Arduino untuk Menampilkan RPM Mesin
Gunakan Arduino untuk Menampilkan RPM Mesin

Panduan ini akan menjelaskan bagaimana saya menggunakan Arduino UNO R3, layar LCD 16x2 dengan I2C, dan strip LED untuk digunakan sebagai pengukur kecepatan mesin dan lampu shift di mobil trek Acura Integra saya. Ini ditulis dalam istilah seseorang dengan beberapa pengalaman atau paparan perangkat lunak Arduino atau pengkodean secara umum, perangkat lunak matematika MATLAB, dan membuat atau memodifikasi sirkuit listrik. Di masa depan, ini dapat direvisi agar lebih mudah dipahami oleh seseorang yang tidak memiliki pengalaman dengan topik ini.

Langkah 1: Pilih Kawat Sigal

Pilih Kawat Sigal
Pilih Kawat Sigal

Anda harus mendapatkan sinyal yang berhubungan dengan kecepatan mesin. Dimungkinkan untuk menambahkan sistem yang mengukur kecepatan engine tetapi jauh lebih praktis untuk menggunakan kabel yang ada yang membawa informasi kecepatan engine. Satu mobil mungkin memiliki banyak sumber untuk ini, dan mungkin sangat bervariasi bahkan dari tahun ke tahun pada model kendaraan tunggal. Untuk keperluan tutorial ini saya akan menggunakan contoh mobil saya, trek modifikasi Acura Integra LS 2000. Saya menemukan di mesin saya (B18B1 dengan OBD2) ada tegangan keluar yang tidak terpakai yaitu 12V tinggi dan turun ke 0V setelah menyelesaikan putaran penuh.

Hal-hal yang akan membantu mengidentifikasi sinyal kecepatan engine potensial:

  • Diagram pengkabelan untuk kendaraan Anda
  • Mencari forum untuk kendaraan Anda yang melibatkan sinyal mesin/ECU
  • Mekanik atau penggila mobil yang ramah

Langkah 2: Perpanjang Kawat ke Papan Arduino

Perpanjang Kawat ke Papan Arduino
Perpanjang Kawat ke Papan Arduino
Perpanjang Kawat ke Papan Arduino
Perpanjang Kawat ke Papan Arduino

Setelah Anda memilih sinyal yang sesuai, Anda harus memperluasnya ke mana pun Anda menempatkan papan Arduino Anda. Saya memutuskan untuk menempatkan milik saya di dalam kendaraan tempat radio dulu berada, jadi saya mengarahkan kabel baru dari mesin, melalui grommet karet di dinding api, dan langsung ke area radio. Karena sudah ada banyak sekali panduan cara untuk mengupas, menyolder, dan melindungi kabel, saya tidak akan menjelaskan proses ini.

Langkah 3: Analisis Sinyal

Analisis Sinyal
Analisis Sinyal

Di sinilah hal-hal bisa menjadi rumit. Memiliki pemahaman umum tentang analisis dan kontrol sinyal akan sangat membantu Anda, tetapi dapat dilakukan dengan sedikit pengetahuan.

Kabel sinyal yang dipilih kemungkinan besar tidak akan menyemburkan nilai yang tepat dari kecepatan mesin. Ini perlu dibentuk dan dimodifikasi untuk memberikan jumlah RPM mesin yang Anda inginkan. Karena setiap mobil yang berbeda dan pilihan kabel sinyal mungkin berbeda, mulai saat ini saya akan menjelaskan bagaimana saya menggunakan sinyal posisi dari distributor pada Integra saya.

Sinyal saya biasanya 12V dan turun ke 0V saat menyelesaikan satu putaran penuh. Jika Anda mengetahui waktu untuk menyelesaikan satu putaran penuh, atau satu putaran penuh, ini dapat dengan mudah diterjemahkan ke dalam putaran/menit menggunakan beberapa konsep dasar.

1 / (detik per siklus) = siklus per detik, atau Hz

Revolusi per menit = Hz * 60

Langkah 4: Kode Analisis Sinyal Anda

Kode Analisis Sinyal Anda
Kode Analisis Sinyal Anda

Metode ini membutuhkan waktu yang dibutuhkan sinyal input untuk menyelesaikan satu siklus penuh. Untungnya perangkat lunak Arduino IDE memiliki perintah yang melakukan hal itu, PulseIn.

Perintah ini akan menunggu sinyal untuk melewati ambang batas, mulai menghitung, dan berhenti menghitung ketika ambang batas dilewati lagi. Ada beberapa detail yang harus diperhatikan saat menggunakan perintah, jadi saya akan menyertakan tautan ke informasi PulseIn di sini:

PulseIn akan mengembalikan nilai dalam mikrodetik, dan untuk menjaga agar matematika tetap sederhana, ini harus segera diubah menjadi detik normal. Mengikuti matematika pada langkah sebelumnya, durasi waktu ini dapat disamakan langsung ke RPM.

Catatan: setelah coba-coba saya menemukan distributor menyelesaikan dua putaran untuk setiap putaran poros engkol mesin, jadi saya hanya membagi jawaban saya dengan 2 untuk memperhitungkan itu.

Langkah 5: Identifikasi Filter

Identifikasi Filter
Identifikasi Filter

Jika Anda beruntung sinyal Anda tidak akan 'noise' (fluktuasi) dan kecepatan mesin Anda akan tepat. Dalam kasus saya, ada banyak suara yang datang dari distributor yang sering memberikan tegangan jauh dari yang diharapkan. Ini berubah menjadi pembacaan yang sangat salah dari kecepatan mesin yang sebenarnya. Kebisingan ini perlu disaring.

Setelah beberapa analisis sinyal, hampir semua kebisingan datang pada frekuensi (Hz) yang jauh lebih tinggi daripada yang dihasilkan mesin itu sendiri (yang berlaku untuk sebagian besar sistem dinamis nyata). Ini berarti filter lolos rendah adalah kandidat yang ideal untuk menangani hal ini.

Sebuah filter lolos rendah memungkinkan frekuensi rendah (diinginkan) untuk melewati dan melemahkan frekuensi tinggi (tidak diinginkan).

Langkah 6: Penyaringan: Bagian 1

Penyaringan: Bagian 1
Penyaringan: Bagian 1
Penyaringan: Bagian 1
Penyaringan: Bagian 1
Penyaringan: Bagian 1
Penyaringan: Bagian 1

Merancang filter dapat dilakukan dengan tangan, namun menggunakan MATLAB akan mempercepat ini secara signifikan jika Anda memiliki akses ke perangkat lunak.

Filter lolos rendah dapat disamakan dengan fungsi transfer (atau fraksi) dalam domain Laplace (domain frekuensi). Frekuensi input akan dikalikan dengan pecahan ini dan outputnya adalah sinyal yang difilter yang hanya memiliki informasi yang ingin Anda gunakan.

Satu-satunya variabel dalam fungsi adalah tau. Tau sama dengan 1/Omega, dimana Omega adalah frekuensi cutoff yang anda inginkan (harus dalam radian per detik). Frekuensi cutoff adalah batas di mana frekuensi yang lebih tinggi darinya akan dihilangkan dan frekuensi yang lebih rendah darinya akan dipertahankan.

Saya mengatur frekuensi cutoff sama dengan RPM yang tidak akan pernah dicapai mesin saya (990 RPM atau 165 Hz). Grafik FFT menunjukkan secara kasar frekuensi apa yang dibawa sinyal mentah saya dan frekuensi yang keluar dari filter.

Langkah 7: Penyaringan: Bagian 2

Penyaringan: Bagian 2
Penyaringan: Bagian 2
Penyaringan: Bagian 2
Penyaringan: Bagian 2

Di sini MATLAB digunakan lagi untuk kepentingan waktu. Frekuensi cutoff ditentukan, dan dari situ fungsi transfer yang dihasilkan ditampilkan. Perlu diingat pecahan ini hanya berlaku untuk domain Laplace dan tidak bisa langsung digunakan pada mikrokontroler berbasis waktu seperti Arduino UNO R3.

Langkah 8: Penyaringan: Bagian 3

Penyaringan: Bagian 3
Penyaringan: Bagian 3
Penyaringan: Bagian 3
Penyaringan: Bagian 3

MATLAB memiliki perintah yang akan mengubah fungsi kontinu (domain frekuensi) menjadi fungsi diskrit (domain waktu). Output dari perintah ini akan memberikan persamaan yang dapat dengan mudah dimasukkan ke dalam kode Arduino IDE.

Langkah 9: Penyaringan: Bagian 4

Penyaringan: Bagian 4
Penyaringan: Bagian 4
Penyaringan: Bagian 4
Penyaringan: Bagian 4

Dalam sketsa Arduino, sertakan variabel u dan y sebelum pengaturan. Perintah float hanya mendefinisikan bagaimana variabel akan menyimpan data (hal-hal seperti nilai maksimum, desimal, dll…) dan tautan ke informasi lebih lanjut tentang ini akan disediakan di sini: https://www.arduino.cc/reference/en/language /varia…

Dalam loop di mana konversi dari sinyal mentah menjadi kecepatan mesin sedang berlangsung, sertakan variabel u dan persamaan kelipatan y. Ada beberapa cara untuk menggunakan ini, tetapi variabel u harus disetel sama dengan sinyal input mentah yang diukur, dan variabel y akan menjadi nilai yang difilter.

Direkomendasikan: