Innholdsfortegnelse:

Arduino -basert pulsinduksjonsdetektor - LC -felle: 3 trinn
Arduino -basert pulsinduksjonsdetektor - LC -felle: 3 trinn

Video: Arduino -basert pulsinduksjonsdetektor - LC -felle: 3 trinn

Video: Arduino -basert pulsinduksjonsdetektor - LC -felle: 3 trinn
Video: You will get straight As using this device 💀 #electronics #engineering #arduino 2024, Juli
Anonim
Arduino -basert pulsinduksjonsdetektor - LC -Trap
Arduino -basert pulsinduksjonsdetektor - LC -Trap

Mens jeg lette etter flere ideer for en enkel Ardino Pulse Induction metalldetektor med bare en forsyningsspenning, kom jeg over Teemos hjemmeside:

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

Han laget en enkel pulsinduksjonsdetektor ved hjelp av LC-Trap-prinsippet. Lignende kretser ble lagt ut her på Instructable by TechKiwiGadgets. Bortsett fra at Teemo -kretsen bruker de interne komparatorene til en PIC -mikrokontroller, og trenger dermed mindre eksterne komponenter

Så jeg ble utfordret til å bruke Arduino i stedet for en PIC-kontroller for denne skjematikken og se hvor langt jeg kan komme.

Trinn 1: Skjematisk

Skjematisk
Skjematisk
Skjematisk
Skjematisk
Skjematisk
Skjematisk

Arduino -skjematikken er litt mer komplisert ettersom Arduino ikke tillater å dirigere et internt analogt signal til inngangen til komparatoren. Dette legger til to komponenter for en enkel spenningsdeler. Dette fører til et design med 12 eksterne komponenter (utelater høyttaleren og 16x2 LCD), sammenlignet med 9 i Flip Coil -designet.

Arbeidsprinsippet til skjematikken forklares veldig godt på nettstedet til Teemo. I utgangspunktet er spolen slått på og deretter slått av. Etter at spolen og kondensatoren er slått av parallelt, dannes en dempet svingning. Frekvensen og forfallet av svingningen påvirkes av metall i nærheten av spolen. For ytterligere detaljer om kretsen, se siden til Teemo eller TechKiwi her på Instructables.

Som i Flip Coil Pulse Induction -detektoren bruker jeg den interne komparatoren og muligheten til å utløse et avbrudd for å hente signalet fra spolen.

I dette tilfellet vil jeg få flere avbrudd ettersom spenningen svinger rundt referansespenningen som er satt på komparatoren. På slutten av svingningen vil spenningen ved spolen slå seg ned rundt 5V, men ikke akkurat. Jeg valgte en spenningsdeler med 200 Ohm og 10k Ohm for å oppnå en spenning på omtrent 4,9 volt

For å redusere kompleksiteten til skjemaene brukte jeg D4 og D5 for å gi GND (for 10k motstand) og 5V (for 220 Ohm motstand). Pinnene settes ved oppstart av detektoren.

I denne versjonen la jeg til en høyttalertilkobling ved hjelp av den volumkontrollerte flertonede vurderingen som beskrevet i Hvordan programmere en Arduino -basert metalldetektor. Dette gjør det mulig å differensiere egenskapene til målet, samt å få en følelse av signalstyrken. Høyttaleren kan kobles til den ekstra 5 -pins hodet. De resterende 3 pinnene i overskriften brukes til trykknapper (skal implementeres).

Trinn 2: Programmering

Programmering
Programmering
Programmering
Programmering
Programmering
Programmering

Nå som kretsen er designet og prototypen er bygget, er det på tide å finne en passende tilnærming for å oppdage metall.

1. Telle pulser

Telling av pulser av svingningen til den forfaller helt er en idé.

Hvis det er metall i nærheten av spolen, reduseres oscillasjonsmengden. I dette tilfellet bør referansespenningen til komparatoren settes til et nivå at den siste pulsen knapt måles. Så hvis noe blir oppdaget, forsvinner denne pulsen umiddelbart. Dette var litt problematisk.

Hver svingningsbølge skaper to avbrudd. En mens du går ned og en som går opp igjen. For å sette referansespenningen nøyaktig til toppen av en oscillasjonsbølge, bør tiden mellom å gå ned og gå opp være så kort som mulig (se bildet). Dessverre skaper overhead til Arduino -miljøet problemer.

Hver trigger for interrupt krever denne koden:

ISR (ANALOG_COMP_vect) {

Toggle1 = Toggle0 // lagre siste verdi Toggle0 = TCNT1; // få ny verdi}

Denne koden tar litt tid (hvis jeg husker riktig, er omtrent 78 instruksjonssykluser som er omtrent 5 mikrosekunder @ 16MHz). Derfor er den minste påviselige avstanden mellom to pulser nøyaktig tiden denne koden tar. Hvis tiden mellom to utløsere blir kortere (se bildet), vil den gå uoppdaget, ettersom koden er fullstendig utført før det oppdages et annet avbrudd

Dette fører til tap av følsomhet. Samtidig la jeg merke til at dempingen av svingningene er veldig følsom for ytre påvirkninger, noe som gjør denne tilnærmingen totalt sett litt vanskelig.

2. Måling av frekvensen

En annen måte å oppdage metall på er å måle svingningsfrekvensen. Dette har en stor fordel sammenlignet med måling av demping av svingningen ettersom endringen i frekvens tillater diskriminering av metallet. Hvis det er jernholdig materiale i nærheten av spolen, vil frekvensen bremse, hvis det er edelt metall i nærheten av spolen, vil frekvensen øke.

Den enkleste måten å måle frekvensen på er å måle mengden pulser etter at spolene begynner å svinge. Tiden mellom start og siste puls dividert med den totale mengden målte pulser er frekvensen. Dessverre er de siste svingningene ganske usymmetriske. Ettersom tilstedeværelsen av metall også påvirker svingningen av oscillasjonen, er de siste svingningene enda mer usymmetriske, avlesningene er vanskelige å tolke. På bildet er dette show med krysset 1 til 1’og 2 til 2’.

En bedre måte er derfor å bruke noen tidligere pulser for å måle frekvensen. Mens jeg testet, fant jeg interessant ut at noen pulser er mer følsomme enn andre. Et sted ved 2/3 av svingningene er et godt poeng å skaffe dataene.

Behandler dataene

Den første koden er basert på sløyfen () som krever en puls () -funksjon for å utføre timingen av spolen. Selv om resultatene ikke var dårlige, hadde jeg trang til å forbedre timingen. For å gjøre det, opprettet jeg en fulltidsbasert kode, som førte til den separate instuctable How to Program an Arduino Based Metal Detector. Denne instruksen forklarer timingen, dataknusende LCD -utdata osv. I detalj

1. LCD -skjermen

Den første tilnærmingen var å måle 10 pulser og deretter vise verdiene på LCD -skjermen. Da jeg fant ut at I2C -dataoverføringen var altfor treg, endret jeg til kode for å oppdatere bare ett tegn per puls.

2. Minimumsverdi tilnærming

For å forbedre stabiliteten til avlesningene ytterligere skrev jeg en serieutskriftsrutine for å få en bedre følelse av de målte dataene. Der ble det tydelig at selv om de fleste avlesningene var noe stabile, var noen ikke det! Noen avlesninger av den "samme" svingningspulsen var så langt fra hverandre at det ville ødelegge hver tilnærming for å analysere et endring i frekvens.

For å kompensere for dette, opprettet jeg en "grense" der verdien var pålitelig. Dvs. når verdiene var mer enn 35 sykluser med timer1 borte fra den forventede verdien, ble disse verdiene ignorert (forklart i detalj i instruksjonsboken "Hvordan programmere en Arduino -basert metalldetektor")

Denne tilnærmingen viste seg å være veldig stabil.

3. Spenningen

Den originale designen til Teemo er drevet under 5 volt. Siden mine antagelser var "mer volt = mer effekt = mer følsomhet", drev jeg enheten i begynnelsen med 12V. Dette resulterte i oppvarming av MOSFET. Denne oppvarmingen resulterte deretter i en generell drift av måleverdiene, noe som førte til hyppig ombalansering av detektoren. Ved å redusere spenningen til 5V kan varmegenerering av MOSFET minimeres til et nivå der nesten ingen drift av avlesningene ble observert. Dette gjorde kretsen enda enklere, da den innebygde spenningsregulatoren til Arduino ikke lenger var nødvendig.

For en MOSFET valgte jeg først IRL540. Denne MOSFET er logisk nivåkompatibel, men har en maksimal spenning på 100V. Jeg håpet på bedre ytelse til en IRL640 med 200V -karakterer. Dessverre var resultatene de samme. Så enten vil en IRL540 eller en IRL640 gjøre jobben.

Trinn 3: Endelige resultater

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

Fordelen med detektoren er at den skiller mellom dyrebart og jernholdig materiale. Ulempen er at sensitiviteten med denne enkle skjematikken ikke er så god. For å sammenligne ytelsen brukte jeg de samme referansene som for Flip-Coil-detektoren. Sannsynligvis bra for å finne noen, men mest sannsynlig skuffende for ekte søk.

Her kan den originale designen med PIC -kontrolleren være mer sensitiv ettersom den kjører på 32MHz i stedet for 16MHz for den som gir en høyere oppløsning for å oppdage skift i frekvens.

Resultatene ble oppnådd ved å bruke spolen med 48 svinger @ 100 mm.

Som alltid, åpen for tilbakemelding

Anbefalt: