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

Detektor Logam Induksi Pulsa Berbasis Arduino DIY

Komponen dan persediaan

Arduino Nano R3
× 1
Modul Bluetooth HC-05
× 1
PNP Transistor Serbaguna
× 1
NPN Transistor Serbaguna
× 1
N-Channel MOSFET Daya
× 1
Penguat Operasional, Op Amp + Komparator + Referensi
× 1
1N4148 – Pengalihan Cepat Tujuan Umum
× 2
Kapasitor 10 F
× 1
Kapasitor 1 F
× 1
Potensiometer Putaran Tunggal- 100k ohm
× 1
Potensiometer Putaran Tunggal-47k
× 1
12 resistor dengan nilai berbeda
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)

Tentang proyek ini

Sistem Pulse Induction (PI) menggunakan kumparan tunggal sebagai pemancar dan penerima. Teknologi ini mengirimkan arus (pulsa) yang kuat dan pendek melalui gulungan kawat. Setiap pulsa menghasilkan medan magnet singkat. Ketika pulsa berakhir, medan magnet membalikkan polaritas dan runtuh dengan sangat tiba-tiba, menghasilkan lonjakan listrik yang tajam. Lonjakan ini berlangsung beberapa mikrodetik dan menyebabkan arus lain mengalir melalui koil. Arus ini disebut pulsa pantul dan sangat pendek, hanya berlangsung sekitar 30 mikrodetik. Pulsa lain kemudian dikirim dan proses berulang. Jika sepotong logam masuk ke dalam jangkauan garis medan magnet, kumparan penerima dapat mendeteksi perubahan amplitudo dan fase dari sinyal yang diterima. Besarnya perubahan amplitudo dan perubahan fasa merupakan indikasi untuk ukuran dan jarak logam, dan juga dapat digunakan untuk membedakan antara logam besi dan non-besi.

Saya menemukan contoh detektor PI yang bagus di situs N.E.C.O. proyek. Detektor logam ini merupakan simbiosis Arduino dan Android. Di Play Store Anda dapat mengunduh versi gratis aplikasi "Spirit PI", yang berfungsi penuh, tetapi Anda juga dapat membeli versi pro yang memiliki beberapa opsi hebat. Komunikasi antara smartphone dan arduino dilakukan dengan modul bluetooth HC 05, tetapi Anda dapat menggunakan adaptor bluetooth apa pun yang harus Anda gunakan untuk mengubah baud rate menjadi 115200. Skema ini diberikan pada gambar di bawah. Saya membuat beberapa modifikasi kecil pada skema asli untuk meningkatkan fitur perangkat. Anda dapat menemukan skema asli di N.E.C.O.-s web:

https://neco-desarollo.es/pirat-wireless-metal-detector

Di tempat resistor 150 ohm, saya menempatkan potensiometer trimer dengan nilai 47 Kohm. Trimer ini mengatur arus yang melalui kumparan. Dengan meningkatkan nilainya, arus yang melalui kumparan meningkat dan sensitivitas perangkat meningkat. Modifikasi kedua adalah pot pemangkas 100kOhm, bukan resistor 62k pada aslinya. Dengan trimer ini, kami mengatur tegangan sekitar 4.5V ke input A0 pada Arduino, karena saya perhatikan bahwa untuk penguat operasional dan tegangan operasi yang berbeda, nilai resistor ini harus berbeda.

Dalam kasus khusus ini, untuk menyalakan perangkat saya menggunakan baterai lithium ion 4 yang dihubungkan secara seri sehingga tegangannya lebih besar dari 15v. Karena Arduino menerima tegangan input maksimum 12V, saya memasang stabilizer untuk 5V (7805) yang dipasang pada heatsink kecil untuk menyalakan Arduino langsung ke pin +5v.

Kumparan terbuat dari kawat tembaga yang diisolasi dengan diameter 0,4 mm dan berisi 25 belitan berbentuk lingkaran dengan diameter 19 sentimeter. kumparan (elemen harus direkatkan dengan lem, dan tidak ada sekrup)

Seperti yang Anda lihat di video, koin logam kecil dapat dideteksi pada jarak 10-15 sentimeter, sedangkan benda logam yang lebih besar dari 30-40 sentimeter dan lebih. Ini adalah hasil yang sangat baik, mengingat pembuatan dan pengaturan perangkat relatif sederhana.

Kode

  • kode
kodeArduino
#include //#include //int bluetoothTx =5;//int bluetoothRx =6;//blutoth modul terminal RX//SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);# define pulsePine 2int timer =200;const int button1 =12;int buttonState1 =0;char data;//Variabel EEPROMint addr_duty =0;int addr_freq =1;int stored_value;int duty_cycle;int duty_cycle_temp;int freq;int freq_temp;int duty_def_value =10;int freq_def_value =60;//Variabel keseimbanganint value_count =0;int value_count_def =100;int balance_value =0;int balance_value_temp =0;//****unsigned long startMillis; Milis arus panjang yang tidak ditandatangani; periode panjang =100000; //nilainya adalah sejumlah mikrodetik//Pengukuran level dari batteryfloat resistencia1 =101000; //Resistensi 100K para medir la tencion (Voltios)/Resistensi 100k untuk uji voltsfloat resistencia2 =10000; //Resistensi 10k untuk tegangan menengah (Voltios)/Resistensi 10k untuk pengujian voltsfloat const arefVolt=4.8f; //pin "4.9v" SET NILAI PERSIS DI SINIfloat voutv;float vinv;unsigned long startMillisVolts; unsigned long currentMillisVolts;periode panjangVolts =2000; //nilainya adalah jumlah microsecondsint sensorValue;void setup() { //analogReference(INTERNAL); Serial.begin(115200); readFromStorage(addr_duty); duty_cycle =nilai_tersimpan; readFromStorage(addr_freq); freq =nilai_tersimpan; if(duty_cycle ==0 || duty_cycle ==255){ writeToStorage(duty_def_value,addr_duty); readFromStorage(addr_duty); duty_cycle =nilai_tersimpan; } if(freq ==0 || frekuensi ==255 ){ writeToStorage(freq_def_value,addr_freq); readFromStorage(addr_freq); freq =nilai_tersimpan; } pinMode(Pine pulsa, OUTPUT); }void loop() { currentMillis =mikro(); currentMillisVolts =milis(); if(Serial.available()>0) { data =Serial.read(); setDutyAndFreq (data); } if (currentMillis - startMillis>=periode) { periode =1000000 / freq; // Serial.println(titik); digitalWrite(pulsePine, TINGGI); duty_cycle_temp =siklus_tugas * 10; delayMicroseconds(duty_cycle_temp); digitalWrite(Pine pulsa, RENDAH); //sensorValue =analogRead(A0); for(int i =0;i <3; i++){ sensorValue =analogRead(A0);}delayMicroseconds(10);sensorValue =analogRead(A0);sensorValue =sensorValue / 5; kirimData(); startMillis =saatMillis; } // Lectura voltios if (currentMillisVolts - startMillisVolts>=periodVolts) {lecturaVoltios();//Serial.println("Lectura voltios");startMillisVolts =currentMillisVolts; } } void writeToStorage(int valor,int addr) { EEPROM.write(addr, valor); } int readFromStorage(int addr) { nilai_tersimpan =EEPROM.read(addr); kembalikan nilai_tersimpan; } void setDutyAndFreq (char valor) { //"n" valor para aumentar duty cycle //"m" valor para disminuir duty cycle //"j" valor para aumentar la frequencia //"k" valor para des,inuir la frequencia //"+" valor para aumentar el balance //"-" valor para desminuir el balance if(valor =='n') { // Serial.println("n Diterima"); readFromStorage(addr_duty); duty_cycle =nilai_tersimpan; duty_cycle =duty_cycle + 1; writeToStorage(duty_cycle,addr_duty); } else if(valor =='m') { // Serial.println("m Diterima"); readFromStorage(addr_duty); duty_cycle =nilai_tersimpan; duty_cycle =duty_cycle - 1; writeToStorage(duty_cycle,addr_duty); } else if(keberanian =='j') { // Serial.println("j Diterima"); readFromStorage(addr_freq); freq =nilai_tersimpan; frekuensi =frekuensi + 10; writeToStorage(frekuensi,addr_freq); } else if(keberanian =='k') { // Serial.println("k Diterima"); readFromStorage(addr_freq); freq =nilai_tersimpan; frekuensi =frekuensi - 10; writeToStorage(frekuensi,addr_freq); } else if(keberanian =='p') { // Serial.println("m Diterima"); writeToStorage(0,addr_freq); writeToStorage(0,addr_duty); } } //Volt functionvoid lecturaVoltios(){ vinv=0.0f; voutv=0.0f; for (int i=0;i <100;i++){ voutv =(analogRead(A7) * arefVolt) / 1023; //Lee el voltaje de entrada vinv +=voutv / (resistencia2 / (resistencia1 + resistencia2)); //Formula del pembagi resistivo para el voltaje final if(vinv <0.9){ vinv=0.0f; } }vinv =vinv/100;}void sendData() { /* Serial.print("<"); Serial.print(Nilai sensor); Serial.print("/"); Serial.print(frekuensi); Serial.print("/"); Serial.print( duty_cycle); Serial.print("/"); Serial.print(vinv); Serial.print(">"); Serial.println();*/ String data ="<"; data +=nilaisensor; data +="/"; data +=frekuensi; data +="/"; data +=siklus_tugas; data +="/"; data +=vinv; data +=">"; /* bluetooth.print("<"); bluetooth.print (nilai sensor); bluetooth.print("/"); bluetooth.print(frekuensi); bluetooth.print("/"); bluetooth.print( duty_cycle); bluetooth.print("/"); bluetooth.print(vinv); bluetooth.print(">");*/ Serial.println(data); }

Skema


Proses manufaktur

  1. Voltmeter DIY Menggunakan Arduino dan Smartphone
  2. Pixie:Jam Tangan NeoPixel Berbasis Arduino
  3. Detektor Frekuensi Audio
  4. Skateboard Realitas Virtual DIY
  5. Otomata Seluler berbasis Arduino dan OLED
  6. DIY Arduino RADIONICS Treatment MMachine
  7. Simulator Balap Gerak 2D DIY
  8. Detektor Jangkauan Ultrasonik Dengan Arduino
  9. Sistem Keamanan Berbasis Arduino
  10. Detektor Petir untuk Arduino