Ini adalah perangkat sederhana yang mampu mendeteksi medan elektromagnetik yang sangat lemah. Intensitas medan relatif ditampilkan pada layar LCD dan pada saat yang sama diberikan sinyalisasi suara buzzer dan sinyalisasi lampu LED. Dalam hal ini sensornya adalah kawat tembaga biasa, dengan diameter 1,5 mm, tetapi Anda dapat menggunakan kawat atau ubin logam apa saja. Sensitivitas dapat disesuaikan melalui kode, dan juga dengan mengubah nilai resistor yang terhubung antara A0 dan pentanahan. Dengan bantuan sakelar, salah satu dari dua nilai resistor dipilih, dan dengan demikian tingkat sensitivitas perangkat. Jadi kami dapat dengan mudah mengkalibrasinya, dengan membandingkannya dengan perangkat industri yang dikalibrasi ulang.
Seperti yang dapat dilihat di bawah rangkaian ini sangat sederhana dan terdiri dari mikrokontroler Arduino Nano dan beberapa komponen eksternal.
Kode ini merupakan kombinasi dari dua bagian (VU meter berbasis Arduino oleh KTAudio untuk bagian tampilan LCD, dan Aaron ALAI EMF Detector untuk bagian sensor) dan juga modifikasi pada bagian tertentu untuk tujuan stabilitas keseluruhan perangkat yang lebih baik. Anda dapat mengunduhnya pada tautan yang diberikan di bawah ini.
Seperti yang Anda lihat di video, perangkat ini dapat dengan mudah mendeteksi medan elektromagnetik yang dihasilkan oleh kabel listrik yang hanya bertegangan di bawah dan tidak terhubung ke konsumen. Misalnya, medan elektromagnetik dari monitor CRT lama dapat dideteksi pada jarak 3m atau lebih.
Detektor dipasang di rumah yang nyaman dan ditenagai oleh baterai 9V.
Kode
KodeC/C++
/* VU meter berbasis Arduino oleh KTAudio. Dikembangkan oleh ThomAce (Tamas Kamocsai) berdasarkan siemenwauters, theredstonelabz, dan VU meter michiel H. GNU GPL License v3 Pengembang:ThomAce (Tamas Kamocsai) Mail:[email protected] Versi:1.0 Tanggal modifikasi terakhir:2019.09.24 Versi asli:https://www.instructables.com/id/ARDUINO-VU-METER/ Asli deskripsi:VU meter by siemenwauters, theredstonelabz dan michiel H jangan lupa like dan subscribe untuk mendukung karya saya. tnx Dimodifikasi oleh mircemk (Mirko Pavleski)*/#include byte Bar[8] ={ B11111, B00000, B11111, B11111, B11111, B11111, B00000, B11111};byte L[8] ={ B00111, B01000, B10100, B10100, B10100, B10111, B01000, B00111};byte R[8] ={ B00111, B01000, B10110, B10101, B10110, B10101, B01000, B00111};byte Tanda Akhir[8] ={ B10000, B01000, B00100, B00100, B00100, B00100, B01000, B10000};byte EmptyBar[8] ={ B11111, B00000, B00000, B00000, B00000, B00000, B00000, B11111};byte peakHoldChar[8] ={ B11111, B00000, B01110, B01110, B01110, B01110, B00000, B11111};String main_version ="1.0";int kanan; //Variabel untuk menyimpan dan menghitung level saluran const int numReadings =5; // Tingkat penyegaran. Nilai lebih rendah =tarif lebih tinggi. 5 adalah indeks defaultR =0; int totalR =0; int maxR =0;int masukanPinR =A0; //Masukkan pin Analog 0 untuk saluran KANANint volR =0;int rightAvg =0;long peakHoldTime =100; //waktu penahanan puncak dalam milidetiklong peakHold =0;int rightPeak =0;long decayTime =0;long actualMillis =0;int pin10 =10; // keluaran ledint merah val =0; int pin9 =9;LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //konfigurasi lcdvoid setup(){ lcd.begin(40, 2); //Menyiapkan LCD. 16 karakter dan 2 baris lcd.createChar(1, Bar); lcd.createChar(3, R); lcd.createChar(4, EmptyBar); lcd.createChar(5, EndMark); lcd.createChar(6, peakHoldChar); //Menampilkan pesan pemuatan dan bilah pemuatan String KTAudio =" MIRCEMK"; for (int i =0; i <=16; i++) { lcd.setCursor(0, 0); lcd.print(KTAudio.substring(0, i)); penundaan (50); } KTAudio =" Detektor EMF " + main_version; for (int i =0; i <=KTAudio.length(); i++) { lcd.setCursor(0, 1); lcd.print(KTAudio.substring(0, i)); penundaan (50); } penundaan (500); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Memuat..."); for (int i =0; i <16; i++) { lcd.setCursor(i, 1); lcd.tulis(4); } untuk (int i =0; i <16; i++) { lcd.setCursor(i, 1); lcd.tulis(1); penundaan (50); } penundaan (500); lcd.clear(); decayTime =milis();}void loop(){ lcd.setCursor(0, 0); lcd.write("Intensitas EMF"); aktualMillis =mili(); lcd.setCursor(0, 1); //R indeks saluran lcd.write(3); //R simbol lcd.setCursor(15, 1); //tag penutup / indeks tanda akhir 2 lcd.write(5); //tag penutup / tanda akhir totalR =analogRead(inputPinR); if(totalR>=1){ totalR =kendala(totalR, 0, 100); // mengacaukan nilai-nilai ini totalR =map(totalR, 0, 100, 1, 255); // untuk mengubah jarak respons perangkat analogWrite(pin10, totalR); // *catatan juga bermain-main dengan resistor harus mengubah analogWrite(pin9, totalR); // sensitivitas }else{ // analogWrite(pin10, val); hanya menyetel led dengan // intensitas variabel val analogWrite(pin10, 0); // pernyataan else hanya memberitahu mikrokontroler analogWrite(pin9, 0); // untuk mematikan lampu jika tidak ada EMF yang terdeteksi } if(totalR> maxR) { maxR =totalR; } indeksR++; if (indeksR>=numReadings) { indeksR =0; kanan =maksR; maksR =0; } volR =kanan / 3; if(volR> 14) { volR =14; } if (volR <(rightAvg - 2)) { if (decayTime (rata-rata kanan + 2)) { volR =(Rata-rata kanan + 2); kananAvg =volR; } else { rightAvg =volR; } if (volR> rightPeak) { rightPeak =volR; } drawBar(volR, rightPeak, 1); if (decayTime Skema