Satura rādītājs:

ATTiny85 kondensatora mērītājs: 4 soļi
ATTiny85 kondensatora mērītājs: 4 soļi

Video: ATTiny85 kondensatora mērītājs: 4 soļi

Video: ATTiny85 kondensatora mērītājs: 4 soļi
Video: Использование плат Digispark Attiny85 Mini Arduino: Урок 108 2024, Jūlijs
Anonim
ATTiny85 kondensatora mērītājs
ATTiny85 kondensatora mērītājs
ATTiny85 kondensatora mērītājs
ATTiny85 kondensatora mērītājs

Šī pamācība ir paredzēta kondensatora skaitītājam, kura pamatā ir ATTiny85 ar šādām funkcijām.

  • Pamatojoties uz ATTiny85 (DigiStamp)
  • SSD1306 0,96 collu OLED displejs
  • Frekvences mērīšana zemas vērtības kondensatoriem 1pF - 1uF, izmantojot 555 oscilatoru
  • Uzlādes laika mērīšana augstas vērtības kondensatoriem 1uF - 50000uF
  • 2 atsevišķas ostas, ko izmanto metodēm, lai samazinātu pastāvīgo kapacitāti
  • Uzlādes laikam tiek izmantotas divas strāvas vērtības, lai samazinātu laiku lieliem kondensatoriem
  • 555 metodes pašnulles palaišanas laikā, var mainīt ar spiedpogu
  • Ātrs tests, ko izmanto, lai izvēlētos, kura metode jāizmanto katram mērījumu ciklam.
  • Uzlādes laika metodes precizitāti var uzlabot, atbalstot OSCVAL pulksteņa frekvences regulēšanu

1. darbība. Shēma un teorija

Shēma un teorija
Shēma un teorija

Shēmā parādīts, kā ATTiny vada SSD1306 OLED displeju, izmantojot I2C saskarni. Tas tiek darbināts tieši no LiOn 300mAh akumulatora, un ir iekļauts uzlādes punkts, ko var izmantot ar LiOn saderīgu ārējo lādētāju.

Pirmā mērīšanas metode ir balstīta uz 555 brīvi strādājoša oscilatora frekvences mērīšanu. Tam ir bāzes frekvence, ko nosaka rezistori, un kondensators, kam jābūt ar augstu precizitāti, jo tas nosaka mērījumu precizitāti. Es izmantoju 820pF 1% polistirola kondensatoru, kas man bija, bet var izmantot citas vērtības ap 1nF. Vērtība jāievada programmatūrā kopā ar aprēķinu par jebkādu klaiņojošu kapacitāti (~ 20pF). Tas deva bāzes frekvenci aptuveni 16KHz. 555 izeja tiek ievadīta ATTiny PB2, kas ir ieprogrammēts kā aparatūras skaitītājs. Mērot skaitu aptuveni 1 sekundes laikā, var noteikt frekvenci. Tas tiek darīts palaišanas laikā, lai noteiktu bāzes frekvenci. Ja paralēli bāzes kondensatoram tiek pievienots pārbaudāmais kondensators, tad frekvence tiek pazemināta, un, kad to mēra un salīdzina ar bāzes frekvenci, var aprēķināt pievienotās kapacitātes vērtību.

Šīs metodes jaukā iezīme ir tā, ka aprēķinātā vērtība ir atkarīga tikai no bāzes kondensatora precizitātes. Mērīšanas periodam nav nozīmes. Izšķirtspēja ir atkarīga no frekvences mērījumu izšķirtspējas, kas ir diezgan augsta, tāpēc var izmērīt pat ļoti mazu pievienoto kapacitāti. Šķiet, ka ierobežojošais faktors ir 555 oscilatora “frekvences troksnis”, kas man ir līdzvērtīgs aptuveni 0.3pF.

Metodi var izmantot pienācīgā diapazonā. Lai uzlabotu diapazonu, es sinhronizēju mērīšanas periodu ar ienākošo impulsu malu noteikšanu. Tas nozīmē, ka pat zemas frekvences svārstības, piemēram, 12 Hz (ar 1uF kondensatoru), tiek mērītas precīzi.

Lielākiem kondensatoriem ķēde ir sakārtota, lai izmantotu uzlādes laika metodi. Šajā gadījumā pārbaudāmais kondensators tiek izlādēts, lai nodrošinātu, ka tas sākas ar 0, un pēc tam tiek uzlādēts caur zināmu barošanas sprieguma pretestību. ATTiny85 ADC tiek izmantots, lai uzraudzītu kondensatora spriegumu, un tiek mērīts laiks no 0% līdz 50% uzlādes. To var izmantot, lai aprēķinātu kapacitāti. Tā kā ADC atsauce ir arī barošanas spriegums, tas neietekmē mērījumus. Tomēr absolūtais laika mērījums ir atkarīgs no ATTiny85 pulksteņa frekvences, un tā izmaiņas ietekmē rezultātu. Var izmantot procedūru, lai uzlabotu šī pulksteņa precizitāti, izmantojot regulēšanas reģistru ATTiny85, un tas ir aprakstīts vēlāk.

Lai izlādētu kondensatoru līdz 0 V, n-kanālu MOSFET tiek izmantots kopā ar zemas vērtības rezistoru, lai ierobežotu izlādes strāvu. Tas nozīmē, ka pat lielas vērtības kondensatorus var ātri izlādēt.

Lai uzlādētu kondensatoru, tiek izmantotas 2 uzlādes pretestības vērtības. Bāzes vērtība nodrošina saprātīgu kondensatoru uzlādes laiku no 1uF līdz aptuveni 50uF. P kanāla MOSFET tiek izmantots paralēli zemākā rezistorā, lai saprātīgā intervālā varētu izmērīt lielākas vērtības kondensatorus. Izvēlētās vērtības dod mērīšanas laiku aptuveni 1 sekundi kondensatoriem līdz 2200uF un proporcionāli ilgāku lielākām vērtībām. Vērtības apakšējā daļā mērīšanas periods jāsaglabā samērā ilgi, lai pietiekami precīzi varētu noteikt pāreju caur 50% slieksni. ADC paraugu ņemšanas ātrums ir aptuveni 25uSec, tāpēc minimālais 22mSec periods nodrošina saprātīgu precizitāti.

Tā kā ATTiny ir ierobežots IO (6 tapas), šī resursa piešķiršana ir jāveic rūpīgi. Displejam nepieciešami 2 tapas, 1 taimera ieejai, 1 ADC, 1 izlādes kontrolei un 1 uzlādes ātruma kontrolei. Es gribēju spiedpogas vadību, lai jebkurā brīdī varētu atkārtoti nullēt. Tas tiek darīts, pārslēdzot I2C SCL līniju. Tā kā I2C signāli ir aizvērti, nav elektriskā konflikta, ļaujot pogai pavilkt šo līniju zemu. Displejs pārstās darboties, nospiežot pogu, taču tas neietekmē, jo tas atsākas, kad poga tiek atlaista.

2. solis: būvniecība

Būvniecība
Būvniecība
Būvniecība
Būvniecība
Būvniecība
Būvniecība

Es to izveidoju nelielā 55 mm x 55 mm 3D drukātā kastē. Paredzēts 4 galveno sastāvdaļu turēšanai; ATTiny85 DigiStamp plate, SSD1306 displejs, LiOn akumulators un neliels prototipa dēlis, kurā ir 55 taimeris un uzlādes kontroles elektronika.

Pielikums vietnē

Nepieciešamas detaļas

  • ATTiny85 DigiStamp dēlis. Es izmantoju versiju ar microUSB savienotāju, ko izmanto programmaparatūras augšupielādei.
  • SSD1306 I2C OLED displejs
  • 300mAH LiOn akumulators
  • Neliela prototipēšanas dēļa sloksne
  • CMOS 555 taimera mikroshēma (TLC555)
  • n-kanālu MOSFET AO3400
  • p-kanāls MOSFET AO3401
  • Rezistori 4R7, 470R, 22K, 2x33K
  • Kondensatori 4u7, 220u
  • Precīzs kondensators 820pF 1%
  • Miniatūrs slīdnis
  • 2 x 3 kontaktu galvenes uzlādes portam un mērīšanas portiem
  • Uzspied pogu
  • Korpuss
  • Pievienojiet vadu

Nepieciešamie instrumenti

  • Smalka lodēšanas gludeklis
  • Pincetes

Vispirms izveidojiet 555 taimera ķēdi un uzlādes komponentus uz prototipa plates. Pievienojiet lidojošos vadus ārējiem savienojumiem. Ievietojiet korpusā bīdāmo slēdzi, uzlādes punktu un mērīšanas portu. Pievienojiet akumulatoru un veiciet galveno strāvas vadu pievienošanu uzlādes punktam, slīdiet slēdzi. Pievienojiet zemi spiedpogai. Piestipriniet ATTiny85 vietā un pabeidziet savienošanu.

Pirms montāžas ATTiny plāksnē varat veikt dažas enerģijas taupīšanas izmaiņas, kas nedaudz samazinās strāvu un pagarinās akumulatora darbības laiku.

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

Tas nav kritiski, jo ir strāvas slēdzis, lai izslēgtu skaitītāju, kad to nelieto.

3. darbība: programmatūra

Šī kondensatora mērītāja programmatūru var atrast vietnē

github.com/roberttidey/CapacitorMeter

Šī ir uz Arduino balstīta skice. Tam ir nepieciešamas bibliotēkas displejam un I2C, kuras var atrast vietnē

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Tie ir optimizēti, lai ATTiny aizņemtu minimālu atmiņu. I2C bibliotēka ir ātrgaitas bitu sprādziena metode, kas ļauj izmantot jebkuras 2 tapas. Tas ir svarīgi, jo I2C metodes, izmantojot seriālo portu, izmanto PB2, kas ir pretrunā ar taimera/skaitītāja ievades izmantošanu, kas nepieciešama 555 frekvences mērīšanai.

Programmatūra ir veidota ap stāvokļa mašīnu, kas veic mērījumus stāvokļu ciklā. ISR atbalsta pārplūdi no taimera skaitītāja, lai paplašinātu 8 bitu aparatūru. Otrs ISR atbalsta ADC, kas darbojas nepārtrauktā režīmā. Tas nodrošina ātrāko reakciju uz uzlādes ķēdi, kas šķērso slieksni.

Katra mērīšanas cikla sākumā funkcija getMeasureMode nosaka, kura metode ir vispiemērotākā katram mērījumam.

Ja tiek izmantota 555 metode, skaitīšanas laiks sākas tikai tad, kad skaitītājs ir mainījies. Tāpat laiks tiek apturēts tikai pēc nominālā mērījumu intervāla un kad tiek konstatēta mala. Šī sinhronizācija ļauj precīzi aprēķināt frekvenci pat zemām frekvencēm.

Kad programmatūra tiek palaista, pirmie 7 mērījumi ir “kalibrēšanas cikli”, ko izmanto, lai noteiktu 555 bāzes frekvenci bez pievienota kondensatora. Pēdējie 4 cikli tiek aprēķināti vidēji.

Ir atbalsts OSCAL reģistra pielāgošanai pulksteņa regulēšanai. Iesaku sākotnēji skices augšpusē iestatīt OSCCAL_VAL uz 0. Tas nozīmē, ka rūpnīcas kalibrēšana tiks izmantota, līdz tiks veikta regulēšana.

Nepieciešama 555 bāzes kondensatora vērtības korekcija. Es pievienoju arī aprēķināto summu par klaiņojošo kapacitāti.

Ja uzlādes metodēm tiek izmantoti dažādi rezistori, tad programmatūrā būs jāmaina arī CHARGE_RCLOW un CHARGE_RCHIGH vērtības.

Lai instalētu programmatūru, izmantojiet parasto digitālā spiedoga metodi, lai augšupielādētu programmatūru un pievienotu USB portu, kad tas tiek prasīts. Atstājiet barošanas slēdzi izslēgtā stāvoklī, jo strāvas padevi nodrošina USB, lai veiktu šo darbību.

4. darbība: darbība un uzlabotā kalibrēšana

Darbība ir ļoti vienkārša.

Pēc iekārtas ieslēgšanas un gaidīšanas, līdz kalibrēšanas nulle tiks pabeigta, pievienojiet testējamo kondensatoru vienam no diviem mērījumu portiem. Izmantojiet 555 portus zemas vērtības kondensatoriem <1uF un uzlādes portu lielākas vērtības kondensatoriem. Elektrolītiskajiem kondensatoriem savienojiet negatīvo spaili ar kopējo zemes punktu. Pārbaudes laikā kondensators tiks uzlādēts līdz aptuveni 2 V.

555 portu var mainīt, turot nospiestu pogu apmēram 1 sekundi un atlaižot. Pārliecinieties, ka šim nolūkam nekas nav pievienots portam 555.

Uzlabota kalibrēšana

Uzlādes metode laika mērīšanai balstās uz ATTiny85 absolūto pulksteņa frekvenci. Pulkstenis izmanto iekšējo RC oscilatoru, kas sakārtots tā, lai iegūtu nominālo 8MHz pulksteni. Lai gan oscilatora stabilitāte ir diezgan laba sprieguma un temperatūras svārstībām, tā frekvence var būt par dažiem procentiem, pat ja tas ir rūpnīcā kalibrēts. Šī kalibrēšana palaiž OSCCAL reģistru. Rūpnīcas kalibrēšanu var uzlabot, pārbaudot frekvenci un optimālāk iestatot OSCCAL vērtību, lai tā atbilstu konkrētai ATTiny85 plāksnei.

Man vēl nav izdevies ievietot programmaparatūrā automātiskāku metodi, tāpēc es izmantoju šo manuālo procedūru. Atkarībā no pieejamajiem ārējiem mērījumiem ir iespējamas divas variācijas; vai nu frekvences mērītājs, kas spēj izmērīt trīsstūra viļņu formas frekvenci portā 555, vai zināmas frekvences kvadrātveida viļņu avots, piem. 10KHz ar 0V/3.3V līmeņiem, kurus var savienot ar 555 portu un ignorēt viļņu formu, lai piespiestu šo frekvenci skaitītājā. Es izmantoju otro metodi.

  1. Sāciet skaitītāju ar parasto jaudu, ja nav pievienoti kondensatori.
  2. Pievienojiet frekvences mērītāju vai kvadrātveida viļņu ģeneratoru 555 portam.
  3. Restartējiet kalibrēšanas ciklu, nospiežot pogu.
  4. Kalibrēšanas cikla beigās displejā tiks parādīta skaitītāja noteiktā frekvence un pašreizējā OSCCAL vērtība. Ņemiet vērā, ka atkārtota kalibrēšanas cikla izmantošana pārslēgsies starp izmērītās frekvences rādīšanu un normālu displeja rādīšanu.
  5. Ja parādītā frekvence ir mazāka par zināmo, tas nozīmē, ka pulksteņa frekvence ir pārāk augsta un otrādi. Es uzskatu, ka OSCCAL palielinājums pielāgo pulksteni par aptuveni 0,05%
  6. Aprēķiniet jaunu OSCCAL vērtību, lai uzlabotu pulksteni.
  7. Ievadiet jaunu OSCCAL vērtību OSCCAL_VAL programmaparatūras augšpusē.
  8. Pārveidojiet un augšupielādējiet jaunu programmaparatūru. Atkārtojiet 1. -5. Darbību, kurā jāparāda jaunā OSCCAL vērtība un jaunais frekvences mērījums.
  9. Ja nepieciešams, atkārtojiet darbības vēlreiz, līdz tiek sasniegts labākais rezultāts.

Ņemiet vērā, ka ir svarīgi veikt šīs regulēšanas mērīšanas daļu, strādājot ar parasto strāvu, nevis USB, lai samazinātu frekvences maiņu barošanas sprieguma dēļ.

Ieteicams: