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

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Komponen dan perlengkapan

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini
SparkFun Arduino Pro Mini 328 - 5V/16MHz
×1

Alat dan mesin yang diperlukan

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini
Printer 3D (generik)

Tentang proyek ini

Intro: Penyimpan Logam Kantong - Arduino

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Penyimpan Logam Kantong yang keren ini cukup sensitif untuk mengidentifikasi paku dan tumpuk kecil di kayu dan cukup kompak untuk muat di ruang sempit, sehingga nyaman dibawa dan digunakan untuk pencarian logam.

Unit ini memiliki empat coil pencarian independen dan indikator LED warna sehingga mudah untuk mencakup area pencarian yang lebih luas sambil tetap dapat mengidentifikasi target secara akurat.

Perangkat kecil yang rapi ini self-calibrating dengan operasi satu tombol, direcharge melalui port USB dan menggunakan LED warna, suara dan getaran untuk menunjukkan kekuatan target.

Dalam tutorial ini termasuk semua desain, pengujian, kode dan file 3D yang diperlukan untuk membangun sendiri. Saya harap Anda menikmati membangun dan menggunakan ini sebesar saya!!

Langkah 1: Daftar Bahan dan Cara Kerjanya

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

1. Cara Kerja

Penyimpan Logam Kantong menggunakan empat coil pencarian induksi pulsa independen yang didayakan oleh Arduino Pro Mini. Setiap coil pencarian terdiri dari coil TX dan RX terpisah di mana pulsa diinduksi ke coil TX yang menciptakan medan elektromagnetik di sekitar coil RX. Medan yang berubah menginduksi tegangan ke coil RX yang terdeteksi dan difokuskan sebelum lebar pulsa sinyal dibaca oleh Arduino.

Algoritma smoothing dalam kode Arduino digunakan untuk menghilangkan kebisingan dari pulsa yang valid sehingga sangat stabil.

Algoritma kalibrasi dalam kode mengambil rata-rata pembacaan selama periode startup singkat dan menetapkan serangkaian ambang untuk membandingkan sinyal.

Saat objek logam datang dalam jangkauan medan elektromagnetik, medan terganggu dan sebagian energi dialihkan dari coil RX ke "Eddie currents" yang terbentuk dalam objek target. Efensi parasit dari objek target menghasilkan lebar pulsa yang terdeteksi di coil RX berkurang. Pada dasarnya kita mengukur kehilangan daya ke dalam objek target.

Saat lebar pulsa yang terdeteksi di coil RX jatuh di bawah ambang, LED akan menyala, buzzer akan berbunyi dan motor Haptic Feedback akan terpicu - tergantung pada ukuran target yang ditentukan sebelumnya.

Rangkaian ini telah berkembang selama setahun terakhir menjadi detektor yang sangat stabil dan performansi terpercaya. Konfigurasi dan orientasi coil telah dirancang dengan sengaja untuk memaksimalkan stabilitas dan deteksi kedalaman.

2. Daftar Bahan

  • Baterai LiPo 3.7v 350mAh Ukuran: 38mm x 20mm x 7.5mm
  • Charger Baterai LiPo USB TP4056 Data Sheet
  • Resistor 4.7K untuk membatasi arus pengisian baterai LiPo di bawah 300mA
  • Arduino Pro Mini
  • Modul USB ke Serial FTDI untuk Memprogram Mini Pro
  • Integrated Circuit LM339 Quad Differential Comparator
  • Vero Board - 2 potongan berukuran 20x9 lubang dan 34x9 (lihat foto untuk orientasi yang benar)
  • Transistor NPN BC548 x 4
  • MOSFET Switch 2N7000 x 5
  • Buzzer Piezo
  • Motor Getaran Koin untuk Haptic Feedback
  • 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
  • Kapasitor Polyester 0.18uF x 4
  • Gulungan Kawat Tembaga Enamel 0.3mm (biasanya datang dalam gulungan sekitar 25g Berat)
  • Tombol Tekan Mount PCB
  • Pistol Lem Panas
  • Bor 10mm
  • Bor Tangan
  • Pistol Label atau Tape Lengket yang cocok untuk menandai 16 kabel terpisah Kabel sambungan
  • Akses ke Printer 3D

3. Operasi Comparator

Saya telah menerima sejumlah pertanyaan tentang operasi LM339 jadi saya pikir saya akan memberikan penjelasan yang lebih jelas.

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

Dalam rangkaian ini, input positif dari comparator terhubung ke garis Vcc dan resistor pull-up ke Vcc diterapkan ke output comparator. Dalam konfigurasi ini, dalam praktiknya, tegangan output comparator tetap tinggi, hingga tegangan input pada input negatif melebihi 3.5v

Operasi dapat dijelaskan dari Data Sheet LM339 yang menjabarkan "rentang tegangan input" antara 0 V hingga Vsup-1.5 V

Saat kedua IN– dan IN+ berada dalam rentang common-mode, jika IN– lebih rendah dari IN+ dan tegangan offset, output adalah impedansi tinggi dan transistor output tidak mengkonduksi

Saat IN– lebih tinggi dari common mode dan IN+ berada dalam common mode, output rendah dan transistor output menarik arus. Tautan ke Data Sheet dan penjelasan di bawah ini https://www.ti.com/lit/ds/symlink/lm2901.pdf

lm2901.pdf

Langkah 2: Cetak Kotak

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Kotak 3D print dilakukan menggunakan 5 cetakan terpisah. Dimensi dan file 3D dapat ditemukan di sini di Thingiverse. Desain berpusat pada membuat perangkat mudah dipegang sambil memastikan coil pencarian sedekat mungkin dengan area yang dicari.

Cetak dengan hati-hati kotak dan buang plastik berlebih. Penting untuk melakukan langkah ini sekarang sehingga komponen elektronik dapat disejajarkan dalam kotak sebelum pemasangan akhir dan pengujian.

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Langkah 3: Bangun dan Pasang Coil Pencarian

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Ambil cetakan coil yang telah dicetak dan gulirkan 25 putaran kawat tembaga pada masing-masingnya. Pastikan Anda menyisakan kawat tembaga tambahan sekitar 20cm untuk sambungan ke unit utama.

Gunakan lubang yang dicetak dalam cetakan untuk mengaktifkan gulir yang konsisten dan orientasi coil untuk setiap cetakan. Saat Anda melakukannya, balikkan cetakan ke bawah dan secara bertahap lem cetakan ke unit dasar.

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Ikuti rangkaian foto yang disediakan, hasilnya adalah 8 coil yang dipasang dalam rangkaian coil dengan semua kabel selaras secara konsisten, dan cukup panjang untuk terhubung ke papan utama dalam penutup atas.

Gunakan dua blok panduan kabel yang memiliki lubang untuk setiap coil di dasar cetakan untuk melacak setiap coil spesifik.

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Saya meletakkan kabel untuk Inner Coils di atas dan coil luar di bawah blok kabel sehingga saya dapat melacak setiap coil spesifik yang memudahkan untuk terhubung ke papan utama.

Langkah 4: Bangun Rangkaian

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Unit ini memiliki empat rangkaian kunci yang harus dibangun secara independen - Papan Driver, Papan Utama, Rangkaian LED dan Suplai Daya Rechargeable. Dalam langkah ini, kita akan membangun Papan Driver dan Papan Utama.

1. Papan Driver

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Gunakan pisah craft untuk memotong sepotong Vero Board sepanjang lubang 22x11 hasilnya adalah sepotong Vero Board dengan lubang 20x9 yang diorientasi sesuai dengan gambar yang disertakan. Terbaik untuk mencetak di kedua sisi papan beberapa kali lalu dengan lembut pecahkan papan berlebih. Periksa apakah papan berada di dasar kotak dengan cukup ruang di kedua sisi.

Menggunakan foto dan bor 10mm secara hati-hati pecahkan tack yang ditunjukkan di bawah Vero Board. Ikuti Diagram Rangkaian dan tata letak foto komponen untuk merakit papan rangkaian dengan hati-hati untuk memastikan tidak ada jejak yang disingkat.

Simpan papan ini di samping untuk pengujian nanti.

2. Papan Utama

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Gunakan pisah craft untuk memotong sepotong Vero Board sepanjang lubang 36x11 hasilnya adalah sepotong Vero Board dengan lubang 34x9 yang diorientasi sesuai dengan gambar yang disertakan. Terbaik untuk mencetak di kedua sisi papan beberapa kali lalu dengan lembut pecahkan papan berlebih. Periksa apakah papan berada di dasar kotak dengan cukup ruang di kedua sisi.

Menggunakan foto dan bor 10mm secara hati-hati pecahkan tack yang ditunjukkan di bawah Vero Board.

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Ikuti Diagram Rangkaian dan tata letak foto Arduino dan IC LM339 serta komponen lainnya untuk merakit papan rangkaian dengan hati-hati untuk memastikan tidak ada jejak yang disingkat.

Simpan papan ini di samping untuk pengujian nanti.

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Langkah 5: Tambah Indikator LED

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

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

1. Memasang LED di Penutup Kotak Coil

Posisikan empat LED dengan hati-hati sehingga diorientasi dengan benar sehingga koneksi VCC dan GND selaras dan mereka berada di tengah lubang.

Gunakan Lem Panas untuk melekatkan LED ke posisi.

2. Menyalurkan LED

Lepas dan posisi tiga kabel sambungan inti tunggal 25cm di seluruh kontak LED.

Solderkan ke tempat dan pastikan kabel data tengah terhubung dengan kontak IN dan OUT sesuai dengan foto.

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

3. Pemeriksaan Penyelarasan Kotak

Periksa apakah penutup kotak akan menempel dengan Kotak Coil lalu gunakan Lem Panas untuk memegang kabel di ujung dasar penutup.

Simpan ini di samping untuk pengujian nanti.

Langkah 6: Merakit dan Menguji Unit

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

1. Persiapan untuk Pemasangan

Sebelum merakit kita akan menguji setiap papan secara bertahap untuk memudahkan troubleshoot masalah.

Arduino Pro Mini memerlukan modul USB serial agar dapat diprogram oleh PC Anda. Ini memungkinkan papan untuk lebih kecil karena tidak memiliki antarmuka serial pada itu. Untuk memprogram papan ini Anda perlu berinvestasi untuk mendapatkan satu seperti yang diuraikan dalam daftar bagian.

Sebelum memuat kode Arduino Anda perlu menambahkan perpustakaan "FastLED.h" sebagai perpustakaan untuk mengemudi LED WS2182. Serangkaian Lacak Osiloskop telah disediakan untuk troubleshoot jika ada masalah.

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Ada juga tangkapan layar dari output data serial IDE menggunakan fungsi Graph Plot yang menunjukkan output lebar pulsa dari setiap saluran serta nilai ambang. Ini berguna selama pengujian karena Anda dapat melihat apakah setiap saluran berperforma dengan tingkat sensivitas yang sama.

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Saya telah menyertakan dua salinan kode. Salah satu memiliki streaming data serial uji untuk tujuan troubleshooting.

CATATAN: Jangan menghubungkan unit Baterai LiPo sampai langkah terakhir karena secara tidak sengaja menyingkatnya selama pemasangan dapat menyebabkan unit panas atau bahkan menangkap api.

2. Uji Papan Utama

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

Ini hanya akan menguji apakah Anda telah menyambungkan Arduino secara fisik dengan benar dan bahwa IDE dan perpustakaan dimuat. Muat kode melalui IDE yang harus dimuat tanpa kesalahan dan tidak boleh ada asap yang keluar dari komponen apa pun!!

3. Hubungkan Papan Driver

Ikuti diagram rangkaian untuk menghubungkan Papan Driver ke Papan Utama dan secara fisik posisi unit dalam kotak untuk memastikan item muat dalam kotak. Ini adalah kasus coba dan salah dan membutuhkan ketekunan.

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

4. Hubungkan Coils Ikuti diagram rangkaian untuk menghubungkan Coils ke Papan Utama dan secara fisik posisi unit dalam kotak untuk memastikan item muat dengan sesuai. Pastikan dengan hati-hati coil selaras dengan input Papan Driver dan Papan Utama sesuai dengan diagram rangkaian.

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

Ini akan memungkinkan Anda untuk troubleshoot setiap saluran dan juga melihat efek memindahkan koin dekat coil pencarian yang harus mengurangi lebar pulsa saat target semakin dekat ke coil pencarian.

Jika Anda memiliki osiloskop Anda juga dapat memeriksa gelombang di berbagai tahap rangkaian untuk mendiagnosis masalah.

Setelah semua saluran berperforma sesuai dengan yang diharapkan posisi kabel sehingga penutup kotak akan merakit dan menutup dengan benar.

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

5. Hubungkan LED

Ambil dengan hati-hati tiga kabel dari LED Kotak Coil dan hubungkan ke papan utama. Muat kode dan verifikasi LED beroperasi dengan benar. Gunakan lem untuk melekatkan penutup kotak coil ke tempat.

Pocket_Metal_Locator_V11__TEST_CODE.zipPocket_Metal_Locator_V11.zip

Langkah 7: Menghubungkan Baterai Rechargeable

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

CATATAN:

1. Jangan menghubungkan unit Baterai LiPo sampai langkah terakhir karena secara tidak sengaja menyingkatnya selama pemasangan dapat menyebabkan unit panas atau bahkan menangkap api.

2. Saat menangani baterai dan charger pastikan Anda hati-hati tidak menyingkatkan koneksi baterai.

3. Baterai LiPo berbeda dari rechargeable lainnya dan pengisian arus berlebih dapat berbahaya jadi pastikan Anda mengonfigurasi sirkuit pengisian dengan benar.

4. Jangan menghubungkan Kabel Serial Arduino ke unit saat tombol daya ditekan karena baterai dapat rusak.

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

1. Modifikasi Batas Arus Charger

Penyimpan Logam Kantong menggunakan Baterai LiPo yang dapat diisi ulang menggunakan charger telepon Micro USB. Papan Charger Baterai LiPo USB TP4056 pertama kali dimodifikasi dengan resistor 4.7K untuk membatasi arus pengisian di bawah 300mA. Arahan tentang bagaimana ini dapat dilakukan dapat ditemukan di sini.

TP4056.pdf

Ini mengharuskan Anda untuk melepaskan resistor surface mount yang ada dan mengganti dengan resistor seperti yang ditunjukkan dalam foto. Setelah ditempatkan lindungi gerakan yang tidak terduga dari resistor dengan beberapa lem panas.

Sebelum terhubung ke papan utama, uji apakah charger bekerja dengan benar dengan menghubungkan charger telepon dengan port Micro USB. Lampu merah pengisian harus menyala saat bekerja dengan benar.

Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

2. Pasang Tombol Tekan Saklar Daya

Pastikan Tombol Tekan dipasang pada posisi yang benar sehingga melengkung melalui tengah penutup kotak lalu solderkan Tombol Tekan ke tempat. Pasang kabel antara saklar tombol tekan dan Output Charger dan garis VCC pada Arduino sesuai dengan diagram rangkaian.

Saat dipasang dengan benar menekan saklar akan mengaktifkan unit.

Perbaiki Baterai di posisi menggunakan lem panas dan pastikan soket Micro USB selaras dengan lubang di penutup kotak sehingga dapat diisi ulang.

Langkah 8: Pengujian Akhir dan Operasi

1. Pemasangan Fisik

Langkah akhir adalah menyusun ulang kabel dengan hati-hati sehingga kotak akan tertutup dengan benar. Gunakan lem panas untuk melekatkan papan utama ke penutup lalu tutup penutup ke posisi.

2. Mengoperasikan Unit

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

Anda sudah siap untuk pergi dan menggunakan untuk aplikasi praktis!!

Kode

  • Pocket_Metal_Locator_V11.ino
Pocket_Metal_Locator_V11.inoC/C++
Penyimpan Logam Kantong yang keren ini cukup sensitif untuk mengidentifikasi paku dan tumpuk kecil di kayu dan cukup kompak untuk muat di ruang sempit sehingga nyaman dibawa dan digunakan untuk pencarian logam.

Unit ini memiliki empat coil pencarian independen dan indikator LED warna sehingga mudah untuk mencakup area pencarian yang lebih luas sambil tetap dapat mengidentifikasi target secara akurat.

Perangkat kecil yang rapi ini self-calibrating dengan satu tombol operasi, direcharge melalui port USB dan menggunakan LED warna, suara dan getaran untuk menunjukkan kekuatan target.

Dalam instruktable ini termasuk semua desain, pengujian, kode dan file 3D yang diperlukan untuk membangun sendiri. Saya harap Anda menikmati membangun dan menggunakan ini sebesar saya!!
/* Penyimpan Logam Kantong - Arduino Pro Mini April 2018 TechKiwiGradgets Versi 11 - Rilis Instructable Pertama */ // Setup Pustaka Pengemudi LED WS2182 #include "FastLED.h" // Berapa banyak led dalam strip Anda? #define NUM_LEDS 4 // Catatan: LED pertama adalah alamat 0 #define DATA_PIN 11 // Catatan: D11 digunakan untuk mengontrol rantai LED // Definisikan array led CRGB leds[NUM_LEDS]; // Variabel Pelangsing untuk LPF const float alpha = 0.85; float smoothedvalue1 = 1000; float smoothedvalue2 = 1000; float smoothedvalue3 = 1000; float smoothedvalue4 = 1000; int sthreshold = 100; // Pembacaan minimum dari fungsi pulseIn memastikan sampling di atas kebisingan float ledthreshold1 = 0.93; // Persentase di bawah basis sebelum LED diatur ke Ungu float ledthreshold2 = 0.96; // Persentase di bawah basis sebelum LED diatur ke Merah float ledthreshold3 = 0.99; // Persentase di bawah basis sebelum LED diatur ke Hijau float ledthreshold4 = 0.998; // Persentase di bawah basis sebelum LED diatur ke Biru // Variabel Kalibrasi boolean sample = false; // jika true maka tidak rekalkulasi ambang int calcounter = 0; // Digunakan untuk menghitung jumlah kali sampel diambil int scount = 200; // Jumlah pembacaan sebelum mengkalibrasi sekali saja setelah nyala int numsamples = 20; // Jumlah sampel yang diambil sebelum meratanya int t1 = 100; // Durasi dalam mikrodetik LED menyala selama kalibrasi long calav1 = 0; // Digunakan untuk menghitung rata-rata sepuluh sampel long calav2 = 0; // Digunakan untuk menghitung rata-rata sepuluh sampel long calav3 = 0; // Digunakan untuk menghitung rata-rata sepuluh sampel long calav4 = 0; // Digunakan untuk menghitung rata-rata sepuluh sampel int div1 = 0;// Pembagi untuk jumlah sampel yang diambil int div2 = 0; int div3 = 0; int div4 = 0; // Empat Saluran ditandai dengan A,B,C,D int divA = 0; long tempA = 0; long pcounterA = 0; // Lebar Pulsa Tanpa Filter Saluran 1 int divB = 0; long tempB = 0; long pcounterB = 0; // Lebar Pulsa Tanpa Filter Saluran 2 int divC = 0; long tempC = 0; long pcounterC = 0; // Lebar Pulsa Tanpa Filter Saluran 1 int divD = 0; long tempD = 0; long pcounterD = 0; // Lebar Pulsa Tanpa Filter Saluran 1 int pwindow = 7500; // Nilai timeout maksimum untuk lebar pulsa // **************************************************** int dly1 = 4; // Periode waktu pin TXR tetap tinggi (biasanya 4uS) int dly2 = 1; // Jeda setelah pin TXR menjadi LOW sebelum membaca dimulai untuk membaca durasi pulsa - biasanya 1 uS int dly3 = 500; // Jeda dalam Mikrodetik setelah sampling lebar pulsa sebelum memulai siklus berikutnya // **************************************************** int threshdiff = 15; // Tambahkan ke rata-rata untuk menjadi ambang spesifik di mana LED akan menyala (Diubah V21 dari 25 menjadi 20) long pulseav = 0; // Menyimpan nilai output untuk kalibrasi // Motor Getaran boolean haptic = false; // Bendera untuk menyala motor getaran selama periode waktu int vduration = 1; // Jumlah siklus program motor getaran diaktifkan int vcounter = vduration; // v cycle counter void setup() { // Pin Motor Getaran/Umpan Balik Haptic pinMode(12,OUTPUT); // Pengemudi Motor Getaran dari Arduino - D10 digitalWrite(12,LOW); // Matikan motor Serial.begin(115200); // Menyiapkan antarmuka serial untuk output data uji // Setup Pengemudi LED WS2182 LEDS.addLeds<WS2812,DATA_PIN,GRB>(leds,NUM_LEDS); // Default jika RGB untuk ini namun dapat bervariasi tergantung pada produsen LED LEDS.setBrightness(5); //Set kecerahan LED di sini // batasi pemakaian saya ke 1A pada 5v daya FastLED.setMaxPowerInVoltsAndMilliamps(5,100); FastLED.setDither(0); // Matikan fungsi Auto Dithering untuk menghilangkan berkedip // Penugasan pin logis Arduino Mini Pro // Nama Pin Logis 2,3,4,5,6,7,8,9 Setara dengan D2-D9 Nama Pin Tercetak pada Papan // Nama Pin Logis 10,11,12,13,14,15,16,17 Setara dengan D10-D13, A0-A3 Nama Pin Tercetak pada Papan // Buzzer Piezo pinMode(10,OUTPUT); // Pengemudi Buzzer Piezo dari Arduino - D10 // Pin 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 // Saluran A pinMode(3,INPUT); // Input sinyal ke Arduino dari pin 2 pada LM339 - D3 // Saluran B pinMode(5,INPUT); // Input sinyal ke Arduino dari pin 1 pada LM339 - D5 // Saluran C pinMode(7,INPUT); // Input sinyal ke Arduino dari pin 14 pada LM339 - D7 // Saluran D pinMode(9,INPUT); // Input sinyal ke Arduino dari pin 13 pada LM339 - D9 } void loop(){ // Pulsa dan baca Coil --------------------------------------------- // Saluran 1 (titik Tongkat) digitalWrite(2,HIGH); // Set pin TX ke tinggi delayMicroseconds(dly1); // Jeda sebelum menyetel rendah pada pin output digitalWrite(2,LOW); // Set pin TX ke rendah delayMicroseconds(dly2); // Jeda sebelum sampling lebar pulsa pcounterA = pulseIn(3,LOW,pwindow); digitalWrite(2,LOW); // Set pin TX ke LOW delayMicroseconds(dly3); // Jeda sebelum sampling lebar pulsa // Terapkan Low Pass Filter pada sinyal untuk melangsingkan Saluran 1 if (pcounterA >= sthreshold) { smoothedvalue1 = (alpha * smoothedvalue1) + ( (1 - alpha) * pcounterA); } pcounterA = smoothedvalue1; // Saluran 2 digitalWrite(4,HIGH); // Set pin TX ke tinggi delayMicroseconds(dly1); // Jeda sebelum menyetel rendah pada pin output digitalWrite(4,LOW); // Set TX ke rendah delayMicroseconds(dly2); // Jeda sebelum sampling lebar pulsa pcounterB = pulseIn(5,LOW,pwindow); digitalWrite(4,LOW); // Set pin TX ke LOW delayMicroseconds(dly3); // Jeda sebelum sampling lebar pulsa // Terapkan Low Pass Filter pada sinyal untuk melangsingkan Saluran 2 if (pcounterB >= sthreshold) { smoothedvalue2 = (alpha * smoothedvalue2) + ( (1 - alpha) * pcounterB); } pcounterB = smoothedvalue2; // Saluran 3 digitalWrite(6,HIGH); // Set pin TX ke tinggi delayMicroseconds(dly1); // Jeda sebelum menyetel rendah pada pin output digitalWrite(6,LOW); // Set TX ke rendah delayMicroseconds(dly2); // Jeda sebelum sampling lebar pulsa pcounterC = pulseIn(7,LOW,pwindow); digitalWrite(6,LOW); // Set pin TX ke LOW //delayMicroseconds(dly3); // Jeda sebelum sampling lebar pulsa // Terapkan Low Pass Filter pada sinyal untuk melangsingkan Saluran 3 if (pcounterC >= sthreshold) { smoothedvalue3 = (alpha * smoothedvalue3) + ( (1 - alpha) * pcounterC); } pcounterC = smoothedvalue3; // Saluran 4 digitalWrite(8,HIGH); // Set pin TX ke tinggi delayMicroseconds(dly1); // Jeda sebelum menyetel rendah pada pin output digitalWrite(8,LOW); // Set TX ke rendah delayMicroseconds(dly2); // Jeda sebelum sampling lebar pulsa pcounterD = pulseIn(9,LOW,pwindow); digitalWrite(8,LOW); // Set pin TX ke LOW delayMicroseconds(dly3); // Jeda sebelum sampling lebar pulsa // Terapkan Low Pass Filter pada sinyal untuk melangsingkan Saluran 4 if (pcounterD >= sthreshold) { smoothedvalue4 = (alpha * smoothedvalue4) + ( (1 - alpha) * pcounterD); } pcounterD = smoothedvalue4; // Cetak nilai lalu Reset counter /* 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); */ // Kalibrasi Ambang pada Nyala // Tunggu selama waktu untuk menetapkan basis untuk setiap coil if (sample == false){ calcounter++; } if ( calcounter > (scount-numsamples) ) { // Tunggu 90 lalu tambahkan sampel untuk menyiapkan 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 calav1 = calav1/div1; calav2 = calav2/div2; calav3 = calav3/div3; calav4 = calav4/div4; // Kedipkan LED untuk menunjukkan kalibrasi selesai // 0-3 Biru leds[3] = CRGB::Blue; FastLED.show(); delay(t1); leds[3] = CRGB::Black; leds[2] = CRGB::Blue; FastLED.show(); delay(t1); leds[2] = CRGB::Black; leds[1] = CRGB::Blue; FastLED.show(); delay(t1); leds[1] = CRGB::Black; leds[0] = CRGB::Blue; FastLED.show(); delay(t1); leds[0] = CRGB::Black; // 3-0 Hijau leds[3] = CRGB::Green; FastLED.show(); delay(t1); leds[3] = CRGB::Black; leds[2] = CRGB::Green; FastLED.show(); delay(t1); leds[2] = CRGB::Black; leds[1] = CRGB::Green; FastLED.show(); delay(t1); leds[1] = CRGB::Black; leds[0] = CRGB::Green; FastLED.show(); delay(t1); leds[0] = CRGB::Black; FastLED.show.; // Bunyikan Buzzer // digitalWrite(10,HIGH); // Set pin output ke tinggi untuk mengaktifkan LED // delay(t1*2); digitalWrite(10,LOW); // Set pin output ke tinggi untuk mengaktifkan LED // Reset bendera sampel sample = true; calcounter = 0; } if (sample == true) { updateLEDs(); } // Umpan Balik Getaran - Jika ambang terlampaui nyalakan motor getaran selama "vduration" siklus if(haptic == true) { // Jika bendera diatur maka nyalakan motor digitalWrite(12,HIGH); // Set pin output ke tinggi untuk mengaktifkan Motor Getar if (vcounter >= 1){ vcounter--; // dekremen counter }else{ digitalWrite(12,LOW); // Set pin output ke LOW untuk menonaktifkan Motor Getar haptic = false; // Reset bendera getaran setelah jumlah siklus vcounter = vduration; // Reset counter getaran } } } // Subrutin void updateLEDs() { // Tampilkan hasil // Ungu - Sinyal target terkuat + (Bunyikan Piezo dan Umpan Balik Getaran) // Merah - Tinggi +(Umpan Balik Getaran) // Hijau - Sedang +(Umpan Balik Getaran) // Biru - Sinyal target terlemah // Matikan semua LED leds[0] = CRGB::Black; leds[1] = CRGB::Black; leds[2] = CRGB::Black; leds[3] = CRGB::Black; digitalWrite(10,LOW); // Set pin output ke LOW untuk menonaktifkan Speaker Piezo digitalWrite(12,LOW); // Set pin output ke LOW untuk menonaktifkan Motor Getar // *************** Saluran 1 if (pcounterA < (calav1*(ledthreshold1))) { // Tampilkan Ungu jika target kuat leds[3] = CRGB::Purple; digitalWrite(10,HIGH); // Set pin output ke tinggi untuk mengaktifkan Speaker Piezo haptic = true; } else if (pcounterA < (calav1*(ledthreshold2))) { // Tampilkan Biru untuk target kekuatan sedang leds[3] = CRGB::Red; haptic = true; } else if (pcounterA < (calav1*(ledthreshold3))) { // Tampilkan Biru untuk target kekuatan sedang leds[3] = CRGB::Green; haptic = true; } else if (pcounterA < (calav1*(ledthreshold4))) { // Tambahkan persentase tambahan ke ambang karena sensivitas saluran 1 leds[3] = CRGB::Blue; } // Tampilan Saluran 2 if ((pcounterB < calav2*ledthreshold1 )) { // Tampilkan Hijau jika target kuat leds[2] = CRGB::Purple; digitalWrite(10,HIGH); // Set pin output ke tinggi untuk mengaktifkan Speaker Piezo haptic = true; } else if ((pcounterB < calav2*ledthreshold2 )) { // Tampilkan Biru untuk target kekuatan sedang leds[2] = CRGB::Red; haptic = true; } else if ((pcounterB < calav2*ledthreshold3 )) { // Tampilkan Biru untuk target kekuatan sedang leds[2] = CRGB::Green; haptic = true; } else if ((pcounterB < calav2*ledthreshold4 )) { // Tampilkan Biru untuk target kekuatan sedang leds[2] = CRGB::Blue; } // Tampilan Saluran 3 if ((pcounterC < calav3*ledthreshold1 )) { // Tampilkan Hijau jika target kuat leds[1] = CRGB::Purple; digitalWrite(10,HIGH); // Set pin output ke tinggi untuk mengaktifkan Speaker Piezo haptic = true; } else if ((pcounterC < calav3*ledthreshold2 )) { // Tampilkan Biru untuk target kekuatan sedang leds[1] = CRGB::Red; haptic = true; } else if ((pcounterC < calav3*ledthreshold3 )) { // Tampilkan Biru untuk target kekuatan sedang leds[1] = CRGB::Green; haptic = true; } else if ((pcounterC < calav3*ledthreshold4 )) { // Tampilkan Biru untuk target kekuatan sedang leds[1] = CRGB::Blue; } // Tampilan Saluran 4 if ((pcounterD < calav4*ledthreshold1 )) { // Tampilkan Hijau jika target kuat leds[0] = CRGB::Purple; digitalWrite(10,HIGH); // Set pin output ke tinggi untuk mengaktifkan Speaker Piezo haptic = true; } else if ((pcounterD < calav4*ledthreshold2 )) { // Tampilkan Biru untuk target kekuatan sedang leds[0] = CRGB::Red; haptic = true; } else if ((pcounterD < calav4*ledthreshold3 )) { // Tampilkan Biru untuk target kekuatan sedang leds[0] = CRGB::Green; haptic = true; } else if ((pcounterD < calav4*ledthreshold4 )) { // Tampilkan Biru untuk target kekuatan sedang leds[0] = CRGB::Blue; } FastLED.show(); } 

Bagian dan Kotak Khusus

Thingiverse
Penyimpan Logam Kantong yang keren ini cukup sensitif untuk mengidentifikasi paku dan tumpuk kecil di kayu dan cukup kompak untuk muat di ruang sempit sehingga nyaman dibawa dan digunakan untuk pencarian logam. Unit ini memiliki empat coil pencarian independen dan indikator LED warna sehingga mudah untuk mencakup area pencarian yang lebih luas sambil tetap dapat mengidentifikasi target secara akurat. Perangkat kecil yang rapi ini self-calibrating dengan satu tombol operasi, direcharge melalui port USB dan menggunakan LED warna, suara dan getaran untuk menunjukkan kekuatan target. Dalam instruktable ini termasuk semua desain, pengujian, kode dan file 3D yang diperlukan untuk membangun sendiri. Saya harap Anda menikmati membangun dan menggunakan ini sebesar saya!!CAD file on thingiverse.com

Skematik

Penyimpan Logam Kantong yang keren ini cukup sensitif untuk mengidentifikasi paku dan tumpuk kecil di kayu dan cukup kompak untuk muat di ruang sempit sehingga nyaman dibawa dan digunakan untuk pencarian logam.

Unit ini memiliki empat coil pencarian independen dan indikator LED warna sehingga mudah untuk mencakup area pencarian yang lebih luas sambil tetap dapat mengidentifikasi target secara akurat.Penyimpan Logam Kantong – Detektor Logam Daya Arduino Pro Mini

Proses manufaktur

  1. Pemantau Suhu Mobil Arduino – Mencegah Stroke Panas pada Anak
  2. Menguasai Pande Besi: 16 Teknik Esensial untuk Pemula hingga Profesional
  3. Solusi Pemotongan Logam Presisi untuk Baja & Aluminium
  4. Punching Lembar Logam: Keunggulan Hemat Biaya untuk Manufaktur Modern
  5. Memahami Punching Lembar Logam: Proses, Alat, dan Aplikasi
  6. Mesin Logam Berlubang Tinggi Presisi & Aplikasinya
  7. Understanding Foundries: Where Metal Becomes the Building Blocks of Modern Industry
  8. Menguasai Pemotongan Gulungan Logam: Pemotongan Presisi Gulungan Logam
  9. Lemaran Tipis: Aplikasi Serbaguna Stainless Steel
  10. Meluruskan Lemaran: Apa Itu & Mengapa Penting