Isi kandungan:

Arduino Based Pulse Induction Detector - Flip Coil: 5 Langkah (dengan Gambar)
Arduino Based Pulse Induction Detector - Flip Coil: 5 Langkah (dengan Gambar)

Video: Arduino Based Pulse Induction Detector - Flip Coil: 5 Langkah (dengan Gambar)

Video: Arduino Based Pulse Induction Detector - Flip Coil: 5 Langkah (dengan Gambar)
Video: DIY Radar With Ultrasonic Sensor And Chat-GPT Generated Arduino Code | Coders Cafe 2024, November
Anonim
Arduino Based Pulse Induction Detector - Flip Coil
Arduino Based Pulse Induction Detector - Flip Coil
Arduino Based Pulse Induction Detector - Flip Coil
Arduino Based Pulse Induction Detector - Flip Coil

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

Idea Aruhanino Pulse Induction - Flip Coil
Idea Aruhanino Pulse Induction - Flip Coil
Idea Aruhanino Pulse Induction - Flip Coil
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 Pengesan (Breadboard)
Membina Pengesan (Breadboard)
Membina Pengesan (Breadboard)
Membina Pengesan (Breadboard)
Membina Pengesan (Breadboard)
Membina 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

Pergi PCB
Pergi PCB
Pergi PCB
Pergi PCB
Pergi PCB
Pergi PCB
Pergi PCB
Pergi 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

Menyiapkan dan Menggunakan Pengesan
Menyiapkan dan Menggunakan Pengesan
Menyiapkan dan Menggunakan Pengesan
Menyiapkan dan Menggunakan Pengesan
Menyiapkan dan Menggunakan Pengesan
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

Kemas kini1: Menggunakan LCD 16x2
Kemas kini1: Menggunakan LCD 16x2
Kemas kini1: Menggunakan LCD 16x2
Kemas kini1: Menggunakan LCD 16x2
Kemas kini1: Menggunakan LCD 16x2
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: