Isi kandungan:

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

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

Video: Gunakan Arduino untuk RPM Mesin Paparan: 10 Langkah (dengan Gambar)
Video: Cara membuat alat pembaca RPM mesin menggunakan Arduino uno 2024, November
Anonim
Gunakan Arduino untuk Paparkan RPM Engine
Gunakan Arduino untuk Paparkan RPM Engine
Gunakan Arduino untuk Paparkan RPM Engine
Gunakan Arduino untuk Paparkan RPM Engine
Gunakan Arduino untuk Paparkan RPM Engine
Gunakan Arduino untuk Paparkan RPM Engine

Panduan ini akan menggariskan bagaimana saya menggunakan Arduino UNO R3, paparan LCD 16x2 dengan I2C, dan jalur LED untuk digunakan sebagai tolok kelajuan mesin dan lampu pergeseran di kereta trek Acura Integra saya. Ia ditulis dalam istilah seseorang yang mempunyai pengalaman atau pendedahan kepada perisian Arduino atau pengkodan secara umum, perisian matematik MATLAB, dan membuat atau mengubah litar elektrik. Pada masa akan datang ini mungkin disemak semula agar lebih mudah difahami bagi seseorang yang tidak berpengalaman dengan topik ini.

Langkah 1: Pilih Sigal Wire

Pilih Sigal Wire
Pilih Sigal Wire

Anda perlu mendapatkan isyarat yang berkaitan dengan kelajuan enjin. Adalah mungkin untuk menambahkan sistem yang mengukur kelajuan enjin tetapi jauh lebih praktikal untuk menggunakan wayar yang ada yang membawa maklumat kelajuan enjin. Sebuah kereta tunggal mungkin mempunyai banyak sumber untuk ini, dan ia mungkin berbeza dari tahun ke tahun pada satu model kenderaan tunggal. Demi tutorial ini, saya akan menggunakan contoh kereta saya, trek yang diubah suai 2000 Acura Integra LS. Saya dapati pada enjin saya (B18B1 dengan OBD2) terdapat voltan yang tidak digunakan yang tinggi 12V dan turun ke 0V setelah menyelesaikan revolusi penuh.

Perkara yang akan membantu mengenal pasti isyarat kelajuan enjin yang berpotensi:

  • Gambar rajah pendawaian untuk kenderaan anda
  • Mencari forum untuk kenderaan anda yang melibatkan isyarat enjin / ECU
  • Mekanik atau peminat kereta yang mesra

Langkah 2: Panjangkan Kawat ke Arduino Board

Panjangkan Kawat ke Arduino Board
Panjangkan Kawat ke Arduino Board
Panjangkan Kawat ke Arduino Board
Panjangkan Kawat ke Arduino Board

Setelah memilih isyarat yang sesuai, anda perlu memanjangkannya ke mana sahaja anda meletakkan papan Arduino anda. Saya memutuskan untuk meletakkan tambang di dalam kenderaan di mana dulu radio, jadi saya mengarahkan wayar baru dari mesin, melalui grommet getah di dinding api, dan tepat ke kawasan radio. Oleh kerana sudah ada banyak petunjuk cara melucutkan, menyolder, dan melindungi pendawaian, saya tidak akan menerangkan proses ini.

Langkah 3: Analisis Isyarat

Analisis Isyarat
Analisis Isyarat

Di sinilah keadaan menjadi rumit. Memiliki pemahaman umum mengenai analisis isyarat dan kawalan akan membantu anda jauh, tetapi boleh dilakukan dengan sedikit pengetahuan.

Kawat isyarat yang dipilih kemungkinan besar tidak akan mengeluarkan nilai tepat dari kelajuan mesin. Ia perlu dibentuk dan diubah untuk memberikan jumlah RPM mesin yang anda mahukan. Oleh kerana setiap kereta dan wayar isyarat yang dipilih mungkin berbeza, dari sudut ini dan seterusnya saya akan menerangkan bagaimana saya menggunakan isyarat kedudukan dari pengedar di Integra saya.

Isyarat saya biasanya 12V dan turun ke 0V semasa menyelesaikan satu putaran penuh. Sekiranya anda mengetahui masa untuk menyelesaikan satu putaran penuh, atau satu pusingan penuh, ini dapat dengan mudah diterjemahkan menjadi revolusi / min menggunakan beberapa konsep asas.

1 / (saat per kitaran) = kitaran sesaat, atau Hz

Revolusi per minit = Hz * 60

Langkah 4: Kod Analisis Isyarat Anda

Kod Analisis Isyarat Anda
Kod Analisis Isyarat Anda

Kaedah ini memerlukan masa yang diperlukan untuk isyarat input menyelesaikan satu kitaran penuh. Nasib baik perisian Arduino IDE mempunyai arahan yang tepat, PulseIn.

Perintah ini akan menunggu isyarat melintasi ambang, mula mengira, dan berhenti mengira ketika ambang dilintasi lagi. Terdapat beberapa perincian yang harus diperhatikan ketika menggunakan perintah, jadi saya akan memasukkan pautan ke maklumat PulseIn di sini:

PulseIn akan mengembalikan nilai dalam mikrodetik, dan untuk memastikan matematiknya sederhana, ini harus segera ditukar menjadi detik normal. Mengikuti matematik pada langkah sebelumnya, jangka masa ini dapat disamakan terus menjadi RPM.

Nota: selepas percubaan dan kesilapan saya mendapati pengedar menyelesaikan dua putaran untuk setiap putaran poros engkol enjin, jadi saya hanya membahagikan jawapan saya dengan 2 untuk menjelaskannya.

Langkah 5: Kenali Penapis

Kenali Penapis
Kenali Penapis

Sekiranya anda bernasib baik, isyarat anda tidak akan mempunyai 'bunyi' (turun naik) dan kelajuan enjin anda akan tepat. Dalam kes saya, terdapat banyak bunyi dari pengedar yang sering memberi voltan jauh dari yang diharapkan. Ini berubah menjadi pembacaan kelajuan enjin sebenar yang sangat salah. Kebisingan ini perlu disaring.

Setelah beberapa analisis isyarat, hampir semua kebisingan datang pada frekuensi (Hz) jauh lebih tinggi daripada yang dikeluarkan oleh mesin itu sendiri (yang berlaku untuk kebanyakan sistem dinamik yang nyata). Ini bermaksud saringan lulus rendah adalah calon yang sesuai untuk mengurus ini.

Penapis lulus rendah membolehkan frekuensi rendah (diinginkan) melaluinya dan mengurangkan frekuensi tinggi (tidak diingini).

Langkah 6: Penapisan: Bahagian 1

Penapisan: Bahagian 1
Penapisan: Bahagian 1
Penapisan: Bahagian 1
Penapisan: Bahagian 1
Penapisan: Bahagian 1
Penapisan: Bahagian 1

Merancang penapis boleh dilakukan dengan tangan, namun menggunakan MATLAB akan mempercepatnya dengan ketara jika anda mempunyai akses ke perisian.

Penapis lulus rendah dapat disamakan dengan fungsi pemindahan (atau pecahan) dalam domain Laplace (domain frekuensi). Frekuensi input akan dikalikan dengan pecahan ini dan outputnya adalah isyarat yang disaring yang hanya mempunyai maklumat yang ingin anda gunakan.

Satu-satunya pemboleh ubah dalam fungsi adalah tau. Tau sama dengan 1 / Omega, di mana Omega adalah frekuensi pemotongan yang anda mahukan (mestilah dalam radian sesaat). Frekuensi pemotongan adalah had di mana frekuensi lebih tinggi daripada yang akan dikeluarkan dan frekuensi yang lebih rendah daripada yang akan disimpan.

Saya menetapkan frekuensi cutoff sama dengan RPM yang tidak akan dicapai oleh mesin saya (990 RPM atau 165 Hz). Grafik FFT menunjukkan secara kasar frekuensi yang dibawa oleh isyarat mentah saya dan frekuensi yang keluar dari penapis.

Langkah 7: Penapisan: Bahagian 2

Penapisan: Bahagian 2
Penapisan: Bahagian 2
Penapisan: Bahagian 2
Penapisan: Bahagian 2

Di sini MATLAB digunakan lagi untuk masa. Frekuensi pemotongan ditentukan, dan dari itu fungsi pemindahan yang dihasilkan ditunjukkan. Perlu diingat pecahan ini hanya berlaku untuk domain Laplace dan tidak boleh digunakan secara langsung pada pengawal mikro berdasarkan masa seperti Arduino UNO R3.

Langkah 8: Penapisan: Bahagian 3

Penapisan: Bahagian 3
Penapisan: Bahagian 3
Penapisan: Bahagian 3
Penapisan: Bahagian 3

MATLAB mempunyai perintah yang akan mengubah fungsi berterusan (domain frekuensi) menjadi fungsi diskrit (domain masa). Keluaran arahan ini akan memberikan persamaan yang dapat dengan mudah dimasukkan ke dalam kod Arduino IDE.

Langkah 9: Penapisan: Bahagian 4

Penapisan: Bahagian 4
Penapisan: Bahagian 4
Penapisan: Bahagian 4
Penapisan: Bahagian 4

Dalam lakaran Arduino, sertakan pemboleh ubah u dan y sebelum persediaan. Perintah apungan hanya menentukan bagaimana pemboleh ubah menyimpan data (perkara seperti nilai maksimum, perpuluhan, dll.) Dan pautan ke lebih banyak maklumat mengenai perkara ini akan disediakan di sini: https://www.arduino.cc/reference/en/language / varia…

Dalam gelung di mana penukaran dari isyarat mentah menjadi kelajuan enjin berlaku, sertakan pemboleh ubah u dan persamaan berganda y. Terdapat pelbagai cara menggunakan ini, tetapi pemboleh ubah u harus ditetapkan sama dengan isyarat input mentah yang diukur, dan pemboleh ubah y akan menjadi nilai yang disaring.

Disyorkan: