Obsah:

Pulzný indukčný detektor na báze Arduino - preklápacia cievka: 5 krokov (s obrázkami)
Pulzný indukčný detektor na báze Arduino - preklápacia cievka: 5 krokov (s obrázkami)

Video: Pulzný indukčný detektor na báze Arduino - preklápacia cievka: 5 krokov (s obrázkami)

Video: Pulzný indukčný detektor na báze Arduino - preklápacia cievka: 5 krokov (s obrázkami)
Video: Porovnanie Minelab Gpx 4500 Pulse Detector a Adrenalin Visionary 2024, Júl
Anonim
Pulzný indukčný detektor na báze Arduino - preklápacia cievka
Pulzný indukčný detektor na báze Arduino - preklápacia cievka
Pulzný indukčný detektor na báze Arduino - preklápacia cievka
Pulzný indukčný detektor na báze Arduino - preklápacia cievka

Nápad

Keď som v minulosti postavil niekoľko detektorov kovov s rôznymi výsledkami, chcel som v tomto smere preskúmať možnosti Arduina.

Existuje niekoľko dobrých príkladov, ako postaviť detektory kovov pomocou Arduina, niektoré tu nájdete ako návod. Ale keď sa na ne pozrieme, zvyčajne vyžadujú buď celkom nejaké externé komponenty na spracovanie analógového signálu, alebo je citlivosť dosť nízka.

Keď premýšľate o detektoroch kovov, hlavnou témou je, ako vnímať mierne zmeny napätia v signáloch súvisiacich s vyhľadávacou cievkou. Tieto zmeny sú zvyčajne veľmi malé. Najzrejmejším prístupom by bolo použitie analógových vstupov ATmega328. Keď sa však pozrieme na špecifikácie, existujú dva základné problémy: sú (často) pomalé a rozlíšenie je (vo väčšine prípadov) nízke.

Na druhej strane, Arduino beží na 16 MHz a má celkom isté časové možnosti, t.j. e. rozlíšenie 0,0625 µS pri použití rýchlosti hodín. Takže namiesto použitia analógového vstupu na snímanie je najjednoduchším spôsobom snímania malých dynamických zmien napätia porovnanie zmeny poklesu napätia v čase pri pevnom referenčnom napätí.

Na tento účel má ATmega328 úhľadnú vlastnosť vnútorného komparátora medzi D6 a D7. Tento komparátor dokáže spustiť prerušenie, čo umožňuje presné spracovanie udalostí. Arduino, ktoré zostáva vedľa úhľadne kódovaných časovacích rutín, ako sú milis () a micos (), a vstupuje do interného časovača ATmega328 s oveľa vyšším rozlíšením, je skvelým základom pre prístupy k detekcii kovov.

Z pohľadu zdrojového kódu by bolo dobrým začiatkom naprogramovať interný komparátor na „zmenu“polarity vstupov a použiť interné počítadlo s najvyššou možnou rýchlosťou na zmenu načasovania zmien.

Všeobecný kód v Arduido, ktorý to má dosiahnuť, je tento:

// Definovanie všetkých požadovaných predbežných premenných atď. A nastavenie registrov

nepodpísané znakové hodinySelectBits = _BV (CS10); // ziaden prescale, uplne xxt void setup () {pinMode (6, INPUT); // + komparátora - ich nastavením na VSTUP sa // nastavia na pinMode s vysokou impedanciou (7, VSTUP); // - komparátora - ich nastavením na VSTUP sa // nastavia na vysokú impedanciu cli (); // zastavenie prerušenia TCCR1A = 0; // nastavenie celého registra TCCR1A na 0 TCCR1B = 0; // to isté pre TCCR1B -> normálny režimTCNT1 = 0; // inicializácia hodnoty počítadla na 0; TCCR1B | = clockSelectBits; // nastaví prescaler a spustí hodiny TIMSK1 = _BV (TOIE1); // nastaví povolenie prerušenia pretečenia časovača bit sei (); // povoliť prerušenia ACSR = (0 << ACD) | // Analógový komparátor: zapnutý (0 << ACBG) | // Voľba pásma analógového komparátora: AIN0 sa použije na kladný vstup (0 << ACO) | // Výstup analógového komparátora: Vypnutý (1 << ACI) | // Vlajka prerušenia analógového komparátora: Jasné čakajúce prerušenie (1 << ACIE) | // Prerušenie analógového komparátora: povolené (0 << ACIC) | // Zachytenie vstupu analógového komparátora: deaktivované (0 << ACIS1 | 0 << ACIS0 // prerušenie pri prepínaní výstupu // (0 << ACIS1 | 1 << ACIS0 // vyhradené // (1 << ACIS1 | 0 << ACIS0 // prerušenie na klesajúcej výstupnej hrane // (1 << ACIS1 | 1 << ACIS0 // prerušenie na stúpajúcej vstupnej hrane;}

// táto rutina sa volá vždy, keď komparátor vytvorí prerušenie

ISR (ANALOG_COMP_vect) {oldSREG = SREG; cli (); časová pečiatka = TCNT1; SREG = starý SREG; }

// táto rutina sa volá vždy, keď dôjde k pretečeniu vo vnútornom počítadle

ISR (TIMER1_OVF_vect) {timer1_overflow_count ++; }

// táto rutina sa používa na resetovanie časovača na 0

neplatný resetTimer (neplatný) {oldSREG = SREG; cli (); // Zakázať prerušenia TCNT1 = 0; // inicializácia hodnoty počítadla na 0 SREG = oldSREG; // Obnovenie stavového registra TCCR1B | = clockSelectBits; // nastaví prescaler a spustí časový spínač hodín1_overflow_count = 0; // vynuluje počítadlo pretečenia}

Táto myšlienka samozrejme nie je úplne nová. Hlavnú časť tohto kódu nájdete inde. Dobrá implementácia, ako je prístup k mikrokontroléru, ktorý sa nachádza na domovskej stránke TPIMD - Tiny Pulse Induction Metal Detector.

www.miymd.com/index.php/projects/tpimd/ (bohužiaľ táto stránka už nie je online, v súčasnej dobe existuje záloha stránky na www.basic4mcu.com, vyhľadajte „TPIMD“).

Krok 1: Idea indukcie pulzu Arduino - preklápacia cievka

Idea indukcie pulzu Arduino - preklápacia cievka
Idea indukcie pulzu Arduino - preklápacia cievka
Idea indukcie pulzu Arduino - preklápacia cievka
Idea indukcie pulzu Arduino - preklápacia cievka

Cieľom je použiť Arduino ako pulzný indukčný detektor, ako v TPIMD, pretože zdá sa, že načasovanie krivky rozpadu funguje celkom dobre. Problém pulzných indukčných detektorov je v tom, že na prácu normálne potrebujú rôzne napätie. Jedno napätie na napájanie cievky a samostatné napätie na zvládnutie krivky rozpadu. Tieto dva zdroje napätia robia pulzné indukčné detektory vždy trochu komplikovanými.

Pri pohľade na napätie cievky v PI detektore je možné výslednú krivku rozdeliť do dvoch rôznych fáz. Prvým stupňom je samotný impulz napájajúci cievku a budujúci magnetické pole (1). Druhý stupeň je krivka poklesu napätia, začínajúc špičkou napätia, potom sa rýchlo upravuje na napätie "bez napájania" cievky (2). Problém je v tom, že cievka po pulze zmení svoju polaritu. Je pulz pozitívny (Var 1. na priloženom obrázku) je krivka rozpadu negatívna. Je pulz negatívny, krivka rozpadu bude kladná (Var 2. na priloženom obrázku)

Na vyriešenie tohto základného problému je potrebné cievku elektronicky po impulze „prevrátiť“. V tomto prípade môže byť impulz kladný a krivka rozpadu môže byť tiež pozitívna.

Aby sa to dosiahlo, cievka musí byť po impulze izolovaná od Vcc a GND. V tomto okamihu cez tlmiaci odpor prúdi iba prúd. Tento izolovaný systém cievky a tlmiaceho odporu môže byť „orientovaný“na akékoľvek referenčné napätie. To teoreticky vytvorí kombinovanú kladnú krivku (spodná časť kresby)

Túto kladnú krivku je potom možné použiť prostredníctvom komparátora na detekciu časového bodu, v ktorom napätie rozpadu „pretína“referenčné napätie. V prípade pokladov v blízkosti cievky sa krivka rozpadu zmení a časový bod prechádzajúci cez referenčné napätie sa zmení. Túto zmenu je možné rozpoznať.

Po niekoľkých experimentoch sa ukázalo, že nasledujúci obvod funguje.

Obvod pozostáva z modulu Arduino Nano. Tento modul poháňa dva tranzistory MOSFET napájajúce cievku (na SV3) cez D10. Keď sa impulz na D10 skončí, oba MOSFETy izolujú cievku od 12 V a GND. Ušetrená energia v cievke krváca cez R2 (220 ohmov). Súčasne R1 (560 ohmov) spája bývalú pozitívnu stranu cievky s GND. Tým sa zmení negatívna krivka rozpadu na R5 (330 ohmov) na kladnú krivku. Diódy chránia vstupný kolík Arduina.

R7 je delič napätia približne 0,04V. V okamihu, keď je krivka rozpadu na D7 negatívnejšia ako 0,04 na D6, spustí sa prerušenie a uloží sa doba po skončení impulzu.

V prípade kovu v blízkosti cievky trvá krivka rozpadu dlhšie a čas medzi koncom impulzu a prerušením sa predlžuje.

Krok 2: Zostavenie detektora (Breadboard)

Zostavenie detektora (Breadboard)
Zostavenie detektora (Breadboard)
Zostavenie detektora (Breadboard)
Zostavenie detektora (Breadboard)
Zostavenie detektora (Breadboard)
Zostavenie detektora (Breadboard)

Zostavenie detektora je veľmi jednoduché. To je možné vykonať buď na doske (nalepenie na pôvodný obvod), alebo spájkovaním dielov na doske plošných spojov.

LED D13 na doske Arduino Nano sa používa ako indikácia kovu

Odpojenie breadboardu je najrýchlejší spôsob, ako pracovať s detektorom. Je potrebných dosť elektroinštalácie, napriek tomu sa to dá urobiť na malej doske. Na obrázkoch je to znázornené v 3 krokoch, pretože Arduino a MOSFET skrývajú niektoré z drôtov. Pri testovaní som nejakým spôsobom odpojil diódy bez toho, aby som si to všimol. To nemalo žiadny negatívny vplyv na správanie sa detektora. V PCB verzii obvodu som ich úplne vynechal.

Na obrázkoch nie je zobrazené pripojenie k 0,96 OLED displeju. Tento displej je pripojený:

Vcc - 5V (na pine Arduino, nie napájacie napätie !!!)

GND - GND

SCL - A5

SDA - A4

Tento OLED displej je potrebný na počiatočnú kalibráciu detektora. To sa deje nastavením správneho napätia na PIN6 Arduina. Toto napätie by sa malo pohybovať okolo 0,04V. Displej pomáha nastaviť správne napätie.

Verzia typu breadboard funguje celkom dobre, aj keď pravdepodobne nie je vhodná na cestu do divočiny.

Krok 3: Prechod na DPS

Ide PCB
Ide PCB
Ide PCB
Ide PCB
Ide PCB
Ide PCB
Ide PCB
Ide PCB

Pokiaľ ide o spájkovanie, nemám rád obojstranné high-tech PCB, takže som obvod upravil tak, aby sa zmestil na jednostranný PCB.

Boli vykonané nasledujúce úpravy:

1. diódy boli vynechané.

2. brány MOSFETov dostali odpor 10 Ohm

3. napájacie napätie pre delič napätia na D6 je dané signálom VYSOKEJ úrovne na D8

4. pin ovládača pre MOSFET bol zmenený.

Takto bolo možné vytvoriť jednostranný plošný spoj, ktorý je možné spájkovať na univerzálne plošné spoje. Vďaka tomuto obvodu budete mať funkčný PI detektor s iba 8 až 10 externými komponentmi (v závislosti od toho, či je použitý OLED displej a/alebo reproduktor).

Krok 4: Nastavenie a používanie detektora

Nastavenie a používanie detektora
Nastavenie a používanie detektora
Nastavenie a používanie detektora
Nastavenie a používanie detektora
Nastavenie a používanie detektora
Nastavenie a používanie detektora

Ak je detektor správne zostavený a program je zapísaný do Arduina, najjednoduchším (ak nie jediným) spôsobom, ako nastaviť jednotku, je použiť OLED displej. Displej je pripojený k 5V, GND, A4, A5. Po zapnutí jednotky by sa na displeji malo zobraziť „kalibrácia“. Po niekoľkých sekundách by sa malo zobraziť „kalibrácia dokončená“a na displeji by sa mali zobraziť tri čísla.

Prvé číslo je „referenčná hodnota“identifikovaná počas kalibrácie. Druhá hodnota je posledná nameraná hodnota a tretia hodnota je priemerná hodnota z posledných 32 meraní.

Tieto tri hodnoty by mali byť viac-menej rovnaké (v mojich testovacích prípadoch do 1 000). Stredná hodnota by mala byť viac -menej stabilná.

Na začiatku počiatočného nastavenia by v blízkosti cievky nemal byť žiadny kov.

Teraz by mal byť delič napätia (trimovací potenciometer) orezaný tak, aby boli spodné dve hodnoty nastavené na maximum a zároveň poskytovali stabilné hodnoty. Existuje kritické nastavenie, kde stredná hodnota začne dávať podivné hodnoty. Otočte trimrom späť, aby ste znova získali stabilné hodnoty.

Môže sa stať, že displej zamrzne. Stačí stlačiť tlačidlo reset a začať odznova.

Pri mojom nastavení (cievka: 18 závitov pri 20 cm) je stabilná hodnota okolo 630-650. Po nastavení stlačte tlačidlo reset, jednotka sa znova nakalibruje a všetky stromové hodnoty by mali byť opäť v rovnakom rozsahu. Ak sa teraz kov zavedie do cievky, kontrolka LED na doske Arduino (D13) by sa mala rozsvietiť. Pripojený reproduktor vydáva cvakavé zvuky (existuje priestor na zlepšenie v programovaní).

Aby ste predišli vysokým očakávaniam:

Detektor síce detekuje niektoré veci, ale zostáva veľmi jednoduchým a obmedzeným detektorom.

Aby ste získali predstavu o schopnostiach, urobili sme niekoľko referenčných detekcií s inými detektormi. Pri pohľade na výsledky je to stále veľmi pôsobivé na detektor s iba 8 vonkajšími časťami, ale nezodpovedajúci profesionálnym detektorom.

Pri pohľade na okruh a program je veľa priestoru na zlepšenie. Hodnoty rezistorov boli zistené skúsenosťou, čas impulzu 250 ms bol zvolený náhodne, parametre cievky tiež. Ak máte nápady na vylepšenia, rád ich prediskutujem.

Bavte sa!

Krok 5: Aktualizácia1: Použitie displeja 16x2 LCD

Aktualizácia 1: Použitie LCD displeja 16x2
Aktualizácia 1: Použitie LCD displeja 16x2
Aktualizácia 1: Použitie LCD displeja 16x2
Aktualizácia 1: Použitie LCD displeja 16x2
Aktualizácia 1: Použitie LCD displeja 16x2
Aktualizácia 1: Použitie LCD displeja 16x2

Vylepšenia

Pri ďalšom testovaní som zistil, že knižnica pre I2C OLED displej zaberá veľa času. Rozhodol som sa preto použiť namiesto toho displej 16x2 s prevodníkom I2C.

Preto som program prevzal na LCD displej a pridal niekoľko užitočných funkcií. Prvý riadok displeja teraz zobrazuje silu signálu prípadnej indikácie. Druhý riadok teraz zobrazuje dve hodnoty. Prvá pěst indikovala aktuálnu odchýlku signálu v porovnaní s kalibračnou hodnotou. Táto hodnota by mala byť "0". Ak je táto hodnota neustále záporná alebo kladná, detektor by sa mal znova nakalibrovať stlačením tlačidla reset. Kladné hodnoty označujú kov blízko cievky.

Druhá hodnota zobrazuje skutočnú hodnotu oneskorenia krivky rozpadu. Táto hodnota zvyčajne nie je taká zaujímavá, ale je potrebná na počiatočné nastavenie detektora.

Program teraz umožňuje viacnásobné trvanie impulzov v sekvencii (prostriedky experimentovania / zlepšovania výkonu). Žiadny prelom som nedosiahol. Predvolená hodnota je teda nastavená na dobu trvania jedného impulzu.

Počiatočné nastavenie detektora

Pri nastavovaní detektora je dôležitá druhá hodnota druhého riadku (prvý môže byť ignorovaný). Na začiatku môže byť hodnota „nestabilná“(pozri obrázok). Otáčajte trimrovacím odporom, kým sa hodnota nedostane na stabilné hodnoty. Potom otočením zvýšite hodnotu na maximálnu stabilnú hodnotu. Po stlačení tlačidla reset sa vykoná nová kalibrácia a detektor je pripravený na použitie.

Nadobudol som dojem, že nastavením maximálnej stabilnej hodnoty som stratil citlivosť na neželezné kovy. Mohlo by teda stáť za to experimentovať s nastaveniami, aby ste mali dobrú citlivosť na nežehlivé veci.

Cievky

Zostavujem 3 cievky na ďalšie testovanie

1 -> 18 otáčok pri 200 mm

2 -> 25 otáčok pri 100 mm

3 -> 48 otáčok pri 100 mm

Je zaujímavé, že všetky cievky fungovali celkom dobre, s takmer rovnakým výkonom (20ct mince pri 40-50 mm vo vzduchu). Toto môže byť celkom subjektívne pozorovanie.

Odporúča: