Daftar Isi:

Detektor Induksi Pulsa Berbasis Arduino - LC-Trap: 3 Langkah
Detektor Induksi Pulsa Berbasis Arduino - LC-Trap: 3 Langkah

Video: Detektor Induksi Pulsa Berbasis Arduino - LC-Trap: 3 Langkah

Video: Detektor Induksi Pulsa Berbasis Arduino - LC-Trap: 3 Langkah
Video: Беспроводной металлоискатель Arduino DIY / Spirit PI 2024, November
Anonim
Detektor Induksi Pulsa Berbasis Arduino - LC-Trap
Detektor Induksi Pulsa Berbasis Arduino - LC-Trap

Saat mencari ide lebih lanjut untuk detektor logam Ardino Pulse Induction sederhana dengan hanya satu tegangan suplai, saya menemukan beranda Teemo:

www.digiwood.ee/8-electronic-projects/2-metal-detector-circuit

Dia menciptakan detektor Induksi Pulsa sederhana menggunakan prinsip LC-Trap. Sirkuit serupa telah diposting di sini di Instructable oleh TechKiwiGadgets. Kecuali sirkuit Teemo menggunakan komparator internal dari mikrokontroler PIC, sehingga membutuhkan lebih sedikit komponen eksternal

Jadi saya ditantang untuk menggunakan Arduino daripada PIC-Controller untuk skema ini dan lihat seberapa jauh saya bisa.

Langkah 1: Skema

Skema
Skema
Skema
Skema
Skema
Skema

Skema Arduino sedikit lebih rumit karena Arduino tidak memungkinkan untuk merutekan sinyal analog internal ke input komparator. Ini menambahkan dua komponen untuk pembagi tegangan sederhana. Ini mengarah pada desain dengan 12 komponen eksternal (tanpa speaker dan LCD 16x2), dibandingkan dengan 9 desain Flip Coil.

Prinsip kerja skema dijelaskan dengan sangat baik di situs web Teemo. Pada dasarnya koil diberi daya dan kemudian dimatikan. Setelah dimatikan, koil dan kondensor secara paralel akan membuat osilasi teredam. Frekuensi dan peluruhan osilasi dipengaruhi oleh logam di dekat kumparan. Untuk detail lebih lanjut dari sirkuit, lihat halaman Teemo atau TechKiwi di sini di Instructables.

Seperti pada detektor Induksi Pulsa Flip Coil, saya menggunakan komparator internal dan kemungkinan untuk memicu interupsi untuk memperoleh sinyal dari koil.

Dalam hal ini saya akan mendapatkan beberapa interupsi karena tegangan berosilasi di sekitar tegangan referensi yang ditetapkan pada komparator. Pada akhir osilasi, tegangan pada koil akan menetap di sekitar 5V, tetapi tidak persis. Saya memilih pembagi tegangan dengan 200 Ohm dan 10k Ohm untuk mendapatkan tegangan sekitar 4,9 volt

Untuk mengurangi kerumitan skema saya menggunakan D4 dan D5 untuk menyediakan GND (untuk Resistor 10k) dan 5V (untuk resistor 220 Ohm). Pin diatur pada awal detektor.

Dalam versi ini, saya menambahkan koneksi speaker menggunakan pendekatan multi nada yang dikontrol volume seperti yang dijelaskan dalam Cara Memprogram Detektor Logam Berbasis Arduino. Hal ini memungkinkan untuk membedakan sifat-sifat target serta merasakan kekuatan sinyal. Speaker dapat dihubungkan ke header 5 pin tambahan. 3 pin header yang tersisa akan digunakan untuk tombol tekan (untuk diimplementasikan).

Langkah 2: Pemrograman

Pemrograman
Pemrograman
Pemrograman
Pemrograman
Pemrograman
Pemrograman

Sekarang setelah sirkuit dirancang dan prototipe dibuat, sekarang saatnya untuk menemukan pendekatan yang tepat untuk mendeteksi logam.

1. Menghitung pulsa

Menghitung pulsa osilasi sampai sepenuhnya meluruh adalah satu ide.

Jika ada logam di dekat kumparan, jumlah osilasi berkurang. Dalam hal ini tegangan referensi komparator harus diatur ke tingkat yang pulsa terakhir hampir tidak terukur. Jadi jika ada sesuatu yang terdeteksi, pulsa ini langsung hilang. Ini agak bermasalah.

Setiap gelombang osilasi menciptakan dua interupsi. Satu saat turun dan satu lagi naik. Untuk mengatur tegangan referensi tepat ke puncak gelombang osilasi, waktu antara turun dan naik harus sesingkat mungkin (lihat gambar). Sayangnya di sini overhead lingkungan Arduino menimbulkan masalah.

Setiap pemicu panggilan interupsi untuk kode ini:

ISR(ANALOG_COMP_vect){

Toggle1=Toggle0 // simpan nilai terakhir Toggle0=TCNT1; // dapatkan nilai baru }

Kode ini membutuhkan waktu (jika saya ingat benar, sekitar 78 siklus instruksi penyihir adalah sekitar 5 mikrodetik @ 16MHz). Oleh karena itu jarak minimum yang dapat dideteksi antara dua pulsa adalah persis waktu yang dibutuhkan kode ini, Jika waktu antara dua pemicu menjadi lebih pendek (lihat gambar), itu tidak akan terdeteksi, karena kode dieksekusi sepenuhnya sebelum mendeteksi interupsi kedua

Hal ini menyebabkan hilangnya sensitivitas. Pada saat yang sama, saya perhatikan, bahwa redaman osilasi sangat sensitif terhadap pengaruh eksternal apa pun, sehingga membuat pendekatan ini sedikit sulit.

2. Mengukur frekuensi

Cara lain untuk mendeteksi logam adalah dengan mengukur frekuensi osilasi. Ini memiliki keuntungan besar dibandingkan dengan mengukur redaman osilasi karena perubahan frekuensi memungkinkan diskriminasi logam. Jika ada bahan besi di dekat koil, frekuensinya akan melambat, jika ada logam mulia di dekat koil, frekuensinya akan meningkat.

Cara termudah untuk mengukur frekuensi adalah dengan mengukur jumlah pulsa setelah kumparan mulai berosilasi. Periode waktu antara awal dan pulsa terakhir dibagi dengan jumlah total pulsa yang diukur adalah frekuensi. Sayangnya beberapa osilasi terakhir cukup tidak simetris. Karena kehadiran logam juga mempengaruhi peluruhan osilasi, osilasi terakhir bahkan lebih tidak simetris, pembacaannya sulit untuk ditafsirkan. Pada gambar ini ditunjukkan dengan persilangan 1 ke 1' dan 2 ke 2'.

Oleh karena itu, cara yang lebih baik adalah dengan menggunakan beberapa pulsa sebelumnya untuk mengukur frekuensi. Saat pengujian, menariknya saya menemukan bahwa beberapa pulsa lebih sensitif daripada yang lain. Di suatu tempat di 2/3 dari osilasi adalah titik yang baik untuk memperoleh data.

Memproses datanya

Kode awal berdasarkan loop() memanggil fungsi pulse() untuk melakukan pengaturan waktu koil. Meskipun hasilnya tidak buruk, saya memiliki keinginan untuk meningkatkan waktunya. Untuk melakukannya, saya membuat kode berbasis timer sepenuhnya, yang mengarah ke instruksi terpisah Cara Memprogram Detektor Logam Berbasis Arduino. Instruksi ini menjelaskan waktu, output LCD data crunching, dll secara rinci

1. LCDnya

Pendekatan pertama adalah mengukur 10 pulsa dan kemudian menampilkan nilainya pada LCD. Ketika saya menemukan transfer data I2C terlalu lambat, saya mengubah kode untuk memperbarui hanya satu karakter per pulsa.

2. Pendekatan nilai minimum

Untuk meningkatkan stabilitas pembacaan lebih lanjut saya menulis rutin output serial untuk mendapatkan perasaan yang lebih baik untuk data yang diukur. Di sana menjadi jelas, bahwa meskipun sebagian besar pembacaan agak stabil, beberapa tidak! Beberapa pembacaan pulsa osilasi "sama" sangat jauh sehingga akan merusak setiap pendekatan untuk menganalisis pergeseran frekuensi.

Untuk mengimbangi ini, saya membuat "perbatasan" di mana nilai dapat dipercaya. saya. ketika nilai lebih dari 35 siklus timer1 jauh dari nilai yang diharapkan, nilai-nilai ini diabaikan (dijelaskan secara rinci dalam Instruksi "Cara Memprogram Detektor Logam Berbasis Arduino")

Pendekatan ini terbukti sangat stabil.

3. Tegangan

Desain asli Teemo bertenaga di bawah 5 volt. Karena asumsi saya adalah “lebih banyak volt = lebih banyak daya = lebih banyak sensitivitas”, saya menyalakan unit pada awalnya dengan 12V. Hal ini mengakibatkan pemanasan MOSFET. Pemanasan ini kemudian menghasilkan penyimpangan umum dari nilai-nilai yang diukur, yang menyebabkan seringnya penyeimbangan kembali detektor. Dengan menurunkan tegangan ke 5V, pembangkitan panas MOSFET dapat diminimalkan ke tingkat di mana hampir tidak ada penyimpangan pembacaan yang diamati. Ini membuat rangkaian menjadi lebih sederhana, karena pengatur tegangan Arduino tidak diperlukan lagi.

Untuk MOSFET awalnya saya memilih IRL540. MOSFET ini kompatibel dengan level logika, tetapi memiliki peringkat tegangan maksimum ov 100V. Saya berharap untuk perubahan kinerja yang lebih baik ke IRL640 dengan peringkat 200V. Sayangnya hasilnya sama. Jadi IRL540 atau IRL640 akan melakukan pekerjaan itu.

Langkah 3: Hasil Akhir

Hasil Akhir
Hasil Akhir
Hasil Akhir
Hasil Akhir
Hasil Akhir
Hasil Akhir

Keuntungan dari detektor adalah membedakan antara bahan berharga dan besi. Kekurangannya, sensitivitas dengan skema sederhana ini tidak begitu bagus. Untuk membandingkan kinerja saya menggunakan referensi yang sama seperti untuk detektor Flip-Coil. Mungkin bagus untuk beberapa penentuan, tetapi kemungkinan besar mengecewakan untuk pencarian nyata.

Di sini desain asli dengan pengontrol PIC mungkin lebih sensitif karena berjalan pada 32MHz daripada 16MHz untuk memberikan resolusi yang lebih tinggi untuk mendeteksi pergeseran frekuensi.

Hasil dicapai dengan menggunakan koil dengan 48 putaran @ 100mm.

Seperti biasa, terbuka untuk umpan balik

Direkomendasikan: