Obsah:

Kondenzátorový merač ATTiny85: 4 kroky
Kondenzátorový merač ATTiny85: 4 kroky

Video: Kondenzátorový merač ATTiny85: 4 kroky

Video: Kondenzátorový merač ATTiny85: 4 kroky
Video: Использование плат Digispark Attiny85 Mini Arduino: Урок 108 2024, Júl
Anonim
Kondenzátorový merač ATTiny85
Kondenzátorový merač ATTiny85
Kondenzátorový merač ATTiny85
Kondenzátorový merač ATTiny85

Tento návod je pre kondenzátorový merač založený na ATTiny85 s nasledujúcimi funkciami.

  • Na základe ATTiny85 (DigiStamp)
  • 0,96 palcový OLED displej SSD1306
  • Meranie frekvencie pre kondenzátory s nízkou hodnotou 1pF - 1uF pomocou oscilátora 555
  • Meranie času nabíjania pre vysoko hodnotné kondenzátory 1uF - 50 000uF
  • 2 oddelené porty používané na metódy minimalizácie starej kapacity
  • Dve hodnoty prúdu použité na čas nabíjania na minimalizáciu času pre veľké kondenzátory
  • Metóda 555 sa pri spustení vynuluje, dá sa resetovať stlačením tlačidla
  • Rýchly test použitý na výber metódy, ktorá by sa mala použiť pre každý cyklus merania.
  • Presnosť metódy doby nabíjania je možné zlepšiť podporou úpravy frekvencie hodín OSCVAL

Krok 1: Schéma a teória

Schéma a teória
Schéma a teória

Schéma ukazuje, ako ATTiny poháňa OLED displej SSD1306 cez rozhranie I2C. Je napájaný priamo z batérie LiOn 300 mAh a súčasťou balenia je nabíjací bod, ktorý je možné použiť s externou nabíjačkou kompatibilnou s LiOn.

Prvá metóda merania je založená na meraní frekvencie 555 voľne bežiaceho oscilátora. Má základnú frekvenciu určenú odpormi a kondenzátorom, ktorý by mal mať vysokú presnosť, pretože to určuje presnosť meraní. Použil som 1% polystyrénový kondenzátor 820 pF, ktorý som mal, ale dajú sa použiť aj iné hodnoty okolo 1 nF. Hodnota musí byť zadaná do softvéru spolu s odhadom akejkoľvek rozptylovej kapacity (~ 20 pF). To dávalo základnú frekvenciu okolo 16KHz. Výstup 555 je vedený do PB2 ATTiny, ktorý je naprogramovaný ako hardvérové počítadlo. Frekvenciu je možné určiť meraním počtu v priebehu približne 1 sekundy. To sa robí pri štarte, aby sa určila základná frekvencia. Keď sa testovaný kondenzátor paralelne pridá k základnému kondenzátoru, frekvencia sa zníži a keď sa to zmeria a porovná so základnou frekvenciou, potom sa dá vypočítať hodnota pridanej kapacity.

Peknou vlastnosťou tejto metódy je, že vypočítaná hodnota závisí iba od presnosti základného kondenzátora. Na období merania nezáleží. Rozlíšenie závisí od rozlíšenia frekvenčných meraní, ktoré je dosť vysoké, takže je možné merať aj veľmi malú pridanú kapacitu. Zdá sa, že obmedzujúcim faktorom je „frekvenčný šum“oscilátora 555, ktorý je pre mňa ekvivalentom približne 0,3 pF.

Metódu je možné použiť v slušnom rozsahu. Na zlepšenie rozsahu synchronizujem periódu merania s detekciou okrajov prichádzajúcich impulzov. To znamená, že aj nízke frekvenčné oscilácie ako 12Hz (s kondenzátorom 1uF) sú merané presne.

Pri väčších kondenzátoroch je obvod usporiadaný tak, aby používal metódu časovania nabíjania. V tomto prípade sa testovaný kondenzátor vybije, aby sa zabezpečilo, že začne na 0, potom sa nabije známym odporom napájacieho napätia. Na monitorovanie napätia kondenzátora sa používa ADC v ATTiny85 a meria sa čas potrebný na prechod z 0% na 50% nabitia. Toto sa môže použiť na výpočet kapacity. Pretože referenciou pre ADC je aj napájacie napätie, nemá to vplyv na meranie. Absolútna miera času však závisí od hodinovej frekvencie ATTiny85 a odchýlky v tomto majú vplyv na výsledok. Na zlepšenie presnosti týchto hodín je možné použiť postup pomocou tuningového registra v ATTiny85 a je to popísané neskôr.

Na vybitie kondenzátora na 0 V sa používa n-kanálový MOSFET spolu s odporom s nízkou hodnotou na obmedzenie vybíjacieho prúdu. To znamená, že aj kondenzátory veľkých hodnôt je možné rýchlo vybíjať.

Na nabíjanie kondenzátora sa používajú 2 hodnoty nabíjacieho odporu. Základná hodnota poskytuje primerané časy nabíjania kondenzátorov od 1 uF do asi 50 uF. P-kanálový MOSFET sa používa na paralelné zapojenie nižšieho odporu, aby bolo možné v rozumnom intervale merať kondenzátory vyšších hodnôt. Zvolené hodnoty poskytujú čas merania asi 1 sekundu pre kondenzátory do 2 200 uF a proporcionálne dlhší pre väčšie hodnoty. Na dolnom konci hodnoty musí byť perióda merania dostatočne dlhá, aby bolo možné dostatočne presne určiť prechod cez 50% prah. Vzorkovacia frekvencia ADC je asi 25 µSec, takže minimálna perióda 22 ms poskytuje primeranú presnosť.

Pretože ATTiny má obmedzené IO (6 pinov), je potrebné alokáciu tohto zdroja vykonávať opatrne. Na zobrazenie sú potrebné 2 piny, 1 na vstup časovača, 1 na ADC, 1 na ovládanie vybíjania a 1 na ovládanie rýchlosti nabíjania. Chcel som, aby ovládanie pomocou tlačidla umožnilo opätovné vynulovanie v ľubovoľnom bode. To sa dosiahne pripojením radu I2C SCL. Pretože signály I2C sú otvorené, nedochádza k elektrickému konfliktu tým, že tlačidlo necháte vytiahnuť túto linku nízko. Displej prestane fungovať, keď je tlačidlo stlačené, ale to nemá žiadny význam, pretože sa obnoví po uvoľnení tlačidla.

Krok 2: Konštrukcia

Konštrukcia
Konštrukcia
Konštrukcia
Konštrukcia
Konštrukcia
Konštrukcia

Vytvoril som to do malého 3D tlačeného boxu s rozmermi 55 mm x 55 mm. Navrhnutý tak, aby pojal 4 hlavné komponenty; doska ATTiny85 DigiStamp, displej SSD1306, batéria LiOn a malý kúsok prototypu dosky s časovačom 55 a elektronikou ovládania nabíjania.

Príloha na

Potrebné diely

  • Doska ATTiny85 DigiStamp. Použil som verziu s konektorom microUSB, ktorá sa používa na nahrávanie firmvéru.
  • OLED displej SSD1306 I2C
  • 300mAH LiOn batéria
  • Malý pás prototypovej dosky
  • Časovací čip CMOS 555 (TLC555)
  • n-kanálový MOSFET AO3400
  • p-kanál MOSFET AO3401
  • Rezistory 4R7, 470R, 22K, 2x33K
  • Kondenzátory 4u7, 220u
  • Presný kondenzátor 820pF 1%
  • Miniatúrny posuvný spínač
  • 2 x 3 kolíkové záhlavia pre nabíjací port a meracie porty
  • Tlačidlo
  • Ohrada
  • Zapojte drôt

Potrebné nástroje

  • Jemná bodová spájkovačka
  • Pinzeta

Najprv vytvorte obvod časovača 555 a komponenty nabíjania na prototypovej doske. Pridajte voľné vodiče pre externé pripojenia. Upevnite posuvný spínač a nabíjací bod a merací port do krytu. Pripojte batériu a zapojte hlavné napájacie vedenie do nabíjacieho bodu, posuňte prepínač. Pripojte uzemnenie k tlačidlu. Pripevnite ATTiny85 na miesto a dokončite zapojenie.

Pred inštaláciou dosky ATTiny môžete vykonať niekoľko úsporných úprav, ktoré trochu znížia prúd a predĺžia životnosť batérie.

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

Toto nie je kritické, pretože merací prístroj je vypnutý vypínačom, keď sa nepoužíva.

Krok 3: Softvér

Softvér pre tento kondenzátorový merač nájdete na

github.com/roberttidey/CapacitorMeter

Toto je skica založená na Arduine. Potrebuje knižnice na zobrazenie a I2C, ktoré nájdete na

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Tieto sú optimalizované pre ATTiny, aby zaberali minimálnu pamäť. Knižnica I2C je vysokorýchlostná metóda bit bang, ktorá umožňuje použitie akýchkoľvek 2 pinov. To je dôležité, pretože metódy I2C používajúce sériový port používajú PB2, čo je v rozpore s použitím vstupu časovača/počítadla potrebného na meranie frekvencie 555.

Softvér je štruktúrovaný okolo stavového stroja, ktorý vykonáva meranie cyklom stavov. ISR podporuje pretečenie z počítadla časovača na rozšírenie 8 -bitového hardvéru. Druhý ISR podporuje ADC pracujúci v nepretržitom režime. To dáva najrýchlejšiu odozvu na nabíjací obvod prekračujúci prah.

Na začiatku každého cyklu merania funkcia getMeasureMode určí, ktorá metóda je pre každé meranie najvhodnejšia.

Keď sa použije metóda 555, načasovanie počítania začne až vtedy, keď sa zmení počítadlo. Podobne sa načasovanie zastaví iba po nominálnom intervale merania a keď je detegovaná hrana. Táto synchronizácia umožňuje presný výpočet frekvencie aj pre nízke frekvencie.

Po spustení softvéru sa prvých 7 meraní použije ako „kalibračné cykly“na určenie základnej frekvencie 555 bez pridaného kondenzátora. Priemerné sú posledné 4 cykly.

Existuje podpora pre úpravu registra OSCAL na ladenie hodín. V hornej časti náčrtu navrhujem nastaviť OSCCAL_VAL na 0. To znamená, že až do vykonania ladenia bude použitá továrenská kalibrácia.

Je potrebné nastaviť hodnotu základného kondenzátora 555. Tiež pridávam odhadovanú sumu za odchýlku kapacity.

Ak sa na spôsoby nabíjania používajú rôzne odpory, bude potrebné zmeniť aj hodnoty CHARGE_RCLOW a CHARGE_RCHIGH v softvéri.

Na inštaláciu softvéru použite bežný spôsob načítania softvéru a pripojenie USB portu, keď sa zobrazí výzva. Nechajte hlavný vypínač v polohe vypnuté, pretože USB bude na túto operáciu dodávať energiu.

Krok 4: Prevádzka a rozšírená kalibrácia

Obsluha je veľmi jednoduchá.

Po zapnutí jednotky a čakaní na dokončenie kalibračnej nuly pripojte testovaný kondenzátor k jednému z dvoch meracích portov. Porty 555 použite pre kondenzátory s nízkou hodnotou <1uF a nabíjací port pre kondenzátory s vyššou hodnotou. V prípade elektrolytických kondenzátorov pripojte záporný pól na spoločný uzemňovací bod. Počas testovania bude kondenzátor nabitý až na približne 2V.

Port 555 je možné resetovať stlačením a podržaním tlačidla na približne 1 sekundu a uvoľnením. Uistite sa, že na tento účel nie je k portu 555 nič pripojené.

Pokročilá kalibrácia

Metóda nabíjania sa pri meraní času spolieha na absolútnu hodinovú frekvenciu ATTiny85. Hodiny používajú interný RC oscilátor usporiadaný tak, aby poskytoval nominálne hodiny 8 MHz. Napriek tomu, že stabilita oscilátora je celkom dobrá pre zmeny napätia a teploty, jeho frekvencia môže byť o niekoľko percent nižšia, aj keď je kalibrovaná z výroby. Táto kalibrácia nastaví register OSCCAL pri spustení. Výrobnú kalibráciu je možné zlepšiť kontrolou frekvencie a optimálnejším nastavením hodnoty OSCCAL tak, aby vyhovovala konkrétnej doske ATTiny85.

Automatickejšiu metódu som do firmvéru ešte nedokázal zapracovať, takže používam nasledujúci manuálny postup. V závislosti od toho, aké externé merania sú k dispozícii, sú možné dve variácie; buď frekvenčný merač schopný merať frekvenciu trojuholníkového tvaru vlny na porte 555, alebo zdroj štvorcovej vlny známej frekvencie, napr. 10KHz s úrovňami 0V/3,3V, ktoré je možné pripojiť k portu 555 a potlačiť priebeh, aby sa frekvencia vtlačila do počítadla. Použil som druhú metódu.

  1. Spustite merač na normálnom výkone bez zapojených kondenzátorov.
  2. Pripojte merač frekvencie alebo generátor štvorcových vĺn k portu 555.
  3. Reštartujte kalibračný cyklus stlačením tlačidla.
  4. Na konci kalibračného cyklu sa na displeji zobrazí frekvencia určená počítadlom a aktuálna hodnota OSCCAL. Všimnite si toho, že opakované použitie kalibračného cyklu bude prepínať medzi zobrazením nameranej frekvencie a normálnym nezobrazením.
  5. Ak je zobrazená frekvencia menšia ako je známa, znamená to, že hodinová frekvencia je príliš vysoká a naopak. Zistil som, že prírastok OSCCAL upravuje hodiny asi o 0,05%
  6. Vypočítajte novú hodnotu OSCCAL na zlepšenie hodín.
  7. Zadajte novú hodnotu OSCCAL do OSCCAL_VAL v hornej časti firmvéru.
  8. Znovu vytvorte a nahrajte nový firmvér. Opakujte kroky 1-5, ktoré by mali ukázať novú hodnotu OSCCAL a nové meranie frekvencie.
  9. V prípade potreby opakujte kroky znova, kým sa nedosiahne najlepší výsledok.

Poznámka: Je dôležité vykonať časť merania tohto ladenia, keď beží na normálnom napájaní, nie na USB, aby sa minimalizoval akýkoľvek frekvenčný posun v dôsledku napájacieho napätia.

Odporúča: