Sisällysluettelo:

Arduinopohjainen pulssininduktiotunnistin - LC -Trap: 3 vaihetta
Arduinopohjainen pulssininduktiotunnistin - LC -Trap: 3 vaihetta

Video: Arduinopohjainen pulssininduktiotunnistin - LC -Trap: 3 vaihetta

Video: Arduinopohjainen pulssininduktiotunnistin - LC -Trap: 3 vaihetta
Video: Как подключить встроенный Bluetooth ESP32 к смартфону 2024, Heinäkuu
Anonim
Arduinopohjainen pulssininduktiotunnistin - LC -Trap
Arduinopohjainen pulssininduktiotunnistin - LC -Trap

Etsiessäni lisäideoita yksinkertaiselle Ardino Pulse Induction -metallinilmaisimelle, jolla on vain yksi syöttöjännite, törmäsin Teemon kotisivulle:

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

Hän loi yksinkertaisen pulssininduktiotunnistimen LC-Trap-periaatteen mukaisesti. Samanlaisia piirejä julkaistiin täällä TechKiwiGadgetsin Instructable -sivustolla. Paitsi, että Teemo -piiri käyttää PIC -mikrokontrollerin sisäisiä vertailulaitteita, joten ne tarvitsevat vähemmän ulkoisia komponentteja

Joten minua haastettiin käyttämään Arduinoa PIC-ohjaimen sijaan tässä kaaviossa ja katsomaan, kuinka pitkälle pääsen.

Vaihe 1: Kaavio

Kaavamainen
Kaavamainen
Kaavamainen
Kaavamainen
Kaavamainen
Kaavamainen

Arduinon kaavio on hieman monimutkaisempi, koska Arduino ei salli sisäisen analogisen signaalin reitittämistä vertailijan tuloon. Tämä lisää kaksi komponenttia yksinkertaiseen jännitteenjakajaan. Tämä johtaa rakenteeseen, jossa on 12 ulkoista komponenttia (jättäen kaiuttimen ja 16 x 2 LCD -näytön pois), verrattuna 9: een Flip Coil -mallissa.

Kaavion toimintaperiaate on selitetty hyvin Teemon verkkosivustolla. Pohjimmiltaan kela saa virtaa ja kytkeytyy sitten pois päältä. Katkaisun jälkeen käämi ja lauhdutin rinnakkain muodostavat vaimennetun värähtelyn. Värähtelyn taajuuteen ja rappeutumiseen vaikuttaa metalli kelan läheisyydessä. Lisätietoja piiristä on Teemon tai TechKiwin sivulla Instructables.

Kuten kääntökelan pulssininduktiotunnistimessa, käytän sisäistä vertailua ja mahdollisuutta laukaista keskeytys signaalin vastaanottamiseksi kelalta.

Tässä tapauksessa saan useita keskeytyksiä, koska jännite värähtelee vertailussa asetetun vertailujännitteen ympärillä. Värähtelyn lopussa käämin jännite asettuu noin 5 V: n tasolle, mutta ei täsmälleen. Valitsin 200 ohmin ja 10 k ohmin jännitteenjakajan noin 4,9 voltin jännitteen saamiseksi

Kaavioiden monimutkaisuuden vähentämiseksi käytin D4: tä ja D5: tä GND: n (10 k: n vastuksen) ja 5 V: n (220 ohmin vastuksen) tuottamiseen. Nastat asetetaan ilmaisimen käynnistyksen yhteydessä.

Tässä versiossa lisäsin kaiutinliitännän käyttämällä äänenvoimakkuudensäädettyä monisävyistä appraochia, kuten on kuvattu kohdassa Arduino -pohjaisen metallinilmaisimen ohjelmointi. Tämä mahdollistaa kohteen ominaisuuksien erottamisen ja signaalin voimakkuuden tuntemuksen. Kaiutin voidaan liittää lisä 5 -nastaiseen otsikkoon. Otsikon loput 3 nastaa käytetään painikkeisiin (toteutettava).

Vaihe 2: Ohjelmointi

Ohjelmointi
Ohjelmointi
Ohjelmointi
Ohjelmointi
Ohjelmointi
Ohjelmointi

Nyt kun piiri on suunniteltu ja prototyyppi on rakennettu, on aika löytää sopiva lähestymistapa metallin havaitsemiseen.

1. Pulssien laskeminen

Yksi idea on värähtelyn pulssien laskeminen, kunnes se täysin hajoaa.

Jos kelan lähellä on metallia, värähtely vähenee. Tässä tapauksessa vertailijan vertailujännite tulee asettaa sellaiselle tasolle, että viimeistä pulssia tuskin vielä mitataan. Joten jos jotain havaitaan, tämä pulssi katoaa välittömästi. Tämä oli vähän ongelmallista.

Jokainen värähtelyaalto luo kaksi keskeytystä. Toinen laskiessa ja toinen ylös. Jotta vertailujännite asetettaisiin täsmälleen värähtelyaallon harjanteelle, laskun ja nousun välisen ajan tulisi olla mahdollisimman lyhyt (katso kuva). Valitettavasti täällä Arduinon ympäristön yläpuolella syntyy ongelmia.

Jokainen keskeytyksen laukaisu vaatii tätä koodia:

ISR (ANALOG_COMP_vect) {

Toggle1 = Vaihda0 // tallenna viimeinen arvo Toggle0 = TCNT1; // hanki uusi arvo}

Tämä koodi kestää jonkin aikaa (jos muistan oikein, noin 78 käskyjaksoa, noita on noin 5 mikrosekuntia @ 16 MHz). Siksi kahden pulssin välinen pienin havaittava etäisyys on täsmälleen aika, jonka tämä koodi vie. Jos kahden laukaisimen välinen aika lyhenee (katso kuva), se jää huomaamatta, koska koodi suoritetaan kokonaan ennen toisen keskeytyksen havaitsemista

Tämä johtaa herkkyyden heikkenemiseen. Samalla huomasin, että värähtelyjen vaimennus on hyvin herkkä mille tahansa ulkoiselle vaikutukselle, mikä tekee tästä lähestymistavasta hieman vaikean.

2. Taajuuden mittaaminen

Toinen tapa havaita metalli on värähtelytaajuuden mittaaminen. Tällä on suuri etu verrattuna värähtelyn vaimennuksen mittaamiseen, koska taajuuden muutos mahdollistaa metallin erottamisen. Jos kelan lähellä on rautamateriaalia, taajuus hidastuu, jos kelan lähellä on jalometallia, taajuus kasvaa.

Helpoin tapa mitata taajuus on mitata pulssien määrä sen jälkeen, kun kelat alkavat värähtelemään. Aika alkamis- ja viimeisen pulssin välillä jaettuna mitattujen pulssien kokonaismäärällä on taajuus. Valitettavasti viimeiset värähtelyt ovat melko epäsymmetrisiä. Koska metallin läsnäolo vaikuttaa myös värähtelyn rappeutumiseen, viimeiset värähtelyt ovat vielä epäsymmetrisempiä, lukemia on vaikea tulkita. Kuvassa tämä näkyy risteyksissä 1-1 ja 2-2.

Parempi tapa on siis käyttää joitakin aikaisempia pulsseja taajuuden mittaamiseen. Testauksen aikana huomasin mielenkiintoisesti, että jotkut pulssipulssit ovat herkempiä kuin toiset. Jossain 2/3 värähtelyistä on hyvä paikka hankkia tiedot.

Tietojen käsittely

Alkukoodi perustuu silmukkaan (), joka vaatii pulssitoimintoa () tekemään kelan ajoituksen. Vaikka tulokset eivät olleet huonoja, minulla oli halu parantaa ajoitusta. Tätä varten olen luonut täysin ajastimeen perustuvan koodin, joka johtaa erilliseen asennettavaan Arduino -pohjaisen metallinilmaisimen ohjelmointiin. Tämä opettavainen selittää ajoituksen, tietojen murskaavan nestekidenäytön jne. Yksityiskohtaisesti

1. Nestekidenäyttö

Ensimmäinen tapa oli mitata 10 pulssia ja näyttää sitten arvot nestekidenäytössä. Kun huomasin, että I2C -tiedonsiirto oli liian hidasta, muutin koodiksi päivittääkseni vain yhden merkin pulssia kohden.

2. Vähimmäisarvon lähestymistapa

Parantaaksesi lukemien vakautta edelleen kirjoitin sarjalähtörutiinin saadakseni paremman tuntuman mitatuista tiedoista. Siellä kävi ilmi, että vaikka useimmat lukemat olivat jonkin verran vakaita, jotkut eivät! Jotkut "saman" värähtelypulssin lukemat olivat niin kaukana toisistaan, että se tuhoaisi jokaisen lähestymistavan taajuuden muutoksen analysoimiseksi.

Tämän kompensoimiseksi loin "rajan", jonka sisällä arvo oli luotettava. I. e. kun arvot olivat yli 35 sykliä ajastimella1 odotetusta arvosta, nämä arvot jätettiin huomiotta (selitetty yksityiskohtaisesti ohjeessa "Arduino -pohjaisen metallinilmaisimen ohjelmointi")

Tämä lähestymistapa osoittautui erittäin vakaaksi.

3. Jännite

Teemon alkuperäinen muotoilu toimii alle 5 voltin jännitteellä. Koska olettamukseni oli "enemmän volttia = enemmän tehoa = enemmän herkkyyttä", käynnistin yksikön alussa 12 voltilla. Tämä johti MOSFETin lämpenemiseen. Tämä kuumeneminen johti sitten mitattujen arvojen yleiseen ajautumiseen, mikä johti ilmaisimen toistuvaan tasapainotukseen. Pienentämällä jännitettä 5 V: iin MOSFETin lämmöntuotto voidaan minimoida tasolle, jossa lukemien ajautumista ei havaittu lähes lainkaan. Tämä teki piiristä vieläkin yksinkertaisemman, koska Arduinon sisäistä jännitesäädintä ei tarvittu enää.

MOSFETille valitsin aluksi IRL540: n. Tämä MOSFET on yhteensopiva logiikkatasojen kanssa, mutta sen maksimijännite on ov 100 V. Toivoisin parempaa suorituskykyä vaihtamalla IRL640: een 200 V: n luokituksella. Valitettavasti tulokset olivat samat. Joten joko IRL540 tai IRL640 tekee työn.

Vaihe 3: Lopputulokset

Lopulliset tulokset
Lopulliset tulokset
Lopulliset tulokset
Lopulliset tulokset
Lopulliset tulokset
Lopulliset tulokset

Ilmaisimen etuna on, että se erottaa arvokkaan ja rautamateriaalin. Haittapuolena on, että herkkyys tämän yksinkertaisen kaavion kanssa ei ole niin hyvä. Vertasin suorituskykyä käyttämällä samoja viitteitä kuin Flip-Coil-ilmaisimessa. Luultavasti hyvä joillekin tarkennuksille, mutta todennäköisesti pettymys todelliselle haulle.

Tässä alkuperäinen muotoilu PIC -ohjaimella saattaa olla herkempi, koska se toimii 32 MHz: n lämpötilan 16 MHz: n sijasta ja tarjoaa korkeamman resoluution taajuuden muutosten havaitsemiseksi.

Tulokset saavutettiin käyttämällä kelaa 48 kierrosta @ 100 mm.

Kuten aina, avoin palautteelle

Suositeltava: