Mündəricat:

Arduino əsaslı nəbz induksiya detektoru - LC -tələ: 3 addım
Arduino əsaslı nəbz induksiya detektoru - LC -tələ: 3 addım

Video: Arduino əsaslı nəbz induksiya detektoru - LC -tələ: 3 addım

Video: Arduino əsaslı nəbz induksiya detektoru - LC -tələ: 3 addım
Video: Heart rate measurement with Arduino, OLED display and KY-039 heartbeat sensor. 2024, Iyul
Anonim
Arduino əsaslı nəbz induksiya detektoru - LC -Trap
Arduino əsaslı nəbz induksiya detektoru - LC -Trap

Sadəcə bir təchizat gərginliyi olan sadə bir Ardino Pulse Induction metal detektoru üçün başqa fikirlər axtararkən Teemonun ana səhifəsinə rast gəldim:

www.digiwood.ee/8-electronic-projects/2-metal-detector-circuit

LC-Trap prinsipindən istifadə edərək sadə Pulse İnduksiya detektoru yaratdı. Bənzər sxemlər TechKiwiGadgets tərəfindən Instructable -də yerləşdirilmişdir. Teemo dövrəsinin PIC mikrokontrolörünün daxili müqayisələrini istifadə etməsi istisna olmaqla, daha az xarici komponentə ehtiyacı var.

Bu sxem üçün PIC-Controller əvəzinə Arduinodan istifadə etməyə və nə qədər uzaqlaşa biləcəyimə baxmağım çətin oldu.

Addım 1: sxematik

Sxematik
Sxematik
Sxematik
Sxematik
Sxematik
Sxematik

Arduino sxematikası bir az daha mürəkkəbdir, çünki Arduino daxili analoq siqnalını komparatorun girişinə yönəltməyə imkan vermir. Bu sadə bir gərginlik deviderr üçün iki komponent əlavə edir. Bu, Flip Coil dizaynının 9 -u ilə müqayisədə 12 xarici komponentdən (dinamikdən və 16x2 LCD -dən kənarda) ibarət bir dizayna səbəb olur.

Şematikin iş prinsipi Teemo saytında çox yaxşı izah edilmişdir. Əsasən bobin enerjiyə malikdir və sonra söndürülür. Söndürüldükdən sonra, coil və kondensator paralel olaraq sönmüş bir salınım yaradacaq. Salınmanın tezliyi və çürüməsi, bobinin yaxınlığındakı metaldan təsirlənir. Dövrə haqqında daha ətraflı məlumat üçün Teemo və ya TechKiwi səhifəsinə baxın.

Flip Bobin Pulse İndüksiyon detektorunda olduğu kimi, daxili müqayisə cihazından və bobindən siqnal əldə etmək üçün bir fasilə vermə ehtimalından istifadə edirəm.

Bu vəziyyətdə, müqayisə cihazında təyin edilmiş istinad gərginliyi ətrafında gərginlik yarandığı üçün birdən çox fasilə alacağam. Salınmanın sonunda, bobindəki gərginlik 5V ətrafında yerləşəcək, amma tam olaraq deyil. Təxminən 4.9 voltluq bir gərginlik əldə etmək üçün 200 Ohm və 10k Ohm gərginlik ayırıcı seçdim

Sxemlərin mürəkkəbliyini azaltmaq üçün GND (10k Rezistor üçün) və 5V (220 Ohm müqavimət üçün) təmin etmək üçün D4 və D5 istifadə etdim. Sancaqlar detektoru işə salanda quraşdırılır.

Bu versiyada, Arduino Əsaslı Metal Dedektoru Necə Proqramlaşdırılacağında təsvir edildiyi kimi səs idarə olunan çox tonlu appraochdan istifadə edərək dinamik bağlantısı əlavə etdim. Bu, hədəfin xüsusiyyətlərini fərqləndirməyə və siqnal gücünü hiss etməyə imkan verir. Dinamik əlavə 5 pinli başlığa qoşula bilər. Başlığın qalan 3 sancağı düymələr üçün istifadə ediləcək (tətbiq olunacaq).

Addım 2: Proqramlaşdırma

Proqramlaşdırma
Proqramlaşdırma
Proqramlaşdırma
Proqramlaşdırma
Proqramlaşdırma
Proqramlaşdırma

İndi sxem dizayn edildikdə və prototip qurulduqda, metal aşkar etmək üçün uyğun bir yanaşma tapmağın vaxtı gəldi.

1. Pulsların sayılması

Salınmanın nəbzini tam çürüyənə qədər saymaq bir fikirdir.

Bobinin yaxınlığında metal varsa, salınım miqdarı azalır. Bu halda, müqayisə cihazının istinad gərginliyi, son nəbzin hələ də ölçülməyəcəyi səviyyəyə təyin olunmalıdır. Bir şey aşkar edildikdə, bu nəbz dərhal yox olur. Bu bir az problemli idi.

Hər salınım dalğası iki fasilə yaradır. Biri enərkən, biri də yuxarı qalxanda. Referans gərginliyini bir salınım dalğasının zirvəsinə tam olaraq təyin etmək üçün aşağı və yuxarı qalxmaq arasındakı vaxt mümkün qədər qısa olmalıdır (şəklə bax). Təəssüf ki, burada Arduino mühitinin yüklənməsi problem yaradır.

Hər bir kəsmə tetikçisi bu kodu çağırır:

ISR (ANALOG_COMP_vect) {

Toggle1 = Toggle0 // son dəyəri saxla Toggle0 = TCNT1; // yeni dəyər əldə et}

Bu kod bir az vaxt aparır (doğru xatırlayıramsa, təxminən 78 təlimat dövrü cadı təxminən 5 mikrosaniyədə @ 16 MHz). Buna görə də, iki impuls arasındakı minimum aşkar edilə bilən məsafə, bu kodun aldığı vaxtdır, əgər iki tetikleyici arasındakı vaxt qısalırsa (şəklə baxın), kod ikinci bir kəsilməni aşkar etməzdən əvvəl tam olaraq icra edildiyindən, aşkar edilməyəcək.

Bu, həssaslıq itkisinə səbəb olur. Eyni zamanda, salınımların söndürülməsinin hər hansı bir xarici təsirə çox həssas olduğunu və bu yanaşmanı bir qədər çətinləşdirdiyini gördüm.

2. Tezliyin ölçülməsi

Metal aşkar etməyin başqa bir yolu, salınım tezliyini ölçməkdir. Tezliyin dəyişməsi metalın ayrı -seçkiliyinə imkan verdiyindən salınımın sönümlənməsini ölçməklə müqayisədə bu böyük bir üstünlükə malikdir. Bobin yanında qara material varsa, tezlik yavaşlayacaq, bobinin yanında qiymətli metal varsa, tezlik artacaq.

Tezliyi ölçməyin ən asan yolu, bobinlər salınmağa başladıqdan sonra pulsların miqdarını ölçməkdir. Başlanğıc və son nəbz arasındakı ölçülən impulsların ümumi miqdarına bölünən müddət, tezlikdir. Təəssüf ki, son bir neçə salınım olduqca simmetrik deyil. Metalın olması da salınımın çürüməsinə təsir etdiyindən son salınımlar daha da simmetrik olmadığı üçün oxunuşları şərh etmək çətindir. Şəkildə bu, 1 -dən 1 -ə və 2 -dən 2 -yə qədər olan kəsişmələrdir.

Buna görə daha yaxşı bir yol, tezliyi ölçmək üçün bir qədər əvvəlki impulslardan istifadə etməkdir. Test edərkən maraqlı olaraq öyrəndim ki, bəzi nəbz pulsları digərlərindən daha həssasdır. Salınımların 2/3 -də bir yerdə məlumat əldə etmək üçün yaxşı bir məqamdır.

Məlumatların işlənməsi

Bobin vaxtını etmək üçün bir nəbz () funksiyasını tələb edən loop () əsaslı ilkin kod. Nəticələr pis olmasa da, vaxtı artırmaq istəyim var idi. Bunu etmək üçün, Arduino əsaslı bir metal detektoru necə proqramlaşdırmaq olar, ayrı -ayrı təlimatlara əsaslanan tam taymer əsaslı bir kod yaratdım. Bu təlimat vaxtı, məlumatların LCD çıxışı və s. Ətraflı izah edir

1. LCD

İlk yanaşma 10 nəbzi ölçmək və sonra LCD -də dəyərləri göstərmək idi. I2C məlumat ötürülməsinin çox yavaş olduğunu bildiyim üçün nəbz başına yalnız bir xarakter yeniləmək üçün kodu dəyişdim.

2. Minimum dəyər yanaşması

Oxunuşların sabitliyini daha da yaxşılaşdırmaq üçün ölçülən məlumatları daha yaxşı hiss etmək üçün ardıcıl çıxış qaydası yazdım. Orada aydın oldu ki, oxunuşların çoxu bir qədər sabit olsa da, bəziləri sabit deyildi! "Eyni" salınım nəbzinin bəzi oxunuşları bir -birindən o qədər uzaq idi ki, tezlik dəyişikliyini təhlil etmək üçün hər yanaşmanı pozacaqdı.

Bunu kompensasiya etmək üçün dəyərin etibarlı olduğu bir "sərhəd" yaratdım. I. e. dəyərlər, gözlənilən dəyərdən 35 dövrə qədər 1 dövrdən çox olduqda, bu dəyərlər nəzərə alınmadı ("Arduino əsaslı bir metal detektoru necə proqramlaşdırmaq olar" təlimatında ətraflı izah edilmişdir)

Bu yanaşma çox sabit olduğunu sübut etdi.

3. Gərginlik

Teemonun orijinal dizaynı 5 voltdan aşağıdır. Mənim fərziyyələrim "daha çox volt = daha çox güc = daha çox həssaslıq" olduğu üçün əvvəlcə vahidi 12V ilə təchiz etdim. Bu, MOSFET -in istiləşməsi ilə nəticələndi. Bu istiləşmə daha sonra ölçülmüş dəyərlərin ümumi bir sürüşməsi ilə nəticələndi və detektorun tez-tez yenidən balanslaşdırılmasına səbəb oldu. Gərginliyi 5V -ə endirməklə, MOSFET -in istilik əmələ gəlməsi oxunuşların demək olar ki, heç bir sürüşməsinin müşahidə olunmayacağı səviyyəyə endirilə bilər. Bu, dövrəni daha da asanlaşdırdı, çünki Arduinonun daxili gərginlik tənzimləyicisinə artıq ehtiyac yox idi.

Bir MOSFET üçün əvvəlcə IRL540 seçdim. Bu MOSFET məntiq səviyyəsinə uyğundur, lakin maksimum 100V gərginlik dərəcəsinə malikdir. Daha yaxşı bir performansın, 200V reytinqli IRL640 -a keçməsini ümid edirdim. Təəssüf ki, nəticələr eyni idi. Beləliklə, ya IRL540, ya da IRL640 işi görəcək.

Addım 3: Yekun Nəticələr

Yekun Nəticələr
Yekun Nəticələr
Yekun Nəticələr
Yekun Nəticələr
Yekun Nəticələr
Yekun Nəticələr

Detektorun üstünlüyü qiymətli və qara materialları ayırd etməsidir. Dezavantajı, bu sadə sxemlə həssaslığın o qədər də yaxşı olmamasıdır. Performansı müqayisə etmək üçün Flip-Coil detektoru ilə eyni istinadlardan istifadə etdim. Yəqin ki, bəzi nöqtələri təyin etmək üçün yaxşıdır, amma real axtarış üçün çox güman ki, məyus olur.

Burada PIC nəzarətçisinə malik orijinal dizayn daha həssas ola bilər, çünki tezliyin dəyişməsini aşkar etmək üçün daha yüksək bir qətnamə təmin edən termoforun 16MHz yerinə 32MHz üzərində işləyir.

Nəticələr, 100 döngədə 48 döngə ilə bobindən istifadə etməklə əldə edildi.

Həmişə olduğu kimi, geribildirim üçün açıqdır

Tövsiyə: