Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Pencari Lokasi Logam Saku

Komponen dan persediaan

SparkFun Arduino Pro Mini 328 - 5V/16MHz
× 1

Alat dan mesin yang diperlukan

Printer 3D (generik)

Tentang proyek ini

Intro:Pocket Metal Locator - Arduino

Pocket Metal Locator kecil yang keren ini cukup sensitif untuk mengidentifikasi paku kecil dan paku payung di kayu dan cukup ringkas untuk dimasukkan ke dalam ruang yang canggung sehingga nyaman untuk dibawa dan digunakan untuk mencari lokasi logam.

Unit ini memiliki empat koil pencarian independen dan indikator LED warna yang memudahkan untuk mencakup area pencarian yang lebih besar dengan cepat sekaligus mampu mengidentifikasi target secara akurat.

Perangkat kecil yang rapi ini mengkalibrasi sendiri dengan pengoperasian satu tombol, dapat diisi ulang melalui port USB dan menggunakan LED warna, suara, dan getaran untuk menunjukkan kekuatan target.

Termasuk dalam tutorial ini adalah semua desain, pengujian, kode, dan file 3D yang diperlukan untuk dibuat sendiri. Saya harap Anda menikmati membangun dan menggunakan ini sebanyak yang saya miliki!!

Langkah 1:Daftar Bahan dan Cara Kerjanya

1. Bagaimana Karya

Pocket Metal Locator menggunakan empat kumparan pencarian induksi pulsa independen yang ditenagai oleh Arduino Pro Mini. Setiap koil pencarian terdiri dari koil TX dan RX terpisah di mana pulsa diinduksi ke dalam koil TX yang menciptakan medan elektromagnetik di sekitar koil RX. Medan yang berubah menginduksi tegangan ke kumparan RX yang dideteksi dan diperkuat sebelum lebar pulsa sinyal dibaca oleh Arduino.

Algoritme pemulusan dalam kode Arduino digunakan untuk menghilangkan noise dari pulsa yang valid sehingga membuatnya sangat stabil.

Algoritme kalibrasi dalam kode mengambil rata-rata pembacaan selama periode awal yang singkat dan menetapkan serangkaian ambang batas untuk membandingkan sinyal.

Ketika benda logam berada dalam jangkauan medan elektromagnetik, medannya terganggu dan sebagian energi dialihkan dari kumparan RX ke "arus Eddie" yang terbentuk di objek target. Efek parasit dari objek target ini menghasilkan lebar pulsa yang terdeteksi pada koil RX yang berkurang. Pada dasarnya kami mengukur hilangnya daya ke objek target.

Ketika lebar pulsa yang terdeteksi di kumparan RX turun di bawah ambang batas, maka LED akan menyala, bel berbunyi dan motor Umpan Balik Haptic dipicu - tergantung pada ukuran sinyal target yang telah ditentukan.

Sirkuit untuk ini telah berkembang selama setahun terakhir menjadi detektor yang sangat stabil dan berkinerja andal. Konfigurasi dan orientasi kumparan sengaja dirancang untuk memaksimalkan stabilitas dan deteksi kedalaman.

2. Daftar Bahan

  • Ukuran Baterai LiPo 3,7v 350mAh:38mm x 20mm x 7,5mm
  • Lembar Data Pengisi Daya Baterai LiPo USB TP4056
  • Resistor 4.7K untuk membatasi arus pengisian baterai LiPo di bawah 300mA
  • Arduino Pro Mini
  • FTDI USB ke Modul Serial untuk Pemrograman Mini Pro
  • Sirkuit Terintegrasi Komparator Diferensial Quad LM339
  • Papan Vero - 2 buah dipotong menjadi lubang 20x9 dan 34x9 (lihat foto untuk orientasi yang benar)
  • Transistor NPN BC548 x 4
  • Sakelar MOSFET 2N7000 x 5
  • Buzzer Piezo
  • Motor Getaran Koin untuk Umpan Balik Haptik
  • Modul LED RGB WS2812 x 4
  • Resistor 1k x 4
  • Resistor 10k x 4
  • Resistor 47 Ohm x 4
  • Resistor 2.2K x 4
  • Kapasitor Keramik 150pf x 8
  • 0,18uF Kapasitor poliester x 4
  • Gulungan Kawat Tembaga Enamel 0.3mm (biasanya dalam gulungan kira-kira Berat 25g)
  • Sakelar Tombol Tekan yang Dipasang PCB
  • Pistol Lem Panas
  • Mata Bor 10mm
  • Bor Genggam
  • Label Pistol atau Pita Lengket cocok untuk memberi label pada 16 kabel terpisah Kawat pengait
  • Akses ke Printer 3D

3. Operasi Pembanding

Saya memiliki beberapa pertanyaan tentang pengoperasian LM339, jadi saya pikir saya akan memberikan penjelasan yang lebih jelas.

LM339 beroperasi semata-mata sebagai pembanding tegangan, membandingkan tegangan diferensial antara pin positif dan negatif dan mengeluarkan logika impedansi rendah atau tinggi (logika tinggi dengan pullup) berdasarkan polaritas diferensial input.

Dalam rangkaian ini, input positif komparator dihubungkan ke saluran Vcc dan resistor pull-up ke Vcc diterapkan ke output komparator. Pada konfigurasi ini, dalam prakteknya tegangan keluaran komparator tetap tinggi, sampai tegangan masukan pada masukan negatif melebihi 3.5v

Pengoperasian dapat dijelaskan dari Lembar Data LM339 yang menguraikan “rentang tegangan input” antara 0 V hingga Vsup-1.5 V

Ketika IN– dan IN+ keduanya berada dalam rentang mode umum, jika IN– lebih rendah dari IN+ dan tegangan offset, keluarannya adalah impedansi tinggi dan transistor keluaran tidak konduksi

Ketika IN– lebih tinggi dari mode umum dan IN+ dalam mode umum, output rendah dan transistor output tenggelam saat ini. Tautan ke Lembar Data dan penjelasan di bawah ini http://www.ti.com/lit/ds/symlink/lm2901.pdf

lm2901.pdf

Langkah 2:Cetak Kasus

Kasing cetak 3D dilakukan dengan menggunakan 5 cetakan terpisah. Dimensi dan file 3D dapat ditemukan di sini di Thingiverse. Desainnya dipusatkan untuk membuat perangkat mudah dipegang sambil memastikan koil pencarian sedekat mungkin dengan area yang dicari.

Cetak casing dengan hati-hati dan buang sisa plastik. Penting untuk melakukan langkah ini sekarang agar komponen elektronik dapat disejajarkan dalam casing sebelum pemasangan dan pengujian akhir.

Langkah 3:Bangun dan Pasang Search Coils

Ambil pembentuk gulungan yang dicetak dan gulung 25 putaran kawat tembaga ke masing-masing. Pastikan Anda menyisakan 20 cm kawat tembaga ekstra untuk dihubungkan ke unit utama.

Gunakan lubang yang dicetak di pembentuk untuk memungkinkan angin yang konsisten dan orientasi gulungan untuk masing-masing pembentuk. Saat Anda melakukan ini, balikkan yang pertama dan rekatkan secara bertahap ke unit dasar.

Ikuti rakitan foto seperti yang disediakan, hasilnya adalah 8 kumparan dipasang di rakitan kumparan dengan semua kabel diorientasikan secara konsisten, dan cukup panjang untuk terhubung ke unit papan utama di penutup atas.

Gunakan dua blok pemandu kawat yang memiliki lubang untuk setiap gulungan sebagai alas yang dicetak untuk melacak setiap gulungan tertentu.

Saya menempatkan kabel untuk Kumparan Dalam di sepanjang bagian atas dan gulungan luar di sepanjang bagian bawah blok kawat sehingga saya dapat melacak setiap gulungan tertentu yang membuatnya lebih mudah untuk disambungkan ke papan utama.

Langkah 4:Bangun Sirkuit

Unit ini memiliki empat sirkuit utama untuk dibangun secara independen - Papan Pengemudi, Papan Utama, rakitan LED, dan Catu Daya Isi Ulang. Pada langkah ini, kita akan membangun Driver Board dan Main Board.

1. Papan Pengemudi

Gunakan pisau kerajinan untuk memotong sepotong Papan Vero sepanjang lubang 22x11 hasilnya menjadi sepotong Papan Vero dengan orientasi lubang 20x9 sesuai gambar yang disertakan. Yang terbaik adalah mencetak gol melintasi lubang di kedua sisi papan beberapa kali lalu dengan lembut lepaskan papan berlebih. Periksa apakah papan berada di dasar enklosur dengan jarak yang cukup di kedua sisinya.

Dengan menggunakan foto dan mata bor 10mm dengan tangan dengan hati-hati patahkan paku payung yang ditunjukkan di bagian bawah Papan Vero. Ikuti Diagram sirkuit dan tata letak foto komponen untuk merakit papan sirkuit dengan hati-hati untuk memastikan tidak ada trek korsleting.

Sisihkan papan ini untuk pengujian nanti.

2. Papan Utama

Gunakan pisau kerajinan untuk memotong sepotong Papan Vero sepanjang lubang 36x11 hasilnya menjadi sepotong Papan Vero dengan orientasi lubang 34x9 sesuai gambar yang disertakan. Yang terbaik adalah mencetak gol melintasi lubang di kedua sisi papan beberapa kali lalu dengan lembut lepaskan papan berlebih. Periksa apakah papan berada di dasar enklosur dengan jarak yang cukup di kedua sisinya.

Dengan menggunakan foto dan mata bor 10mm dengan tangan dengan hati-hati patahkan paku payung yang ditunjukkan di bagian bawah Papan Vero.

Ikuti Diagram sirkuit dan tata letak foto IC Arduino dan LM339 serta komponen lainnya untuk merakit papan sirkuit dengan hati-hati untuk memastikan tidak ada jalur korsleting.

Sisihkan papan ini untuk pengujian nanti.

Langkah 5:Tambahkan Indikator LED

Saya telah menggunakan LED WS2182 yang memiliki IC built-in yang memungkinkan mereka untuk ditangani oleh Arduino menggunakan tiga kabel terpisah namun berbagai warna dan kecerahan warna dapat dibuat dengan mengirimkan perintah ke LED. Ini dilakukan melalui perpustakaan khusus yang dimuat ke Arduino IDE yang tercakup dalam bagian pengujian.

1. Memasang LED di Tutup Enklosur Coil

Posisikan keempat LED dengan hati-hati agar diorientasikan dengan benar sehingga sambungan VCC dan GND sejajar dan berada di tengah lubang.

Gunakan Lem Panas untuk mengencangkan LED ke posisinya.

2. Menghubungkan LED

Lepaskan dengan hati-hati dan posisikan tiga kabel penghubung inti tunggal sepanjang 25 cm di seluruh kontak LED.

Solder ini ke tempatnya dan pastikan kabel data pusat terhubung dengan kontak IN dan OUT sesuai foto.

3. Pemeriksaan Perataan Huruf

Periksa apakah tutup casing akan rata dengan Coil Enclosure, lalu gunakan Lem Panas untuk menahan kabel pada tempatnya di ujung dasar tutup.

Sisihkan ini untuk pengujian nanti.

Langkah 6:Merakit dan Menguji Unit

1. Mempersiapkan Majelis

Sebelum merakit, kami akan menguji setiap papan secara bertahap untuk mempermudah pemecahan masalah.

Arduino Pro Mini membutuhkan papan serial USB agar dapat diprogram oleh PC Anda. Hal ini memungkinkan papan menjadi lebih kecil dalam ukuran karena tidak memiliki antarmuka serial di atasnya. Untuk memprogram papan ini, Anda perlu berinvestasi untuk mendapatkannya sebagaimana diuraikan dalam daftar bagian.

Sebelum memuat kode Arduino, Anda perlu menambahkan Pustaka "FastLED.h" sebagai pustaka untuk menggerakkan LED WS2182. Serangkaian Jejak Oscilloscope telah disediakan untuk pemecahan masalah jika ada masalah.

Ada juga tangkapan layar dari keluaran data serial IDE menggunakan fungsi Graph Plot yang menunjukkan keluaran lebar pulsa dari masing-masing saluran serta nilai ambang batas. Ini berguna selama pengujian karena Anda dapat melihat apakah setiap saluran berkinerja pada tingkat sensitivitas yang sama.

Saya telah menyertakan dua salinan kode. Satu telah menguji streaming data serial untuk tujuan pemecahan masalah.

CATATAN: Jangan hubungkan unit Baterai LiPo sampai langkah terakhir karena korsleting ini secara tidak sengaja selama perakitan dapat menyebabkan unit menjadi terlalu panas atau bahkan terbakar.

2. Uji Papan Utama

Sebelum menghubungkan papan utama ke apa pun, disarankan untuk memasang Kabel Serial Arduino dan memverifikasi bahwa kode dimuat.

Ini hanya akan menguji bahwa Anda memiliki Arduino secara fisik terhubung dengan benar dan bahwa IDE dan pustaka dimuat. Muat kode melalui IDE yang seharusnya dimuat tanpa kesalahan dan tidak ada asap yang keluar dari komponen apa pun!!

3. Hubungkan Papan Pengemudi

Ikuti diagram sirkuit untuk menghubungkan Papan Pengemudi ke Papan Utama dan posisikan unit secara fisik di dalam kotak untuk memastikan barang-barang pas di dalam enklosur. Ini adalah kasus coba-coba dan membutuhkan ketekunan.

Muat kode melalui IDE yang seharusnya dimuat tanpa kesalahan dan tidak ada asap yang keluar dari komponen apa pun!!

4. Hubungkan Kumparan Ikuti diagram sirkuit untuk menghubungkan Kumparan ke Papan Utama dan posisikan unit secara fisik di dalam kotak untuk memastikan item terpasang dengan benar. Pastikan koil dengan hati-hati sejajar dengan input Papan Driver dan Papan Utama sesuai dengan diagram sirkuit.

Dengan kode uji yang dimuat, port serial akan menampilkan lebar pulsa pada koil penerima di suatu tempat antara 5000 - 7000uS. Ini juga dapat dilihat menggunakan IDE Graph Plotter.

Ini akan memungkinkan Anda untuk memecahkan masalah setiap saluran dan juga melihat efek memindahkan koin di dekat koil pencarian yang akan mengurangi lebar pulsa saat target semakin dekat ke koil pencarian.

Jika Anda memiliki osiloskop, Anda juga dapat memeriksa bentuk gelombang di berbagai tahap sirkuit untuk mendiagnosis masalah.

Setelah semua saluran bekerja sesuai dengan yang diharapkan, posisikan kabel sehingga penutup casing dapat dipasang dan ditutup dengan benar.

5. Hubungkan LED

Ambil tiga kabel dengan hati-hati dari LED Coil Enclosure dan sambungkan ke papan utama. Muat kode dan pastikan LED beroperasi dengan benar. Gunakan lem untuk mengencangkan penutup penutup kumparan pada tempatnya.

Pocket_Metal_Locator_V11__TEST_CODE.zip Pocket_Metal_Locator_V11.zip

Langkah 7:Menghubungkan Baterai Isi Ulang

CATATAN:

1. Jangan sambungkan unit Baterai LiPo sampai langkah terakhir karena secara tidak sengaja korsleting selama perakitan dapat menyebabkan unit menjadi terlalu panas atau bahkan terbakar.

2. Saat menangani baterai dan pengisi daya, pastikan Anda berhati-hati agar tidak membuat sambungan baterai terputus.

3. Baterai LiPo tidak seperti baterai isi ulang lainnya dan pengisian arus berlebih dapat berbahaya, jadi pastikan Anda mengonfigurasi sirkuit pengisian daya dengan benar.

4. Jangan sambungkan Kabel Serial Arduino ke unit saat tombol daya ditekan jika tidak, baterai bisa rusak.

1. Ubah Batas Arus Pengisi Daya

Pocket Metal Locator menggunakan Baterai LiPo yang dapat diisi menggunakan pengisi daya telepon Micro USB. TP4056 USB LiPo Batt Charger Board pertama kali dimodifikasi dengan resistor 4.7K untuk membatasi arus pengisian di bawah 300mA. Petunjuk tentang bagaimana hal ini dapat dilakukan dapat ditemukan di sini.

TP4056.pdf

Ini mengharuskan Anda untuk melepas resistor yang terpasang di permukaan dan menggantinya dengan resistor seperti yang ditunjukkan pada foto. Setelah terpasang, lindungi setiap gerakan resistor yang tidak direncanakan dengan lem tembak.

Sebelum disambungkan ke main board, test charger apakah berfungsi dengan baik dengan menghubungkan charger handphone dengan port Micro USB. Lampu pengisian daya merah akan menyala saat bekerja dengan benar.

2. Pasang Sakelar Daya Tombol Tekan

Pastikan Tombol Tekan dipasang pada posisi yang benar sehingga menonjol melalui bagian tengah tutup enklosur, lalu solder Tombol Tekan pada tempatnya. Pasang kabel antara sakelar tombol Tekan dan Output Pengisi Daya dan saluran VCC pada Arduino sesuai dengan diagram sirkuit.

Saat dipasang dengan benar, menekan sakelar akan mengaktifkan unit.

Perbaiki Baterai pada posisinya menggunakan lem panas dan pastikan soket Micro USB sejajar dengan lubang pada tutup casing sehingga dapat diisi dayanya.

Langkah 8:Pengujian dan Operasi Akhir

1. Perakitan Fisik

Langkah terakhir adalah mengatur ulang kabel dengan hati-hati sehingga kasing akan menutup dengan benar. Gunakan lem panas untuk mengencangkan mainboard ke tutupnya, lalu tutup kembali ke posisinya.

2. Mengoperasikan Unit

Unit beroperasi dengan mengkalibrasi setelah menekan dan menahan tombol daya. Semua LED akan berkedip saat unit siap digunakan. Jauhkan tombol tekan saat mencari. LED berubah dari Biru-Hijau, Merah, Ungu berdasarkan kekuatan objek target. Umpan balik haptic terjadi saat LED berubah menjadi ungu.

Anda tidak siap untuk pergi dan menggunakan aplikasi praktis!!

Kode

  • Pocket_Metal_Locator_V11.ino
Pocket_Metal_Locator_V11.inoC/C++
Pocket Metal Locator kecil yang keren ini cukup sensitif untuk mengidentifikasi paku kecil dan paku payung di kayu dan cukup kompak untuk masuk ke ruang yang canggung sehingga nyaman untuk dibawa dan digunakan untuk mencari logam.

Unit ini memiliki empat koil pencarian independen dan indikator LED warna yang memudahkan untuk menjangkau area pencarian yang lebih besar dengan cepat sekaligus mampu mengidentifikasi target secara akurat.

Perangkat kecil yang rapi ini mengkalibrasi sendiri dengan operasi satu tombol, dapat diisi ulang melalui port USB dan menggunakan LED warna, suara, dan getaran untuk menunjukkan kekuatan target.

Termasuk dalam instruksi adalah semua desain, pengujian, kode, dan file 3D yang diperlukan untuk dibuat sendiri. Saya harap Anda menikmati membangun dan menggunakan ini sebanyak yang saya miliki!!
/* Pocket Metal Locator - Arduino Pro Mini April 2018 TechKiwiGradgetsVersion 11 - Rilis Instruksi Pertama*/// WS2182 Pengaturan Perpustakaan Driver LED#include "FastLED.h "// Berapa banyak led di strip Anda?#tentukan NUM_LEDS 4 // Catatan:LED pertama adalah alamat 0#tetapkan DATA_PIN 11 // Catatan:D11 digunakan untuk mengontrol rantai LED// Tentukan susunan ledsCRGB leds[NUM_LEDS];/ / Variabel Pemulusan untuk LPFconst float alpha =0.85; float smoothednilai1 =1000;float smoothednilai2 =1000;float smoothednilai3 =1000;float smoothednilai4 =1000;int sthreshold =100; // Pembacaan minimum dari fungsi pulseIn memastikan pengambilan sampel di atas noisefloat ledthreshold1 =0,93; // Persentase di bawah garis dasar sebelum menyetel LED Purplefloat ledthreshold2 =0.96; // Persentase di bawah baseline sebelum menyetel LED Redfloat ledthreshold3 =0.99; // Persentase di bawah baseline sebelum menyetel LED Greenfloat ledthreshold4 =0,998; // Persentase di bawah baseline sebelum menyetel LED Biru// Variabel Kalibrasi sampel boolean =false; // jika benar maka jangan ingat ambang batassint calcounter =0; // Digunakan untuk menghitung berapa kali sampel telah diambilint scount =200; // Jumlah pembacaan sebelum kalibrasi hanya sekali setelah power up jumlah sampel =20; // Jumlah sampel yang diambil sebelum dirata-ratakan t1 =100; // Durasi dalam mikrodetik saat LED menyala selama callibrationlong calav1 =0; // Digunakan untuk menghitung rata-rata sepuluh sampel panjang calav2 =0; // Digunakan untuk menghitung rata-rata sepuluh sampel panjang calav3 =0; // Digunakan untuk menghitung rata-rata sepuluh sampel panjang calav4 =0; // Digunakan untuk menghitung rata-rata sepuluh sampelint div1 =0;// Penghitung pembagi untuk jumlah sampel yang diambilint div2 =0;int div3 =0;int div4 =0;// Empat Kanal dilambangkan dengan A,B,C,Dint divA =0;tempA panjang =0;pcounterA panjang =0; // Lebar Pulsa Tanpa Filter Saluran 1int divB =0;tempB panjang =0;pcounterB panjang =0; // Lebar Pulsa Tanpa Filter Saluran 2int divC =0;tempC panjang =0;pcounterC panjang =0; // Lebar Pulsa Tanpa Filter Saluran 1int divD =0;suhu panjang =0;pcounterD panjang =0; // Lebar Pulsa Tanpa Filter Saluran 1int pwindow =7500; // Nilai batas waktu maksimum untuk lebar pulsa// ***************************************** ***********int dly1 =4; // Jangka waktu pin TXR tetap tinggi (typicLLY 4uS)int dly2 =1; // Penundaan setelah pin TXR menjadi RENDAH sebelum membaca mulai membaca durasi pulsa - biasanya 1 uS int dly3 =500; // Penundaan dalam Mikrodetik setelah pengambilan sampel lebar pulsa sebelum memulai siklus berikutnya// ************************************ ****************int ambang batas =15; // Tambahkan ke rata-rata untuk menjadi ambang batas tertentu di mana LED akan menyala (V21 Berubah dari 25 menjadi 20)panjang pulseav =0; // Menyimpan nilai keluaran untuk kalibrasi// Getaran Motor boolean haptic =false; // Bendera digunakan untuk menghidupkan motor getar selama periode waktu int vduration =1; // Jumlah siklus program yang mengaktifkan motor getaran int vcounter =vduration; // v penghitung siklus void setup() {// Vibration Motor/Haptic Feedback pinMode(12,OUTPUT); // Driver Motor Getaran dari Arduino - D10 digitalWrite(12,LOW); // Matikan motor Serial.begin(115200); // Siapkan antarmuka serial untuk output data pengujian// WS2182 LED Driver Setup LEDS.addLeds(leds,NUM_LEDS); // Default jika RGB untuk ini namun dapat bervariasi tergantung pada LED pabrikan LED.setBrightness(5); //Setel kecerahan LED di sini // batasi penarikan saya hingga 1A pada 5v penarikan daya FastLED.setMaxPowerInVoltsAndMilliamps(5.100); FastLED.setDither(0); // Mematikan fungsi Auto Dithering untuk menghilangkan kedipan// Penetapan pin logis Arduino Mini Pro// Nama Pin Logis 2,3,4,5,6,7,8,9 Setara dengan Nama Pin D2-D9 yang Dicetak Pada Papan // Nama Pin Logis 10,11,12,13,14,15,16,17 Setara dengan D10-D13, Nama Pin A0-A3 Dicetak Pada Papan// Piezo Buzzer pinMode (10,OUTPUT); // Driver Piezo Buzzer dari Arduino - D10// Transmit pinMode(2,OUTPUT); // Output pulsa dari Arduino - D2 pinMode(4,OUTPUT); // Output pulsa dari Arduino - D4 pinMode(6,OUTPUT); // Output pulsa dari Arduino - D6 pinMode(8,OUTPUT); // Output pulsa dari Arduino - D8 // Channel A pinMode(3,INPUT); // Sinyal input ke Arduino dari pin 2 pada LM339 - D3// Channel B pinMode(5,INPUT); // Sinyal input ke Arduino dari pin 1 pada LM339 - D5// Channel C pinMode(7,INPUT); // Sinyal input ke Arduino dari pin 14 pada LM339 - D7// Channel D pinMode(9,INPUT); // Sinyal input ke Arduino dari pin 13 pada LM339 - D9 }void loop(){// Pulse and read Coil ------------------------- --------------------// Saluran 1 (titik Tongkat)digitalWrite(2,HIGH); // Atur pin TX ke highdelayMicroseconds(dly1); // Tunda sebelum menyetel rendah pada output pindigitalWrite(2,LOW); // Atur pin TX ke lowdelayMicroseconds(dly2); // Penundaan sebelum pengambilan sampel lebar pulsapcounterA =pulseIn(3,LOW,pwindow);digitalWrite(2,LOW); // Atur pin TX ke LOWdelayMicroseconds(dly3); // Delay sebelum sampling lebar pulsa// Terapkan Low Pass Filter ke sinyal untuk menghaluskan Saluran 1 if (pcounterA>=sthreshold) { smoothedvalue1 =(alpha * smoothedvalue1) + ( (1 - alpha) * pcounterA); } pcounterA =smoothedvalue1;// Saluran 2digitalWrite(4,HIGH); // Atur pin TX ke highdelayMicroseconds(dly1); // Tunda sebelum menyetel rendah pada output pindigitalWrite(4,LOW); // Atur pin TX ke lowdelayMicroseconds(dly2); // Penundaan sebelum pengambilan sampel lebar pulsapcounterB =pulseIn(5,LOW,pwindow);digitalWrite(4,LOW); // Atur pin TX ke LOWdelayMicroseconds(dly3); // Delay sebelum sampling lebar pulsa// Terapkan Low Pass Filter ke sinyal untuk menghaluskan Saluran 2 if (pcounterB>=sthreshold) { smoothedvalue2 =(alpha * smoothedvalue2) + ( (1 - alpha) * pcounterB); } pcounterB =smoothedvalue2;// Saluran 3digitalWrite(6,HIGH); // Atur pin TX ke highdelayMicroseconds(dly1); // Tunda sebelum menyetel rendah pada output pindigitalWrite(6,LOW); // Atur pin TX ke lowdelayMicroseconds(dly2); // Penundaan sebelum pengambilan sampel lebar pulsapcounterC =pulseIn(7,LOW,pwindow);digitalWrite(6,LOW); // Atur pin TX ke LOW//delayMicroseconds(dly3); // Delay sebelum sampling lebar pulsa// Terapkan Low Pass Filter ke sinyal untuk menghaluskan Saluran 3 if (pcounterC>=sthreshold) { smoothedvalue3 =(alpha * smoothedvalue3) + ( (1 - alpha) * pcounterC); } pcounterC =smoothedvalue3;// Saluran 4 digitalWrite(8,HIGH); // Atur pin TX ke highdelayMicroseconds(dly1); // Tunda sebelum menyetel rendah pada output pindigitalWrite(8,LOW); // Atur pin TX ke lowdelayMicroseconds(dly2); // Penundaan sebelum pengambilan sampel lebar pulsapcounterD =pulseIn(9,LOW,pwindow);digitalWrite(8,LOW); // Atur pin TX ke LOWdelayMicroseconds(dly3); // Delay sebelum sampling lebar pulsa// Terapkan Low Pass Filter ke sinyal untuk menghaluskan Saluran 4 if (pcounterD>=sthreshold) { smoothedvalue4 =(alpha * smoothedvalue4) + ( (1 - alpha) * pcounterD); } pcounterD =smoothedvalue4;// Cetak nilai lalu Reset penghitung/* Serial.print(pcounterA); Serial.print(""); Serial.print(calav1); Serial.print(""); Serial.print(pcounterB); Serial.print(""); Serial.print(calav2); Serial.print(""); Serial.print(pcounterC); Serial.print(""); Serial.print(calav3); Serial.print(""); Serial.print(pcounterD); Serial.print(""); Serial.println(calav4);*/// Callibation of Thresholds on Powerup // Tunggu beberapa saat untuk mengatur baseline untuk setiap coil if (sample ==false){ calcounter++; } if ( calcounter> (scount-numsamples) ) { // Tunggu sampai 90 kemudian jumlahkan sampel untuk bersiap menghitung rata-rata if (pcounterA> sthreshold) { calav1 =calav1 + pcounterA; div1++; } if (pcounterB> sthreshold) { calav2 =calav2 + pcounterB; div2++; } if (pcounterC> sthreshold) { calav3 =calav3 + pcounterC; div3++; } if (pcounterD> sthreshold) { calav4 =calav4 + pcounterD; div4++; } } if ((calcounter> scount)&&(sample ==false)){ // Tetapkan ambang batas calav1 =calav1/div1; calav2 =calav2/div2; calav3 =calav3/div3; calav4 =calav4/div4; // LED Flash untuk menunjukkan kalibrasi selesai // 0-3 LED biru[3] =CRGB::Blue; FastLED.show(); penundaan (t1); leds[3] =CRGB::Hitam; led [2] =CRGB::Biru; FastLED.show(); penundaan (t1); led [2] =CRGB::Hitam; leds[1] =CRGB::Biru; FastLED.show(); penundaan (t1); leds[1] =CRGB::Hitam; leds[0] =CRGB::Biru; FastLED.show(); penundaan (t1); leds[0] =CRGB::Hitam; // 3-0 LED hijau[3] =CRGB::Hijau; FastLED.show(); penundaan (t1); leds[3] =CRGB::Hitam; led [2] =CRGB::Hijau; FastLED.show(); penundaan (t1); led [2] =CRGB::Hitam; leds[1] =CRGB::Hijau; FastLED.show(); penundaan (t1); leds[1] =CRGB::Hitam; leds[0] =CRGB::Hijau; FastLED.show(); penundaan (t1); leds[0] =CRGB::Hitam; FastLED.show();// Buzzer Suara // digitalWrite(10,HIGH); // Atur pin output ke high untuk mengaktifkan LED// delay(t1*2); digitalWrite(10,RENDAH); // Atur pin output ke high untuk mengaktifkan LED // Reset sample flag sample =true; penghitung =0; } if (contoh ==benar) { updateLEDs(); }// Umpan Balik Haptic - Jika ambang batas terlampaui, hidupkan motor getar untuk siklus "vduration" if(haptic ==true) { // Jika flag disetel maka hidupkan motor digitalWrite(12,HIGH); // Atur pin output ke high untuk mengaktifkan Vibrate Motor if (vcounter>=1){ vcounter--; // pengurangan counter }else{ digitalWrite(12,LOW); // Atur pin output ke LOW untuk menonaktifkan Motor Getar haptic =false; // Setel ulang tanda getar setelah jumlah siklus vcounter =vduration; // Setel ulang penghitung getaran } } }// Subroutinesvoid updateLEDs() {// Menampilkan hasil// Ungu - Sinyal target terkuat + (Bip Piezo dan Umpan Balik Haptic)// Merah - Tinggi +(Umpan Balik Haptik)// Hijau - Sedang + (Umpan Balik Haptic)// Biru - Sinyal target terlemah// Matikan semua ledsled[0] =CRGB::Black;leds[1] =CRGB::Black;leds[2] =CRGB::Black;leds[3] =CRGB::Hitam;digitalWrite(10,RENDAH); // Atur pin output ke LOW untuk menonaktifkan Piezo SpeakerdigitalWrite(12,LOW); // Atur pin output ke LOW untuk menonaktifkan Motor Bergetar// *************** Saluran 1 if (pcounterA <(calav1*(ledthreshold1))) { // Tampilan Ungu jika kuat led target[3] =CRGB::Ungu; digitalWrite(10,TINGGI); // Atur pin output ke high untuk mengaktifkan Piezo Speaker haptic =true; } elseif (pcounterA <(calav1*(ledthreshold2))) { // Tampilkan Biru untuk led target kekuatan sedang[3] =CRGB::Red; haptik =benar; } elseif (pcounterA <(calav1*(ledthreshold3))) { // Tampilkan Biru untuk led target kekuatan sedang[3] =CRGB::Green; haptik =benar; } elseif (pcounterA <(calav1*(ledthreshold4))) { // Tambahkan poin persentase tambahan ke ambang batas karena sensitivitas led saluran 1[3] =CRGB::Blue; } // Tampilan Saluran 2 jika ((pcounterB   

Suku cadang dan penutup khusus

Thingiverse
This cool little Pocket Metal Locator is sensitive enough to identify small nails and tacks in wood and compact enough to fit into awkward spaces making it convenient to carry and use for metal locating.The unit has four independent search coils and color LED indicators making it easy to cover a larger search area quickly while being able to accurately identify the target.This neat little device is self-calibrating with one button operation, rechargeable through a USB port and uses color LEDs, sound and vibration to indicate target strength.Included in the instructable is all of the designs, testing, code and 3D files required to build on your own. I hope you enjoy building and using this as much as I have!!CAD file on thingiverse.com

Skema

This cool little Pocket Metal Locator is sensitive enough to identify small nails and tacks in wood and compact enough to fit into awkward spaces making it convenient to carry and use for metal locating.

The unit has four independent search coils and color LED indicators making it easy to cover a larger search area quickly while being able to accurately identify the target.

Proses manufaktur

  1. Penyelamat Hidup
  2. 16 Teknik Pandai Besi
  3. Geser Logam
  4. Efektivitas Biaya Meninju Lembaran Logam
  5. Apa itu Meninju Lembaran Logam?
  6. Mesin &Aplikasi Logam Berlubang
  7. Apa itu Pengecoran?
  8. Pembentukan Kumparan Logam:Coil Slitting
  9. Gambaran Umum Lembaran Logam Tipis
  10. Apa itu Meluruskan Lembaran Logam?