Sisukord:

ATTiny85 kondensaatorimõõtja: 4 sammu
ATTiny85 kondensaatorimõõtja: 4 sammu

Video: ATTiny85 kondensaatorimõõtja: 4 sammu

Video: ATTiny85 kondensaatorimõõtja: 4 sammu
Video: Знакомство с Digispark ATtiny85. "Arduino для чайников" 2024, Juuli
Anonim
ATTiny85 kondensaatorite arvesti
ATTiny85 kondensaatorite arvesti
ATTiny85 kondensaatorite arvesti
ATTiny85 kondensaatorite arvesti

See juhend on mõeldud kondensaatori arvestile, mis põhineb ATTiny85 -l ja millel on järgmised funktsioonid.

  • Põhineb ATTiny85 (DigiStamp)
  • SSD1306 0,96 "OLED -ekraan
  • Sageduse mõõtmine madala väärtusega kondensaatoritele 1pF - 1uF, kasutades 555 ostsillaatorit
  • Laadimisaja mõõtmine suure väärtusega kondensaatoritele 1uF - 50000uF
  • 2 eraldi porti, mida kasutatakse staatilise mahtuvuse minimeerimiseks
  • Laadimisaja jaoks kasutatakse kahte voolu väärtust, et vähendada suurte kondensaatorite aega
  • 555 meetodi nullid käivitamisel, neid saab muuta nupuga
  • Kiirtest, mida kasutatakse iga mõõtetsükli jaoks kasutatava meetodi valimiseks.
  • Laadimisaja meetodi täpsust saab parandada OSCVALi taktsageduse reguleerimise toega

Samm: skeem ja teooria

Skeem ja teooria
Skeem ja teooria

Skeemil on kujutatud ATTiny, mis juhib SSD1306 OLED -ekraani I2C liidese kaudu. Seda toidab otse LiOn 300mAh aku ja kaasas on laadimispunkt, mida saab kasutada koos LiOn ühilduva välise laadijaga.

Esimene mõõtmismeetod põhineb 555 vabalt töötava ostsillaatori sageduse mõõtmisel. Selle baassagedus määratakse takistite ja kondensaatori abil, mis peaks olema suure täpsusega, kuna see määrab mõõtmiste täpsuse. Ma kasutasin 820pF 1% polüstüreeni kondensaatorit, mida mul oli, kuid saab kasutada ka teisi väärtusi umbes 1 nF. Väärtus tuleb sisestada tarkvarasse koos igasuguse hulkuva mahtuvuse (~ 20pF) hinnanguga. See andis baassageduseks umbes 16KHz. 555 väljund sisestatakse ATTiny PB2 -sse, mis on programmeeritud riistvara loendurina. Mõõtes arvu umbes 1 sekundi jooksul, saab sageduse määrata. Seda tehakse baassageduse määramiseks käivitamisel. Kui baaskondensaatoriga paralleelselt lisatakse katsetatav kondensaator, vähendatakse sagedust ja kui seda mõõdetakse ja võrreldakse baassagedusega, saab arvutada lisamahtuvuse väärtuse.

Selle meetodi kena omadus on see, et arvutatud väärtus sõltub ainult baaskondensaatori täpsusest. Mõõtmisperiood pole oluline. Eraldusvõime sõltub sageduste mõõtmise eraldusvõimest, mis on üsna kõrge, nii et isegi väga väikest lisamahtuvust saab mõõta. Piirav tegur näib olevat 555 ostsillaatori "sagedusmüra", mis minu jaoks on umbes 0,3 pF.

Meetodit saab kasutada korralikus vahemikus. Vahemiku parandamiseks sünkroniseerin mõõtmisperioodi sissetulevate impulsside servade tuvastamisega. See tähendab, et isegi madala sagedusega võnkumisi, näiteks 12Hz (1uF kondensaatoriga), mõõdetakse täpselt.

Suuremate kondensaatorite puhul on vooluahel paigutatud laadimise ajastamismeetodit kasutama. Sel juhul tühjendatakse katsetatav kondensaator, et see käivituks temperatuuril 0, seejärel laetakse toitepinge teadaoleva takistuse kaudu. Kondensaatori pinge jälgimiseks kasutatakse ATTiny85 ADC -d ja mõõdetakse aega, mis kulub 0% kuni 50% laengule. Seda saab kasutada mahtuvuse arvutamiseks. Kuna ADC võrdlusalus on ka toitepinge, ei mõjuta see mõõtmist. Võetud aja absoluutne suurus sõltub aga ATTiny85 taktsagedusest ja selle erinevused mõjutavad tulemust. Selle kella täpsuse parandamiseks võib kasutada protseduuri, kasutades ATTiny85 häälestusregistrit ja seda kirjeldatakse hiljem.

Kondensaatori tühjendamiseks 0 V-le kasutatakse tühjendusvoolu piiramiseks n-kanalilist MOSFET-i koos madala väärtusega takistiga. See tähendab, et isegi suure väärtusega kondensaatoreid saab kiiresti tühjendada.

Kondensaatori laadimiseks kasutatakse 2 laadimistakisti väärtust. Baasväärtus annab kondensaatoritele mõistliku laadimisaja vahemikus 1 kuni 50 uF. P-kanaliga MOSFET-i kasutatakse paralleelselt madalama takistiga, mis võimaldab mõõta suurema väärtusega kondensaatoreid mõistliku intervalliga. Valitud väärtused annavad kuni 2200uF kondensaatoritele mõõtmisaja umbes 1 sekund ja suuremate väärtuste korral proportsionaalselt pikema aja. Väärtuse alumises otsas tuleb mõõteperioodi hoida piisavalt kaua, et oleks võimalik piisavalt täpselt kindlaks määrata üleminek 50% künnise kaudu. ADC proovivõtu sagedus on umbes 25uSec, nii et minimaalne periood 22mSec annab mõistliku täpsuse.

Kuna ATTiny -l on piiratud IO (6 tihvti), tuleb seda ressurssi eraldada hoolikalt. Ekraani jaoks on vaja 2 tihvti, 1 taimeri sisendi jaoks, 1 ADC jaoks, 1 tühjenemise juhtimiseks ja 1 laadimiskiiruse juhtimiseks. Tahtsin nuppude abil juhtnuppu, mis võimaldaks igal hetkel uuesti nullida. Seda tehakse I2C SCL liini hi-jacking abil. Kuna I2C signaalid on avatud äravooluga, ei teki elektrilisi konflikte, lubades nupul seda joont madalale tõmmata. Ekraan lakkab töötamast, kui nupp on alla vajutatud, kuid sellel pole mingit mõju, kuna see jätkub nupu vabastamisel.

2. etapp: ehitamine

Ehitus
Ehitus
Ehitus
Ehitus
Ehitus
Ehitus

Ma tegin sellest väikese 55 mm x 55 mm 3D trükitud kasti. Kavandatud hoidma 4 peamist komponenti; ATTiny85 DigiStamp plaat, SSD1306 ekraan, LiOn aku ja väike prototüüpplaat, mis hoiavad 55 taimerit ja laadimisjuhtimise elektroonikat.

Kaas aadressil

Vajalikud osad

  • ATTiny85 DigiStamp plaat. Kasutasin microUSB -pistikuga versiooni, mida kasutatakse püsivara üleslaadimiseks.
  • SSD1306 I2C OLED -ekraan
  • 300mAH LiOn aku
  • Väike riba prototüüpimisplaati
  • CMOS 555 taimerikiip (TLC555)
  • n-kanaliga MOSFET AO3400
  • p-kanal MOSFET AO3401
  • Takistid 4R7, 470R, 22K, 2x33K
  • Kondensaatorid 4u7, 220u
  • Täpne kondensaator 820pF 1%
  • Miniatuurne liuglüliti
  • 2 x 3 kontaktiga päised laadimispordi ja mõõtmisportide jaoks
  • Vajutage nuppu
  • Korpus
  • Ühendage traat

Vajalikud tööriistad

  • Peene jootekolb
  • Pintsetid

Esmalt tehke prototüüpplaadil 555 taimeriahel ja laadimiskomponendid. Lisage välisühenduste jaoks lendavad juhtmed. Kinnitage liuglüliti ja laadimispunkt ning mõõtmisport korpusesse. Kinnitage aku ja ühendage põhitoitejuhtmed laadimispunktiga, libistage lüliti. Ühendage maandus nupuga. Kinnitage ATTiny85 oma kohale ja ühendage ühendus.

Enne paigaldamist saate ATTiny plaadil teha mõningaid energiasäästlikke muudatusi, mis vähendavad pisut voolu ja pikendavad aku kasutusaega.

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

See pole kriitiline, kuna on olemas toitelüliti, mis lülitab arvesti välja, kui seda ei kasutata.

Samm: tarkvara

Selle kondensaatorarvesti tarkvara leiate aadressilt

github.com/roberttidey/CapacitorMeter

See on Arduino -põhine visand. See vajab ekraanide jaoks raamatukogusid ja I2C -d, mille leiate aadressilt

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Need on optimeeritud nii, et ATTiny võtaks minimaalselt mälu. I2C raamatukogu on kiire bitipöördemeetod, mis võimaldab kasutada mis tahes 2 tihvti. See on oluline, kuna jadaporti kasutavad I2C meetodid kasutavad PB2, mis on vastuolus 555 sageduse mõõtmiseks vajaliku taimer/loenduri sisendiga.

Tarkvara on üles ehitatud olekumasina ümber, mis viib mõõtmise läbi olekutsükli. ISR toetab 8 -bitise riistvara laiendamiseks taimeri loendurist ülevoolu. Teine ISR toetab pidevas režiimis töötavat ADC -d. See annab kiireima vastuse künnist ületavale laadimisahelale.

Funktsioon getMeasureMode määrab iga mõõtmistsükli alguses kindlaks, milline meetod on iga mõõtmise jaoks kõige sobivam.

Kui kasutatakse meetodit 555, algab loendamise ajastus alles siis, kui loendur on muutunud. Samuti peatatakse ajastus alles pärast nominaalset mõõtmisintervalli ja serva tuvastamist. See sünkroniseerimine võimaldab täpset sageduse arvutamist isegi madalate sageduste korral.

Kui tarkvara käivitub, on esimesed 7 mõõtmist „kalibreerimistsüklid”, mille abil määratakse 555 baassagedus ilma lisatud kondensaatorita. Viimased 4 tsüklit keskmistatakse.

Toetatakse OSCAL -i registri kohandamist kella häälestamiseks. Soovitan eskiisi ülaosas määrata OSCCAL_VAL väärtuseks 0. See tähendab, et tehase kalibreerimist kasutatakse kuni häälestamiseni.

Vajalik on reguleerida 555 baaskondensaatori väärtust. Lisan ka hinnangulise summa hulkuva mahtuvuse jaoks.

Kui laadimismeetodite jaoks kasutatakse erinevaid takisteid, tuleb muuta ka tarkvara CHARGE_RCLOW ja CHARGE_RCHIGH väärtusi.

Tarkvara installimiseks kasutage tarkvara üleslaadimiseks ja usb -pordi ühendamiseks tavalist digistamp -meetodit. Jätke toitelüliti väljalülitatud asendisse, kuna selle toimingu jaoks saab toite USB kaudu.

Samm 4: Kasutamine ja täpsem kalibreerimine

Operatsioon on väga lihtne.

Pärast seadme sisselülitamist ja kalibreerimise nulli lõppu ootamist ühendage testitav kondensaator ühega kahest mõõtmispordist. Kasutage 555 porti madala väärtusega kondensaatoritele <1uF ja laadimisporti suurema väärtusega kondensaatorite jaoks. Elektrolüütkondensaatorite puhul ühendage negatiivne klemm ühise maanduspunktiga. Katsetamise ajal laetakse kondensaatorit kuni umbes 2 V.

555 porti saab muuta, hoides vajutusnuppu all umbes 1 sekund ja vabastades. Veenduge, et selle jaoks pole porti 555 midagi ühendatud.

Täiustatud kalibreerimine

Laadimismeetod põhineb aja mõõtmiseks ATTiny85 absoluutsel taktsagedusel. Kell kasutab sisemist RC -ostsillaatorit, mis on paigutatud nominaalse 8MHz kella saamiseks. Kuigi ostsillaatori stabiilsus on pinge- ja temperatuurimuutuste korral üsna hea, võib selle sagedus olla mõne protsendi võrra väljas, kuigi see on tehases kalibreeritud. See kalibreerimine määrab käivitamisel OSCCAL -registri. Tehase kalibreerimist saab parandada, kontrollides sagedust ja tehes OSCCALi väärtuse optimaalsemaks, et see sobiks konkreetse ATTiny85 plaadiga.

Mul pole veel õnnestunud püsivara automaatsemat meetodit mahutada, seega kasutan järgmist käsitsi. Võimalikud on kaks varianti sõltuvalt sellest, millised välismõõtmised on saadaval; kas sagedusmõõtur, mis on võimeline mõõtma kolmnurkse lainekuju sagedust pordil 555, või teadaoleva sagedusega ruutlaineallikas, nt. 10KHz 0V/3,3V tasemega, mida saab ühendada pordiga 555 ja lainekuju alistada, et see sagedus loendurisse suruda. Kasutasin teist meetodit.

  1. Käivitage arvesti tavalisel toitel ilma kondensaatoriteta.
  2. Ühendage sagedusmõõtur või ruutlainegeneraator pordiga 555.
  3. Taaskäivitage kalibreerimistsükkel, vajutades nuppu.
  4. Kalibreerimistsükli lõpus kuvatakse ekraanil loenduri määratud sagedus ja praegune OSCCAL -väärtus. Pange tähele, et kalibreerimistsükli korduv kasutamine lülitab mõõdetud sageduse kuvamise ja tavalise kuvari puudumise vahel.
  5. Kui kuvatav sagedus on teadaolevast väiksem, tähendab see, et taktsagedus on liiga kõrge ja vastupidi. Leian, et OSCCAL -i samm reguleerib kella umbes 0,05%
  6. Kella parandamiseks arvutage uus OSCCALi väärtus.
  7. Sisestage uus OSCCAL -i väärtus püsivara ülaosas olevasse OSCCAL_VAL -i.
  8. Ehitage ja laadige üles uus püsivara. Korrake samme 1–5, mis peaks näitama uut OSCCAL väärtust ja uut sageduse mõõtmist.
  9. Vajadusel korrake samme uuesti, kuni saavutatakse parim tulemus.

Märkus on oluline teha selle häälestamise mõõteosa, kui töötate tavalisel toitel, mitte USB -l, et minimeerida toitepingest tingitud sageduse nihet.

Soovitan: