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, Juli
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 pravio 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. Ali kad ih gledamo, 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 koji se odnose na zavojnicu za pretraživanje. Ove promjene su obično vrlo male. Najočigledniji pristup bio bi upotreba analognih ulaza ATmega328. Ali gledajući specifikacije postoje dva osnovna problema: oni su (često) usporeni, a rezolucija (u većini slučajeva) preniska.

S druge strane, Arduino radi na 16MHz i ima dosta mogućnosti mjerenja vremena i. e. rezolucija 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 internog komparatora između D6 i D7. Ovaj komparator može pokrenuti prekid, omogućavajući precizno rukovanje događajima. Ostavljajući pored uredno kodiranih vremenskih rutina poput millis () i micos () i ulazeći u interni tajmer ATmega328 sa mnogo većom rezolucijom, Arduino je odlična osnova za pristupe otkrivanja metala.

Dakle, sa stanovišta izvornog koda, dobar početak bi bio programiranje internog komparatora za „promjenu“polariteta ulaza i korištenje internog 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 predskale, full xtal void setup () {pinMode (6, INPUT); // + komparatora - postavljajući ih kao INPUT, // postavljaju se na pinMode visoke impedanse (7, INPUT); // - komparatora - postavljanjem kao INPUT, // postavljaju se na visoku impedanciju cli (); // prekid prekida TCCR1A = 0; // postavljamo cijeli TCCR1A registar 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 bit sei (); // dopušta prekide ACSR = (0 << ACD) | // Analogni komparator: Omogućeno (0 << ACBG) | // Analogni usporedni pojasni opseg Odaberite: AIN0 se primjenjuje na pozitivni ulaz (0 << ACO) | // Izlaz analognog komparatora: Isključeno (1 << ACI) | // Zastava 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ćoj izlaznoj ivici // (1 << ACIS1 | 1 << ACIS0 // prekid na rastućoj ulaznoj ivici;}

// ova rutina se poziva svaki put kada komparator napravi prekid

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

// ova rutina se poziva svaki put kada dođe do prelivanja u unutrašnjem brojaču

ISR (TIMER1_OVF_vect) {timer1_overflow_count ++; }

// ova rutina se koristi za resetiranje 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; // poništava brojač prelijevanja}

Naravno, ova ideja nije sasvim nova. Glavni dio ovog koda može se pronaći na drugom mjestu. Dobar primjer takvog pristupa 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 ideja o impulsnoj indukciji - preklopna zavojnica
Arduino ideja o impulsnoj indukciji - preklopna zavojnica
Arduino ideja o impulsnoj indukciji - preklopna zavojnica
Arduino ideja o impulsnoj indukciji - preklopna zavojnica

Ideja je koristiti Arduino kao detektor impulsne indukcije, kao u TPIMD -u, jer izgleda da ideja o tempiranju 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 poseban napon za rješavanje krivulje opadanja. Ova dva izvora napona detektore impulsne indukcije čine uvijek pomalo kompliciranim.

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 pada napona, koja počinje s vrhom napona, a zatim brzo prilagođava napon "bez snage" zavojnice (2). Problem je u tome što zavojnica mijenja impuls nakon impulsa. Je li impuls pozitivan (Var 1. na priloženoj slici) krivulja raspada je negativna. Ako je impuls negativan, krivulja opadanja će biti pozitivna (Var 2. na priloženoj slici)

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

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

Ova pozitivna krivulja se tada može koristiti putem komparatora za otkrivanje trenutka u kojem napon raspada „prelazi“referentni napon. U slučaju blaga blizu zavojnice, krivulja opadanja se mijenja, a mijenja se i vrijeme prelaska referentnog napona. Ova se promjena može otkriti.

Nakon izvjesnog eksperimentiranja pokazalo se da radi sljedeće kolo.

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. Ovo mijenja krivu negativnog raspada pri R5 (330 Ohma) 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 duže, a vrijeme između završetka impulsa i prekida postaje sve duže.

Korak 2: Izgradnja detektora (Breadboard)

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

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

D13 LED 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 jer Arduino i MOSFET -ovi skrivaju neke od žica. Prilikom testiranja isključio sam diode nekako, a da to u prvi mah nisam primijetio. To nije imalo negativan utjecaj na ponašanje detektora. U PCB verziji kola potpuno sam ih izostavio.

Na slikama nisu prikazane veze sa OLED ekranom od 0,96. Ovaj ekran je povezan:

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

GND - GND

SCL - A5

SDA - A4

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

Osnovna verzija radi prilično dobro, iako vjerojatno nije pogodna za odlazak u divljinu.

Korak 3: Prelazak 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š dvostrane visokotehnološke PCB-e, pa sam sklop modificirao tako da stane na obostranu PCB.

Napravljene su sljedeće izmjene:

1. diode su izostavljene.

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

3. napon napajanja razdjelnika napona na D6 dat je signalom VISOKOG nivoa na D8

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

Na ovaj način se može stvoriti jednostrana PCB ploča koja se može lemiti na univerzalnim PCB -ovima. Korištenjem 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 upotreba detektora

Postavljanje i upotreba detektora
Postavljanje i upotreba detektora
Postavljanje i upotreba detektora
Postavljanje i upotreba detektora
Postavljanje i upotreba detektora
Postavljanje i upotreba 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 ekrana. Zaslon je priključen na 5V, GND, A4, A5. Na displeju bi trebalo biti prikazano „kalibriranje“nakon uključivanja jedinice. Nakon nekoliko sekundi bi trebalo pisati „kalibracija je izvršena“i tri broja bi se trebala prikazati na ekranu.

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

Ove tri vrijednosti bi trebale 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 donje dvije vrijednosti budu postavljene 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 da biste ponovo dobili stabilne vrednosti.

Može se dogoditi da se ekran zamrzne. 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, uređaj se ponovno kalibrira i sve vrijednosti stabla bi trebale 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 zvukove klika (postoji prostor za poboljšanje programiranja).

Da biste spriječili velika očekivanja:

Detektor zaista 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 prilično impresivno za detektor sa samo 8 vanjskih dijelova, ali ne odgovaraju profesionalnim detektorima.

Gledajući krug i program, postoji mnogo prostora za poboljšanja. Vrijednosti otpornika utvrđ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: Upotreba 16x2 LCD -a

Ažuriranje 1: Korištenje LCD ekrana 16x2
Ažuriranje 1: Korištenje LCD ekrana 16x2
Ažuriranje 1: Korištenje LCD ekrana 16x2
Ažuriranje 1: Korištenje LCD ekrana 16x2
Ažuriranje 1: Korištenje LCD ekrana 16x2
Ažuriranje 1: Korištenje LCD ekrana 16x2

Poboljšanja

Tokom daljnjeg testiranja shvatio sam da biblioteka za I2C OLED ekran troši dosta vremena. Odlučio sam umjesto toga koristiti zaslon veličine 16x2 s I2C pretvaračem.

Zato sam program usvojio na LCD ekran dodajući neke korisne funkcije. Prvi red na ekranu sada prikazuje jačinu signala moguće indikacije. Drugi red sada prikazuje dvije vrijednosti. Šaka je pokazala trenutno odstupanje signala u odnosu na vrijednost kalibracije. Ova vrijednost bi trebala biti "0". Ako je ova vrijednost stalno negativna ili pozitivna, detektor treba ponovno kalibrirati pritiskom na tipku 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 dopušta višestruko trajanje impulsa u nizu (način eksperimentiranja / poboljšanja performansi). Nisam postigao nikakav proboj. Dakle, zadano je postavljeno na trajanje jednog impulsa.

Početna postavka detektora

Prilikom postavljanja detektora, druga vrijednost druge linije 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 maksimalno stabilnu vrijednost. Pritisnite gumb za resetiranje za ponovnu kalibraciju i detektor je spreman za upotrebu.

Stekao sam utisak da sam postavljanjem maksimalne stabilne vrijednosti izgubio osjetljivost na metale koji nisu željezni. Stoga bi možda bilo 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 okreta pri 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čuje se: