Halo semuanya.Saya pernah naik dalam kegelapan dan muncul dengan ide, akan menarik jika warna pencahayaan instrumen akan berubah dari kecepatan atau kecepatan mesin. Karena Saya tidak memiliki tachometer yang rapi, maka diputuskan untuk menerapkan opsi kedua, karena satu kemungkinan akan menentukan sekitar kecepatan.Jika seseorang ingin mengulang, saya akan katakan segera, Anda melakukan pekerjaan dengan tukang listrik di mobil dengan risiko Anda sendiri.Pengrajin bisa mengatakan tentang tembakan meriam di burung pipit dan tentang kemampuan saya yang luar biasa untuk memprogram, tetapi tujuannya telah tercapai, rencana tersebut telah direalisasikan dan itu bekerja untuk dirinya sendiri :). Secara umum, Anda akan memerlukan: Arduino, sepasang LED RGB, beberapa resistor, dan beberapa chip stabilisasi tegangan, dipasang untuk LED. Tertarik silakan di bawah kucing.
Pencarian cepat di Internet memberi informasi bahwa tachometer menerima informasi dalam pulsa. Informasi akurat mengenai bentuk dan durasi pulsa tidak ditemukan. Apakah durasinya berubah atau statis, tetapi apakah waktu antara pulsa berubah. Nah, Anda harus mengajar Arduin untuk menghitung impuls, dan tentukan untuk satu dan waktu yang sama ketika pada kontak "+" dan kapan "0".Kami menghubungkan diode RGB. Jangan lupa untuk meletakkan batas resistor pada setiap LED.const int RED_PIN = 9;
const int GREEN_PIN = 10;
const int BLUE_PIN = 11;
Kami akan menggunakan metode attachInterrupt . Metode ini memanggil fungsi saat tegangan muncul dan / atau menghilang pada pin. Dalam kasus kami, kami perlu bereaksi dalam kedua kasus, karena kami tidak tahu apa-apa tentang dorongan hati kecuali kehadirannya. Ternyata nanti, dengan peningkatan kecepatan, baik durasi + dan durasi 0 berkurang.long micro_prev=0;
long micro_now=0;
long razn;
long impulse;
long silence;
Dalam Penyetelan, kami menghubungkan pin yang mana kawat impuls akan terhubung. Ini adalah pin digital 2. 0 dalam kode. Ini adalah penomoran pin yang dapat berfungsi dalam mode ini. Cocok dengan pin 2. attachInterrupt(0, blink, CHANGE );
micro_now=micros();
razn=micro_now-micro_prev;
a++;
if(digitalRead(2)==LOW){
impulse=razn;
} else {
silence=razn;
}
if(a==2){
Serial.println(String(impulse)+" "+String(silence));
obr_v_min=30000000/(impulse+silence);
a=0;
Selanjutnya, kami memeriksa apakah datanya memadai: durasi denyut nadi, dan, karenanya, revolusi sesuai dengan norma fisik dan mulai mengontrol cahaya.Kecepatan akan berubah dari biru menjadi hijau dan melalui kuning menjadi merah. Diagram ketergantungan warna pada revolusi di bawah ini. Skala revolusi horisontal. Secara vertikal, tingkat kecerahan adalah dari 0 hingga 255. Biru dan merah murni tidak menerangi panel cukup terang, jadi saya harus mengencerkannya sedikit berbeda. Tetapi warna biru mulai
berubah menjadi memar, sangat indah :) Untuk setiap bagian Anda perlu membuat formula yang dengannya kecerahan akan dihitung. Sebenarnya, persamaan ini adalah garis lurus pada dua titik. Itu dianggap mudah.Jadi misalnya untuk plot 800-1300, kecerahan akan dianggap sebagaig=0.21*obr_v_min-18;
b=-0.51*obr_v_min+663 ;
r=0;
Jangan lupa untuk mempertimbangkan kesalahan jika data yang memadai berhenti mengalir. Lebih dari 100 kesalahan berurutan (pengalaman, jika kawat terlepas maka seratus ini terbang dalam sepersekian detik), maka kita pergi dalam warna statis. Ketika data muncul, kami kembali. error++;
if(error>=100){
k = go_to_color(0,255,255);
}
Dan akhirnya, kehalusan perubahan warna.int go_to_color(int r, int g, int b){
while(r_current!=r || g_current!=g || b_current!=b)
{
if(r_current>r){
r_current=r_current-1;
}
if(r_current<r){
r_current=r_current+1;
}
....
delay(100);
analogWrite(RED_PIN, r_current);
analogWrite(GREEN_PIN, g_current);
analogWrite(BLUE_PIN, b_current);
}}
Saat Anda menghidupkan sistem, nyalakan lampu latar dengan lembut. Untuk melakukan ini, kita mengatur variabel first_loop, yang kamu akan memberitahu arduine bahwa belum perlu memperhatikan pulsa. if(first_loop==1){
int i;
for(i=0;i<255;i++){
analogWrite(RED_PIN, 0);
analogWrite(GREEN_PIN, 0);
analogWrite(BLUE_PIN, i);
delay(5);
}
b_current=255;
r_current=0;
g_current=0;
delay(500);
first_loop=0;
}
Jadi, semuanya, saatnya untuk menguji. Di jalan pada bulan Januari, dingin masuk angin dan hanya menguji pada mobil. Butuh simulator. Kami mengambil ardudinka kedua dan membuat generator pulsa darinya.Secara umum, ini benar. Saat debugging, saya menambahkan kontrol COM di sini untuk mengubah panjangnya.digitalWrite(8, HIGH);
delay(10);
digitalWrite(8, LOW);
delay(10);
Secara kebetulan, osiloskop USB ternyata ada di tangan saya, yang sangat membantu perkembangan ini. Kami terhubung dan melihat output kira-kira gambar yang sama.
Setelah bermain, kami memastikan bahwa semuanya tampak berfungsi. Sekarang kita pergi dan mencari impuls di dalam mobil. Ke depan, saya akan mengatakan bahwa di dasbor saya tidak menemukan output kawat untuk tachometer, jadi saya harus terhubung ke konektor OBDII. Nyalakan dan ...
Apa ini !?Kami gas.
Ya, mereka tidak tahu bagaimana cara menghitungnya sama sekali. Aku harus mengulang semuanya, pikirku. Dan sedikit kemudian saya perhatikan bahwa kabel kedua probe osiloskop jatuh dari massa. Ugh kamu.
Wow, semuanya baik-baik saja. Itu hanya amplitudo bukan 5V Arduino. Kami tidak akan mengambil risiko itu. Harus lebih rendah.Ngomong-ngomong, momen lain. Frekuensi dua kali lebih tinggi dari kecepatan mesin. Saya mengerti bahwa tachometer menunjukkan jumlah siklus per menit, mis. jumlah kilatan di dalam silinder, misalnya. Tapi poros engkol dalam satu siklus berputar dua kali. Dan impuls diambil darinya. Namun, saya mungkin salah. Tetapi saat idle, sebuah mobil kecil mendingin, osilator saya menunjukkan 34,4 Hz. Yang sesuai dengan 2000 rpm. Bahkan di telinga, ini tidak benar. Tapi 1000 itu. Pertimbangkan dalam formula saat menghitung revolusi.Selama tes daya, Arduino 12V tidak selalu berperilaku memadai, jadi kami akan memasoknya dari jaringan on-board, tetapi menurunkannya ke 5V.Skema umum sistem. Melalui stabilisator L7805C kami memberi makan Arduino dan mengurangi amplitudo pulsa oleh pembagi. Pada output arduins, kami terhubung secara paralel sepasang LED melalui resistor. Itu persis jumlah lampu latar di dasbor saya.
Jadi, yah, sekarang saatnya membuat cartridge untuk dioda.
Kartrid asli di sebelah kanan. Saya tidak menemukan itu di toko, saya harus mengambil yang standar. Kami mengambil terminal dari kartrid, karena kami tidak akan mengambil makanan dari mereka. Kami mengebor lubang untuk memasukkan kabel ke dalam kartrid dari bawah. Kami menyolder kabel ke dioda, kami mengisolasi dengan baik menggunakan tabung panas-menyusut.
Untuk waktu yang lama saya mencari cara untuk menambah panjang cartridge, tidak ada yang muncul dengan diameter. Akibatnya, saya menggunakan isolasi ketat dari kabel. Kami mengencangkan dan memperbaiki setetes lem panas dari ujung kartrid.
Saya mencoba membuat stabilizer dan 6 resistor untuk LED pada papan terpisah, tetapi untuk beberapa alasan textolite hanya tergores setengah dalam proses. Di satu bagian papan, itu tetap tidak tersentuh, di babak kedua itu benar-benar hilang. Dan di antara mereka ada perbatasan yang halus, seperti logam yang berbeda. Karena itu, sisanya tidak akan terlihat sangat estetis, tidak ada foto. Tetapi semuanya sesuai dengan skema di atas. Saat mencari cara menambah kartrid, saya menemukan casing yang hampir sempurna :).
Agar dasbor dihapus di masa depan, diputuskan untuk membuat koneksi yang dapat dilepas. Catu daya yang terbakar membantu menemukan chip. satu ujung ke Arduino, ujung kedua ke jaringan on-board mobil.
Dari bagian belakang panel, kami membuka satu sekrup dari kasing dan mengencangkannya dengan bagian outlet komputer yang berfungsi sebagai kasing.
Kami pasang case, kumpulkan kabelnya sehingga tidak hang out dan mengatur semuanya kembali. Saya mengambil makanan untuk arduins dari kabel yang masuk ke panel. Saya membunyikan kontak yang bertanggung jawab untuk catu daya lampu latar biasa dan menemukan kabel yang sesuai pada chip. Akibatnya, arduin menyala dengan masuknya cahaya, tetapi tidak bekerja terus-menerus. Saya tidak menemukan tachometer, saya harus mengambil kabel ke konektor OBDII.
Secara umum, semuanya sudah siap. Pekerjaan video. Tentu saja, video tidak menyampaikan semua kedalaman dan kontras saat memotret elemen bercahaya di malam hari.Saya naik selama seminggu. Saya pikir itu akan tegang. Namun, tidak, saya menyukainya. Yah, sejauh ini setidaknya tidak bosan :). Itu tidak berubah tajam, kadang-kadang perubahan penglihatan lateral tidak punya waktu untuk memperhatikan. Itu terlihat hanya ketika ia beralih ke merah, tetapi sangat mengesankan ketika mobil mulai mempercepat momentum dan masuk ke zona merah ketika menyalip :).Sketsa untuk
SkemaUPD Arduinotidak mengklaim benar dan ideal. Pengrajin tidak menyarankan menggunakan stabilisator tegangan untuk menurunkan amplitudo pulsa, tetapi menggunakan pembagi tegangan konvensional. Komentar dapat dilihat di komentar di bawah ini.UPD2Mengubah skema sehubungan dengan komentar. Skema tautan lamaYah, saya ulangi, tanggung jawab untuk mereproduksi skema ini hanya ada pada Anda. Semoga berhasil dalam kreativitas teknis! :)