Isi kandungan:
- Langkah 1: Idea Aruhanino Pulse Induction - Flip Coil
- Langkah 2: Membangunkan Pengesan (Breadboard)
- Langkah 3: Menuju PCB
- Langkah 4: Menyiapkan dan Menggunakan Pengesan
- Langkah 5: Kemas kini1: Menggunakan LCD 16x2
Video: Arduino Based Pulse Induction Detector - Flip Coil: 5 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
Idea
Setelah membina beberapa alat pengesan logam pada masa lalu dengan hasil yang berbeza-beza saya ingin meneroka kemampuan Arduino ke arah itu.
Terdapat beberapa contoh baik bagaimana membina pengesan logam dengan Arduino, beberapa di sini sebagai petunjuk. Tetapi ketika melihatnya, mereka biasanya memerlukan beberapa komponen luaran untuk rawatan isyarat analog atau kepekaannya agak rendah.
Semasa memikirkan pengesan logam, topik utama adalah bagaimana merasakan sedikit perubahan voltan pada isyarat yang berkaitan dengan gegelung carian. Perubahan ini biasanya sangat kecil. Pendekatan yang paling jelas adalah menggunakan input analog dari ATmega328. Tetapi melihat spesifikasi ada dua masalah asas: ia (sering) menjadi perlahan dan penyelesaiannya (dalam kebanyakan kes) menjadi rendah.
Sebaliknya, Arduino berjalan pada 16MHz dan mempunyai beberapa kemampuan masa i. e. resolusi 0.0625µS jika menggunakan kelajuan jam. Oleh itu, daripada menggunakan input analog untuk penginderaan, cara termudah untuk merasakan perubahan dinamik kecil dalam voltan adalah dengan membandingkan perubahan penurunan voltan dari masa ke masa pada voltan rujukan tetap.
Untuk tujuan ini ATmega328 mempunyai ciri kemas pembanding dalaman antara D6 an D7. Pembanding ini dapat mencetuskan gangguan, memungkinkan pengendalian peristiwa yang tepat. Meninggalkan di samping rutin masa yang dikodkan dengan rapi seperti milis () dan mikrofon () dan memasuki pemasa dalaman ATmega328 dengan resolusi yang jauh lebih tinggi, Arduino adalah asas yang bagus untuk pendekatan pengesanan logam.
Jadi dari pandangan kod sumber, permulaan yang baik adalah memprogram pembanding dalaman untuk "perubahan" dalam polaritas input dan menggunakan penghitung dalaman dengan kecepatan tertinggi untuk perubahan waktu perubahan.
Kod umum di Arduido untuk mencapai ini adalah:
// Mendefinisikan semua pemboleh ubah pra yang diperlukan dll dan menyiapkan daftar
jam char yang tidak ditandatanganiSelectBits = _BV (CS10); // tanpa persediaan preskala, penuh xtal void () {pinMode (6, INPUT); // + pembanding - dengan menetapkannya sebagai INPUT, mereka // ditetapkan ke pinMode impedans tinggi (7, INPUT); // - pembanding - dengan menetapkannya sebagai INPUT, mereka // ditetapkan ke nilai impedans tinggi (); // berhenti mengganggu TCCR1A = 0; // tetapkan keseluruhan daftar TCCR1A ke 0 TCCR1B = 0; // sama untuk TCCR1B -> mod normalTCNT1 = 0; // memulakan nilai pembilang ke 0; TCCR1B | = jamSelectBits; // menetapkan prescaler dan memulakan jam TIMSK1 = _BV (TOIE1); // menetapkan interupsi overflow pemasa membolehkan bit sei (); // biarkan gangguan ACSR = (0 << ACD) | // Pembanding Analog: Diaktifkan (0 << ACBG) | // Analog Comparator Bandgap Pilih: AIN0 diterapkan pada input positif (0 << ACO) | // Output Perbandingan Analog: Mati (1 << ACI) | // Bendera Interrupt Comparator Interrupt: Clear Pending Interrupt (1 << ACIE) | // Gangguan Pembanding Analog: Diaktifkan (0 << ACIC) | // Tangkapan Input Perbandingan Analog: Dinyahdayakan (0 << ACIS1 | 0 << ACIS0 // mengganggu pada togol output // (0 << ACIS1 | 1 << ACIS0 // terpelihara // (1 << ACIS1 | 0 << ACIS0 // mengganggu pada output yang jatuh // (1 << ACIS1 | 1 << ACIS0 // mengganggu pada kelebihan input;}
// rutin ini dipanggil setiap kali pembanding membuat gangguan
ISR (ANALOG_COMP_vect) {oldSREG = SREG; cli (); cap masa = TCNT1; SREG = lamaSREG; }
// rutin ini dipanggil setiap kali terdapat limpahan di kaunter dalaman
ISR (TIMER1_OVF_vect) {timer1_overflow_count ++; }
// rutin ini digunakan untuk menetapkan semula pemasa ke 0
void resetTimer (void) {oldSREG = SREG; cli (); // Lumpuhkan gangguan TCNT1 = 0; // mulakan nilai pembilang ke 0 SREG = oldSREG; // Pulihkan daftar status TCCR1B | = clockSelectBits; // menetapkan prescaler dan memulakan pemasa jam1_overflow_count = 0; // menetapkan semula kaunter limpahan}
Sudah tentu idea ini tidak sepenuhnya baru. Bahagian utama kod ini boleh didapati di tempat lain. Pelaksanaan yang baik seperti pendekatan mikrokontroler yang terdapat di laman utama TPIMD - Tiny Pulse Induction Metal Detector.
www.miymd.com/index.php/projects/tpimd/ (sayangnya halaman ini tidak lagi dalam talian, kini terdapat sandaran laman web di www.basic4mcu.com, cari "TPIMD").
Langkah 1: Idea Aruhanino Pulse Induction - Flip Coil
Ideanya adalah untuk menggunakan Arduino sebagai pengesan Induksi Pulse, seperti di TPIMD, kerana idea pemasaan kurva peluruhan nampaknya berfungsi dengan baik. Masalah dengan pengesan Induksi Pulse adalah, bahawa mereka biasanya memerlukan voltan yang berbeza untuk berfungsi. Satu voltan untuk menghidupkan gegelung dan voltan yang berasingan untuk menangani keluk peluruhan. Kedua-dua sumber voltan ini menjadikan pengesan aruhan nadi selalu sedikit rumit.
Melihat voltan gegelung dalam pengesan PI, lengkung yang dihasilkan dapat dibahagikan dalam dua tahap yang berbeza. Tahap pertama ialah denyut nadi menggerakkan gegelung dan membina medan magnet (1). Tahap kedua adalah keluk peluruhan voltan, dimulai dengan puncak voltan, kemudian bergerak cepat ke voltan "tanpa daya" gegelung (2). Masalahnya adalah, bahawa gegelung mengubah polaritasnya selepas nadi. Adakah nadi positif (Var 1. dalam gambar yang dilampirkan) lengkung pereputan adalah negatif. Adakah nadi negatif, lengkung peluruhan akan positif (Var 2. dalam gambar yang dilampirkan)
Untuk menyelesaikan masalah asas ini, gegelung perlu "terbalik" secara elektronik selepas nadi. Dalam kes ini, nadi boleh menjadi positif dan keluk peluruhan juga boleh menjadi positif.
Untuk mencapai ini, gegelung mesti diasingkan dari Vcc dan GND selepas nadi. Pada masa ini, hanya ada arus yang mengalir melalui perintang redaman. Sistem gegelung dan perintang redaman yang terpencil ini dapat "berorientasi" kepada voltan rujukan apa pun. Ini, secara teori akan mewujudkan keluk positif gabungan (bahagian bawah lukisan)
Keluk positif ini dapat digunakan daripada pembanding untuk mengesan titik masa di mana voltan pelanggaran "melintasi" voltan rujukan. Sekiranya harta karun dekat dengan gegelung, keluk peluruhan berubah dan titik masa melintasi voltan rujukan berubah. Perubahan ini tidak dapat dikesan.
Selepas beberapa eksperimen litar berikut terbukti berfungsi.
Litar terdiri daripada modul Arduino Nano. Modul ini menggerakkan dua transistor MOSFET yang menghidupkan gegelung (pada SV3) melalui D10. Apabila nadi pada D10 berakhir, kedua MOSFET mengasingkan gegelung dari 12V dan GND. Tenaga yang dijimatkan dalam gegelung keluar melalui R2 (220 Ohms). Pada masa yang sama R1 (560 Ohms) menghubungkan sisi positif gegelung sebelumnya dengan GND. Ini mengubah keluk peluruhan negatif pada R5 (330 Ohms) menjadi lengkung positif. Diod melindungi pin input Arduino.
R7 adalah pembahagi voltan sekitar 0.04V. Pada masa ini keluk peluruhan pada D7 menjadi lebih negatif daripada 0,04 pada D6, gangguan adalah pencetus dan jangka masa selepas akhir nadi disimpan.
Sekiranya logam mendekati gegelung, lengkung pereputan bertahan lebih lama, dan masa antara akhir nadi dan gangguan semakin lama.
Langkah 2: Membangunkan Pengesan (Breadboard)
Membina alat pengesan agak mudah. Ini boleh dilakukan sama ada di papan roti (melekat pada litar asal) atau dengan menyolder bahagian pada PCB.
LED D13 pada papan Arduino Nano digunakan sebagai petunjuk untuk logam
Menggunakan papan roti adalah cara terpantas untuk alat pengesan yang berfungsi. Diperlukan beberapa pendawaian, masih boleh dilakukan papan roti kecil. Dalam gambar ini ditunjukkan dalam 3 langkah kerana Arduino dan MOSFET menyembunyikan beberapa wayar. Semasa menguji, saya memutuskan sambungan diod tanpa memerhatikan pada mulanya. Ini tidak memberi kesan negatif terhadap tingkah laku pengesan. Dalam litar versi PCB, saya meninggalkannya sepenuhnya.
Tidak ditunjukkan pada gambar adalah sambungan ke paparan OLED 0.96. Paparan ini disambungkan:
Vcc - 5V (pada pin Arduino, bukan voltan bekalan !!!)
GND - GND
SCL - A5
SDA - A4
Paparan OLED ini diperlukan untuk menentukur pengesan pada mulanya. Ini dilakukan dengan menetapkan voltan yang tepat pada PIN6 Arduino. Voltan ini mestilah sekitar 0.04V. Paparan membantu mengatur voltan yang betul.
Versi papan roti berfungsi dengan baik, walaupun mungkin tidak sesuai untuk pergi ke alam liar.
Langkah 3: Menuju PCB
Bagi pematerian, saya tidak begitu menyukai PCB berteknologi tinggi dua sisi, jadi saya mengubah suai litar agar sesuai dengan PCB sisi.
Pengubahsuaian berikut dibuat:
1. diod ditinggalkan.
2. gerbang MOSFET mendapat perintang 10 Ohm
3. voltan bekalan untuk pembahagi voltan pada D6 diberikan oleh isyarat tahap TINGGI pada D8
4. pin pemacu untuk MOSFET telah diubah.
Dengan cara ini PCB satu sisi dapat dibuat yang dapat disolder pada PCB sejagat. Dengan menggunakan litar ini, anda akan mempunyai alat pengesan PI yang berfungsi dengan hanya 8-10 komponen luaran (bergantung jika paparan OLED dan / atau pembesar suara digunakan).
Langkah 4: Menyiapkan dan Menggunakan Pengesan
Sekiranya alat pengesan dibina dengan betul dan program ditulis ke Arduino, cara termudah (jika bukan satu-satunya) untuk menyiapkan unit adalah menggunakan paparan OLED. Paparan dipasang pada 5V, GND, A4, A5. Paparan harus menunjukkan "menentukur" setelah unit dihidupkan. Setelah beberapa saat, ia akan mengatakan "penentukuran selesai" dan tiga nombor harus ditunjukkan pada paparan.
Nombor pertama adalah "nilai rujukan" yang dikenal pasti semasa penentukuran. Nilai kedua adalah nilai terakhir yang diukur dan nilai ketiga adalah nilai min dari 32 pengukuran terakhir.
Ketiga-tiga nilai ini harus lebih kurang sama (dalam kes ujian saya di bawah 1000). Nilai tengah harus lebih kurang stabil.
Untuk memulakan pemasangan awal, tidak boleh ada logam yang dekat dengan gegelung.
Sekarang pembahagi voltan (potensiometer trim) harus dipangkas sehingga dua nilai yang lebih rendah harus ditetapkan maksimum ketika masih memberikan bacaan yang stabil. Terdapat tetapan kritikal, di mana nilai tengah mula memberikan bacaan yang pelik. Putar balik perapi untuk mendapatkan nilai stabil lagi.
Mungkin berlaku, bahawa paparan membeku. Cukup tekan butang reset dan mulakan semula.
Untuk persediaan saya (gegelung: 18 putaran @ 20cm) nilai stabil adalah sekitar 630-650. Setelah ditetapkan, tekan butang set semula, unit akan dikalibrasi semula dan semua nilai pokok harus berada dalam julat yang sama sekali lagi. Sekiranya logam kini digulung, LED pada Arduino-Board (D13) harus menyala. Pembesar suara yang dilampirkan memberikan beberapa bunyi yang mengklik (ada ruang untuk peningkatan dalam pengaturcaraan di sana).
Untuk mengelakkan harapan tinggi:
Pengesan memang mengesan beberapa barang, tetapi pengesannya tetap sederhana dan terhad.
Untuk memberi kesan keupayaan, beberapa pengesanan rujukan dilakukan dengan pengesan lain yang berbeza. Melihat hasilnya, alat pengesan masih cukup mengagumkan dengan hanya 8 bahagian luaran tetapi tidak sesuai dengan pengesan profesional.
Melihat litar dan programnya, ada banyak ruang untuk diperbaiki. Nilai perintang dijumpai berdasarkan pengalaman, masa nadi 250ms dipilih secara rawak, parameter gegelung juga. Sekiranya anda mempunyai idea untuk penambahbaikan, saya dengan senang hati akan membincangkannya.
Berseronok!
Langkah 5: Kemas kini1: Menggunakan LCD 16x2
Penambahbaikan
Semasa ujian lebih lanjut, saya menyedari bahawa perpustakaan untuk I2C OLED Display menghabiskan banyak masa. Oleh itu, saya memutuskan untuk menggunakan paparan 16x2 dengan penukar I2C.
Oleh itu, saya mengadopsi program ke paparan LCD dengan menambahkan beberapa ciri berguna. Baris pertama paparan sekarang menunjukkan kekuatan isyarat petunjuk yang mungkin. Baris kedua sekarang menunjukkan dua nilai. Penumbuk menunjukkan penyimpangan isyarat semasa berbanding dengan nilai penentukuran. Nilai ini mestilah "0". Sekiranya nilai ini sentiasa negatif atau positif, pengesan harus dikalibrasi semula dengan menekan butang reset. Nilai positif menunjukkan logam dekat dengan gegelung.
Nilai kedua menunjukkan nilai kelewatan sebenar keluk peluruhan. Nilai ini biasanya tidak begitu menarik, tetapi diperlukan untuk penyediaan awal pengesan.
Program ini sekarang membolehkan berlakunya beberapa denyutan nadi secara berurutan (cara bereksperimen / meningkatkan prestasi). Saya tidak berjaya. Jadi lalai ditetapkan pada satu jangka masa nadi.
Persediaan Awal Pengesan
Semasa memasang pengesan, nilai kedua dari baris kedua adalah relevan (yang pertama dapat diabaikan). Pada mulanya nilainya boleh menjadi "tidak stabil" (lihat gambar). Putar perintang pemangkasan sehingga nilainya mencapai bacaan yang stabil. Kemudian putar untuk meningkatkan nilai ke nilai stabil maksimum. Tekan butang reset untuk mengkalibrasi semula dan pengesan siap digunakan.
Saya mendapat kesan bahawa dengan menetapkan nilai stabil maksimum, saya kehilangan kepekaan terhadap logam bukan besi. Oleh itu, mungkin perlu dilakukan percubaan tetapan untuk mempunyai kepekaan yang baik untuk barangan bukan besi.
Gegelung
Saya membina 3 gegelung untuk ujian selanjutnya
1 -> 18 putaran @ 200mm
2 -> 25 putaran @ 100mm
3 -> 48 putaran @ 100mm
Menariknya semua gegelung berfungsi dengan baik, dengan prestasi yang hampir sama (syiling 20ct pada udara 40-50mm). Ini mungkin pemerhatian yang cukup subjektif.
Disyorkan:
Arduino Pulse Oximeter: 35 Langkah (dengan Gambar)
Arduino Pulse Oximeter: Pulse oximeter adalah instrumen standard untuk tetapan hospital. Dengan menggunakan serapan relatif hemoglobin beroksigen dan terdeoksigenasi, alat ini menentukan peratusan darah pesakit yang membawa oksigen (julat sihat 94-9
Pulse Oksimeter dengan Ketepatan yang Lebih Baik: 6 Langkah (dengan Gambar)
Pulse Oksimeter dengan Ketepatan yang Lebih Baik: Sekiranya anda baru-baru ini berjumpa doktor, kemungkinan tanda vital asas anda diperiksa oleh jururawat. Berat, tinggi, tekanan darah, serta degup jantung (HR) dan ketepuan oksigen dalam darah periferal (SpO2). Mungkin, dua yang terakhir diperoleh dari
Litar Pemanas Induksi DIY Dengan Coil Spiral Rata (pancake Coil): 3 Langkah
Litar Pemanas Induksi DIY Dengan Gelung Spiral Datar (pancake Coil): Pemanasan induksi adalah proses pemanasan objek pengalir elektrik (biasanya logam) oleh aruhan elektromagnetik, melalui haba yang dihasilkan dalam objek oleh arus eddy. Dalam video ini, saya akan menunjukkan kepada anda bagaimana untuk membuat
Arduino Based Pulse Induction Detector - LC-Trap: 3 Langkah
Arduino Based Pulse Induction Detector - LC-Trap: Semasa mencari idea lebih lanjut untuk pengesan logam Ardino Pulse Induction sederhana dengan hanya satu voltan bekalan, saya menjumpai halaman utama Teemo: http: //www.digiwood.ee/8-electronic- projek / 2-logam-pengesan-litarDia mencipta Pulse Induct
Membuat Induktor Inti Udara Mudah (Induction Coil): 5 Langkah
Membuat Induktor Inti Udara Mudah (Induction Coil): Instruksional ini akan memberitahu anda bagaimana membuat induktor teras udara kecil yang sederhana, khusus untuk Niftymitter. Niftymitter adalah pemancar FM sumber terbuka berdasarkan Pemancar FM Sederhana Tetsuo Kogawa, litar pengayun berjalan bebas, oleh itu