Tartalomjegyzék:

Arduino alapú impulzusindukciós detektor - LC -csapda: 3 lépés
Arduino alapú impulzusindukciós detektor - LC -csapda: 3 lépés

Videó: Arduino alapú impulzusindukciós detektor - LC -csapda: 3 lépés

Videó: Arduino alapú impulzusindukciós detektor - LC -csapda: 3 lépés
Videó: Arduino alapú ürhajós videójáték. 2024, November
Anonim
Arduino alapú impulzusindukciós detektor - LC -Trap
Arduino alapú impulzusindukciós detektor - LC -Trap

Miközben további ötleteket kerestem egy egyszerű tápfeszültségű Ardino Pulse Indukciós fémdetektorhoz, a Teemo honlapján találkoztam:

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

Egy egyszerű impulzusindukciós detektort készített az LC-Trap elvével. Hasonló áramköröket tett közzé itt az Instructable by TechKiwiGadgets. Kivéve, hogy a Teemo áramkör a PIC mikrokontroller belső összehasonlítóit használja, így kevesebb külső komponensre van szükség

Ezért kihívást kaptam, hogy az Arduino-t használjam PIC-vezérlő helyett ehhez a rajzhoz, és nézzem meg, meddig juthatok el.

1. lépés: Vázlatos

Vázlatos
Vázlatos
Vázlatos
Vázlatos
Vázlatos
Vázlatos

Az Arduino vázlata egy kicsit bonyolultabb, mivel az Arduino nem teszi lehetővé a belső analóg jel átirányítását az összehasonlító bemenetére. Ez két komponenst ad hozzá egy egyszerű feszültségosztóhoz. Ennek eredményeként 12 külső alkatrészből álló kivitel jön létre (kihagyva a hangszórót és a 16x2 -es LCD -t), szemben a Flip Coil 9 kivitelével.

A vázlat működési elve nagyon jól ismertetett a Teemo weboldalán. Alapvetően a tekercset bekapcsolják, majd kikapcsolják. Kikapcsolás után a tekercs és a kondenzátor párhuzamosan csillapított rezgést hoz létre. Az oszcilláció gyakoriságát és bomlását a tekercs közelében lévő fém befolyásolja. Az áramkör további részleteit lásd a Teemo vagy a TechKiwi oldalán, itt, az Instructables oldalon.

A Flip Coil impulzusindukciós érzékelőhöz hasonlóan én is a belső összehasonlítót és a megszakítás lehetőségét használom a tekercsből érkező jel felvételéhez.

Ebben az esetben több megszakítást kapok, mivel a feszültség az összehasonlítóban beállított referenciafeszültség körül ingadozik. Az oszcilláció végén a tekercs feszültsége 5 V körül rendeződik, de nem pontosan. 200 ohmos és 10 k ohmos feszültségosztót választottam, hogy körülbelül 4,9 voltos feszültséget kapjak

A sémák összetettségének csökkentése érdekében a D4 és a D5 segítségével GND -t (a 10 k -es ellenálláshoz) és 5 V -ot (a 220 ohmos ellenálláshoz) kaptam. A csapok az érzékelő indításakor vannak beállítva.

Ebben a verzióban hozzáadtam egy hangszórócsatlakozást a hangerő -szabályozott többhangú appraoch használatával, az Arduino alapú fémdetektor programozása című részben leírtak szerint. Ez lehetővé teszi a cél tulajdonságainak megkülönböztetését, valamint a jel erősségének érzékelését. A hangszóró csatlakoztatható az 5 pólusú fejléchez. A fejléc fennmaradó 3 csapja nyomógombokra lesz felhasználva (megvalósításra kerül).

2. lépés: Programozás

Programozás
Programozás
Programozás
Programozás
Programozás
Programozás

Most, hogy az áramkört megtervezték, és a prototípus elkészült, itt az ideje, hogy megfelelő módszert találjunk a fém észlelésére.

1. Impulzusszámlálás

Az egyik ötlet az oszcilláció impulzusainak számlálása a teljes bomlásig.

Ha fém van a tekercs közelében, akkor az oszcilláció csökken. Ebben az esetben az összehasonlító referenciafeszültségét olyan szintre kell állítani, hogy az utolsó impulzus alig mérhető. Tehát ha valamit észlel, ez az impulzus azonnal eltűnik. Ez kicsit problémás volt.

Az oszcilláció minden hulláma két megszakítást hoz létre. Az egyik lefelé menet, a másik visszafelé. Ahhoz, hogy a referenciafeszültséget pontosan az oszcillációs hullám csúcsára állítsa, a le- és felmenés közötti időnek a lehető legrövidebbnek kell lennie (lásd a képet). Sajnos itt az Arduino környezetének fejterhei problémákat okoznak.

A megszakítás minden triggerje ezt a kódot kéri:

ISR (ANALOG_COMP_vect) {

Toggle1 = Toggle0 // az utolsó érték mentése Toggle0 = TCNT1; // új értéket kap}

Ez a kód némi időt vesz igénybe (ha jól emlékszem, körülbelül 78 utasításciklus, körülbelül 5 mikroszekundum @ 16MHz). Ezért a két impulzus közötti minimális észlelhető távolság pontosan az az idő, amelyre ez a kód szükségeltetik. Ha a két trigger közötti idő lerövidül (lásd a képet), akkor a rendszer nem észleli, mivel a kód teljesen végrehajtásra kerül a második megszakítás észlelése előtt

Ez az érzékenység csökkenéséhez vezet. Ugyanakkor észrevettem, hogy az oszcillációk csillapítása nagyon érzékeny bármilyen külső hatásra, így ez a megközelítés összességében kissé megnehezíti.

2. A frekvencia mérése

A fém észlelésének másik módja az oszcilláció frekvenciájának mérése. Ennek nagy előnye van az oszcilláció csillapításának méréséhez képest, mivel a frekvenciaváltozás lehetővé teszi a fém megkülönböztetését. Ha vasanyag van a tekercs közelében, a frekvencia lelassul, ha nemesfém van a tekercs közelében, akkor a frekvencia nő.

A frekvencia mérésének legegyszerűbb módja az impulzusok mennyiségének mérése a tekercsek oszcillálása után. A kezdés és az utolsó impulzus közötti idő osztva a mért impulzusok teljes mennyiségével a gyakoriság. Sajnos az utolsó néhány oszcilláció meglehetősen aszimmetrikus. Mivel a fém jelenléte szintén befolyásolja az oszcilláció bomlását, az utolsó rezgések még aszimmetrikusabbak, a leolvasásokat nehéz értelmezni. A képen ez látható az 1: 1 'és 2: 2' kereszteződéssel.

Ezért jobb módszer néhány korábbi impulzus használata a frekvencia mérésére. A tesztelés során érdekes módon rájöttem, hogy egyes impulzus impulzusok érzékenyebbek, mint mások. Valahol az oszcillációk 2/3 -án jó pont az adatok megszerzésére.

Az adatok feldolgozása

A kezdeti kód a hurkon () alapul, amely impulzus () függvényt hív fel a tekercs időzítésére. Bár az eredmények nem voltak rosszak, késztetésem volt az időzítés javítására. Ennek érdekében létrehoztam egy teljesen időzítő alapú kódot, amely elvezetett az Arduino -alapú fémdetektor programozható külön programozható módjához. Ez az utasítás részletesen elmagyarázza az időzítést, az adatok ropogós LCD kimenetét stb

1. Az LCD

Az első módszer 10 impulzus mérése volt, majd az értékek megjelenítése az LCD -n. Amint rájöttem, hogy az I2C adatátvitel túl lassú, kódra váltottam, hogy impulzusonként csak egy karaktert frissítsek.

2. Minimális érték megközelítés

A leolvasások stabilitásának javítása érdekében soros kimeneti rutint írtam, hogy jobban érezzem a mért adatokat. Ott nyilvánvalóvá vált, hogy bár a legtöbb leolvasás némileg stabil volt, néhány nem! Az „ugyanazon” oszcillációs impulzus egyes leolvasásai olyan távol voltak egymástól, hogy minden módszert tönkretennének a frekvenciaváltozás elemzésére.

Ennek ellensúlyozására létrehoztam egy "határt", amelyen belül az érték megbízható. I. e. amikor az értékek több mint 35 időzítési cikluson1 voltak a várt értéktől, ezeket az értékeket figyelmen kívül hagyták (részletesen ismertetjük az "Arduino -alapú fémdetektor programozása" című utasításban)

Ez a megközelítés nagyon stabilnak bizonyult.

3. A feszültség

A Teemo eredeti kialakítása 5 volt alatt működik. Mivel feltételezéseim „több volt = nagyobb teljesítmény = nagyobb érzékenység” volt, az elején 12 V -ról tápláltam a készüléket. Ennek eredményeként a MOSFET felmelegedett. Ez a felmelegedés azután a mért értékek általános eltolódását eredményezte, ami az érzékelő gyakori újraegyensúlyozásához vezetett. A feszültség 5 V -ra történő csökkentésével a MOSFET hőtermelését olyan szintre lehet minimalizálni, hogy szinte semmilyen eltolódást nem észleltek. Ez még egyszerűbbé tette az áramkört, mivel az Arduino fedélzeti feszültségszabályozójára már nem volt szükség.

A MOSFET -hez először az IRL540 -et választottam. Ez a MOSFET logikai szintű kompatibilis, de maximális feszültsége ov 100V. Reméltem, hogy jobb teljesítményre váltok, 200V -os IRL640 -re. Sajnos az eredmények ugyanazok voltak. Tehát vagy egy IRL540 vagy egy IRL640 elvégzi a feladatot.

3. lépés: Végeredmények

Végeredmények
Végeredmények
Végeredmények
Végeredmények
Végeredmények
Végeredmények

Az érzékelő előnye, hogy megkülönbözteti az értékes és a vas anyagokat. Hátránya, hogy az érzékenység ezzel az egyszerű sémával nem túl jó. A teljesítmény összehasonlításához ugyanazokat a hivatkozásokat használtam, mint a Flip-Coil detektor esetében. Valószínűleg jó néhány pontosításhoz, de valószínűleg csalódást okoz a valódi kereséshez.

Itt az eredeti kialakítás a PIC vezérlővel érzékenyebb lehet, mivel 32 MHz -en működik a 16 MHz -es hő helyett, amely nagyobb felbontást biztosít a frekvenciaváltások észleléséhez.

Az eredményeket 48 tekercs 100 mm -es tekercs használatával értük el.

Mint mindig, nyitott a visszajelzésekre

Ajánlott: