Arduino üzerinde kendin yap ev yapımı yüksek hassasiyetli metal dedektörü. Arduino'daki dürtü metal dedektörüm

Bir keresinde, farklı derecelerde verimlilikte birkaç metal dedektörü kendi ellerimle yaptıktan sonra, Arduino devresinin bu yönde nasıl çalıştığını incelemek istedim.

Bir metal detektörü kendi ellerinizle nasıl monte edeceğinize dair bazı güzel örnekler var. Ancak, genellikle analog sinyali işlemek için oldukça fazla sayıda harici bileşene ihtiyaç duyarlar veya çıkış hassasiyeti oldukça zayıftır.

Darbeli metal dedektörleri düşündüğümüzde, arama bobini ile ilişkili sinyallerdeki küçük voltaj değişimlerinin nasıl tespit edileceği ana konu olmaktadır. Bu değişiklikler genellikle çok küçüktür. En belirgin yaklaşım, ATmega328 analog girişlerini kullanmaktır. Ancak teknik özelliklere bakıldığında iki ana sorun vardır: bunlar çoğunlukla yavaştır ve çözünürlük (çoğu zaman) düşüktür.

Öte yandan, mikrodenetleyici tabanlı bir metal dedektörü 16 MHz'de çalışır ve saat frekansı kullanırken oldukça iyi senkronizasyon yeteneklerine, yani 0,0625 µs çözünürlüğe sahiptir. Bu nedenle, okumak için bir analog giriş kullanmak yerine, küçük dinamik voltaj değişikliklerini algılamanın en kolay yolu, sabit bir referans voltajında ​​zaman içindeki voltaj düşüşündeki değişimi karşılaştırmaktır.

Bu amaçla ATmega328, D6 ve D7 arasında bir dahili karşılaştırıcının uygun özelliklerine sahiptir. Bu karşılaştırıcı, olayların hassas bir şekilde işlenmesine olanak tanıyan bir kesmeyi tetikleme yeteneğine sahiptir. Millis() ve micos() gibi özenle kodlanmış zamanlama rutinleriyle birlikte kullanan ve ATmega328'in çok daha yüksek çözünürlüklü dahili zamanlayıcısını kullanan Arduino, bu tür bir metal dedektörü için harika bir temeldir.

Bu nedenle, kaynak kodundan bahsetmişken, girişlerin polaritesini "tersine çevirecek" bir dahili karşılaştırıcı programlamak ve değişikliklerin sıklığını değiştirmek için dahili sayacı olabildiğince hızlı kullanmak iyi bir başlangıç ​​olacaktır.

Arduino için kodun son hali:

// Gerekli tüm ön değişkenlerin tanımlanması vb. ve kayıtların ayarlanması unsigned char clockSelectBits = _BV(CS10); // ön ölçek yok, tam xtal geçersiz kurulum() ( pinMode(6,INPUT); // + karşılaştırıcı - onları INPUT olarak ayarlayarak, // yüksek empedanslı pinMode(7,INPUT); // - karşılaştırıcının - onları GİRİŞ olarak ayarlayarak, // yüksek empedans cli() olarak ayarlanırlar; // stop interrupt'ları TCCR1A = 0; // tüm TCCR1A kaydını 0'a ayarlar TCCR1B = 0; // TCCR1B için aynı TCNT1 = 0 ; // sayaç değerini 0 olarak başlat; TCCR1B |= saatSelectBits; // ön ölçekleyiciyi ayarlar ve saati başlatır TIMSK1 = _BV(TOIE1); // zamanlayıcı taşma kesmesini etkinleştirir bit sei(); // kesmelere izin ver ACSR = (0<< ACD) | // Analog Comparator: Enabled (0 << ACBG) | // Analog Comparator Bandgap Select: AIN0 is applied to the positive input (0 << ACO) | // Analog Comparator Output: Off (1 << ACI) | // Analog Comparator Interrupt Flag: Clear Pending Interrupt (1 << ACIE) | // Analog Comparator Interrupt: Enabled (0 << ACIC) | // Analog Comparator Input Capture: Disabled (0 << ACIS1 | 0 << ACIS0 // interrupt on output toggle // (0 << ACIS1 | 1 << ACIS0 // reserved // (1 << ACIS1 | 0 << ACIS0 // interrupt on falling output edge // (1 << ACIS1 | 1 << ACIS0 // interrupt on rising input edge ; } // this routine is called every time the comparator creates an interrupt ISR(ANALOG_COMP_vect) { oldSREG=SREG; cli(); timeStamp=TCNT1; SREG = oldSREG; } // this routine is called every time there is an overflow in internal counter ISR(TIMER1_OVF_vect){ timer1_overflow_count++; } // this routine is used to reset the timer to 0 void resetTimer(void){ oldSREG = SREG; cli(); // Disable interrupts TCNT1 = 0; //initialize counter value to 0 SREG = oldSREG; // Restore status register TCCR1B |= clockSelectBits; // sets prescaler and starts the clock timer1_overflow_count=0; // resets overflow counter }

Tabii ki, bu fikir tamamen yeni değil. Bu kodun ana gövdesi farklı olabilir. TPIMD gibi başka bir yere bakmayı deneyin.

Adım 1: Arduino Endüktif Dedektör Fikri - Döndürme Bobini


Fikir, Arduino'yu tıpkı TPIMD gibi bir darbe indüksiyon detektörü olarak kullanmaktır, çünkü bozunma eğrisi fikri çok iyi çalışıyor gibi görünüyor. Darbeli endüksiyon dedektörlerinin sorunu, çalışmak için genellikle farklı voltajlara ihtiyaç duymalarıdır. Bobini beslemek için bir voltaj ve sönümleme eğrisini işlemek için ayrı bir voltaj. Bu iki voltaj kaynağı, darbeli endüksiyon dedektörleri oluşturma sürecini her zaman karmaşık hale getirir.

PI dedektöründeki bobin gerilimi göz önünde bulundurularak ortaya çıkan eğri iki farklı aşamaya ayrılabilir. İlk aşama, bobini besleyen ve bir manyetik alan (1) oluşturan impulsun kendisidir. İkinci aşama, bir voltaj tepe noktasıyla başlayan ve ardından hızla "güçsüz" bir bobin voltajına(2) dönüşen bir voltaj azalma eğrisidir.

Sorun, bobinin darbeden sonra polaritesini tersine çevirmesidir. Momentum pozitifse (ekteki şekilde Var 1.), azalma eğrisi negatiftir. Nabız negatifse, azalma eğrisi pozitif olacaktır (ekteki şekilde Var 2.).

Bu temel sorunu çözmek için, darbeden sonra bobinin elektronik olarak "çevrilmesi" gerekir. Bu durumda momentum pozitif olabilir ve sönüm eğrisi de pozitif kalacaktır.

Bunu yapmak için, darbeden sonra bobin Vcc ve GND'den izole edilmelidir. Bu noktada, sadece sönümleme direncinden geçen akım vardır. Bu izole edilmiş bobin ve sönümleme direnci sistemi, herhangi bir referans voltajına "hedeflenebilir". Bu teorik olarak birleşik bir pozitif eğri yaratacaktır (çizimin altına bakın).

Bu pozitif eğri, zayıflama voltajının referans voltajı "kestiği" zamandaki noktayı belirlemek için bir karşılaştırıcı ile birlikte kullanılabilir. Hazinelerin bobine yakın olması durumunda, sönümleme eğrisi ve referans gerilim değişiminin zaman değişiminin kesişme noktası. Bu değişiklik tespit edilebilir.

Bazı deneylerden sonra, aşağıdaki şemada karar kıldım:

Devre bir Arduino Nano modülünden oluşmaktadır. Bu modül, bobini (SV3'te) D10 üzerinden besleyen iki MOSFET'i çalıştırır. D10'un sonundaki darbe bittiğinde, her iki MOSFET bobini 12V ve GND'den izole eder.

Bobinde depolanan enerji, direnç R2 (220 ohm) üzerinden çıkar. Aynı zamanda direnç R1 (560 ohm) bobinin birinci pozitif tarafını GND'ye bağlar. Bu, R5 (330 ohm) boyunca negatif sönümleme eğrisini pozitif sönümleme eğrisine değiştirir. Diyotlar, Arduino'nun giriş pinini korur.

R7, yaklaşık 0,04 V'luk bir voltaj bölücüdür. Şimdi D7'deki azalma eğrisi, D6'daki 0,04'ten daha negatif olur, kesme tetiklenir ve darbenin bitiminden sonraki süre kaydedilir.

Bobinin yakınında metal olması durumunda, bozulma eğrisi daha uzundur ve darbenin sonu ile kesinti arasındaki süre daha uzundur.

2. Adım: Dedektörü Oluşturma (Breadboard)






Bir dedektör oluşturma süreci oldukça basittir. Bu, bir devre tahtası üzerinde (orijinal şemayı takip ederek) veya bir PCB üzerinde parçaları lehimleyerek yapılabilir.

Arduino Nano kartı üzerindeki D13 LED'i metal için gösterge olarak kullanılmaktadır.

Bir devre tahtası kullanmak, çalışan bir dedektör yapmanın en hızlı yoludur. Bazı kabloların yapılması gerekiyor, ancak bu ayrı bir küçük devre tahtası üzerinde yapılabilir. Arduino ve MOSFET'ler bazı telleri gizlediğinden resimler bunu 3 adımda gösteriyor. Test ederken, diyotları hemen fark etmeden yanlışlıkla devre dışı bıraktım. Bu özellikle dedektörün davranışını etkilemedi. Onları PCB versiyonunda bıraktım.

Çizimler, 0,96 OLED ekrana bağlantıları göstermez. Bu ekran şu şekilde bağlanır:

Vcc - 5V (Arduino pininde, güç kaynağında değil!)
GND-GND
SCL-A5
SDA-A4

Bu OLED ekran, dedektörün ilk kalibrasyonu için gereklidir. Bu, Arduino'nun PIN6'sında doğru voltajı ayarlayarak yapılır. Bu voltaj 0.04V civarında olmalıdır.Ekran doğru voltajı ayarlamanıza yardımcı olacaktır.

Kukla versiyon, muhtemelen saha kullanımı için uygun olmasa da, çok iyi çalışıyor.

Adım 3: PCB Tasarımı




Lehimlemeye gelince, çift taraflı yüksek teknoloji PCB'yi gerçekten sevmiyorum, bu yüzden düzeni tek taraflı olarak değiştirdim.

Aşağıdaki değişiklikler yapılmıştır:

  1. Diyotlar hariç tutuldu.
  2. MOSFET pinlerine 10 ohm direnç eklendi
  3. D6'daki gerilim bölücünün besleme gerilimi, D8'de yüksek seviyeli bir sinyal ile ayarlanır.
  4. MOSFET'ler için sürücü pini değiştirildi.

Bu şekilde, evrensel bir baskılı devre kartı üzerine lehimlenebilen tek taraflı bir baskılı devre kartı yaratmak mümkündür. Bu devreyi kullanarak, 8-10 harici bileşenle (OLED ekran ve/veya hoparlör kullanıp kullanmadığınıza bağlı olarak) çalışan bir PI dedektörü elde edeceksiniz.

Adım 4: Dedektörü kurma ve kullanma




Dedektör düzgün bir şekilde oluşturulmuşsa ve program Arduino'da yazılmışsa, cihazı kurmanın en kolay (tek değilse de) yolu bir OLED ekran kullanmaktır. Ekran 5V, GND, A4, A5'e bağlıdır. Cihaz açıldıktan sonra ekranda "kalibrasyon" gösterilmelidir. Birkaç saniye sonra "kalibrasyon tamamlandı" demeli ve ekranda üç basamak gösterilmelidir.

İlk sayı, kalibrasyon sırasında belirtilen "referans değerdir". İkinci değer son ölçülen değer, üçüncü değer ise son 32 ölçümün ortalamasıdır.

Bu üç değer aşağı yukarı aynı olmalıdır (testlerimde 1000'e kadar). Ortalama aşağı yukarı sabit olmalıdır.

İlk kuruluma başlamak için, bobinin yakınında metal olmamalıdır.

Şimdi voltaj bölücü (düzeltme direnci), kararlı bir okumayı sürdürürken alttaki iki değer maksimuma ayarlanacak şekilde ayarlanmalıdır. Ortalamanın garip okumalar vermeye başladığı kritik bir ayar var. Tekrar sabit değerler elde etmek için düzelticiyi çevirin.

Ekran donabilir. Sadece sıfırlama düğmesine basın ve baştan başlayın.

Benim konfigürasyonum için (bobin: 18 tur/20 cm) sabit değer 630-650 civarında. Ayarlamadan sonra, sıfırlama düğmesine basın, makine tekrar kalibre edilecek ve üç değer de aynı aralıkta olacaktır. Şimdi metal bobine getirildiyse, Arduino kartındaki (D13) LED'in yanması gerekir. Birlikte verilen hoparlör birkaç tıklama yapar (kaynak kodunda iyileştirme için yer vardır).

Yüksek beklentilerden kaçınmak için:

Dedektör bazı şeyleri algılar, ancak çok basit ve sınırlı kalır.

Olasılıklar hakkında bir fikir vermek için, diğer bazı dedektörleri benimkiyle karşılaştırdım. Sonuçlar, 8 dış elemana sahip bir dedektör için hala oldukça etkileyici, ancak profesyonel ekipman için yetersiz kalıyor.

Devreye ve programa baktığımda, iyileştirme için çok yer görüyorum. Dirençlerin değerleri deneyime göre seçildi, 250 ms'lik darbe süresi, bobin parametreleri de rastgele seçildi.

Dosyalar

5. Adım: 16x2 Ekranı Bağlama



Test sırasında I2C OLED ekran kitaplığının çok fazla kaynak tükettiğini fark ettim, bu yüzden I2C dönüştürücülü 16x2 ekran kullanmaya karar verdim.

Programı bazı yararlı özellikler ekleyerek LCD ekrana uyarladım. Ekranın ilk satırı artık olası bir göstergenin sinyal gücünü gösterir. İkinci satır şimdi iki değer gösteriyor. Birincisi, kalibrasyon değerine kıyasla mevcut sinyalin sapmasını gösterir. Bu değer "0" olmalıdır. Bu değer sürekli olarak negatif veya pozitif ise, dedektör sıfırlama düğmesine basılarak kalibre edilmelidir. Pozitif değerler, bobinin yanındaki metali gösterir.

İkinci değer, azalma eğrisi gecikmesinin gerçek değerini gösterir. Bu değer genellikle çok ilgi çekici değildir, ancak dedektörün ilk kurulumu için gereklidir.

Program artık bir dizide birden çok darbe genişliğini izlemenize izin veriyor (deneme / performans iyileştirmeleri için bir araç). Ancak, herhangi bir atılım alamadım, bu nedenle varsayılan değer bir darbe genişliğine ayarlı.

Dedektörün ilk kurulumu

Dedektörü ayarlarken ikinci satırın ikinci değeri önemlidir (ilk değer göz ardı edilebilir). Başlangıçta, değer "kararsız" olabilir (şekle bakın). Değer sabit bir okumaya ulaşana kadar düzelticiyi çevirin. Ardından, değeri maksimum kararlı değere yükseltmek için döndürün. Yeniden kalibre etmek için sıfırlama düğmesine basın ve dedektör kullanıma hazırdır.

Maksimum kararlı değeri ayarlayarak demir dışı metallere karşı hassasiyeti kaybettiğim izlenimini edindim. Bu nedenle, düzeltmek için ayarları denemeye değer olabilir.

Bobinler

Nabız metal dedektörü devresini daha fazla test etmek için 3 bobin yaptım:

  • 1 -> 18 tur / 200 mm
  • 2 -> 25 tur/100 mm
  • 3 -> 48 dönüş/100 mm

İlginç bir şekilde, tüm bobinler neredeyse aynı performansla (havada 40-50 mm'de ruble madeni para) oldukça iyi çalıştı. Bu çok öznel bir gözlem olabilir.

Eski hazineleri veya sadece demir dışı metalleri aramak için bir metal dedektörü internetten kolayca satın alınabilir. Ancak elektroniğe biraz aşina olan kişiler de kendi ihtiyaçları için cihazı kendileri monte edebilirler.

Doğru, genellikle devreler çok fazla bileşen içerir veya cihazın hassasiyeti zayıftır. Bir metal dedektörün iyi bir versiyonu, bir Arduino mikrodenetleyici temelinde monte edilerek elde edilebilir. Küçük madeni paralara bile tepki verir, hava sıcaklığından ve pillerden bağımsız olarak kararlı bir şekilde çalışır.

Dezavantajı, bir indüksiyon metal detektörünün, çekirdeğinde radyo emisyonu olan bir cihazın yaptığı gibi metalin türünü belirleyememesidir.

Yapıcının özü

Bir Arduino metal dedektörünün şematik diyagramı bir dizi bileşen içerir. Arduino tarafından üretilen darbeler, bobinde bir manyetik alan oluşturan FET'i yükseltir.

Bu cihazın oluşturulması birkaç sıralı adımı içerir:

  1. Bobin, 20 tur tel sarımı ile 20 cm çapında yapılmalıdır. Telin kalınlığı, tüm bobinin indüksiyonu için önemlidir. Genellikle 0,4 - 0,8 mm'lik bir tel kullanın. Bobini su kaynağından bir parça plastik boruya sokarak yalıtabilirsiniz. Ek metal bağlantı yoktur. Bobin oluşturma hakkında daha fazla bilgi için özel sitelere bakmak daha iyidir.
  2. Dedektörün kendisi, şemaya göre bir düzen üzerine veya bir baskılı devre kartı üzerindeki parçaların lehimlenmesiyle oluşturulur. Arduino Nano kartı üzerinde bulunan D13 numaralı LED metal arama yaparken gösterge görevi görmektedir.
  3. Kart üzerinde lehimlemeye gelince, devre tek taraflı veya çift taraflı yapılabilir. Uzmanlar ampirik olarak ilk seçeneğin daha iyi olduğunu bulmuşlardır. Diyotları devreden çıkarın ve 10 ohm'luk bir direnç ekleyin. Bu, harici bileşenlere sahip çalışan bir dedektörle sonuçlanır.
  4. Düzgün bir şekilde monte edilmiş bir dedektör ve Arduino programı için, onu kurmanın tek yolu bir OLED ekran kullanmaktır. Ekran kart üzerindeki ilgili çıkışlara bağlıdır ve güç düğmesini açtıktan sonra birkaç saniye süren bir "kalibrasyon" göstermelidir. Ekranda yaklaşık olarak aynı değerlere sahip olması gereken üç basamak görünür.
  5. Bobini düzgün bir şekilde ayarlamak için yakınlarda metal nesneler olmamalıdır. Ayarlama direnci maksimum değere ayarlanır, ancak böylece kararlı bir okuma korunur.
  6. Metali bobine getirirseniz, cihazın çalışmasını kontrol edebilirsiniz. Arduino LED'i yanar ve hoparlör tık sesi çıkarır.

Cihazdan çok yüksek beklentiler içine girmeyin. Tasarım gereği, dedektör basit olacaktır. Sadece belirli şeyleri algılayabilir. Profesyonel seviyeye ulaşmıyor. İlk saha denemelerinin ışığında iyileştirme için çok yer var. Ama yine de cihaz çalışıyor, onunla gizli hazineleri arayabilirsiniz.

Bu talimattan evde ev yapımı bir metal dedektörü yapmayı öğreneceksiniz. Çeşitli metal nesneler bulmak, sizi dışarı çıkaracak, yeni yerler keşfedecek ve belki de ilginç bir şeyler bulabilecek harika bir hobidir. Kendi metal dedektörünüzü nasıl yapacağınızı öğrenmeden önce, özellikle tehlikeli nesneler, arkeolojik kalıntılar veya önemli ekonomik veya duygusal değeri olan nesneler söz konusu olduğunda, olası bir bulguyla nasıl başa çıkılacağına ilişkin yerel yasaları öğrenin.

Demir dışı metaller için güçlü metal dedektörlerinin kendi ellerinizle ev yapımı montajı için internette epeyce talimat var, ancak bu talimatın özelliği, Arduino'ya ek olarak sadece birkaç bileşenin gerekli olmasıdır: 20 elektriksel olarak iletken kablo sargısından oluşan bir arama bobini ile birlikte bir çekirdek oluşturan geleneksel bir kapasitör, bir direnç ve bir diyot. LED, hoparlör ve/veya kulaklık. Ek bir avantaj, her şeyin 5V ile çalıştırılabilmesidir, bunun için toplam 2000 mAh USB gücü yeterlidir.

Sinyali yorumlamak ve dedektörün hangi malzemeleri ve hangi şekildeki nesneleri algılayabildiğini anlamak için fiziğe dalmak gerekir. Temel kurala göre, dedektör, bobinin yarıçapını aşmayan bir mesafe veya derinlikteki nesnelere duyarlıdır. Akımın bobin düzleminde akabileceği nesnelere karşı en hassastır. Böylece bobin düzlemindeki bir metal disk, bobine dik olan aynı metal diskten çok daha güçlü bir tepki verecektir. Nesnenin ağırlığı gerçekten önemli değil. Bobin düzleminde yönlendirilmiş ince bir alüminyum folyo, ağır metal bir cıvatadan çok daha güçlü bir yanıt verecektir.

1. Adım: Nasıl çalışır?

Bobinden elektrik akmaya başladığında manyetik bir alan oluşturur. Faraday'ın indüksiyon yasasına göre, değişen bir manyetik alan, manyetik alandaki değişime karşı çıkan bir elektrik alanıyla sonuçlanacaktır. Böylece, akımdaki artışa karşı koyacak olan bobin boyunca voltaj geliştirilecektir. Bu etkiye öz indüksiyon denir ve endüktans birimi Henry'dir; burada 1 Henry bobini, akım saniyede 1 Amper değiştiğinde 1 V'luk bir potansiyel farkı geliştirir. N sargılı ve R yarıçaplı bir bobinin endüktansı, R metre cinsinden yaklaşık 5 µH x N^2 x R'dir.

Bobinin yakınında metal bir nesnenin bulunması endüktansını değiştirecektir. Metal tipine bağlı olarak endüktans artabilir veya azalabilir. Bobinin yakınındaki bakır ve alüminyum gibi manyetik olmayan metaller endüktansı azaltır çünkü değişen manyetik alan nesnede yerel manyetik alanın yoğunluğunu azaltan girdap akımlarını indükler.

Bobinin yakınındaki demir gibi ferromanyetik malzemeler endüktansı arttırır çünkü indüklenen manyetik alanlar harici manyetik alanla hizalanır.

Böylece bobinin endüktansı ölçülerek çevredeki metallerin varlığı tespit edilebilir. Bir Arduino, bir kapasitör, bir diyot ve bir dirençle, bir bobinin endüktansını şu şekilde ölçebilirsiniz: bobini yüksek geçiren bir LR filtresinin parçası yapmak ve onu dalga bloklarıyla beslemek, her geçişte kısa patlamalar yaratacaktır. Bu patlamaların süresi, bobinin endüktansı ile orantılıdır. Aslında, karakteristik filtre süresi LR tau = L / R'dir. Yirmi dönüşlü ve 10 cm çapında bir bobin için, L ~ 5muH x 20^2 x 0.05 = 100 uH.

Arduino'yu aşırı akımdan korumak için minimum direnç 200 ohm'dur. Bu nedenle, yaklaşık 0,5 mikrosaniye uzunluğunda darbeler bekliyoruz. Arduino saatinin 16MHz olduğu göz önüne alındığında, yüksek doğrulukla doğrudan ölçmek zordur.

Bunun yerine, yükselen darbe, daha sonra Arduino analogdan dijitale dönüştürücü (ADC) tarafından okunabilen bir kapasitörü şarj etmek için kullanılabilir. 0,5 mikrosaniye 25 mA darbesinden beklenen yük 12,5 nC'dir, bu da 10 nF kapasitör boyunca 1,25 V verir. Diyot üzerindeki voltaj düşüşü bu değeri azaltacaktır. Darbe birden çok kez tekrarlanırsa, kapasitör üzerindeki yük ~2V'a yükselir.Bu parametreler, analogRead() kullanılarak Arduino ADC ile alınabilir. Kondansatör daha sonra duyu konektörünü çıkışa değiştirip birkaç mikrosaniye için 0V'a ayarlayarak hızla boşalabilir.

Tüm ölçümler yaklaşık 200 mikrosaniye sürer, 100 mikrosaniye kapasitörü şarj eder ve sıfırlar ve 100 mikrosaniye ADC'yi dönüştürür. Doğruluk, ölçümü tekrarlayarak ve sonucun ortalamasını alarak büyük ölçüde artırılabilir: ortalama 256 ölçüm 50 ms sürer ve doğruluğu 16 kat artırır. Böylece, 10 bitlik bir ADC, 14 bitlik bir ADC'nin doğruluğuna ulaşır.

Elde edilen parametreler bobin endüktansı ile son derece doğrusal olmadığı için, indüksiyonun gerçek değerini bulamıyoruz. Bununla birlikte, metal tespiti için, çevredeki metallerin varlığından dolayı bobinin endüktansındaki küçük değişikliklerle ilgileniyoruz ve bu yöntem bunun için idealdir.

Ölçüm kalibrasyonu, yazılım kullanılarak otomatik olarak gerçekleştirilebilir. Çoğu zaman bobinin yakınında metal yoksa, ortalama değerden sapma, yakınlarda metal bir nesnenin varlığını gösterecektir.

Farklı renkteki ampulleri ve sesleri kullanarak farkı da görebilirsiniz - artan veya azalan indüksiyon.

Adım 2: Gerekli Bileşenlerin Listesi

elektrik tabanı:

  • Arduino UNO R3 + devre tahtası veya 5x7cm devre tahtası ile Arduino Nano
  • 10nF kapasitör
  • Küçük sinyal diyotu, örneğin 1N4148
  • 220 ohm direnç

Yemek için:

  • USB kablolu taşınabilir şarj cihazı

Görsel çıktı için:

  • Mavi ve yeşil gibi 2 farklı renkli LED
  • Akım sınırlaması için 2 direnç 220 ohm

Ses çıkışı için:

  • pasif zil
  • Sessize almak için mikro anahtar

Kulaklık çıkışı için:

  • Kulaklık girişi
  • Direnç 1 kΩ
  • kulaklıklar

Arama başlığını kolayca bağlamak/bağlantısını kesmek için:

  • 2 pimli vidalı terminal (terminal)

Arama bobini için:

  • ~ 5 metre ince elektrik kablosu

Bobin tasarımı. Sert olmalı, ancak yuvarlak olmamalıdır. İnşaat için: Yaklaşık 1 metre - tahta, plastik veya selfie çubuğu.

3. Adım: Arama Başlığı

Arama başlığı için, 9 cm çapında bir karton silindirin etrafına yaklaşık 4 m örgülü tel sararak 18 dönüş yaptım. Direnç, RL filtresindeki R değerinden en az on kat daha az olduğu sürece kablo tipinin bir önemi yoktur, bu nedenle 20 ohm'un altında kaldığından emin olun. Ölçtüm 1 ohm çıktı yani sağlam. Dallanmış uçlu 10 metrelik bir rulo bağlantı teli de uygundur.

4. Adım: Prototipi Birleştirin




Az sayıda harici bileşen göz önüne alındığında, devreyi küçük bir devre tahtasına monte etmek tamamen mümkündür. Ancak, sonuç oldukça hantal ve çok güvenilir değil. Bu nedenle, bir Arduino nano kullanmak ve 5x7 cm'lik bir prototip kart üzerinde ek bileşenlerle lehimlemek daha iyidir (sonraki adıma bakın)

Metal algılama için yalnızca 2 Arduino pimi kullanılır, biri LR filtresine darbeler sağlar ve diğeri kapasitördeki voltajı okur. Darbe, herhangi bir çıkış piminden yapılabilir, ancak okuma, A0-A5 analog pimlerinden biri kullanılarak yapılmalıdır. Diğer 3 pin ise 2 led ve ses çıkışı için kullanılmaktadır.

Montaj sırası:

  1. Breadboard üzerinde, 220 ohm'luk bir direnç, bir kondansatör ve bir diyotu negatif terminal (siyah çizgi) ile kondansatöre seri olarak bağlayın.
  2. A0'ı dirence bağlayın (uç diyota bağlı değil)
  3. A1'i diyot ve kondansatörün kesişim noktasına bağlayın
  4. Bobinin bir ucunu direnç ve diyotun kesişme noktasına bağlayın
  5. Bobinin diğer ucunu toprağa bağlayın
  6. Bir LED'i pozitif terminali D12'ye ve negatif terminalini 220 ohm'luk bir dirençle toprağa bağlayın
  7. Pozitif terminali D11'e ve negatif terminali 220 ohm'luk bir dirençle toprağa başka bir LED bağlayın
  8. İstenirse, pim 10 ile toprak arasına kulaklık veya hoparlör bağlayın. Hacmi azaltmak için seri olarak bir kapasitör veya direnç eklenebilir.

Bu kadar!

Adım 5: Cihazın son sürümünün yapılması


Metal dedektörü dış mekanlarda kullanabilmek için tüm bileşenlerini güvenli bir şekilde lehimlemek gerekmektedir. Normal bir 7x5cm devre tahtası, Arduino nano ve diğer tüm bileşenlerle gayet iyi çalışacaktır. Önceki adımda olduğu gibi aynı deseni kullanın. Ayrıca gerekmediğinde sesi kapatabilmek için zile seri olarak bir anahtar eklemeye karar verdim. Vidalı kelepçe ile yeniden lehimlemeye gerek kalmadan farklı bobinleri hızlı bir şekilde deneyebilirsiniz. Tüm güç, Arduino Nano'nun 5V mini veya microUSB bağlantı noktası üzerinden sağlanır.

Adım 6: Yazılım

Arduino taslağını aşağıdan indirebilirsiniz. İndirin ve çalıştırın. Arduino 1.6.12 IDE kullandım. Ölçüm başına darbe sayısını ayarlamak için başlangıçta debug = true ile başlamanız önerilir. 200 ile 300 arasında bir ADC okuması olması en iyisidir. Bobininizin tamamen farklı bir okuma vermesi durumunda darbe sayısını artırın veya azaltın.

Eskiz bazı kendi kendine kalibrasyon yapar. Bobini bir süre metallerden uzağa yerleştirmek yeterlidir. Endüktansta küçük değişiklikler gözlemlenecek, ancak ani büyük değişiklikler uzun vadeli ortalamayı etkilemeyecektir.

Dosyalar

7. Adım: Cihazı düzeltin


Muhtemelen hazine bulmak için yerde sürünmek istemezsiniz, bu yüzden tüm yapıyı bir çubuğun ucuna monte etmek en iyisidir. Özçekim çubuğu mükemmel, hafif, katlanabilir ve ayarlanabilir. Taşınabilir pil, çubuğa mükemmel şekilde uyar. Kart, bir pile veya selfie çubuğuna takılarak aynı şekilde kablo bağları ve bobin ile sabitlenebilir.

Adım 8: Kullanım talimatları

Referans değeri ayarlamak için ev yapımı metal dedektörü yaklaşık 5 saniye boyunca metallerden uzaklaştırmak yeterlidir. Ardından, bobin metale yaklaştığında yeşil veya mavi LED yanıp sönecek ve bip sesleri duyulacaktır.

Mavi yanıp sönmeler ve düşük frekanslı bip sesleri, ferromanyetik olmayan metallerin varlığını gösterir. Yeşil yanıp sönmeler ve yüksek frekanslı bip sesleri, ferromanyetik metallerin varlığını gösterir. Başlık metale 5 saniyeden daha uzun süre yakın kaldığında, elde edilen değer referans değer olarak kabul edilecek ve dedektörü metalden uzaklaştırdığınızda sesli bir sinyal duyulacak ve birkaç saniye sonra sessizleşecektir. . Diyotların ve ses sinyallerinin yanıp sönme frekansı, sinyal gücüne bağlıdır.

Tanınmış impuls metal dedektörünün gözden geçirilmiş bir versiyonu - "Korsan", ancak Arduino'da. Küçük madeni paralarda bile iyi hassasiyete sahiptir. Sıcaklık ve pil şarjından bağımsız olarak kararlı. Şema mümkün olduğunca basitleştirilmiştir.

Eksiklikler arasında, metal türünün belirlenememesi not edilebilir. Sadece radyo yayan algılama prensibine sahip metal dedektörler tipi belirleyebilir (cihazda zordur ve ince ayar gerektirir). Darbeli metal detektörü ise metaldeki indüksiyon akımlarının manyetik tespiti üzerinde çalışır. Arama indüksiyonu, demirli ve demirsiz metaller için ayırt edilemez.

Bu arada, üçüncü bir tür metal dedektörü var - frekans. Bobin indüksiyonunun büyüklüğündeki değişikliklere duyarlı manyetik devre osilatörüne dayanan verimsiz ve çok basit bir tasarım. Düşük hassasiyet nedeniyle dikkate almayacağız. Böyle bir tasarımın geliştirilmesine yönelik kişisel deneyler, en iyi ihtimalle, 20 cm derinlikte bir tava tespit etmeyi mümkün kıldı. Madeni paralara sadece "vurgu" ile tepki gösterdi. Neredeyse işe yaramaz şeyler. Bu yüzden hemen reddetti.


İmpuls metal dedektörü devremiz birkaç ana bileşene sahiptir. Arduino darbeler üretir, bunlar bir alan etkili transistör (güç anahtarı) tarafından yükseltilir ve bu da bobinde bir manyetik alanın darbelerini indükler. Manyetik darbe, hedef metale gider ve içinde bir akım ve ardından bir ters manyetik alan sinyali indükler. Bu ters manyetik akı, kısa bir gecikmeden sonra metal detektör bobinine geri döner ve bir darbe üretir. Sinyal bir çift diyottan geçer (voltajı 1 volt ile sınırlamak için diyotlara ihtiyaç vardır) ve işlemsel yükselticinin girişine gider. Güçlendirilmiş sinyal, bobin güç anahtarı tarafından kapatıldıktan sonra "düşen kuyruğun" hesaplandığı arduino'ya girer. Onlar. sadece istenen metal nesneden gelen cevap. Düşme zamanına bağlı olarak, nesnenin boyutunu veya mesafesini yargılayabiliriz. Gösterge bu değeri 8 gösterge seviyesinde gösterir.

Bobinden bahsetmişken. 20 cm çapında ve 20 tur tel 0,4 - 0,8 mm olmalıdır. Telin kalınlığı da tüm bobinin indüksiyonunu etkiler. Telin kalınlığından güçlü bir sapma, cihazın hassasiyetinde bir bozulmaya yol açacaktır. Bobin bir PVC su borusuna takılır ve herhangi bir ek metal bağlantısı yoktur.



Program taslağı, bir darbe üreteci ve amplifikatörden gelen sinyali işlemek için bir algoritma içerir.

Int ss0 = 0; int ss1 = 0; int ss2 = 0; uzun c0 = 0; uzun c1 = 0; uzun c2 = 0; bayt ben = 0; int sss0 = 0; int sss1 = 0; int sss2 = 0; int s0 = 0; int s1 = 0; int s2 = 0; geçersiz kurulum() ( DDRB = 0xFF; // bağlantı noktası B - tümü dışarıda DDRD = 0xFF; // bağlantı noktası D - tümü dışarıda (i = 0; i<255; i++) // калибровка { PORTB = B11111111; delayMicroseconds(200); PORTB = 0; delayMicroseconds(20); s0 = analogRead(A0); s1 = analogRead(A0); s2 = analogRead(A0); c0 = c0 + s0; c1 = c1 + s1; c2 = c2 + s2; delay(3); } c0 = c0 / 255; c0 = c0 - 5; c1 = c1 / 255; c1 = c1 - 5; c2 = c2 / 255; c2 = c2 - 5; } void loop() { PORTB = B11111111; delayMicroseconds(200); PORTB = 0; delayMicroseconds(20); s0 = analogRead(A0); s1 = analogRead(A0); s2 = analogRead(A0); ss0 = s0 - c0; if (ss0 < 0) { sss0 = 1; } ss0 = ss0 / 16; PORTD = ss0; // посылаем на индикатор (send to LEDs) delay(1); ss1 = s1 - c1; if (ss1 < 0) { sss1 = 1; } ss1 = ss1 / 16; PORTD = ss1; // посылаем на индикатор (send to LEDs) delay(1); ss2 = s2 - c2; if (ss2 < 0) { sss2 = 1; } ss2 = ss2 / 16; PORTD = ss2; // посылаем на индикатор (send to LEDs) delay(1); if (sss0+sss1+sss2 >2) ( digitalWrite(7,HIGH); digitalWrite(6,HIGH); digitalWrite(5,HIGH); digitalWrite(4,HIGH); digitalWrite(3,HIGH); digitalWrite(2,HIGH); digitalWrite(1,HIGH) ); digitalWrite(0,HIGH); gecikme(1); sss0 = 0; sss1 = 0; sss2 = 0; ) )