Taula de continguts:

Detector d'inducció de pols basat en Arduino - LC-Trap: 3 passos
Detector d'inducció de pols basat en Arduino - LC-Trap: 3 passos

Vídeo: Detector d'inducció de pols basat en Arduino - LC-Trap: 3 passos

Vídeo: Detector d'inducció de pols basat en Arduino - LC-Trap: 3 passos
Vídeo: 187 Strassenbande - Mit den Jungs (Jambeatz) 2024, Juliol
Anonim
Detector d'inducció de pols basat en Arduino - LC-Trap
Detector d'inducció de pols basat en Arduino - LC-Trap

Mentre buscava més idees per a un senzill detector de metalls Ardino Pulse Induction amb només un voltatge d’alimentació, em vaig trobar amb la pàgina principal de Teemo:

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

Va crear un senzill detector d’inducció de pols utilitzant el principi LC-Trap. Circuits similars es van publicar aquí a Instructable per TechKiwiGadgets. Excepte que el circuit Teemo utilitza els comparadors interns del microcontrolador PIC, necessitant així menys components externs

Per tant, se’m va plantejar el desafiament d’utilitzar l’Arduino en lloc d’un controlador PIC per a aquest esquema i mirar fins on puc arribar.

Pas 1: esquema

Esquema
Esquema
Esquema
Esquema
Esquema
Esquema

L'esquema d'Arduino és una mica més complicat, ja que l'Arduino no permet enrutar un senyal analògic intern a l'entrada del comparador. Això afegeix dos components per a un simple voltatge de voltatge. Això condueix a un disseny amb 12 components externs (deixant fora l’altaveu i la pantalla LCD de 16x2), en comparació amb els 9 del disseny Flip Coil.

El principi de funcionament de l’esquema s’explica molt bé al lloc web de Teemo. Bàsicament la bobina s’alimenta i després s’apaga. Després d’apagar-se, la bobina i el condensador en paral·lel crearan una oscil·lació amortida. La freqüència i la desintegració de l'oscil·lació es veuen influïdes pel metall en la proximitat de la bobina. Per a més detalls del circuit, consulteu la pàgina de Teemo o de TechKiwi aquí a Instructables.

Com al detector d’inducció de pols Flip Coil, faig servir el comparador intern i la possibilitat de provocar una interrupció per adquirir el senyal de la bobina.

En aquest cas, obtindré diverses interrupcions, ja que el voltatge oscil·la al voltant del voltatge de referència establert al comparador. Al final de l’oscil·lació, el voltatge a la bobina s’establirà al voltant dels 5V, però no exactament. Vaig triar un divisor de tensió de 200 Ohm i 10k Ohm per obtenir un voltatge d’uns 4,9 volts

Per reduir la complexitat dels esquemes, vaig utilitzar D4 i D5 per proporcionar GND (per a la resistència de 10 k) i 5 V (per a la resistència de 220 Ohm). Els pins es configuren a l’arrencada del detector.

En aquesta versió, he afegit una connexió d’altaveus mitjançant l’aproximació multicolor controlada pel volum tal com es descriu a Com programar un detector de metalls basat en Arduino. Això permet diferenciar les propietats de l'objectiu, així com obtenir una sensació de la força del senyal. L'altaveu es pot connectar a la capçalera addicional de 5 pins. Els 3 pins restants de la capçalera s’utilitzaran per als botons de pressió (que s’implementaran).

Pas 2: programació

Programació
Programació
Programació
Programació
Programació
Programació

Ara que es dissenya el circuit i es construeix el prototip, és hora de trobar un enfocament adequat per detectar metalls.

1. Comptant polsos

Una de les idees és comptar els impulsos de l’oscil·lació fins que decau completament.

Si hi ha metall a prop de la bobina, la quantitat d'oscil·lació disminueix. En aquest cas, la tensió de referència del comparador s’ha d’establir a un nivell que l’últim impuls encara no es mesura. Per tant, en cas que es detecti alguna cosa, aquest pols desapareix immediatament. Això era una mica problemàtic.

Cada ona de l’oscil·lació crea dues interrupcions. Una baixant i una altra pujant. Per establir el voltatge de referència exactament a la cresta d’una ona d’oscil·lació, el temps entre baixar i pujar ha de ser el més curt possible (vegeu la imatge). Malauradament, aquí la sobrecàrrega de l'entorn Arduino crea problemes.

Cada activador de la interrupció requereix aquest codi:

ISR (ANALOG_COMP_vect) {

Toggle1 = Toggle0 // guarda el darrer valor Toggle0 = TCNT1; // obtenir un valor nou}

Aquest codi triga una mica de temps (si no ho recordo bé, uns 78 cicles d’instruccions que fan uns 5 microsegons a 16 MHz). Per tant, la distància mínima detectable entre dos polsos és exactament el temps que triga aquest codi, si el temps entre dos activadors es redueix (vegeu la imatge), quedarà sense ser detectat, ja que el codi s’executa completament abans de detectar una segona interrupció

Això comporta una pèrdua de sensibilitat. Al mateix temps, em vaig adonar que l'amortiment de les oscil·lacions és molt sensible a qualsevol influència externa, cosa que dificulta una mica aquest enfocament en total.

2. Mesurament de la freqüència

Una altra manera de detectar metall és mesurant la freqüència de l’oscil·lació. Això té un gran avantatge en comparació amb mesurar l'amortiment de l'oscil·lació, ja que el canvi de freqüència permet discriminar el metall. En cas que hi hagi material ferrós a prop de la bobina, la freqüència s’alentirà, en cas que hi hagi metalls preciosos a prop de la bobina, la freqüència augmentarà.

La forma més senzilla de mesurar la freqüència és mesurar la quantitat d’impulsos després que les bobines comencin a oscil·lar. El període de temps entre l’inici i l’últim pols dividit per la quantitat total d’impulsos mesurats és la freqüència. Malauradament, les últimes oscil·lacions són força asimètriques. Com que la presència de metall també influeix en la desintegració de l'oscil·lació, les darreres oscil·lacions són encara més asimètriques, les lectures són difícils d'interpretar. A la imatge es mostra amb la cruïlla d’1 a 1’i 2 a 2’.

Per tant, una millor manera és utilitzar alguns polsos anteriors per mesurar la freqüència. Durant les proves, curiosament vaig descobrir que alguns impulsos són més sensibles que altres. En algun lloc, a 2/3 de les oscil·lacions, és un bon punt per adquirir les dades.

Processament de les dades

El codi inicial basat en el bucle () que demana una funció pulse () per fer el temps de la bobina. Tot i que els resultats no van ser dolents, vaig tenir la voluntat de millorar el temps. Per fer-ho, vaig crear un codi completament basat en temporitzador, que va conduir a l'instuctable separat Com programar un detector de metalls basat en Arduino. Aquesta instrucció explica detalladament la sincronització de dades LCD, etc.

1. La pantalla LCD

El primer enfocament va ser mesurar 10 impulsos i després mostrar els valors a la pantalla LCD. Quan vaig saber que la transferència de dades I2C era massa lenta, vaig canviar a codi per actualitzar només un caràcter per pols.

2. Enfocament del valor mínim

Per millorar l’estabilitat de les lectures, vaig escriure una rutina de sortida en sèrie per obtenir una millor sensació de les dades mesurades. Allà es va fer evident que, tot i que la majoria de les lectures eren una mica estables, algunes no. Algunes lectures del "mateix" pols d'oscil·lació estaven tan separades que destrossaria cada aproximació per analitzar un canvi de freqüència.

Per compensar això, vaig crear una "frontera" dins la qual el valor era fiable. I. e. quan els valors es trobaven a més de 35 cicles de temporitzador1 del valor esperat, aquests valors es van ignorar (s'explica detalladament a la secció "Com programar un detector de metalls basat en Arduino")

Aquest enfocament va resultar ser molt estable.

3. La tensió

El disseny original de Teemo funciona per sota dels 5 volts. Com que les meves suposicions eren "més volts = més potència = més sensibilitat", vaig alimentar la unitat al principi amb 12V. Això va provocar l'escalfament del MOSFET. Aquest escalfament va donar lloc a una deriva general dels valors mesurats, cosa que va provocar un reequilibri freqüent del detector. En disminuir el voltatge a 5V, la generació de calor del MOSFET es podria minimitzar fins a un nivell on gairebé no es va observar cap deriva de les lectures. Això va fer el circuit encara més senzill, ja que el regulador de tensió incorporat de l'Arduino ja no era necessari.

Per a un MOSFET, vaig escollir inicialment la IRL540. Aquest MOSFET és compatible a nivell lògic, però té una tensió màxima de 100V. Esperava un millor rendiment canviant a un IRL640 amb 200V. Malauradament els resultats van ser els mateixos. Per tant, un IRL540 o un IRL640 faran la feina.

Pas 3: Resultats finals

Resultats finals
Resultats finals
Resultats finals
Resultats finals
Resultats finals
Resultats finals

L’avantatge del detector és que discrimina entre materials preciosos i ferrosos. L’inconvenient és que la sensibilitat d’aquest esquema senzill no és tan bona. Per comparar el rendiment, he utilitzat les mateixes referències que per al detector Flip-Coil. Probablement és bo per a alguns detalls, però el més probable és decebedor per a la cerca real.

Aquí el disseny original amb el controlador PIC pot ser més sensible, ja que funciona a 32 MHz en lloc de 16 MHz, proporcionant una resolució més alta per detectar canvis de freqüència.

Els resultats es van aconseguir utilitzant la bobina de 48 voltes a 100 mm.

Com sempre, obriu els vostres comentaris

Recomanat: