Sadržaj:

Arduino detektor impulsne indukcije - preklopna zavojnica: 5 koraka (sa slikama)
Arduino detektor impulsne indukcije - preklopna zavojnica: 5 koraka (sa slikama)

Video: Arduino detektor impulsne indukcije - preklopna zavojnica: 5 koraka (sa slikama)

Video: Arduino detektor impulsne indukcije - preklopna zavojnica: 5 koraka (sa slikama)
Video: способы превратить спутниковые поддоны в машины для добычи золота 2024, Studeni
Anonim
Arduino detektor impulsne indukcije - preklopna zavojnica
Arduino detektor impulsne indukcije - preklopna zavojnica
Arduino detektor impulsne indukcije - preklopna zavojnica
Arduino detektor impulsne indukcije - preklopna zavojnica

Ideja

Budući da sam u prošlosti gradio neke detektore metala s različitim rezultatima, želio sam istražiti mogućnosti Arduina u tom smjeru.

Postoji nekoliko dobrih primjera kako izgraditi detektore metala s Arduinom, neki ovdje kao instrukcije. No, gledajući ih, obično im je potrebno ili dosta vanjskih komponenti za obradu analognog signala ili je osjetljivost prilično niska.

Kada razmišljate o detektorima metala, glavna tema je kako osjetiti male promjene napona u signalima vezanim uz zavojnicu za pretraživanje. Te su promjene obično vrlo male. Najočitiji pristup bio bi u korištenju analognih ulaza ATmega328. No, gledajući specifikacije, postoje dva osnovna problema: oni se (često) usporavaju, a razlučivost (u većini slučajeva) preniska.

S druge strane, Arduino radi na 16MHz i ima dosta mogućnosti mjerenja vremena i. e. razlučivost od 0,0625µS ako se koristi brzina takta. Dakle, umjesto korištenja analognog ulaza za mjerenje, najjednostavniji način otkrivanja malih dinamičkih promjena napona je usporedba promjene pada napona tijekom vremena pri fiksnom referentnom naponu.

U tu svrhu ATmega328 ima urednu značajku unutarnjeg usporednika između D6 i D7. Ovaj usporednik može pokrenuti prekid, omogućavajući precizno upravljanje događajima. Ostavljajući pored uredno kodiranih vremenskih rutina poput millis () i micos () i ulazeći u unutarnji mjerač vremena ATmega328 s mnogo većom razlučivošću, Arduino je izvrsna osnova za pristupe otkrivanja metala.

Dakle, s gledišta izvornog koda, dobar bi početak bio programiranje unutarnjeg usporednika za „promjenu“polariteta ulaza i korištenje unutarnjeg brojača s najvećom mogućom brzinom za promjenu vremena izmjena.

Opći kod u Arduidu za postizanje ovoga je:

// Definiranje svih potrebnih pre varijabli itd. I postavljanje registara

unsigned char clockSelectBits = _BV (CS10); // bez predmjera, full xtal void setup () {pinMode (6, INPUT); // + komparatora - postavljanjem kao INPUT, // postavljaju se na pinMode visoke impedancije (7, INPUT); // - usporedbe - postavljanjem kao INPUT // postavljaju se na visoku impedanciju cli (); // prekid prekida TCCR1A = 0; // cijeli registar TCCR1A postaviti na 0 TCCR1B = 0; // isto za TCCR1B -> normalni način radaTCNT1 = 0; // inicijalizira vrijednost brojača na 0; TCCR1B | = clockSelectBits; // postavlja pretkaler i pokreće sat TIMSK1 = _BV (TOIE1); // postavlja bit preusmjeravanja prekoračenja timera time bit sei (); // dopušta prekide ACSR = (0 << ACD) | // Analogni usporednik: Omogućeno (0 << ACBG) | // Odabir razmaka pojasa analognog usporednika: AIN0 se primjenjuje na pozitivni ulaz (0 << ACO) | // Analogni usporedni izlaz: Isključeno (1 << ACI) | // Zastavica prekida analognog komparatora: Ukloni prekid na čekanju (1 << ACIE) | // Prekid analognog komparatora: omogućen (0 << ACIC) | // Snimanje ulaza analognog komparatora: onemogućeno (0 << ACIS1 | 0 << ACIS0 // prekida na izlaznom prekidaču // (0 << ACIS1 | 1 << ACIS0 // rezervirano // (1 << ACIS1 | 0 << ACIS0 // prekid na padajućem izlaznom rubu // (1 << ACIS1 | 1 << ACIS0 // prekid na rastućem ulaznom rubu;}

// ova se rutina poziva svaki put kada usporednik stvori prekid

ISR (ANALOG_COMP_vect) {oldSREG = SREG; cli (); vremenska oznaka = TCNT1; SREG = oldSREG; }

// ova se rutina poziva svaki put kad dođe do prelijevanja unutarnjeg brojača

ISR (TIMER1_OVF_vect) {timer1_overflow_count ++; }

// ova rutina se koristi za poništavanje timera na 0

void resetTimer (void) {oldSREG = SREG; cli (); // Onemogući prekide TCNT1 = 0; // inicijalizira vrijednost brojača na 0 SREG = oldSREG; // Vraćanje registra statusa TCCR1B | = clockSelectBits; // postavlja pretkaler i pokreće sat timer1_overflow_count = 0; // resetira brojač preljeva}

Naravno da ova ideja nije sasvim nova. Glavni dio ovog koda može se pronaći na drugom mjestu. Dobar pristup takvom pristupu za mikrokontroler pronađen je na TPIMD - početnoj stranici Tiny Pulse Induction Metal Detector.

www.miymd.com/index.php/projects/tpimd/ (nažalost ova stranica više nije na mreži, trenutno postoji sigurnosna kopija stranice na www.basic4mcu.com, potražite "TPIMD").

Korak 1: Arduino ideja o impulsnoj indukciji - preklopna zavojnica

Arduino Pulse Induction Idea - preklopna zavojnica
Arduino Pulse Induction Idea - preklopna zavojnica
Arduino Pulse Induction Idea - preklopna zavojnica
Arduino Pulse Induction Idea - preklopna zavojnica

Ideja je koristiti Arduino kao detektor pulsne indukcije, kao u TPIMD -u, jer izgleda da vremenska ideja krivulje raspada prilično dobro funkcionira. Problem s detektorima pulsne indukcije je taj što im je za rad obično potreban različit napon. Jedan napon za napajanje zavojnice i zasebni napon za rješavanje krivulje raspada. Ta dva izvora napona detektore impulsne indukcije čine uvijek pomalo kompliciranima.

Gledajući napon zavojnice u PI detektoru, rezultirajuća krivulja može se podijeliti u dvije različite faze. Prva faza je sam impuls koji napaja zavojnicu i stvara magnetsko polje (1). Druga faza je krivulja opadanja napona, koja počinje s vrhom napona, a zatim brzo prilagođava napon zavojnice "bez snage" (2). Problem je u tome što zavojnica mijenja impuls nakon impulsa. Je li puls pozitivan (Var 1. na priloženoj slici) krivulja raspada je negativna. Je li puls negativan, krivulja raspadanja će biti pozitivna (Var 2. na priloženoj slici)

Da bi se riješio ovaj osnovni problem, zavojnicu je potrebno elektronički „preokrenuti“nakon impulsa. U tom slučaju puls može biti pozitivan, a krivulja opadanja također može biti pozitivna.

Da bi se to postiglo, zavojnica se nakon impulsa mora izolirati od Vcc i GND. U ovom trenutku kroz prigušni otpornik protiče samo struja. Ovaj izolirani sustav zavojnice i prigušnog otpornika može se zatim „orijentirati“na bilo koji referentni napon. To će, u teoriji, stvoriti kombiniranu pozitivnu krivulju (dno crteža)

Ova pozitivna krivulja može se zatim upotrijebiti za usporedbu za otkrivanje trenutka u kojem napon raspada „prelazi“referentni napon. U slučaju blaga u blizini zavojnice, krivulja opadanja se mijenja, a mijenja se i vrijeme koje prelazi referentni napon. Ova se promjena može otkriti.

Nakon nekog eksperimentiranja pokazalo se da sljedeći krug radi.

Krug se sastoji od Arduino Nano modula. Ovaj modul pokreće dva MOSFET tranzistora koji napajaju zavojnicu (na SV3) preko D10. Kad impuls na D10 završi, oba MOSFET -a izoliraju zavojnicu od 12V i GND. Uštedena energija u zavojnici istječe kroz R2 (220 Ohma). U isto vrijeme R1 (560 Ohma) povezuje bivšu pozitivnu stranu zavojnice GND. Time se krivulja negativnog raspada pri R5 (330 Ohma) mijenja u pozitivnu krivulju. Diode štite ulazni pin Arduina.

R7 je razdjelnik napona na oko 0,04V. U trenutku kada krivulja opadanja na D7 postaje negativnija od 0,04 na D6, aktivira se prekid i sprema trajanje nakon završetka impulsa.

U slučaju metala blizu zavojnice, krivulja opadanja traje dulje, a vrijeme između završetka impulsa i prekida postaje sve duže.

Korak 2: Izgradnja detektora (tlocrtna ploča)

Izgradnja detektora (Breadboard)
Izgradnja detektora (Breadboard)
Izgradnja detektora (Breadboard)
Izgradnja detektora (Breadboard)
Izgradnja detektora (Breadboard)
Izgradnja detektora (Breadboard)

Izrada detektora prilično je jednostavna. To se može učiniti ili na matičnoj ploči (držeći se izvornog kruga) ili lemljenjem dijelova na PCB.

D13 LED dioda na Arduino Nano ploči koristi se kao indikacija za metal

Otkazivanje matične ploče najbrži je put do ispravnog detektora. Potrebno je dosta ožičenja, ali to se može učiniti i na maloj ploči. Na slikama je to prikazano u 3 koraka dok Arduino i MOSFET -ovi skrivaju neke od žica. Prilikom testiranja sam nekako isključio diode, a da to u prvi mah nisam primijetio. To nije imalo negativan učinak na ponašanje detektora. U PCB verziji sklopa potpuno sam ih izostavio.

Na slikama nisu prikazane veze s OLED zaslonom od 0,96. Ovaj zaslon je povezan:

Vcc - 5V (na Arduino pin -u, a ne napon napajanja !!!)

GND - GND

SCL - A5

SDA - A4

Ovaj OLED zaslon potreban je za početnu kalibraciju detektora. To se postiže postavljanjem pravog napona na PIN6 za Arduino. Ovaj napon trebao bi biti oko 0,04V. Zaslon pomaže u postavljanju pravog napona.

Verzija matične ploče radi prilično dobro, iako vjerojatno nije pogodna za odlazak u divljinu.

Korak 3: Odlazak na PCB

Ide na PCB
Ide na PCB
Ide na PCB
Ide na PCB
Ide na PCB
Ide na PCB
Ide na PCB
Ide na PCB

Što se tiče lemljenja, ne volim baš obostrano visokotehnološki PCB, pa sam sklop izmijenio tako da stane na obostranu PCB.

Napravljene su sljedeće izmjene:

1. diode su izostavljene.

2. vrata MOSFET -ova dobila su otpornik od 10 Ohma

3. napon napajanja razdjelnika napona na D6 dat je signalom VISOKE razine na D8

4. promijenjen je upravljački pin za MOSFET -ove.

Na ovaj način se može stvoriti jednostrana PCB koja se može lemiti na univerzalne PCB -e. Pomoću ovog kruga imat ćete radni PI detektor sa samo 8-10 vanjskih komponenti (ovisno o tome koristi li se OLED zaslon i/ili zvučnik).

Korak 4: Postavljanje i korištenje detektora

Postavljanje i korištenje detektora
Postavljanje i korištenje detektora
Postavljanje i korištenje detektora
Postavljanje i korištenje detektora
Postavljanje i korištenje detektora
Postavljanje i korištenje detektora

Ako je detektor pravilno izgrađen i program je napisan na Arduinu, najjednostavniji (ako ne i jedini) način postavljanja jedinice je korištenje OLED zaslona. Zaslon je priključen na 5V, GND, A4, A5. Na displeju bi se trebalo pojaviti „kalibriranje“nakon uključivanja jedinice. Nakon nekoliko sekundi trebao bi reći „kalibracija je izvršena“i tri broja bi se trebala prikazati na zaslonu.

Prvi broj je „referentna vrijednost“identificirana tijekom kalibracije. Druga vrijednost je posljednja izmjerena vrijednost, a treća vrijednost a srednja vrijednost posljednja 32 mjerenja.

Ove tri vrijednosti trebale bi biti manje-više iste (u mojim testnim slučajevima ispod 1000). Srednja vrijednost trebala bi biti manje -više stabilna.

Za početak početnog postavljanja ne smije biti metala u blizini zavojnice.

Sada bi se razdjelnik napona (trim potenciometar) trebao obrezati tako da se donje dvije vrijednosti trebaju postaviti na maksimum, a da pritom i dalje daju stabilno očitanje. Postoji kritična postavka, gdje srednja vrijednost počinje davati čudna očitanja. Okrenite trimer kako biste ponovno dobili stabilne vrijednosti.

Može se dogoditi da se zaslon smrzne. Samo pritisnite gumb za resetiranje i počnite ispočetka.

Za moje postavljanje (zavojnica: 18 okreta pri 20 cm) stabilna vrijednost je oko 630-650. Nakon postavljanja, pritisnite gumb za resetiranje, jedinica se ponovno kalibrira i sve vrijednosti stabla trebale bi biti ponovno u istom rasponu. Ako se sada metal dovodi u zavojnicu, LED dioda na Arduino ploči (D13) bi trebala zasvijetliti. Priloženi zvučnik daje neke klikove (postoji prostor za poboljšanje programiranja).

Da biste spriječili velika očekivanja:

Detektor ipak otkriva neke stvari, ali ostaje vrlo jednostavan i ograničen detektor.

Da bi se stekao dojam o mogućnostima, učinio je neke referentne detekcije s različitim drugim detektorima. Gledajući rezultate, i dalje je impresivno za detektor sa samo 8 vanjskih dijelova, ali ne odgovaraju profesionalnim detektorima.

Gledajući sklop i program, postoji mnogo prostora za poboljšanja. Vrijednosti otpornika pronađene su iskustvom, nasumično je odabrano vrijeme impulsa od 250 ms, parametri zavojnice također. Ako imate ideje za poboljšanja, rado ću ih raspraviti.

Zabavi se!

Korak 5: Ažuriranje 1: Korištenje 16x2 LCD -a

Ažuriranje 1: Korištenje LCD -a 16x2
Ažuriranje 1: Korištenje LCD -a 16x2
Ažuriranje 1: Korištenje LCD -a 16x2
Ažuriranje 1: Korištenje LCD -a 16x2
Ažuriranje 1: Korištenje LCD -a 16x2
Ažuriranje 1: Korištenje LCD -a 16x2

Poboljšanja

Tijekom daljnjeg testiranja shvatio sam da knjižnica za I2C OLED zaslon troši dosta vremena. Pa sam umjesto toga odlučio koristiti zaslon veličine 16x2 s I2C pretvaračem.

Stoga sam program usvojio na LCD zaslon dodavši neke korisne značajke. Prvi redak zaslona sada prikazuje jačinu signala moguće indikacije. Drugi redak sada prikazuje dvije vrijednosti. Šaka je pokazala trenutno odstupanje signala u odnosu na kalibracijsku vrijednost. Ova vrijednost treba biti "0". Ako je ova vrijednost stalno negativna ili pozitivna, detektor treba ponovno kalibrirati pritiskom na gumb za resetiranje. Pozitivne vrijednosti ukazuju na metal blizu zavojnice.

Druga vrijednost prikazuje stvarnu vrijednost kašnjenja krivulje opadanja. Ova vrijednost obično nije toliko zanimljiva, ali je potrebna za početno postavljanje detektora.

Program sada omogućuje više trajanja pulsa u nizu (način eksperimentiranja / poboljšanja performansi). Nisam postigao nikakav proboj. Dakle, zadano je postavljeno na jedno trajanje impulsa.

Početna postavka detektora

Prilikom postavljanja detektora, druga vrijednost drugog retka je relevantna (prva se može zanemariti). U početku vrijednost može biti "nestabilna" (vidi sliku). Okrenite trim otpornik dok vrijednost ne dosegne stabilno očitanje. Zatim ga okrenite da biste povećali vrijednost na maksimalnu stabilnu vrijednost. Pritisnite gumb za resetiranje za ponovnu kalibraciju i detektor je spreman za uporabu.

Stekao sam dojam da sam postavljanjem maksimalne stabilne vrijednosti izgubio osjetljivost na metale koji nisu željezni. Stoga bi moglo biti vrijedno eksperimentirati s postavkama kako biste imali dobru osjetljivost za stvari koje nisu od željeza.

Zavojnice

Izrađujem 3 zavojnice za daljnja ispitivanja

1 -> 18 okreta pri 200 mm

2 -> 25 zavoja na 100 mm

3 -> 48 okreta pri 100 mm

Zanimljivo je da su sve zavojnice radile prilično dobro, s gotovo istim performansama (kovanica od 20 karata na 40-50 mm u zraku). Ovo bi moglo biti prilično subjektivno zapažanje.

Preporučeni: