Sisällysluettelo:

ATTiny85 -kondensaattorimittari: 4 vaihetta
ATTiny85 -kondensaattorimittari: 4 vaihetta

Video: ATTiny85 -kondensaattorimittari: 4 vaihetta

Video: ATTiny85 -kondensaattorimittari: 4 vaihetta
Video: How to Make 4-Channel Remote Control Circuit for Attiny85 Microcontroller ic 2024, Heinäkuu
Anonim
ATTiny85 kondensaattorimittari
ATTiny85 kondensaattorimittari
ATTiny85 kondensaattorimittari
ATTiny85 kondensaattorimittari

Tämä ohje on tarkoitettu ATTiny85 -pohjaiseen kondensaattorimittariin, jolla on seuraavat ominaisuudet.

  • Perustuu ATTiny85: een (DigiStamp)
  • SSD1306 0,96 "OLED -näyttö
  • Taajuuden mittaus pieniarvoisille kondensaattoreille 1pF - 1uF käyttäen 555 -oskillaattoria
  • Latausajan mittaus arvokkaille kondensaattoreille 1uF - 50000uF
  • 2 erillistä porttia, joita käytetään menetelmiin, joilla minimoidaan tähtikapasitanssi
  • Latausajalle käytetään kahta virta -arvoa suurien kondensaattoreiden ajan minimoimiseksi
  • 555 -menetelmän itse nollia käynnistettäessä, voidaan nollata painikkeella
  • Pikatesti, jolla valitaan menetelmä, jota käytetään jokaisessa mittausjaksossa.
  • Latausaikamenetelmän tarkkuutta voidaan parantaa tukemalla OSCVAL -kellotaajuuden säätöä

Vaihe 1: Kaavio ja teoria

Kaavio ja teoria
Kaavio ja teoria

Kaaviossa näkyy ATTiny, joka ajaa SSD1306 OLED -näyttöä I2C -liitännän kautta. Se saa virtansa suoraan 300 mAh: n LiOn -akusta, ja mukana tulee latauspiste, jota voidaan käyttää LiOn -yhteensopivan ulkoisen laturin kanssa.

Ensimmäinen mittausmenetelmä perustuu 555 vapaasti toimivan oskillaattorin taajuuden mittaamiseen. Tämän perustaajuus määritetään vastuksilla ja kondensaattorilla, jonka pitäisi olla suuri tarkkuus, koska tämä määrittää mittausten tarkkuuden. Käytin 820pF 1% polystyreenikondensaattoria, jota minulla oli, mutta muita arvoja noin 1 nF voidaan käyttää. Arvo on syötettävä ohjelmistoon ja arvio mahdollisesta hajakapasitanssista (~ 20pF). Tämä antoi noin 16 kHz: n perustaajuuden. 555: n lähtö syötetään ATTiny: n PB2: een, joka on ohjelmoitu laitteistolaskuriksi. Taajuus voidaan määrittää mittaamalla määrä noin 1 sekunnin aikana. Tämä tehdään käynnistyksen yhteydessä perustaajuuden määrittämiseksi. Kun testattava kondensaattori lisätään rinnakkain peruskondensaattoriin, taajuus laskee ja kun tämä mitataan ja verrataan perustaajuuteen, lisäkapasitanssin arvo voidaan laskea.

Tämän menetelmän hieno piirre on, että laskettu arvo riippuu vain peruskondensaattorin tarkkuudesta. Mittausjaksolla ei ole väliä. Resoluutio riippuu taajuusmittausten resoluutiosta, joka on melko korkea, joten jopa hyvin pieni lisäkapasitanssi voidaan mitata. Rajoittava tekijä näyttää olevan 555 -oskillaattorin "taajuuskohina", joka vastaa minulle noin 0,3 pF.

Menetelmää voidaan käyttää kohtuullisella alueella. Alueen parantamiseksi synkronoin mittausjakson tulevien pulssien reunojen havaitsemiseen. Tämä tarkoittaa, että jopa matalataajuiset värähtelyt, kuten 12 Hz (1uF -kondensaattorilla), mitataan tarkasti.

Suuremmille kondensaattoreille piiri on järjestetty käyttämään varauksen ajoitusmenetelmää. Tässä testattava kondensaattori purkautuu varmistaakseen, että se alkaa nollasta, ja sitten se ladataan tunnetun vastuksen kautta syöttöjännitteestä. ATTiny85: n ADC: tä käytetään kondensaattorin jännitteen valvontaan ja 0% - 50% varauksen siirtymisaika mitataan. Tätä voidaan käyttää kapasitanssin laskemiseen. Koska ADC: n viite on myös syöttöjännite, tämä ei vaikuta mittaukseen. Ajan absoluuttinen mitta riippuu kuitenkin ATTiny85 -kellotaajuudesta, ja sen vaihtelut vaikuttavat tulokseen. Menettelyä voidaan käyttää tämän kellon tarkkuuden parantamiseen käyttämällä ATTiny85: n viritysrekisteriä, ja tämä kuvataan myöhemmin.

Kondensaattorin purkamiseen 0 V: iin käytetään n-kanavaista MOSFET: tä yhdessä pieniarvoisen vastuksen kanssa purkausvirran rajoittamiseksi. Tämä tarkoittaa, että jopa suurikokoiset kondensaattorit voidaan purkaa nopeasti.

Kondensaattorin lataamiseen käytetään 2 latausvastuksen arvoa. Perusarvo antaa kohtuulliset latausajat kondensaattoreille 1uF - 50uF. P-kanavaista MOSFETia käytetään rinnakkain alemmassa vastuksessa, jotta korkeamman arvon kondensaattoreita voidaan mitata kohtuullisella aikavälillä. Valitut arvot antavat noin 1 sekunnin mittausajan kondensaattoreille jopa 2200uF ja suhteellisesti pidemmän suuremmille arvoille. Arvon alemmassa päässä mittausjaksoa on pidettävä kohtuullisen pitkään, jotta siirtyminen 50%: n kynnyksen läpi voidaan määrittää riittävän tarkasti. ADC: n näytteenottotaajuus on noin 25uSec, joten vähintään 22 mSec aika antaa kohtuullisen tarkkuuden.

Koska ATTinyllä on rajoitettu IO (6 nastaa), tämän resurssin kohdentaminen on tehtävä huolellisesti. Näytölle tarvitaan 2 nastaa, 1 ajastintulolle, 1 ADC: lle, 1 purkauksen ohjaukselle ja 1 latausnopeuden ohjaukselle. Halusin painikkeen ohjaimen, joka sallii nollauksen uudelleen milloin tahansa. Tämä tehdään liittämällä hiirellä I2C SCL -linja. Koska I2C -signaalit ovat auki, tyhjennys ei aiheuta sähköisiä ristiriitoja, kun painike vetää tämän linjan matalalle. Näyttö lakkaa toimimasta painikkeen ollessa painettuna, mutta tällä ei ole vaikutusta, koska se palaa, kun painike vapautetaan.

Vaihe 2: Rakentaminen

Rakentaminen
Rakentaminen
Rakentaminen
Rakentaminen
Rakentaminen
Rakentaminen

Tein tästä pienen 55 mm x 55 mm: n 3D -painetun laatikon. Suunniteltu pitämään neljä pääkomponenttia; ATTiny85 DigiStamp -kortti, SSD1306 -näyttö, LiOn -akku ja pieni prototyyppikortti, jossa on 55 ajastinta ja latausohjauselektroniikkaa.

Liite osoitteessa

Tarvittavat osat

  • ATTiny85 DigiStamp -levy. Käytin versiota, jossa oli microUSB -liitin, jota käytetään laiteohjelmiston lataamiseen.
  • SSD1306 I2C OLED -näyttö
  • 300 mAh LiOn -akku
  • Pieni prototyyppikaistale
  • CMOS 555 -ajastinsiru (TLC555)
  • n-kanavainen MOSFET AO3400
  • p-kanava MOSFET AO3401
  • Vastukset 4R7, 470R, 22K, 2x33K
  • Kondensaattorit 4u7, 220u
  • Tarkkuuskondensaattori 820pF 1%
  • Pienikokoinen liukukytkin
  • 2 x 3 -nastainen otsikko lataus- ja mittausportteihin
  • Paina nappia
  • Kotelo
  • Liitä johto

Tarvittavat työkalut

  • Hieno pisteen juotosrauta
  • Pinsetit

Tee ensin 555 ajastinpiiri ja latauskomponentit prototyyppikortilla. Lisää liitäntäjohdot ulkoisiin liitäntöihin. Kiinnitä liukukytkin, latauspiste ja mittausportti koteloon. Kiinnitä akku ja kytke päävirtajohdot latauspisteeseen, liukukytkin. Liitä maa painikkeeseen. Kiinnitä ATTiny85 paikalleen ja kiinnitä.

Voit tehdä joitakin virransäästömuutoksia ATTiny -korttiin ennen asennusta, mikä pienentää virtaa hieman ja pidentää akun käyttöikää.

www.instructables.com/Reducing-Sleep-Curre…

Tämä ei ole kriittistä, koska on virtakytkin, joka sammuttaa mittarin, kun sitä ei käytetä.

Vaihe 3: Ohjelmisto

Tämän kondensaattorimittarin ohjelmisto löytyy osoitteesta

github.com/roberttidey/CapacitorMeter

Tämä on Arduino -pohjainen luonnos. Se tarvitsee kirjastoja näytölle ja I2C: lle, jotka löytyvät osoitteesta

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Nämä on optimoitu niin, että ATTiny vie vähän muistia. I2C -kirjasto on nopea bittimenetelmä, jonka avulla voidaan käyttää mitä tahansa 2 nastaa. Tämä on tärkeää, koska sarjaporttia käyttävät I2C -menetelmät käyttävät PB2: ta, mikä on ristiriidassa 555 -taajuuden mittaamiseen tarvittavan ajastin/laskuritulon kanssa.

Ohjelmisto on rakennettu tilakoneen ympärille, joka mittaa tilojen syklin. ISR tukee ylivuotoa ajastinlaskurista 8 -bittisen laitteiston laajentamiseksi. Toinen ISR tukee jatkuvassa tilassa toimivaa ADC: tä. Tämä antaa nopeimman vastauksen kynnyksen ylittävään latauspiiriin.

Jokaisen mittaussyklin alussa getMeasureMode -toiminto määrittää, mikä on sopivin menetelmä kullekin mittaukselle.

Kun käytetään 555 -menetelmää, laskennan ajoitus alkaa vasta, kun laskuri on muuttunut. Ajoitus pysähtyy vasta nimellisen mittausvälin jälkeen ja kun reuna havaitaan. Tämä synkronointi mahdollistaa taajuuden tarkan laskemisen myös matalilla taajuuksilla.

Kun ohjelmisto käynnistyy, ensimmäiset 7 mittausta ovat "kalibrointisyklejä", joilla määritetään 555: n perustaajuus ilman lisättyä kondensaattoria. Viimeiset 4 sykliä lasketaan keskimäärin.

OSCAL -rekisterin säätöä kellon viritystä varten tuetaan. Suosittelen asettamaan OSCCAL_VAL arvoon 0 aluksi luonnoksen yläosassa. Tämä tarkoittaa, että tehdaskalibrointia käytetään, kunnes viritys suoritetaan.

Säädettävän 555 -peruskondensaattorin arvo vaaditaan. Lisään myös arvioidun summan hajakapasitanssille.

Jos latausmenetelmiin käytetään erilaisia vastuksia, myös ohjelmiston CHARGE_RCLOW- ja CHARGE_RCHIGH -arvot on muutettava.

Asenna ohjelmisto käyttämällä tavallista digistamp -tapaa ladata ohjelmisto ja liittää USB -portti pyydettäessä. Jätä virtakytkin pois päältä -asentoon, koska USB saa tämän toiminnon virran.

Vaihe 4: Käyttö ja edistynyt kalibrointi

Toiminta on hyvin suoraviivaista.

Kun olet käynnistänyt laitteen ja odottanut kalibroinnin nollan päättymistä, kytke testattava kondensaattori yhteen kahdesta mittausportista. Käytä 555 -porttia pienikokoisille <1uF kondensaattoreille ja latausporttia korkeamman arvon kondensaattoreille. Kytke elektrolyyttikondensaattoreiden negatiivinen napa yhteiseen maadoituspisteeseen. Testauksen aikana kondensaattoria ladataan noin 2 V: iin.

555 -portti voidaan muuttaa, kun painat painiketta noin 1 sekunnin ajan ja vapautat sen. Varmista, että mitään ei ole kytketty 555 -porttiin tätä varten.

Edistynyt kalibrointi

Latausmenetelmä perustuu ajan mittaamiseen ATTiny85: n absoluuttiseen kellotaajuuteen. Kello käyttää sisäistä RC -oskillaattoria, joka on järjestetty antamaan nimellinen 8 MHz: n kello. Vaikka oskillaattorin vakaus on varsin hyvä jännite- ja lämpötilavaihteluille, sen taajuus voi olla melko monta prosenttia, vaikka se on kalibroitu tehtaalla. Tämä kalibrointi asettaa OSCCAL -rekisterin käynnistyksen yhteydessä. Tehdaskalibrointia voidaan parantaa tarkistamalla taajuus ja tekemällä OSCCAL -arvon optimaalisempi asetus sopimaan tiettyyn ATTiny85 -korttiin.

En ole vielä onnistunut sovittamaan automaattisempaa menetelmää laiteohjelmistoon, joten käytän seuraavaa manuaalista menettelyä. Kaksi muunnelmaa ovat mahdollisia riippuen käytettävissä olevista ulkoisista mittauksista; joko taajuusmittari, joka kykenee mittaamaan kolmion aaltomuodon taajuuden portissa 555, tai neliöaaltolähde, jolla on tunnettu taajuus, esim. 10KHz ja 0V/3,3V tasot, jotka voidaan liittää 555 -porttiin ja ohittaa aaltomuoto pakottaaksesi tämän taajuuden laskuriin. Käytin toista menetelmää.

  1. Käynnistä mittari normaalilla tehollaan ilman kondensaattoreita.
  2. Liitä taajuusmittari tai neliöaaltogeneraattori 555 -porttiin.
  3. Käynnistä kalibrointi uudelleen painamalla painiketta.
  4. Kalibrointisyklin lopussa näytössä näkyy laskurin määrittämä taajuus ja nykyinen OSCCAL -arvo. Huomaa, että kalibrointisyklin toistuva käyttö vaihtaa mitatun taajuuden ja normaalin näyttötilan välillä.
  5. Jos näytetty taajuus on pienempi kuin tiedossa oleva, se tarkoittaa, että kellotaajuus on liian korkea ja päinvastoin. Huomaan, että OSCCAL -lisäys säätää kelloa noin 0,05%
  6. Laske uusi OSCCAL -arvo kellon parantamiseksi.
  7. Kirjoita uusi OSCCAL -arvo laiteohjelmiston yläosassa olevaan OSCCAL_VAL -arvoon.
  8. Luo ja lataa uusi laiteohjelmisto. Toista vaiheet 1-5, joiden pitäisi näyttää uusi OSCCAL -arvo ja uusi taajuusmittaus.
  9. Toista tarvittaessa vaiheet uudelleen, kunnes paras tulos saavutetaan.

Huomaa, että on tärkeää tehdä tämän virityksen mittausosa, kun se toimii normaalilla virtalähteellä, ei USB: llä, jotta minimoidaan taajuussiirto syöttöjännitteestä johtuen.

Suositeltava: