İçindekiler:
Video: Arduino Tabanlı Darbe İndüksiyon Dedektörü - LC-Trap: 3 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Sadece bir besleme voltajına sahip basit bir Ardino Darbe İndüksiyon metal dedektörü için daha fazla fikir ararken Teemo'nun ana sayfasına rastladım:
www.digiwood.ee/8-electronic-projects/2-metal-dedektör-devresi
LC-Trap prensibini kullanarak basit bir Darbe İndüksiyon dedektörü yarattı. Benzer devreler burada Instructable by TechKiwiGadgets'ta yayınlanmıştır. Teemo devresinin bir PIC mikro denetleyicisinin dahili karşılaştırıcılarını kullanması ve böylece daha az harici bileşene ihtiyaç duyması dışında
Bu yüzden, bu şematik için bir PIC-Denetleyici yerine Arduino'yu kullanmam istendi ve ne kadar ileri gidebileceğime bakın.
Adım 1: Şematik
Arduino şeması, Arduino, karşılaştırıcının girişine dahili bir analog sinyal yönlendirmesine izin vermediğinden biraz daha karmaşıktır. Bu, basit bir voltaj deviderr için iki bileşen ekler. Bu, Flip Coil tasarımının 9'una kıyasla, 12 harici bileşenli (hoparlör ve 16x2 LCD hariç) bir tasarıma yol açar.
Teemo'nun web sitesinde şemanın çalışma prensibi çok iyi anlatılmış. Temel olarak bobine güç verilir ve ardından kapatılır. Kapattıktan sonra, bobin ve kondenser paralel olarak sönümlü bir salınım yaratacaktır. Salınımın frekansı ve azalması, bobinin yakınındaki metalden etkilenir. Devrenin daha fazla ayrıntısı için Instructables'taki Teemo veya TechKiwi sayfasına bakın.
Çevirme Bobini Darbe İndüksiyon dedektöründe olduğu gibi, bobinden sinyal almak için dahili karşılaştırıcıyı ve bir kesmeyi tetikleme olasılığını kullanıyorum.
Bu durumda, karşılaştırıcıda ayarlanan referans voltajı etrafında voltaj salınım yaptığından çoklu kesintiler alacağım. Salınım sonunda, bobindeki voltaj 5V civarında olacak, ancak tam olarak değil. Yaklaşık 4.9 voltluk bir voltaj elde etmek için 200 Ohm ve 10k Ohm'luk bir voltaj bölücü seçtim
Şematiklerin karmaşıklığını azaltmak için GND (10k Direnç için) ve 5V (220 Ohm direnç için) sağlamak için D4 ve D5 kullandım. Pimler, dedektörün başlangıcında ayarlanır.
Bu versiyonda Arduino Tabanlı Metal Dedektör Nasıl Programlanır bölümünde anlatıldığı gibi ses kontrollü çok tonlu yaklaşımı kullanarak bir hoparlör bağlantısı ekledim. Bu, hedefin özelliklerini ayırt etmenin yanı sıra sinyal gücü için bir his elde etmeyi sağlar. Hoparlör, ek 5 pinli başlığa bağlanabilir. Başlığın kalan 3 pimi butonlar için kullanılacaktır (uygulanacak).
Adım 2: Programlama
Artık devre tasarlandığına ve prototip yapıldığına göre, metal tespiti için uygun bir yaklaşım bulmanın zamanı geldi.
1. Darbeleri sayma
Bir fikir, salınım darbelerinin tamamen azalana kadar sayılmasıdır.
Bobinin yakınında metal varsa salınım miktarı azalır. Bu durumda karşılaştırıcının referans voltajı, son darbenin zar zor ölçüldüğü bir seviyeye ayarlanmalıdır. Yani bir şey tespit edildiğinde bu nabız hemen yok oluyor. Bu biraz sorunluydu.
Salınımın her dalgası iki kesinti yaratır. Biri aşağı inerken diğeri yukarı çıkarken. Referans voltajını tam olarak bir salınım dalgasının tepesine ayarlamak için, aşağı inme ile yukarı çıkma arasındaki süre mümkün olduğunca kısa olmalıdır (resme bakın). Ne yazık ki burada Arduino ortamının yükü sorun yaratıyor.
Kesmenin her tetikleyicisi bu kodu çağırır:
ISR(ANALOG_COMP_vect){
Toggle1=Toggle0 // son değeri kaydet Toggle0=TCNT1; // yeni değer al }
Bu kod biraz zaman alıyor (doğru hatırlıyorsam, cadı yaklaşık 78 talimat döngüsü, 16MHz'de yaklaşık 5 mikrosaniyedir). Bu nedenle, iki darbe arasındaki minimum algılanabilir mesafe tam olarak bu kodun aldığı süredir, İki tetik arasındaki süre kısalırsa (resme bakın), kod ikinci bir kesmeyi algılamadan önce tam olarak yürütüldüğünden algılanmayacaktır.
Bu, hassasiyette bir kayba yol açar. Aynı zamanda, salınımların sönümlenmesinin her türlü dış etkiye karşı çok hassas olduğunu ve dolayısıyla bu yaklaşımı toplamda biraz zorlaştırdığını fark ettim.
2. Frekansın ölçülmesi
Metali tespit etmenin başka bir yolu da salınımın frekansını ölçmektir. Bu, frekanstaki değişiklik metalin ayırt edilmesine izin verdiği için salınımın sönümlenmesini ölçmeye kıyasla büyük bir avantaja sahiptir. Bobinin yanında demirli malzeme olması durumunda frekans yavaşlayacak, bobinin yanında değerli metal olması durumunda frekans artacaktır.
Frekansı ölçmenin en kolay yolu, bobinler salınım yapmaya başladıktan sonra atım miktarını ölçmektir. Başlangıç ve son darbe arasındaki sürenin, ölçülen darbelerin toplam miktarına bölümü frekanstır. Ne yazık ki son birkaç salınım oldukça simetrik değil. Metalin varlığı da salınımın azalmasını etkilediğinden, son salınımlar daha da simetrik değildir, okumaların yorumlanması zordur. Resimde bu, 1'den 1'e ve 2'den 2'ye geçişle gösterilmiştir.
Bu nedenle daha iyi bir yol, frekansı ölçmek için daha önceki bazı darbeleri kullanmaktır. Test ederken ilginç bir şekilde bazı darbe darbelerinin diğerlerinden daha hassas olduğunu öğrendim. Salınımların 2/3'ünde bir yerde, verileri elde etmek için iyi bir nokta.
Verilerin işlenmesi
Bobinin zamanlamasını yapmak için bir pulse() işlevi çağıran loop()'a dayalı ilk kod. Sonuçlar kötü olmasa da, zamanlamayı iyileştirme isteği duydum. Bunu yapmak için, tamamen zamanlayıcı tabanlı bir kod oluşturdum, bu da ayrı bir öğretilebilir Arduino Tabanlı Metal Dedektörü Nasıl Programlanır'a yol açtı. Bu talimat, zamanlamayı, veri kırma LCD çıktısını vb. ayrıntılı olarak açıklar.
1. LCD
İlk yaklaşım, 10 darbeyi ölçmek ve ardından değerleri LCD'de göstermekti. I2C veri aktarımının çok yavaş olduğunu öğrendiğimde, darbe başına yalnızca bir karakteri güncellemek için koda geçtim.
2. Minimum değer yaklaşımı
Okumaların kararlılığını daha da artırmak için, ölçülen veriler için daha iyi bir his elde etmek için bir seri çıktı rutini yazdım. Orada, okumaların çoğu bir şekilde sabit olsa da, bazılarının olmadığı ortaya çıktı! "Aynı" salınım darbesinin bazı okumaları birbirinden o kadar uzaktı ki, frekanstaki bir değişimi analiz etmek için her yaklaşımı mahvedebilirdi.
Bunu telafi etmek için, içinde değerin güvenilir olduğu bir "sınır" yarattım. ben. e. değerler beklenen değerden 35 döngü timer1'den fazla olduğunda, bu değerler göz ardı edildi ("Arduino Tabanlı Metal Dedektörü Nasıl Programlanır" Talimatında ayrıntılı olarak açıklanmıştır)
Bu yaklaşımın çok kararlı olduğu kanıtlandı.
3. voltaj
Teemo'nun orijinal tasarımı 5 voltun altında güç alıyor. Varsayımlarım “daha fazla volt = daha fazla güç = daha fazla hassasiyet” olduğundan, üniteyi başlangıçta 12V ile çalıştırdım. Bu, MOSFET'in ısınmasına neden oldu. Bu ısınma daha sonra ölçülen değerlerde genel bir kaymaya neden oldu ve bu da dedektörün sık sık yeniden dengelenmesine yol açtı. Voltajı 5V'a düşürerek MOSFET'in ısı üretimi, okumalarda neredeyse hiç kaymanın gözlemlenmediği bir düzeye indirilebilir. Bu, Arduino'nun yerleşik voltaj regülatörüne artık ihtiyaç duyulmadığından devreyi daha da basitleştirdi.
Bir MOSFET için başlangıçta IRL540'ı seçtim. Bu MOSFET, mantık seviyesi uyumludur, ancak 100V üzerinde maksimum voltaj derecesine sahiptir. 200V dereceli bir IRL640'a geçerek daha iyi performans umuyordum. Maalesef sonuçlar aynıydı. Yani ya bir IRL540 ya da bir IRL640 işi yapacaktır.
3. Adım: Nihai Sonuçlar
Dedektörün avantajı, değerli ve demirli malzeme arasında ayrım yapmasıdır. Dezavantajı, bu basit şema ile duyarlılığın o kadar iyi olmamasıdır. Performansı karşılaştırmak için Flip-Coil dedektörü ile aynı referansları kullandım. Muhtemelen biraz nokta atışı için iyi, ancak büyük olasılıkla gerçek arama için hayal kırıklığı yaratıyor.
Burada, PIC kontrolörlü orijinal tasarım, 16MHz yerine 32MHz'de çalıştığı için daha hassas olabilir ve frekans kaymalarını algılamak için daha yüksek çözünürlük sağlar.
Sonuçlar, 100 mm'de 48 dönüşlü bobin kullanılarak elde edildi.
Her zaman olduğu gibi, geri bildirime açık
Önerilen:
LDR Tabanlı Işık Sensörü/Dedektörü: 3 Adım
LDR Tabanlı Işık Sensörü/Dedektörü: Işık sensörleri ve dedektörleri, mikrodenetleyiciler ve gömülü sistemler için son derece kullanışlıdır ve yoğunluk izleme de yapılmalıdır. Bu tür sensörlerin en basit ve en ucuzlarından biri LDR'dir. LDR veya Işık Bağımlı Dirençler ile kolayca kullanılabilir
Arduino Tabanlı Temassız Kızılötesi Termometre - Arduino Kullanan IR Tabanlı Termometre: 4 Adım
Arduino Tabanlı Temassız Kızılötesi Termometre | Arduino Kullanan IR Tabanlı Termometre: Merhaba arkadaşlar, bu talimatta arduino kullanarak temassız bir Termometre yapacağız. Bazen sıvının/katının sıcaklığı çok yüksek veya çok düşük olduğundan, onunla temas kurmak ve okumak zordur. o sahnede sıcaklık
Arduino Kullanan Hız Tabanlı Aritmi Dedektörü: 7 Adım
Arduino Kullanan Hıza Dayalı Aritmi Dedektörü: Kalp aritmileri her yıl yaklaşık dört milyon Amerikalıyı rahatsız ediyor (Texas Heart Institute, par. 2). Her kalp ritim ve hızda permütasyon yaşarken, kronik kardiyak aritmiler kurbanları için ölümcül olabilir. Birçok kardiyak aritmi
DIY Arduino Tabanlı Darbe İndüksiyon Metal Dedektörü: 5 Adım
DIY Arduino Tabanlı Darbe İndüksiyonlu Metal Dedektörü: Bu, mükemmel performansa sahip nispeten basit bir metal dedektörüdür
Arduino Tabanlı Darbe İndüksiyon Dedektörü - Flip Coil: 5 Adım (Resimli)
Arduino Tabanlı Darbe İndüksiyon Dedektörü - Flip Bobin: Fikir Geçmişte çeşitli sonuçlarla bazı metal dedektörleri inşa ettikten sonra, Arduino'nun bu yöndeki yeteneklerini keşfetmek istedim. Arduino ile metal dedektörlerinin nasıl oluşturulacağına dair bazı iyi örnekler var, bazıları burada öğretilebilir olarak