Kazalo:

Merilnik kondenzatorja ATTiny85: 4 koraki
Merilnik kondenzatorja ATTiny85: 4 koraki

Video: Merilnik kondenzatorja ATTiny85: 4 koraki

Video: Merilnik kondenzatorja ATTiny85: 4 koraki
Video: Использование плат Digispark Attiny85 Mini Arduino: Урок 108 2024, Julij
Anonim
Merilnik kondenzatorja ATTiny85
Merilnik kondenzatorja ATTiny85
Merilnik kondenzatorja ATTiny85
Merilnik kondenzatorja ATTiny85

Ta navodila so namenjena merilniku kondenzatorjev na osnovi ATTiny85 z naslednjimi funkcijami.

  • Na podlagi ATTiny85 (DigiStamp)
  • SSD1306 0,96 "OLED zaslon
  • Merjenje frekvence za kondenzatorje majhne vrednosti 1pF - 1uF z uporabo 555 oscilatorja
  • Merjenje časa polnjenja za kondenzatorje velike vrednosti 1uF - 50000uF
  • 2 ločeni vrati, ki se uporabljata za metode zmanjševanja kapacitivnosti
  • Dve vrednosti toka, ki se uporabljata za čas polnjenja za zmanjšanje časa za velike kondenzatorje
  • Samodejne ničle metode 555 pri zagonu, jih lahko s pritiskom na gumb ponovno spremenimo
  • Hiter test, s katerim se izbere, katero metodo je treba uporabiti za vsak cikel merjenja.
  • Natančnost metode časa polnjenja lahko izboljšate s podporo za nastavitev frekvence ure OSCVAL

1. korak: Shema in teorija

Shema in teorija
Shema in teorija

Shema prikazuje ATTiny, ki upravlja vmesnik OLED SSD1306 prek vmesnika I2C. Napaja se neposredno iz baterije LiOn 300mAh, vključena pa je tudi polnilna točka, ki jo lahko uporabljate z zunanjim polnilnikom, združljivim z LiOn.

Prva merilna metoda temelji na merjenju frekvence 555 prostega teka oscilatorja. Ta ima osnovno frekvenco, ki jo določajo upori in kondenzator, kar bi moralo biti zelo natančno, saj to določa točnost meritev. Uporabil sem 1% polistirenski kondenzator 820pF, ki pa sem ga imel, lahko pa uporabim tudi druge vrednosti okoli 1nF. Vrednost je treba vnesti v programsko opremo skupaj z oceno morebitne potepuške kapacitivnosti (~ 20pF). To je dalo osnovno frekvenco okoli 16KHz. Izhod 555 se napaja v PB2 ATTiny, ki je programiran kot strojni števec. Z merjenjem štetja v obdobju približno 1 sekunde je mogoče določiti frekvenco. To se naredi ob zagonu, da se določi osnovna frekvenca. Ko se preskusnemu kondenzatorju doda vzporedno z osnovnim kondenzatorjem, se frekvenca zniža in ko se to izmeri in primerja z osnovno frekvenco, se lahko izračuna vrednost dodane kapacitivnosti.

Lepa lastnost te metode je, da je izračunana vrednost odvisna le od natančnosti osnovnega kondenzatorja. Obdobje merjenja ni pomembno. Ločljivost je odvisna od ločljivosti frekvenčnih meritev, ki je precej visoka, zato je mogoče izmeriti tudi zelo majhno dodano kapacitivnost. Omejevalni dejavnik se zdi "frekvenčni šum" oscilatorja 555, ki je zame enak približno 0,3 pF.

Metodo je mogoče uporabiti v dostojnem razponu. Za izboljšanje razpona sinhroniziram merilno obdobje z zaznavanjem robov dohodnih impulzov. To pomeni, da se tudi nizkofrekvenčna nihanja, kot je 12Hz (s kondenzatorjem 1uF), natančno izmerijo.

Za večje kondenzatorje je vezje urejeno tako, da uporablja metodo merjenja polnjenja. Pri tem se preskusni kondenzator izprazni, da se zagotovi, da se začne pri 0, nato pa napolni skozi znani upor napajalne napetosti. ADC v ATTiny85 se uporablja za spremljanje napetosti kondenzatorja in izmerite čas, da se od 0% do 50% napolni. To se lahko uporabi za izračun kapacitivnosti. Ker je referenca za ADC tudi napajalna napetost, to ne vpliva na meritve. Vendar pa je absolutno merjenje potrebnega časa odvisno od taktne frekvence ATTiny85 in spremembe v tem vplivajo na rezultat. Za izboljšanje natančnosti te ure se lahko uporabi postopek s pomočjo registra za uravnavanje v ATTiny85, kar je opisano kasneje.

Za praznjenje kondenzatorja na 0V se n-kanalni MOSFET uporablja skupaj z uporom nizke vrednosti za omejevanje praznilnega toka. To pomeni, da se lahko tudi kondenzatorji velike vrednosti hitro izpraznijo.

Za polnjenje kondenzatorja se uporabljata 2 vrednosti polnilnega upora. Osnovna vrednost daje razumne čase polnjenja kondenzatorjev od 1uF do približno 50uF. P-kanalni MOSFET se uporablja za vzporednost v nižjem uporu, da se omogoči merjenje kondenzatorjev z višjo vrednostjo v razumnem intervalu. Izbrane vrednosti dajejo čas merjenja približno 1 sekundo za kondenzatorje do 2200uF in sorazmerno daljši za večje vrednosti. Na spodnjem koncu vrednosti mora biti merilno obdobje razumno dolgo, da se omogoči dovolj natančno določanje prehoda skozi 50 -odstotni prag. Hitrost vzorčenja ADC je približno 25uSec, zato minimalno obdobje 22mSec daje razumno natančnost.

Ker ima ATTiny omejen IO (6 zatičev), je treba ta vir dodeliti previdno. Za prikaz sta potrebna 2 zatiča, 1 za vhod časovnika, 1 za ADC, 1 za nadzor praznjenja in 1 za nadzor hitrosti polnjenja. Želel sem, da gumb za upravljanje na kateri koli točki omogoči ponovno nastavitev ničle. To naredite s hi-jackingom linije I2C SCL. Ker so signali I2C odprti, potem ni električnega spora, če gumb dovolite, da to črto potegne nizko. Zaslon bo prenehal delovati, ko je pritisnjen gumb, vendar to nima nobene posledice, saj se nadaljuje, ko gumb spustite.

2. korak: Gradnja

Gradnja
Gradnja
Gradnja
Gradnja
Gradnja
Gradnja

To sem naredil v majhno 3D tiskano škatlo velikosti 55 mm x 55 mm, zasnovano tako, da vsebuje 4 glavne komponente; plošča ATTiny85 DigiStamp, zaslon SSD1306, baterija LiOn in majhen del prototipne plošče s časovnikom 55 in elektroniko za nadzor polnjenja.

Priloga na

Potrebni deli

  • Plošča ATTiny85 DigiStamp. Uporabil sem različico s priključkom microUSB, ki se uporablja za nalaganje vdelane programske opreme.
  • SSD1306 I2C OLED zaslon
  • 300mAH LiOn baterija
  • Majhen trak prototipne plošče
  • Časovni čip CMOS 555 (TLC555)
  • n-kanalni MOSFET AO3400
  • p-kanalni MOSFET AO3401
  • Upori 4R7, 470R, 22K, 2x33K
  • Kondenzatorji 4u7, 220u
  • Precizni kondenzator 820pF 1%
  • Miniaturno drsno stikalo
  • 2 x 3 -polne glave za vrata za polnjenje in merilna vrata
  • Pritisni gumb
  • Ohišje
  • Priključite žico

Potrebna orodja

  • Spajkalnik s fino konico
  • Pinceta

Najprej sestavite časovno vezje 555 in komponente za polnjenje na prototipni plošči. Za zunanje povezave dodajte leteče vodnike. Drsno stikalo in polnilno točko ter merilno odprtino pritrdite v ohišje. Pritrdite baterijo in izvedite glavno napeljavo do polnilne točke, potisnite stikalo. Ozemljitev priključite na gumb. Pritrdite ATTiny85 na mesto in dokončajte priklop.

Na plošči ATTiny lahko naredite nekaj sprememb pri varčevanju z energijo, kar bo nekoliko zmanjšalo tok in podaljšalo življenjsko dobo baterije.

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

To ni kritično, saj obstaja stikalo za vklop za izklop števca, ko ga ne uporabljate.

3. korak: Programska oprema

Programsko opremo za ta merilnik kondenzatorjev najdete na

github.com/roberttidey/CapacitorMeter

To je skica, ki temelji na Arduinu. Za prikaz in I2C potrebuje knjižnice, ki jih najdete na

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Ti so optimizirani, da ATTiny zavzame minimalno pomnilnika. Knjižnica I2C je hitra metoda bit bit, ki omogoča uporabo poljubnih 2 zatičev. To je pomembno, saj metode I2C, ki uporabljajo serijska vrata, uporabljajo PB2, kar je v nasprotju z uporabo vhoda časovnika/števca, potrebnega za merjenje frekvence 555.

Programska oprema je strukturirana okoli avtomata stanja, ki merjenje izvaja skozi cikel stanj. ISR podpira prelivanje iz števca časovnika za razširitev 8 -bitne strojne opreme. Drugi ISR podpira ADC, ki deluje v neprekinjenem načinu. To daje najhitrejši odziv na polnilni krog, ki prestopi prag.

Na začetku vsakega merilnega cikla funkcija getMeasureMode določi, katera metoda je najprimernejša za vsako meritev.

Ko se uporabi metoda 555, se štetje začne šele, ko se števec spremeni. Podobno se časovnik ustavi šele po nominalnem merilnem intervalu in ko zazna rob. Ta sinhronizacija omogoča natančen izračun frekvence tudi pri nizkih frekvencah.

Ko se programska oprema zažene, je prvih 7 meritev "kalibracijskih ciklov", ki se uporabljajo za določanje osnovne frekvence 555 brez dodanega kondenzatorja. Zadnji 4 cikli so povprečeni.

Obstaja podpora za prilagajanje registra OSCAL za nastavitev ure. Predlagam, da nastavite OSCCAL_VAL na 0 na začetku skice. To pomeni, da bo tovarniška kalibracija uporabljena, dokler se ne izvede uglaševanje.

Potrebno je prilagoditi vrednost osnovnega kondenzatorja 555. Dodajam tudi ocenjeni znesek za potepuško kapacitivnost.

Če se za načine polnjenja uporabljajo različni upori, bo treba v programski opremi spremeniti tudi vrednosti CHARGE_RCLOW in CHARGE_RCHIGH.

Za namestitev programske opreme uporabite običajen način digistampanja, ko naložite programsko opremo in povežete vrata USB, ko boste pozvani. Stikalo za vklop pustite v izklopljenem položaju, saj bo USB za to operacijo napajal.

4. korak: Delovanje in napredna kalibracija

Delovanje je zelo preprosto.

Ko vklopite enoto in počakate, da se kalibracijska ničla konča, priključite preskusni kondenzator na eno od dveh merilnih vrat. Za kondenzatorje nizke vrednosti <1uF uporabite vrata 555, za kondenzatorje z večjo vrednostjo pa vrata za polnjenje. Pri elektrolitskih kondenzatorjih priključite negativni priključek na skupno ozemljitveno točko. Med preskušanjem se bo kondenzator napolnil do približno 2V.

Vrata 555 lahko spremenite tako, da pritisnete gumb za približno 1 sekundo in ga spustite. Za to se prepričajte, da na vrata 555 ni nič povezanega.

Napredna kalibracija

Metoda polnjenja za merjenje časa temelji na absolutni taktni frekvenci ATTiny85. Ura uporablja notranji RC oscilator, ki je urejen tako, da daje nominalno uro 8MHz. Čeprav je stabilnost oscilatorja precej dobra za nihanja napetosti in temperature, je njegova frekvenca lahko kar nekaj odstotkov, čeprav je tovarniško umerjena. Ta kalibracija nastavi register OSCCAL ob zagonu. Tovarniško umerjanje je mogoče izboljšati s preverjanjem frekvence in bolj optimalno nastavitvijo vrednosti OSCCAL, ki ustreza določeni plošči ATTiny85.

Bolj samodejne metode še nisem uspel vdelati v vdelano programsko opremo, zato uporabljam naslednji ročni postopek. Odvisno od razpoložljivih zunanjih meritev sta možni dve različici; bodisi frekvenčni meter, ki lahko meri frekvenco trikotne valovne oblike na vratih 555, bodisi vir kvadratnih valov znane frekvence, npr. 10KHz z 0V/3.3V nivoji, ki jih je mogoče priključiti na vrata 555 in preglasiti obliko vala, da bi to frekvenco prisilili v števec. Uporabil sem drugo metodo.

  1. Zaženite števec pri normalni moči brez priključenih kondenzatorjev.
  2. Frekvenčni meter ali generator kvadratnih valov priključite na vrata 555.
  3. Ponovno zaženite cikel umerjanja s pritiskom na gumb.
  4. Na koncu kalibracijskega cikla bo na zaslonu prikazana frekvenca, določena s števcem, in trenutna vrednost OSCCAL. Upoštevajte, da bo večkratna uporaba kalibracijskega cikla preklapljala med prikazom izmerjene frekvence in normalnim prikazom brez prikaza.
  5. Če je prikazana frekvenca manjša od znane, pomeni, da je ura previsoka in obratno. Ugotovil sem, da prirastek OSCCAL prilagodi uro za približno 0,05%
  6. Izračunajte novo vrednost OSCCAL za izboljšanje ure.
  7. Vnesite novo vrednost OSCCAL v OSCCAL_VAL na vrhu vdelane programske opreme.
  8. Obnovite in naložite novo vdelano programsko opremo. Ponovite korake 1-5, ki naj prikažejo novo vrednost OSCCAL in novo merjenje frekvence.
  9. Po potrebi ponovite korake, dokler ne dosežete najboljšega rezultata.

Opomba: Pomembno je, da merilni del tega uglaševanja izvajate pri normalnem napajanju in ne prek USB -ja, da zmanjšate kakršen koli premik frekvence zaradi napajalne napetosti.

Priporočena: