Sisällysluettelo:
Video: Arduinopohjainen pulssininduktiotunnistin - LC -Trap: 3 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
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
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
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
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:
DIY - Arduinopohjainen pysäköintiavustin V2: 6 vaihetta
DIY - Arduinopohjainen pysäköintitutka V2: Kun elämä antaa sinulle banaaneja !!!!! Syö ne, välttämättömyys on keksintöjen äiti, enkä kiistä sitä. Rehellisesti sanottuna tämä on toinen kerta, kun törmäsin autotallimme seinään sen jälkeen, kun muutimme tähän uuteen taloon. Siinä se, ei olisi mitään
Arduinopohjainen DIY -peliohjain - Arduino PS2 -peliohjain - Tekkenin pelaaminen DIY Arduino -peliohjaimella: 7 vaihetta
Arduinopohjainen DIY -peliohjain | Arduino PS2 -peliohjain | Tekkenin pelaaminen DIY Arduino -peliohjaimella: Hei kaverit, pelien pelaaminen on aina hauskaa, mutta oman DIY -mukautetun peliohjaimen kanssa pelaaminen on hauskempaa
Arduinopohjainen itse ajava auto: 8 vaihetta
Arduinopohjainen itseajava auto: Tervetuloa ensimmäiseen Instructable -tuotteeseeni! Tässä projektissa tehtäväni oli suunnitella auto, joka voisi toimia seuraavasti: Voidaan ohjata äänikomennoilla Android -puhelimen kautta
Arduinopohjainen kontaktiton infrapunalämpömittari - IR -pohjainen lämpömittari Arduinolla: 4 vaihetta
Arduinopohjainen kontaktiton infrapunalämpömittari | IR -pohjainen lämpömittari Arduinon avulla: Hei kaverit tässä ohjeessa, teemme kosketuksettoman lämpömittarin arduinoa käyttämällä, koska joskus nesteen/kiinteän aineen lämpötila on liian korkea tai matala ja sitten on vaikea ottaa yhteyttä siihen ja lukea sen lämpötila siinä tilanteessa
Arduino -pohjainen pulssininduktiotunnistin - kääntökela: 5 vaihetta (kuvilla)
Arduinopohjainen pulssininduktiotunnistin - kääntökela: Idea Kun olemme rakentaneet aiemmin metallinilmaisimia vaihtelevilla tuloksilla, halusin tutkia Arduinon ominaisuuksia tähän suuntaan. tässä opettavaisena