Indholdsfortegnelse:

Arduino baseret pulsinduktionsdetektor - LC -Trap: 3 trin
Arduino baseret pulsinduktionsdetektor - LC -Trap: 3 trin

Video: Arduino baseret pulsinduktionsdetektor - LC -Trap: 3 trin

Video: Arduino baseret pulsinduktionsdetektor - LC -Trap: 3 trin
Video: индукционный нагреватель на основе IGBT — без MOSFET, без диодов, без сопротивления, без катушки! 2024, Juli
Anonim
Arduino baseret pulsinduktionsdetektor - LC -Trap
Arduino baseret pulsinduktionsdetektor - LC -Trap

Mens jeg ledte efter flere ideer til en simpel Ardino Pulse Induction -metaldetektor med kun en forsyningsspænding, stødte jeg på Teemos hjemmeside:

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

Han skabte en simpel pulsinduktionsdetektor ved hjælp af LC-Trap-princippet. Lignende kredsløb blev postet her på Instructable by TechKiwiGadgets. Bortset fra at Teemo -kredsløbet anvender de interne komparatorer til en PIC -mikrokontroller og dermed har brug for færre eksterne komponenter

Så jeg blev udfordret til at bruge Arduino i stedet for en PIC-controller til denne skematik og se, hvor langt jeg kan komme.

Trin 1: Skematisk

Skematisk
Skematisk
Skematisk
Skematisk
Skematisk
Skematisk

Arduino -skematikken er lidt mere kompliceret, da Arduino ikke tillader at dirigere et internt analogt signal til komparatorens input. Dette tilføjer to komponenter til en simpel spændingsdeler. Dette fører til et design med 12 eksterne komponenter (udelader højttaleren og 16x2 LCD), sammenlignet med 9 i Flip Coil -designet.

Skemaets arbejdsprincip forklares meget godt på Teemos websted. Grundlæggende er spolen tændt og derefter slukket. Efter frakobling vil spolen og kondensatoren parallelt skabe en dæmpet svingning. Svingningens frekvens og forfald påvirkes af metal i nærheden af spolen. For yderligere detaljer om kredsløbet se siden på Teemo eller TechKiwi her på Instructables.

Som i Flip Coil Impuls Induktionsdetektoren bruger jeg den interne komparator og muligheden for at udløse en afbrydelse for at hente signalet fra spolen.

I dette tilfælde får jeg flere afbrydelser, da spændingen oscillerer omkring referencespændingen, der er indstillet på komparatoren. I slutningen af svingningen vil spændingen ved spolen slå sig ned omkring 5V, men ikke ligefrem. Jeg valgte en spændingsdeler med 200 Ohm og 10k Ohm for at opnå en spænding på omkring 4,9 volt

For at reducere kompleksiteten af skemaerne brugte jeg D4 og D5 til at levere GND (til 10k modstanden) og 5V (til 220 Ohm modstanden). Tappene sættes ved start af detektoren.

I denne version tilføjede jeg en højttalerforbindelse ved hjælp af den volumenstyrede multi -tone vurdering som beskrevet i Sådan programmeres en Arduino -baseret metaldetektor. Dette giver mulighed for at differentiere målets egenskaber samt at få en fornemmelse af signalstyrken. Højttaleren kan tilsluttes den ekstra 5 -pins header. De resterende 3 ben i overskriften bruges til trykknapper (skal implementeres).

Trin 2: Programmering

Programmering
Programmering
Programmering
Programmering
Programmering
Programmering

Nu hvor kredsløbet er designet og prototypen er bygget, er det tid til at finde en passende tilgang til at detektere metal.

1. Tælling af pulser

At tælle pulser fra svingningen, indtil den falder fuldstændigt, er en idé.

Hvis der er metal tæt på spolen falder svingningsmængden. I dette tilfælde bør komparatorens referencespænding indstilles til et niveau, hvor den sidste puls næsten ikke måles. Så hvis der opdages noget, forsvinder denne puls straks. Dette var lidt problematisk.

Hver svingningsbølge skaber to afbrydelser. Én mens du går ned og en går op igen. For at indstille referencespændingen nøjagtigt til toppen af en oscillationsbølge skal tiden mellem at gå ned og gå op være så kort som muligt (se billede). Desværre skaber overhead i Arduino -miljøet problemer.

Hver udløser af afbrydelsen kalder på denne kode:

ISR (ANALOG_COMP_vect) {

Toggle1 = Toggle0 // gem sidste værdi Toggle0 = TCNT1; // få ny værdi}

Denne kode tager lidt tid (hvis jeg husker rigtigt, er omkring 78 instruktionscyklusser heks omkring 5 mikrosekunder @ 16MHz). Derfor er den mindste påviselige afstand mellem to impulser nøjagtigt den tid, denne kode tager. Hvis tiden mellem to udløsere bliver kortere (se billede), vil den ikke blive opdaget, da koden udføres fuldt ud, før der registreres en anden afbrydelse

Dette fører til tab af følsomhed. På samme tid bemærkede jeg, at dæmpningen af svingningerne er meget følsom over for ydre påvirkninger, hvilket gør denne tilgang i alt en smule vanskelig.

2. Måling af frekvensen

En anden måde at detektere metal på er at måle svingningsfrekvensen. Dette har en stor fordel i forhold til at måle dæmpningen af svingningen, da ændringen i frekvens muliggør diskrimination af metallet. Hvis der er jernholdigt materiale i nærheden af spolen, vil frekvensen bremse, hvis der er ædelmetal i nærheden af spolen, vil frekvensen stige.

Den nemmeste måde at måle frekvensen på er at måle mængden af pulser, efter at spolerne begynder at svinge. Tiden mellem starten og den sidste puls divideret med den samlede mængde målte impulser er frekvensen. Desværre er de sidste svingninger ret usymmetriske. Da tilstedeværelsen af metal også påvirker svingningen af svingningen, er de sidste svingninger endnu mere usymmetriske, aflæsningerne er svære at fortolke. På billedet er dette show med krydset 1 til 1’og 2 til 2’.

En bedre måde er derfor at bruge nogle tidligere pulser til at måle frekvensen. Under testen fandt jeg interessant ud af, at nogle pulser pulser er mere følsomme end andre. Et sted ved 2/3 af svingningerne er et godt punkt at erhverve dataene.

Behandling af data

Den indledende kode baseret på loop (), der kalder på en puls () -funktion til at udføre spolens timing. Selvom resultaterne ikke var dårlige, havde jeg trang til at forbedre timingen. For at gøre dette skabte jeg en fuldtidsbaseret kode, der førte til den separate instuctable How to Program an Arduino Based Metal Detector. Denne instruktive forklarer timingen, dataknusning af LCD -output osv. I detaljer

1. LCD -skærmen

Den første tilgang var at måle 10 pulser og derefter vise værdierne på LCD'et. Da jeg fandt ud af, at I2C -dataoverførslen var alt for langsom, ændrede jeg til kode for kun at opdatere et tegn pr. Puls.

2. Minimumsværdi tilgang

For at forbedre stabiliteten af aflæsningerne yderligere skrev jeg en seriel output -rutine for at få en bedre fornemmelse af de målte data. Der blev det tydeligt, at selvom de fleste aflæsningerne var noget stabile, var nogle ikke det! Nogle aflæsninger af den "samme" svingningspuls var så langt fra hinanden, at det ville ødelægge enhver tilgang for at analysere et skift i frekvens.

For at kompensere for dette skabte jeg en "grænse", inden for hvilken værdien var troværdig. I. e. når værdierne var mere end 35 cyklusser af timer1 væk fra den forventede værdi, blev disse værdier ignoreret (forklaret detaljeret i instruktionsbogen "Sådan programmeres en Arduino -baseret metaldetektor")

Denne fremgangsmåde viste sig at være meget stabil.

3. Spændingen

Det originale design af Teemo er drevet under 5 volt. Da mine antagelser var "flere volt = mere effekt = mere følsomhed", drev jeg enheden i starten med 12V. Dette resulterede i opvarmning af MOSFET. Denne opvarmning resulterede derefter i en generel drift af de målte værdier, hvilket førte til hyppig ombalancering af detektoren. Ved at reducere spændingen til 5V kunne varmegenereringen af MOSFET minimeres til et niveau, hvor næsten ingen drift af aflæsningerne blev observeret. Dette gjorde kredsløbet endnu enklere, da den indbyggede spændingsregulator på Arduino ikke længere var nødvendig.

Til en MOSFET valgte jeg oprindeligt IRL540. Denne MOSFET er logisk kompatibel, men har en maksimal spændingsvurdering på 100V. Jeg håbede på en bedre ydeevne, der ændrede sig til en IRL640 med 200V ratings. Desværre var resultaterne de samme. Så enten en IRL540 eller en IRL640 vil gøre jobbet.

Trin 3: Endelige resultater

Endelige resultater
Endelige resultater
Endelige resultater
Endelige resultater
Endelige resultater
Endelige resultater

Fordelen ved detektoren er, at den skelner mellem dyrebart og jernholdigt materiale. Ulempen er, at følsomheden med denne enkle skematiske ikke er så god. For at sammenligne ydelsen brugte jeg de samme referencer som for Flip-Coil-detektoren. Sandsynligvis godt for nogle at identificere, men sandsynligvis skuffende for rigtig søgning.

Her er det originale design med PIC -controlleren måske mere følsomt, da det kører på 32MHz i stedet for 16MHz for det, hvilket giver en højere opløsning til at detektere skift i frekvens.

Resultater blev opnået ved at bruge spolen med 48 omdrejninger @ 100 mm.

Som altid åben for feedback

Anbefalede: