Obsah:

Měřič kondenzátoru ATTiny85: 4 kroky
Měřič kondenzátoru ATTiny85: 4 kroky

Video: Měřič kondenzátoru ATTiny85: 4 kroky

Video: Měřič kondenzátoru ATTiny85: 4 kroky
Video: Super kondenzátor 2024, Červenec
Anonim
Kondenzátorový měřič ATTiny85
Kondenzátorový měřič ATTiny85
Kondenzátorový měřič ATTiny85
Kondenzátorový měřič ATTiny85

Tento návod je pro kondenzátorový měřič založený na ATTiny85 s následujícími funkcemi.

  • Na základě ATTiny85 (DigiStamp)
  • 0,96 palcový OLED displej SSD1306
  • Měření frekvence pro kondenzátory s nízkou hodnotou 1pF - 1uF pomocí oscilátoru 555
  • Měření doby nabíjení u vysoce hodnotných kondenzátorů 1 uF - 50 000 uF
  • 2 oddělené porty používané pro metody k minimalizaci statické kapacity
  • Dvě hodnoty proudu použité pro čas nabíjení k minimalizaci času u velkých kondenzátorů
  • 555 způsob nul při startu, lze resetovat tlačítkem
  • Rychlý test používaný k výběru metody, která by měla být použita pro každý cyklus měření.
  • Přesnost metody doby nabíjení lze zlepšit podporou úpravy taktovací frekvence OSCVAL

Krok 1: Schéma a teorie

Schéma a teorie
Schéma a teorie

Schéma ukazuje ATTiny pohánějící OLED displej SSD1306 přes rozhraní I2C. Je napájen přímo z baterie LiOn 300mAh a součástí je nabíjecí bod, který lze použít s externí nabíječkou kompatibilní s LiOn.

První metoda měření je založena na měření frekvence 555 volně běžícího oscilátoru. To má základní frekvenci určenou odpory a kondenzátorem, který by měl mít vysokou přesnost, protože to určuje přesnost měření. Použil jsem 1% polystyrenový kondenzátor 820pF, který jsem měl, ale lze použít i jiné hodnoty kolem 1nF. Hodnota musí být zadána do softwaru spolu s odhadem jakékoli rozptylové kapacity (~ 20 pF). To dávalo základní frekvenci kolem 16KHz. Výstup 555 je přiveden do PB2 ATTiny, který je naprogramován jako čítač hardwaru. Měřením počtu po dobu přibližně 1 sekundy lze určit frekvenci. To se provádí při spuštění, aby se určila základní frekvence. Když se paralelně k základnímu kondenzátoru přidá testovaný kondenzátor, pak se frekvence sníží a když se to měří a porovnává se základní frekvencí, lze vypočítat hodnotu přidané kapacity.

Hezkou vlastností této metody je, že vypočítaná hodnota závisí pouze na přesnosti základního kondenzátoru. Na době měření nezáleží. Rozlišení závisí na rozlišení měření frekvence, které je poměrně vysoké, takže lze měřit i velmi malou přidanou kapacitu. Zdá se, že limitujícím faktorem je „frekvenční šum“oscilátoru 555, který pro mě odpovídá přibližně 0,3 pF.

Metodu lze použít ve slušném rozsahu. Aby se zlepšil rozsah, synchronizuji periodu měření s detekcí hran příchozích impulzů. To znamená, že i nízkofrekvenční oscilace jako 12Hz (s kondenzátorem 1uF) jsou měřeny přesně.

U větších kondenzátorů je obvod uspořádán tak, aby používal metodu časování nabíjení. V tomto je testovaný kondenzátor vybitý, aby se zajistilo, že začíná na 0, poté se nabije známým odporem napájecího napětí. ADC v ATTiny85 se používá k monitorování napětí kondenzátoru a měří se čas potřebný k přechodu z 0% na 50% nabití. To lze použít k výpočtu kapacity. Protože referencí pro ADC je také napájecí napětí, nemá to vliv na měření. Absolutní míra zabraného času však závisí na hodinové frekvenci ATTiny85 a její odchylky ovlivňují výsledek. K vylepšení přesnosti těchto hodin lze použít postup pomocí ladicího registru v ATTiny85, který bude popsán později.

K vybití kondenzátoru na 0 V se používá n-kanálový MOSFET spolu s odporem nízké hodnoty k omezení vybíjecího proudu. To znamená, že i velké kondenzátory lze rychle vybíjet.

K nabíjení kondenzátoru jsou použity 2 hodnoty nabíjecího odporu. Základní hodnota udává přiměřené doby nabíjení kondenzátorů od 1 uF do přibližně 50 uF. P-kanálový MOSFET se používá k paralelnímu zapojení nižšího odporu, aby bylo možné v rozumném intervalu měřit kondenzátory s vyšší hodnotou. Zvolené hodnoty udávají dobu měření přibližně 1 sekundu pro kondenzátory až do 2200 uF a úměrně delší pro větší hodnoty. Na dolním konci hodnoty musí být doba měření udržována přiměřeně dlouhá, aby bylo možné určit přechod s prahovou hodnotou 50% s dostatečnou přesností. Vzorkovací frekvence ADC je přibližně 25 µSec, takže minimální doba 22 ms poskytuje přiměřenou přesnost.

Protože ATTiny má omezené IO (6 pinů), je třeba alokaci tohoto zdroje provádět opatrně. Pro zobrazení jsou potřeba 2 piny, 1 pro vstup časovače, 1 pro ADC, 1 pro ovládání vybíjení a 1 pro ovládání rychlosti nabíjení. Chtěl jsem tlačítkové ovládání umožňující opětovné vynulování v libovolném bodě. To se provádí hi-jacking řady I2C SCL. Vzhledem k tomu, že signály I2C jsou otevřené, nedochází k žádnému elektrickému konfliktu tím, že tlačítko necháte vytáhnout tuto linku nízko. Displej přestane fungovat se stisknutým tlačítkem, ale to nemá žádný význam, protože se obnoví po uvolnění tlačítka.

Krok 2: Konstrukce

Konstrukce
Konstrukce
Konstrukce
Konstrukce
Konstrukce
Konstrukce

Vytvořil jsem to do malé 3D tiskárny o rozměrech 55 mm x 55 mm. Navrženo pro uložení 4 hlavních komponent; deska ATTiny85 DigiStamp, displej SSD1306, baterie LiOn a malý kousek desky prototypu s časovačem 55 a elektronikou řízení nabíjení.

Příloha na

Potřebné díly

  • Deska ATTiny85 DigiStamp. Použil jsem verzi s konektorem microUSB, který slouží k nahrávání firmwaru.
  • OLED displej SSD1306 I2C
  • 300mAH LiOn baterie
  • Malý pás prototypovací desky
  • Časovací čip CMOS 555 (TLC555)
  • n-kanálový MOSFET AO3400
  • p-Channel MOSFET AO3401
  • Rezistory 4R7, 470R, 22K, 2x33K
  • Kondenzátory 4u7, 220u
  • Přesný kondenzátor 820pF 1%
  • Miniaturní posuvný spínač
  • 2 x 3 pinové záhlaví pro nabíjecí port a měřicí porty
  • Stiskněte tlačítko
  • Ohrada
  • Zapojte drát

Potřebné nástroje

  • Páječka s jemným hrotem
  • Pinzeta

Nejprve sestavte obvod časovače 555 a součásti nabíjení na prototypové desce. Přidejte volná vedení pro externí připojení. Připevněte posuvný spínač a nabíjecí bod a měřicí port do skříně. Připevněte baterii a zapojte hlavní napájecí kabel do nabíjecího bodu, posuňte vypínač. Připojte uzemnění k tlačítku. Připevněte ATTiny85 na místo a dokončete připojení.

Před montáží desky ATTiny můžete provést několik úsporných úprav, které trochu sníží proud a prodlouží životnost baterie.

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

To není důležité, protože existuje vypínač, který vypne měřič, když se nepoužívá.

Krok 3: Software

Software pro tento kondenzátorový měřič najdete na

github.com/roberttidey/CapacitorMeter

Toto je skica založená na Arduinu. Potřebuje knihovny pro zobrazení a I2C, které najdete na

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Ty jsou optimalizovány tak, aby ATTiny zabíraly minimální paměť. Knihovna I2C je vysokorychlostní metoda bit bang, která umožňuje použití jakýchkoli 2 pinů. To je důležité, protože metody I2C využívající sériový port používají PB2, což je v rozporu s použitím vstupu časovače/čítače potřebného k měření frekvence 555.

Software je strukturován kolem stavového stroje, který provádí měření cyklem stavů. ISR podporuje přetečení z čítače časovače k rozšíření 8bitového hardwaru. Druhý ISR podporuje ADC pracující v nepřetržitém režimu. To dává nejrychlejší reakci na nabíjecí obvod překračující práh.

Na začátku každého cyklu měření funkce getMeasureMode určuje, která metoda je pro každé měření nejvhodnější.

Když je použita metoda 555, načasování počítání začíná pouze tehdy, když se změnil čítač. Podobně se časování zastaví až po jmenovitém intervalu měření a při detekci hrany. Tato synchronizace umožňuje přesný výpočet frekvence i pro nízké frekvence.

Když software spustí, prvních 7 měření jsou „kalibrační cykly“používané ke stanovení základní frekvence 555 bez přidaného kondenzátoru. Poslední 4 cykly jsou zprůměrovány.

Existuje podpora pro úpravu registru OSCAL pro ladění hodin. Doporučuji nejprve nastavit OSCCAL_VAL na 0 v horní části skici. To znamená, že tovární kalibrace bude použita, dokud nebude provedeno ladění.

Je nutné upravit hodnotu základního kondenzátoru 555. Také přidávám odhadovanou částku za zbloudilou kapacitu.

Pokud jsou pro metody nabíjení použity různé odpory, pak bude také nutné změnit hodnoty CHARGE_RCLOW a CHARGE_RCHIGH v softwaru.

Chcete -li nainstalovat software, použijte běžnou metodu digistamp pro odeslání softwaru a připojení USB portu, když k tomu budete vyzváni. Nechte hlavní vypínač v poloze vypnuto, protože pro tuto operaci bude USB napájet.

Krok 4: Provoz a pokročilá kalibrace

Obsluha je velmi přímočará.

Po zapnutí jednotky a čekání na dokončení kalibrační nuly připojte testovaný kondenzátor k jednomu ze dvou měřicích portů. Použijte 555 portů pro kondenzátory s nízkou hodnotou <1uF a nabíjecí port pro kondenzátory s vyšší hodnotou. U elektrolytických kondenzátorů připojte záporný pól ke společnému uzemňovacímu bodu. Během testování se kondenzátor nabije až na přibližně 2V.

Port 555 lze resetovat podržením tlačítka na přibližně 1 sekundu a uvolněním. Za tímto účelem zkontrolujte, zda není k portu 555 nic připojeno.

Pokročilá kalibrace

Metoda nabíjení se při měření času opírá o absolutní taktovací frekvenci ATTiny85. Hodiny používají interní RC oscilátor uspořádaný tak, aby poskytoval nominální hodiny 8 MHz. Přestože je stabilita oscilátoru pro změny napětí a teploty velmi dobrá, její frekvence může být o několik procent nižší, přestože je kalibrována z výroby. Tato kalibrace nastaví registr OSCCAL při spuštění. Tovární kalibraci lze zlepšit kontrolou frekvence a optimálnějším nastavením hodnoty OSCCAL tak, aby vyhovovala konkrétní desce ATTiny85.

Automatičtější metodu se mi do firmwaru zatím nepodařilo vejít, takže používám následující ruční postup. V závislosti na dostupných externích měřeních jsou možné dvě varianty; buď frekvenční měřič schopný měřit frekvenci trojúhelníkového průběhu na portu 555, nebo zdroj čtvercových vln o známé frekvenci, např. 10KHz s úrovněmi 0V/3,3V, které lze připojit k portu 555 a potlačit průběh, aby se tato frekvence dostala do čítače. Použil jsem druhou metodu.

  1. Spusťte měřič na normální výkon bez připojených kondenzátorů.
  2. Připojte měřič kmitočtu nebo generátor čtvercových vln k portu 555.
  3. Kalibrační cyklus restartujte stisknutím tlačítka.
  4. Na konci kalibračního cyklu se na displeji zobrazí frekvence určená čítačem a aktuální hodnotou OSCCAL. Pamatujte, že opakované použití kalibračního cyklu bude přepínat mezi zobrazením naměřené frekvence a normálním žádným zobrazením.
  5. Pokud je zobrazená frekvence menší, než je známo, znamená to, že je taktovací frekvence příliš vysoká a naopak. Zjistil jsem, že přírůstek OSCCAL upravuje hodiny asi o 0,05%
  6. Vypočítejte novou hodnotu OSCCAL pro vylepšení hodin.
  7. Zadejte novou hodnotu OSCCAL do OSCCAL_VAL v horní části firmwaru.
  8. Znovu sestavte a nahrajte nový firmware. Opakujte kroky 1-5, které by měly ukázat novou hodnotu OSCCAL a nové měření frekvence.
  9. V případě potřeby opakujte kroky znovu, dokud není dosaženo nejlepšího výsledku.

Poznámka: Je důležité provést měřicí část tohoto ladění při běhu na normálním napájení, nikoli USB, aby se minimalizoval jakýkoli posun frekvence v důsledku napájecího napětí.

Doporučuje: