INHOUDSOPGAWE:

Arduino -gebaseerde polsinduksiedetektor - LC -trap: 3 stappe
Arduino -gebaseerde polsinduksiedetektor - LC -trap: 3 stappe

Video: Arduino -gebaseerde polsinduksiedetektor - LC -trap: 3 stappe

Video: Arduino -gebaseerde polsinduksiedetektor - LC -trap: 3 stappe
Video: Easy & Powerful Arduino Alternative? #3 Teensy Beginner's Guide 2024, November
Anonim
Arduino -gebaseerde polsinduksiedetektor - LC -trap
Arduino -gebaseerde polsinduksiedetektor - LC -trap

Terwyl ek op soek was na verdere idees vir 'n eenvoudige Ardino Pulse Induction -metaaldetektor met slegs een voedingsspanning, kom ek op die tuisblad van Teemo af:

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

Hy het 'n eenvoudige Pulse Induction detector gemaak volgens die LC-Trap-beginsel. Soortgelyke stroombane is hier op Instructable by TechKiwiGadgets geplaas. Behalwe dat die Teemo -kring die interne vergelykers van die a PIC -mikrobeheerder gebruik, en dus minder eksterne komponente benodig

Ek is dus uitgedaag om die Arduino in plaas van 'n PIC-kontroleerder vir hierdie skema te gebruik en kyk hoe ver ek kan kom.

Stap 1: Skematiese

Skematiese
Skematiese
Skematiese
Skematiese
Skematiese
Skematiese

Die Arduino -skema is 'n bietjie ingewikkelder, aangesien die Arduino dit nie moontlik maak om 'n interne analoog sein na die ingang van die vergelyker te stuur nie. Dit voeg twee komponente by vir 'n eenvoudige spanningsverdeler. Dit lei tot 'n ontwerp met 12 eksterne komponente (wat die luidspreker en die 16x2 LCD -skerm verlaat), vergeleke met 9 van die Flip Coil -ontwerp.

Die werkbeginsel van die skema word baie goed verduidelik op die webwerf van Teemo. Die spoel word eintlik aangeskakel en dan afgeskakel. Na afskakeling sal die spoel en die kondensor parallel 'n gedempte ossillasie veroorsaak. Die frekwensie en verval van die ossillasie word beïnvloed deur metaal in die omgewing van die spoel. Vir meer inligting oor die kring, sien die bladsy van Teemo of TechKiwi hier op Instructables.

Soos met die Flip Coil Pulse Induction detector gebruik ek die interne vergelyker en die moontlikheid om 'n onderbreking te aktiveer om die sein van die spoel te verkry.

In hierdie geval kry ek veelvuldige onderbrekings, aangesien die spanning ossilleer rondom die verwysingspanning wat by die vergelyker ingestel is. Aan die einde van die ossillasie sal die spanning by die spoel ongeveer 5V sak, maar nie presies nie. Ek het 'n spanningsverdeler met 200 Ohm en 10k Ohm gekies om 'n spanning van ongeveer 4,9 volt te verkry

Om die kompleksiteit van die skemas te verminder, het ek D4 en D5 gebruik om GND (vir die 10k -weerstand) en 5V (vir die 220 Ohm -weerstand) te verskaf. Die penne word vasgemaak by die aanvang van die detektor.

In hierdie weergawe het ek 'n luidsprekeraansluiting bygevoeg met behulp van die volumegestuurde meertoon -aanslag, soos beskryf in Hoe om 'n metaaldetektor op Arduino te programmeer. Dit maak dit moontlik om die eienskappe van die teiken te onderskei, sowel as om 'n gevoel te kry van die seinsterkte. Die luidspreker kan gekoppel word aan die bykomende 5 -pins kop. Die oorblywende 3 penne van die kop sal gebruik word vir drukknoppies (moet geïmplementeer word).

Stap 2: Programmering

Programmering
Programmering
Programmering
Programmering
Programmering
Programmering

Noudat die stroombaan ontwerp is en die prototipe gebou is, is dit tyd om 'n geskikte benadering te vind om metaal op te spoor.

1. Pulse tel

Tel van die pulse van die ossillasie totdat dit heeltemal verval, is een idee.

As daar metaal naby die spoel is, neem die ossillasie af. In hierdie geval moet die verwysingspanning van die vergelyker op so 'n vlak gestel word dat die laaste pols nog skaars gemeet word. As daar dus iets opgespoor word, verdwyn hierdie pols onmiddellik. Dit was 'n bietjie problematies.

Elke golf van die ossillasie skep twee onderbrekings. Een terwyl hy afgaan en een terug. Om die verwysingspanning presies op die kruin van 'n ossillasiegolf in te stel, moet die tyd tussen daal en styg so kort as moontlik wees (sien prentjie). Ongelukkig skep die koste van die Arduino -omgewing hier probleme.

Elke sneller van die onderbreking vra vir hierdie kode:

ISR (ANALOG_COMP_vect) {

Toggle1 = Toggle0 // stoor laaste waarde Toggle0 = TCNT1; // kry nuwe waarde}

Hierdie kode neem tyd (as ek reg onthou, is ongeveer 78 instruksiesiklusse ongeveer 5 mikrosekondes @ 16MHz). Daarom is die minimum waarneembare afstand tussen twee pulse presies die tyd wat hierdie kode neem. As die tyd tussen twee snellers korter word (sien prent), sal dit onopgemerk bly, aangesien die kode volledig uitgevoer is voordat 'n tweede onderbreking opgespoor word.

Dit lei tot 'n verlies aan sensitiwiteit. Terselfdertyd het ek opgemerk dat die demping van die ossillasies baie sensitief is vir eksterne invloede, en dit maak hierdie benadering in totaal 'n bietjie moeilik.

2. Meet die frekwensie

'N Ander manier om metaal op te spoor is om die frekwensie van die ossillasie te meet. Dit het 'n groot voordeel in vergelyking met die meting van die demping van die ossillasie, aangesien die verandering in frekwensie die diskriminasie van die metaal moontlik maak. As daar ysterhoudende materiaal naby die spoel is, word die frekwensie stadiger, as daar edelmetaal naby die spoel is, neem die frekwensie toe.

Die maklikste manier om die frekwensie te meet, is om die hoeveelheid pulse te meet nadat die spoele begin ossilleer het. Die tydperk tussen die begin en die laaste pols gedeel deur die totale hoeveelheid gemete pulse is die frekwensie. Ongelukkig is die laaste paar ossillasies redelik onsimmetries. Aangesien die teenwoordigheid van metaal ook die verval van die ossillasie beïnvloed, is die laaste ossillasies nog meer onsimmetries, en die lesings is moeilik om te interpreteer. Op die foto is dit 'n vertoning met die kruising 1 tot 1 'en 2 tot 2'.

'N Beter manier is om 'n paar vroeëre pulse te gebruik om die frekwensie te meet. Tydens die toets het ek interessant gevind dat sommige pulse meer sensitief is as ander. Iewers by 2/3 van die ossillasies is 'n goeie punt om die data te bekom.

Die verwerking van die data

Die aanvanklike kode gebaseer op die lus () wat 'n puls () -funksie benodig om die tydsberekening van die spoel te doen. Alhoewel die resultate nie sleg was nie, het ek die drang gehad om die tydsberekening te verbeter. Om dit te doen, het ek 'n volledig timer -gebaseerde kode geskep, wat gelei het tot die aparte instukbare Hoe om 'n Arduino -gebaseerde metaaldetektor te programmeer. In hierdie instruksies word die tydsberekening, LCD -uitset, ens, in detail verduidelik

1. Die LCD

Die eerste benadering was om 10 pulse te meet en dan die waardes op die LCD te wys. Toe ek agterkom dat die I2C -data -oordrag te stadig was, het ek na kode verander om slegs een karakter per pols by te werk.

2. Minimumwaarde benadering

Om die stabiliteit van die lesings verder te verbeter, het ek 'n reeks uitvoerroetine geskryf om 'n beter gevoel van die gemete data te kry. Daar het dit duidelik geword dat hoewel die meeste lesings ietwat stabiel was, sommige nie! Sommige metings van die "dieselfde" ossillasiepuls was so ver uitmekaar dat dit elke benadering sou verwoes om 'n verskuiwing in frekwensie te ontleed.

Om dit te vergoed, het ek 'n "grens" geskep waarbinne waarde betroubaar was. I. e. wanneer waardes meer as 35 siklusse van timer1 weg van die verwagte waarde was, is hierdie waardes geïgnoreer (in detail verduidelik in die instruksies "Hoe om 'n metaaldetektor op Arduino te programmeer")

Hierdie benadering was baie stabiel.

3. Die spanning

Die oorspronklike ontwerp van Teemo word onder 5 volt aangedryf. Aangesien my aannames was "meer volt = meer krag = meer sensitiwiteit", het ek die eenheid aan die begin met 12V aangedryf. Dit het gelei tot die verhitting van die MOSFET. Hierdie opwarming het dan gelei tot 'n algemene daling van die gemete waardes, wat gelei het tot gereelde herbalansering van die detektor. Deur die spanning na 5V te verlaag, kan die hitteopwekking van die MOSFET tot 'n vlak beperk word waar byna geen afwykings van die metings waargeneem word nie. Dit het die stroombaan nog eenvoudiger gemaak, aangesien die ingeboude spanningsreguleerder van die Arduino nie meer nodig was nie.

Vir 'n MOSFET het ek aanvanklik die IRL540 gekies. Hierdie MOSFET is logies vlak versoenbaar, maar het 'n maksimum spanning van 100V. Ek het gehoop dat beter prestasie verander na 'n IRL640 met 200V -graderings. Ongelukkig was die resultate dieselfde. Dus, óf 'n IRL540 óf 'n IRL640 sal die werk doen.

Stap 3: Finale resultate

Finale Resultate
Finale Resultate
Finale Resultate
Finale Resultate
Finale Resultate
Finale Resultate

Die voordeel van die detektor is dat dit onderskei tussen kosbare en ysterhoudende materiaal. Die nadeel is dat die sensitiwiteit met hierdie eenvoudige skematika nie so goed is nie. Om die prestasie te vergelyk, gebruik ek dieselfde verwysings as vir die Flip-Coil-detektor. Waarskynlik goed om te bepaal, maar waarskynlik teleurstellend vir werklike soek.

Hier is die oorspronklike ontwerp met die PIC -kontroleerder dalk meer sensitief, aangesien dit op 32MHz werk in plaas van die 16MHz van die therfor, wat 'n hoër resolusie bied vir die opsporing van frekwensieverskuiwings.

Resultate is behaal deur die spoel met 48 draaie @ 100 mm te gebruik.

Soos altyd, maak oop vir terugvoer

Aanbeveel: