Digitální měřič kapacity s alfanumerickým displejem řízený PIC16F74
V tomto článku je popsán návrh a funkce digitálního měřiče kapacity. Přístroj je řízen jednočipovým mikrokontrolérem PIC16F74 firmy Microchip a díky dvojřádkovému alfanumerickému displeji, pěti indikačním led, dvěma typům napájení a snadnému ovládání třemi tlačítky poskytuje poměrně komfortní „uživatelské prostředí“. Na rozdíl od běžně prodávaných umožňuje měření kapacit v rozsahu devíti řádů od 10pF do 10mF s odchylkou do 1%. Měření probíhá na principu RC oscilátoru a vyhodnocování periody na jeho výstupu zmíněným mikrokontrolérem.
(c) Martin Olejár, 2004 - www.elweb.cz
Způsob měření, blokové schéma(c) Martin Olejár, 2004 - www.elweb.cz
Kapacita sama o sobě je poměrně obtížně měřitelná veličina, a proto je ji třeba pomocí nějakého obvodu (převodníku) převést na veličinu snadněji měřitelnou. V měřící technice se s takovýmito převodníky setkáme poměrně často. Používají se například převodníky frekvence-napětí, teplota-odpor, tlak-odpor, intenzita osvětlení-odpor a pod. Převodníkem nemusí být vždy jen jedna součástka, ale i celý obvod. Většinou se vstupní veličiny převádějí na napětí nebo odpor, protože ty jsou je pak snadno měřitelné voltmetrem nebo ohmetrem. Když jsem přemýšlel na jakou veličinu a jakým způsobem by se dala převést kapacita, napadl mě RC oscilátor. Perioda RC oscilátoru je totiž přímo úměrná kapacitě C. A čas (v tomto případě perioda výstupního signálu) lze měřit trochu upraveným čítačem.
(c) Martin Olejár, 2004 - www.elweb.cz
Celý měřící přístroj se bude tedy skládat z RC oscilátoru generujícího signál s periodou přímo úměrnou měřené kapacitě C a upraveného čítače s pevně nastavenou frekvencí čítání pro měření času (periody).
(c) Martin Olejár, 2004 - www.elweb.cz
Měřící přístroj bude pracovat ve třech rozsazích od 10pF do 10mF podle toho jaký bude odpor R (ten se bude přepínat třípolohovým přepínačem):
(c) Martin Olejár, 2004 - www.elweb.cz
1. 10 až 100 000 pF
2. 10 až 100 000 nF
3. 10 až 10 000 mF
(c) Martin Olejár, 2004 - www.elweb.cz
(c) Martin Olejár, 2004 - www.elweb.cz
RC oscilátor
(c) Martin Olejár, 2004 - www.elweb.cz
RC oscilátor lze realizovat mnoha způsoby – od astabilních klopných obvodů s tranzistory, operačními zesilovači logickými obvody až po speciální integrované obvody. Já jsem pro tento účel vybral obvod 555, který je určen (mimo jiného) pro konstrukci časovačů. 555 má výbornou přesnost opakování a hlavně funguje na rozdíl od ostatních typů oscilátorů ve velmi širokém rozsahu hodnot R a C členů. Například AKO (astabilní klopný obvod = oscilátor) s logickým obvodem 74HC132 se nerozkmitá s odporem vyšším než cca 2kW. Požadovaný rozsah měřených kapacit a z toho vyplývající rozsah odporů (při stejném nebo alespoň podobném měřícím čase u různých rozsahů měření) je opravdu velký: pro měření od desítek pF do desítek mF je to 12 řádů !
(c) Martin Olejár, 2004 - www.elweb.cz
Váhal jsem ještě mezi obvody 555N (bipolární) a 555C (unipolární verze). Nespornou výhodou provedení s unipolárními tranzistory je jeho menší proudový odběr, což je při napájení z baterií důležité. 555C však nedokáže při dobíjení velkých kapacit (řádově desítky mF) dodat dostatečně vysoký proud pro nabití C v krátkém čase, a proto jsem nakonec zvolil bipolární 555N.
(c) Martin Olejár, 2004 - www.elweb.cz
Obvod oscilátoru je zapojen v podstatě podle základního schématu doporučovaného výrobcem pro AKO. Rezistory R1 a R2 tvoří dohromady (sériově) odpor R a jsou „vyměňovány“ přepínačem rozsahů. Místo kapacity C1 jsou v konečném schématu svorky pro vložení měřeného kondenzátoru. Po zapnutí přístroje (přivedení napájecího napětí 5V na vývod číslo 8) se začne měřený kondenzátor nabíjet přes R1 a R2. Po překročení dvou třetin napájecího napětí na kondenzátoru a zároveň na vstupu THR (vývod číslo 6) se změní logický stav na výstupu (vývod číslo 3) a kondenzátor se začne opět vybíjet. Po klesnutí napětí na C (THR) se opět změní logický stav výstupu, kondenzátor se začne nabíjet a tak se to neustále opakuje – AKO se rozkmitá.
(c) Martin Olejár, 2004 - www.elweb.cz
Pro naplnění čítače (tedy zobrazení čísla 99 999) je potřeba čas přibližně 4s (viz níže). Z tohoto údaje jsem dopočítal hodnoty rezistorů pro jednotlivé rozsahy. Při výpočtech jsem vycházel ze vzorce T=RC, který pro nabíjení a vybíjení kondenzátoru pomocí 555ky neplatí zcela přesně, ale pro tyto účely postačuje. Vše se pak dá doladit pomocí kalibračních trimrů.
(c) Martin Olejár, 2004 - www.elweb.cz
Mikrokontrolér a ostatní prvky
(c) Martin Olejár, 2004 - www.elweb.cz
Pro zjednodušení celého měřícího přístroje jsem použil mikrokontrolér PIC16F74 se 33 vstupně-výstupními porty od firmy Microchip. Čítač by se dal realizovat i logickými čipy TTL/CMOS, ale těch by muselo být nejméně deset. Navíc použitím mikrokontroléru vzniká možnost dalších úprav a upgrade pouze přeprogramováním firmware beze změn v hardwaru. Na rozdíl od logických IO může mikrokontrolér ovládat i textový lcd displej, takže „uživatelské prostředí“ může být mnohem lepší a propracovanější.
(c) Martin Olejár, 2004 - www.elweb.cz
Taktovací frekvenci mikrokontroléru určuje externí krystal. Frekvence krystalu je 4MHz a z toho vyplývající taktovací frekvence 1Mhz. (je čtvrtinová). PIC16F74 sice pracuje až do 20MHz, ale pak má vyšší proudový odběr a to při napájení z baterie není příliš žádoucí. Vstup primárního resetu je trvale v log. 1 a přes diodu připojen ke konektoru ICSP programování. Porty B,6 a B,7 jsou rovněž využity pro ICSP. Tento konektor umožňuje připojení programátoru a následné přeprogramování firmware za chodu přístroje, takže se při upgrade mikrokontrolér vůbec nemusí vyjímat z plošného spoje a může být napevno zapájen. Port A,0 je programově nastaven jako analogový vstup s referenčním napětím Ucc (tedy 5V), je přes odporový dělič napětí připojen ke vstupu stabilizátoru a neustále monitoruje napájecí napětí přístroje (podrobněji to vysvětluji v kapitolách „Program mikrokontroléru“ a „Napájení“). Nevyužité porty A,1 až A,5 programově nastaveny jako výstupy, aby se na nich nemohlo indukovat rušivé napětí. Na port B,0 je přiveden výstup RC oscilátoru (555 vývod číslo 3). Porty B,1 až B,3 slouží k ovládání lcd displeje. Port B,4 přes tranzistor zesilující proud ovládá (log.1 => rozsvěcí / log.0 => zhasíná) podsvícení displeje a port B,5 sleduje případný stisk tlačítka DATA. Všechny porty C jsou využity pro sériový přenos dat do řídících obvodů displeje. Tlačítko VYPNI je připojeno k portu D,0. Výstup D,1 zapíná/vypíná celý přístroj (podrobněji v kapitole „Napájení“). K ostatním D portům jsou připojeny signalizační led diody indikující v pořadí následující stavy: zapnuto ˝ napájení z baterie ˝ napájení z adaptéru ˝ probíhá měření ˝ podržení dat (data hold) ˝ vyskytla se chyba. Porty E zjišťují polohu přepínače rozsahů. Způsob měření periody RC oscilátoru je popsán v následující kapitole „program mikrokontroléru“.
(c) Martin Olejár, 2004 - www.elweb.cz
Naměřené hodnoty, instrukce pro uživatele a ostatní hlášení se zobrazují na alfanumerickém lcd displeji o 32 znacích (2 řádky po 16 znacích) se standardním ovládacím obvodem HD44780. Měřící přístroj se ovládá pouze třemi tlačítky: ZAPNI, VYPNI a DATA, přičemž tlačítko DATA slouží pro podržení právě naměřené hodnoty na displeji. Na komerčních přístrojích je tato funkce většinou označována jako DATA HOLD. Šest led diod indikuje různé stavy přístroje (viz níže).
(c) Martin Olejár, 2004 - www.elweb.cz
Program mikrokontroléru
(c) Martin Olejár, 2004 - www.elweb.cz
Program je napsán ve standardních příkazech pro PIC16F74, následně pomocí assembleru staženého z internetových stránek firmy Microchip převedený do strojového kódu a naprogramovaný programátorem Asix PICCOLO přes ICSP rozhraní do flash paměti mikrokontroléru. Než se podařilo doladit firmware do nynější podoby vzniklo několik desítek verzí firmware. Nejnovější je momentálně verze 1.36. Vzhledem k rozsáhlosti a složitosti celého firmware zde nebudu uvádět kompletní diagram programu. Kompletní program je v příloze a je doplněn dostatečným množstvím poznámek.
(c) Martin Olejár, 2004 - www.elweb.cz
V první části programu probíhá inicializace mikrokontroléru a displeje, tedy jejich základní nastavení. Tato část proběhne pouze jednou při startu a dále už se neopakuje. Nastavují se následující vlastnosti:
(c) Martin Olejár, 2004 - www.elweb.cz
- typ mikrokontroléru
- deklarace proměnných (8-bitových registrů paměti RAM)
- deklarace znaků displeje (kód každého znaku)
- definice hardwarového připojení led diod k portům
- fyzické umístění programu ve flash paměti a adresa 04H pro přerušení (počáteční adresy)
- nastavení portů (vstupy/výstupy)
- nastavení funkce vestavěného časovače timer 1
- nastavení WDT a přiřazení předděličky (watch dog timer - kontroluje správný běh programu, pokud není pravidelně nulován příkazem CLRWDT dojde k restartu)
- nastavení funkce a/d převodníku
- nulování některých registrů
- inicializace displeje
- vytvoření vlastních znaků v matici 5x7 bodů, které displej standardně nepodporuje ( konkrétně mikro a plus-mínus)
(c) Martin Olejár, 2004 - www.elweb.cz
Nyní popíši jednotlivé podprogramy, které jsou volány v průběhu chodu hlavního programu nebo i jinými podprogramy instrukcí CALL. Po instrukci RETURN (nebo RETLW) je opět návrat do hlavního programu nebo nadřazeného podprogramu za místo odkud byl daný podprogram volán.
(c) Martin Olejár, 2004 - www.elweb.cz
- Čekání (podprogramy „cekani1“, „cekani2“, „cekani3“) V těchto podprogramech se nejprve nastaví nějaká hodnota (většinou 255) do několika pomocných registrů (proměnných) a pak se první pomocný registr při každém taktu (4Mhz/4=1MHz => miliónkrát za sekundu) snižuje o jedna a testuje se zda je jeho hodnota již nulová instrukcí DECFSZ. Pokud ano, tak se odečte jedna od druhého pomocného registru a ten první se opět nastaví na určitou hodnotu. Pokud je n-tý pomocný registr nulový podprogram se ukončí instrukcí RETURN. Tímto způsobem se tedy firmware na určitou dobu (závislou na počtu registrů a jejich výchozích hodnotách) zacyklí => tedy „čeká“.
(c) Martin Olejár, 2004 - www.elweb.cz
- Zápis na displej (podprogram „zobraz“) Pomocné registry všech 32 znaků se přes sériové 8-bitové rozhraní displeje postupně přenesou do RAM displeje a zobrazí se na něm.
(c) Martin Olejár, 2004 - www.elweb.cz
- Podprogramy jednotlivých nápisů („napis_…“) pouze uloží různé znaky (8-bitová čísla, kterými jsou tyto znaky označeny) do pomocných registrů a následně vyvolají výše zmíněný podprogram zápisu na displej. Podprogram napis_vysledek je o něco složitější, protože musí převádět čísla dvojkové soustavy na kódy znaků 0,1,2,…9.
(c) Martin Olejár, 2004 - www.elweb.cz
- Podprogram pro podržení dat - data hold („uloz_data“) napíše na displej
(c) Martin Olejár, 2004 - www.elweb.cz
KAPACITA BYLA
C = xx xxx xF
namísto standardního
KAPACITA
C = xx xxx xF
(c) Martin Olejár, 2004 - www.elweb.cz
(kde xx xxx je výsledek a xF je dílčí jednotka podle toho v jaké poloze je přepínač rozsahu), rozsvítí led diodu indikující podržení dat a čeká opět na stisk tlačítka DATA. Po stisku DATA se vrací příkazem RETURN zpět do hlavního programu.
(c) Martin Olejár, 2004 - www.elweb.cz
- Podprogram testu napájecího napětí („test_napeti“) uvede do chodu interní analogově-digitální převodník programově připojený k portu A,0 a testuje napájecí napětí celého přístroje. Pokud je výsledek a/d převodu menší než (10000000)b respektive napájecí napětí menší než 6V volá se podprogram, který napíše na displej
(c) Martin Olejár, 2004 - www.elweb.cz
PRILIS NIZKE
NAPETI !!!
dvakrát zablikají led diody signalizující „napájení z adaptéru“, „napájení z baterie“ a „zapnuto“ a přístroj se vypne (nuluje se port D,1). Pokud je výsledek a/d převodu mezi (10000000)b a (11000000)b (napájecí napětí mezi 6V a 9V) je přístroj zřejmě napájen z baterie a proto se vypne podsvícení displeje, které by jinak odebíralo proud 50mA. Při výsledku a/d převodu větším než (11000000)b (větším napájecím napětím než 9V) je přístroj zřejmě napájen z adaptéru, a proto nevadí vyšší proudový odběr a podsvícení displeje může být zapnuto. Typ napájení je rovněž indikován příslušnými led diodami.
(c) Martin Olejár, 2004 - www.elweb.cz
Po stisku tlačítka on proběhne automaticky reset, výše zmíněná inicializace, výstup D,1 se nastaví do logické jedničky (zapnutí přístroje, viz kapitola „Napájení“), chvíli program čeká než se uvede do provozu lcd displej (řádově milisekundy), potom volá střídavě podprogramy „napis_…“ a „cekani1“ které napíší na displej úvodní hlášení
(c) Martin Olejár, 2004 - www.elweb.cz
MERIC KAPACITY
M.OLEJAR, 2003
Potom
10pF ¸ 10 000mF
±1% v1.26
s informacemi o rozsahu, toleranci a verzi firmware, následně se zobrazí test displeje (na chvíli zčernají všechny body displeje) a pak už začíná vlastní měření.
(c) Martin Olejár, 2004 - www.elweb.cz
Nejprve mikrokontrolér čeká až bude logická nula na vstupu B,0 (na výstupu RC oscilátoru) (1), zároveň se spustí vestavěný časovač s přiřazenou předděličkou a pokud je půlperioda delší než cca 5s, tedy ani po cca pěti vteřinách čekání není na vstupu B,0 logická nula, zobrazí se chybové hlášení
(c) Martin Olejár, 2004 - www.elweb.cz
ZMENTE ROZSAH ->
C > 100 000 xF
(kde xF je aktuální jednotka podle polohy přepínače rozsahů) Nebo
(c) Martin Olejár, 2004 - www.elweb.cz
MERENA KAPACITA
JE PRILIS VYSOKA
Pokud však vše probíhá v pořádku – na vstupu B,0 je do 5s od začátku měření logická nula - tak mikrokontrolér přejde do fáze čekání na logickou jedničku (opět se spustí timer 1 a kontroluje jestli není perioda příliš dlouhá). Jakmile mikrokontrolér zjistí, že je na vstupu B,0 log. 1 začne čítat. Přičte jedničku k jednotkám a kontroluje jednotlivé řády, zda nedošlo k přetečení. Při přetečení řádu jednotek, vynuluje jednotky a přičte jedničku k desítkám a podobně i s řády stovek, tisíců a desítek tisíců. Čítání probíhá maximální možnou rychlostí. K testování přetečení a obsluze nulování, přičítání a zjišťování bezvýznamných nul (nuly ve vyšších řádech než je sám výsledek jsou bezvýznamné a proto nemá smysl je zobrazovat) je zapotřebí přibližně 50 instrukcí, takže výsledná frekvence čítání je:
(c) Martin Olejár, 2004 - www.elweb.cz
Čas potřebný k přičtení jedničky je:
(c) Martin Olejár, 2004 - www.elweb.cz
Maximální hodnota čítače je 100 000, takže jeho naplnění trvá:
(c) Martin Olejár, 2004 - www.elweb.cz
Zároveň se zahájením čítání je povoleno globální přerušení při sestupné hraně na vstupu B,0 (to je nadefinováno v inicializaci mikrokontroléru v úvodu programu). Jakmile tedy dojde k sestupné hraně na vstupu B,0 vyvolá se přerušení, v něm se nastaví příznak (jeden bit v proměnné pro to určené) a po návratu z přerušení se testuje v cyklu čítání, zda už je tento příznak v logické jedničce. V případě, že ano, ukončí se podprogram čítání a volají se postupně podprogramy pro zápis výsledku na displej. Nejprve se na displej vypíše výsledek podprogramem napis_vysledek a zobraz, pak podprogram zápisu jednotky zjistí v jaké poloze je přepínač rozsahu a příslušnou jednotku (p/n/m) zapíše na displej pomocí podprogramu zobraz. Jestliže je výsledek číselně menší než 10 na displej se napíše
(c) Martin Olejár, 2004 - www.elweb.cz
ZMENTE ROZSAH <-
C < 10 xF
(kde xF je aktuální jednotka podle polohy přepínače rozsahů) nebo, pokud je zároveň nejnižší rozsah a už nelze změnit na nižší
(c) Martin Olejár, 2004 - www.elweb.cz
MERENA KAPACITA
JE PRILIS MALA
Pokud je výsledek číselně větší než 100 000 (čítání se po přetečení přes 100 000 ukončí) napíše se
(c) Martin Olejár, 2004 - www.elweb.cz
ZMENTE ROZSAH ->
C > 100 0000 xF
(kde xF je aktuální jednotka podle polohy přepínače rozsahů) Nebo
(c) Martin Olejár, 2004 - www.elweb.cz
MERENA KAPACITA
JE PRILIS VYSOKA
Po zobrazení výsledku čeká mikrokontrolér přibližně 1s a pak vynuluje patřičné registry a začíná měřit znovu.
(c) Martin Olejár, 2004 - www.elweb.cz
Při zapnutí a při startu každého měření se volá podprogram testu napájecího napětí („test napeti“) a pokud je stisknuto tlačítko DATA tak i podprogram podržení dat – data hold („uloz_data“). Program neustále testuje, zda není stisknuto tlačítko vypni a pokud ano, tak nuluje port D,1 a vypne přístroj. Výjimkou je stav podržení dat, kdy přístroj nelze vypnout (nejprve se musí stisknout tlačítko DATA a až potom tlačítko VYPNI). Je to proto, aby uživatel nepřišel o „uložená data“.
(c) Martin Olejár, 2004 - www.elweb.cz
Poznámka: Firmware stále vylepšuji, a proto se mohou některé funkce nebo nápisy na displeji upgradem na vyšší verzi změnit.
(c) Martin Olejár, 2004 - www.elweb.cz
Napájení
(c) Martin Olejár, 2004 - www.elweb.cz
AKO s 555 je poměrně značně citlivý na změnu napájecího napětí. Při změně tohoto napětí o 0,5V se výstupní frekvence, perioda a z ní vyplývající výsledek měření změní skoro o deset procent, takže je potřebné zajistit dobrou stabilizaci, ale i kontrolu napětí na vývodu číslo 8 555-ky. Stabilizace je řešena low-drop třísvorkovým stabilizátorem napětí LM3926-5, vyhlazovacími kondenzátory a kondenzátory 100nF přímo u čipů. Ty drží stabilitu napětí při prudké změně proudového zatížení. Přístroj je možno napájet plochu 9V dobíjecí baterií nebo 12V adaptérem. Baterie je zabudovaná uvnitř přístroje a po připojení adaptéru je stále nabíjena nízkým proudem (číselně menším než desetina kapacity) baterie přes pevný rezistor. Při takto malém proudu se baterie typu NiCd nijak nepoškozuje i při stálém dobíjení. Zapínání i vypínání přístroje ovládá mikrokontrolér. Po stisku tlačítka ZAPNI se propojí kolektor a emitor spínacího tranzistoru => tím se přivede napájecí napětí na mikrokontrolér => spustí se v něm program a ten hned po několika úvodních příkazech nastaví příslušný výstup (PORT D,1) na logickou jedničku => rozsvítí se led dioda optočlenu => otevře se tranzistor optočlenu => na bázi spínacího tranzistoru bude skoro Ucc (napájecí napětí) => spínací tranzistor se otevře a bude otevřený i po puštění tlačítka ZAPNI. Po stisku tlačítka VYPNI se programově spínací tranzistor opět uzavře a přístroj se vypne. Mikrokontrolér neustále sleduje napájecí napětí před stabilizátorem a podle něj optimalizuje proudový odběr (rozpozná tedy způsob napájení adaptér/baterie). V případe poklesu tohoto napětí pod cca 6V se na displeji zobrazí varování
(c) Martin Olejár, 2004 - www.elweb.cz
PRILIS NIZKE
NAPETI !!!
a přístroj se vypne.
(c) Martin Olejár, 2004 - www.elweb.cz
Plošný spoj
(c) Martin Olejár, 2004 - www.elweb.cz
Dvojstranný plošný spoj byl ručně navržen a nakreslen v programu Eagle 4.03 a následně ho na podle předlohy z tohoto programu fotocestou zhotovila firma SPOJ (www.volny.cz/plspoj) z materiálu UMATEXT 222 (FR4). Klišé obou stran plošného spoje jsou v příloze.
(c) Martin Olejár, 2004 - www.elweb.cz
Konstrukční řešení
(c) Martin Olejár, 2004 - www.elweb.cz
Většina součástek je osazena pájením pájecí stanicí Diametral při 280 °C z horní strany plošného dvojstranného spoje. Tlačítka, led a svorky pro měřený kondenzátor jsou na prodloužených vývodech, aby dosahovaly k čelnímu panelu. Lcd je vestavěný napevno do horního panelu. V plošném spoji i na plošném spoji lcd jsou 16-ti pinové konektory, které se po vložení plošného spoje do horního krytu krabičky propojí. Baterie a konektor pro adaptér jsou upevněny v boční straně přístrojové krabičky a s plošným spojem propojeny dráty. Celý přístroj je navržen tak, aby se přesně vešel do běžně prodávané plastové přístrojové krabičky.
(c) Martin Olejár, 2004 - www.elweb.cz
Výsledky
(c) Martin Olejár, 2004 - www.elweb.cz
Parametry přístroje a výsledky měření
(c) Martin Olejár, 2004 - www.elweb.cz
Zatím byl proveden test pouze s několika desítkami přesných kondenzátorů s různou kapacitou v celém rozsahu devíti řádů (od 10pF do 10mF), který měřící přístroj podporuje a ani v jednom případě se výsledek na lcd s údajem na kondenzátoru nelišil o více než 1% z hodnoty.
(c) Martin Olejár, 2004 - www.elweb.cz
Další testy budou provedeny později.
(c) Martin Olejár, 2004 - www.elweb.cz
Ovládání uživatelem
(c) Martin Olejár, 2004 - www.elweb.cz
Měření a volba rozsahu
(c) Martin Olejár, 2004 - www.elweb.cz
Přístroj se zapne tlačítkem ZAPNI. Po úvodním hlášení na displeji s informacemi o rozsahu, toleranci a verzi firmware se spustí první měření. Po dobu prvního měření jsou všechny body displeje černé (test displeje). Po naměření první hodnoty je přístroj již připraven na normální provoz. Přepínačem rozsahů se nastaví předpokládaný rozsah, ve kterém by se mohla pohybovat kapacita měřeného kondenzátoru. Na výběr jsou tři rozsahy: 10pF až 100 000 pF (označený jako „p“); 10nF až 100 000 nF (označený jako „n“) a 10m až 10 000mF (označený jako „m“). Při chybné volbě rozsahu proběhne měření trvající buď zlomek vteřiny nebo maximální čas (5s). Po ukončení měření je na displeji zobrazeno upozornění:
(c) Martin Olejár, 2004 - www.elweb.cz
ZMENTE ROZSAH <-
C < 10 xF
Nebo
(c) Martin Olejár, 2004 - www.elweb.cz
ZMENTE ROZSAH ->
C > 100 0000 xF
Podle toho, zda je třeba rozsah snížit (1.případ) nebo zvýšit (2.případ)
(c) Martin Olejár, 2004 - www.elweb.cz
V průběhu měření (svítí led indikující měření) může být na displeji chybný údaj, respektive naposledy naměřená hodnota. Při volbě nižšího rozsahu než je vhodný trvá měření vždy zmíněných 5s a až po této době je zobrazeno jedno z výše uvedených upozornění.
(c) Martin Olejár, 2004 - www.elweb.cz
Uložení naposledy naměřené hodnoty na displej
(c) Martin Olejár, 2004 - www.elweb.cz
Tato funkce se u komerčních přístrojů většinou nazývá jako „data hold“. Aktivovat lze podržením tlačítka DATA v průběhu měření. Po ukončení měření se na displeji zobrazí poslední naměřená hodnota:
(c) Martin Olejár, 2004 - www.elweb.cz
KAPACITA BYLA
C = xxx xxx xF
Funkce se pak zruší opětovným stiskem tlačítka DATA. Při aktivované funkci „data“ nelze přístroj vypnout, aby nedošlo ke ztrátě dat.
(c) Martin Olejár, 2004 - www.elweb.cz
Signalizační led
(c) Martin Olejár, 2004 - www.elweb.cz
Nad displejem se nachází 5 signalizačních LED, které v řadě zleva signalizují následující stavy:
(c) Martin Olejár, 2004 - www.elweb.cz
1) přístroj je zapnut a je napájen z vestavěné 9V baterie.
2) přístroj je zapnut a je napájen z 12V adaptéru, 9V baterie se dobíjí
3) probíhá měření
4) je aktivovaná funkce DATA
5) došlo k některé z následujících chyb:
o je chybně zvolený rozsah
o měřená kapacita je příliš vysoká/nízká
o napájecí napětí je příliš nízké
o zacyklení firmware
(c) Martin Olejár, 2004 - www.elweb.cz
Napájení
(c) Martin Olejár, 2004 - www.elweb.cz
Přístroj může být napájen 12V adaptérem nebo vestavěnou NiCd 9V dobíjitelnou baterií. Baterie se z přístroje nevyjímá, dobíjí se automaticky vždy při připojení adaptéru, i když je přístroj vypnutý. Měřící přístroj rozpozná typ napájení a podle toho optimalizuje spotřebu proudu vypnutím/zapnutím podsvícení lcd a vypnutím/zapnutím funkce automatického vypnutí (auto power off).
(c) Martin Olejár, 2004 - www.elweb.cz
Chybová hlášení
(c) Martin Olejár, 2004 - www.elweb.cz
Všechny výše vyjmenované chyby se zobrazí na lcd a jsou snadno odstranitelné změnou rozsahu, připojením síťového adaptéru a podobně. Vyjímkou je zacyklení firmware. V takovém případě se ani led chybového hlášení nemusí rozsvítit. Přístroj má však ve svém firmware naprogramovanou funkci časovače hlídacího psa (watch dog timer), která při jakémkoli selhání firmware provede do 2s automatický restart. V průběhu testování přístroje k zacyklení firmware však ani jednou nedošlo, přesto to však nelze vyloučit.
(c) Martin Olejár, 2004 - www.elweb.cz
Kalibrace
(c) Martin Olejár, 2004 - www.elweb.cz
Kalibrace se provádí pro jednotlivé rozsahy zvlášť třemi trimry na plošném spoji po otevření přístrojové krabice. Kalibraci stačí provést pouze jednou. Další dva trimry na plošném spoji slouží pro nastavení kontrastu lcd a hranice napájecího napětí při určování jak je přístroj napájen (baterií/adaptérem) a hranice nedostatečného napájecího napětí.
(c) Martin Olejár, 2004 - www.elweb.cz
Problémy, které se vyskytly při vývoji
(c) Martin Olejár, 2004 - www.elweb.cz
Problém 1: Rozkmitání oscilátoru bez kondenzátoru C. Když se nezapojí žádný kondenzátor na měřící svorky, tak se oscilátor rozkmitá na frekvenci přibližně 300kHz. V původních verzích firmware se neukončovalo měření pomocí přerušení vyvolaného sestupnou hranou na portu B,0, ale každých padesát cyklů (s frekvencí 20kHz) se kontrolovalo, zda už je B,0 v logické nule. Protože frekvence kontroly stavu B,0 byla menší než frekvence změn na B,0, měření nebylo nesprávně ukončováno a tím pádem byl výsledek i s prakticky nulovou kapacitou nenulový a na všech rozsazích. Při rozkmitání 555-ky se zároveň o trochu zvýšil její proudový odběr.
(c) Martin Olejár, 2004 - www.elweb.cz
Řešení: Ukončení měření za pomoci přerušení při spádové hraně je spolehlivé, protože přerušení není generováno přímo firmware, ale hardwarově, takže reaguje prakticky okamžitě. Problém zvýšeného odběru proudu při rozkmitání oscilátoru se mi zatím vyřešit nepodařilo, ale nepovažuji ho za zásadní – jedná se o desetiny mA.
(c) Martin Olejár, 2004 - www.elweb.cz
Problém 2: Příliš vysoký proud při nabíjení větších kapacit. Například při měření kapacity 10mF by se na displeji měla zobrazit (při nejvyšším rozsahu) hodnota 10 000 mF. Naplnění čítače, tedy čítání až do číselné hodnoty 100 000 trvá 5s. Z toho vyplývá, že by se kondenzátor 10mF musel nabít z jedné třetiny Ucc na dvě třetiny Ucc během 0,5s. Nabíjecí proud by byl:
(c) Martin Olejár, 2004 - www.elweb.cz
Takový proud by byl pro 9V baterii příliš vysoký a ani časovač 555 by nemusel být schopen tento proud zajistit.
(c) Martin Olejár, 2004 - www.elweb.cz
Řešení: V tomto rozsahu pracuje měřící přístroj s desetinásobnými časy. Maximální možnou měřenou kapacitu 10mF tedy neměří 0,5s, ale 5s. V RC oscilátoru pro tento rozsah je tedy hodnota rezistoru desetinásobná. S tím se pak počítá v firmware mikrokontroléru, který po naměření hodnoty při tomto rozsahu posune postupně jednotlivé číslice o jeden řád níž.
(c) Martin Olejár, 2004 - www.elweb.cz
Problém 3: Příliš vysoké hodnoty odporů oscilátoru pro měření malých kapacit. Při měření například 100 000 pF na nejnižším rozsahu, by perioda RC oscilátoru musela být opět 5s. Pokud by byla kapacita C = 100nF a čas byl t = 5s, odpor R by musel být v řádech MW. Rezistor s takto vysokým odporem by byl velmi nevhodný, protože jeho odpor by pak mohla ovlivňovat i vlhkost vzduchu.
(c) Martin Olejár, 2004 - www.elweb.cz
Řešení: Řešení tohoto problému je obdobné jako u předchozího. Odpor rezistoru R je desetinový než by měl být. Z toho vyplývá, že se naměří desetinová hodnota. V jednom cyklu měření (až do dalšího zobrazení a následného nulování výsledku) se měřící cyklus desetkrát opakuje a tím se kompenzuje desetinový měřící čas.
(c) Martin Olejár, 2004 - www.elweb.cz
Problém 4: Kapacita přívodních vodičů se pohybovala v desítkách pF, takže v nejnižším rozsahu zdaleka nebyla zanedbatelná.
(c) Martin Olejár, 2004 - www.elweb.cz
Řešení: Při zvolení nejnižšího rozsahu je od výsledku programově odečtena číselná hodnota 36. Tedy kapacita přívodních vodičů od 555ky k výstupním svorkám v pF. V nových verzích firmware bude nejspíš doděláno nastavení nuly při použití delších přívodních kablíků.
(c) Martin Olejár, 2004 - www.elweb.cz
Porovnání s komerčními měřícími přístroji
(c) Martin Olejár, 2004 - www.elweb.cz
Běžně prodávané a komerčně vyráběné měřící přístroje kapacity jsou většinou založeny na zcela jiném principu měření a dovolují měřit v jiných rozsazích. Většinou od jednotek pF do jednotek mF, takže se s nimi nedají měřit příliš vysoké kapacity, jaké jsou například ve vyhlazovacích filtrech napájecího napětí, v zálohovacích obvodech RAM pamětí nebo celých zařízení a pod. Na rozdíl od nich zde popsaný měřící přístroj měří v rozsahu devíti řádů. A po menších úpravách by mohl se stejným schématem pracovat i v daleko širším rozsahu, ale pro účely, pro které jsem ho navrhoval, mi to přišlo zbytečné. Při měření kapacit v řádech desítek a jednotek pF hrají podstatnou roli přívodní vodiče a klišé plošného spoje. Naopak měření velkých kapacit vyžaduje značný nabíjecí a vybíjecí proud, takže by nebylo příliš vhodné napájení přístroje z baterie.
(c) Martin Olejár, 2004 - www.elweb.cz
Náklady
(c) Martin Olejár, 2004 - www.elweb.cz
Veškeré náklady spojené s výrobou tohoto měřícího přístroje (plošný spoj, konstrukční prvky, součástky…) činily 1120 Kč. Tato cena se však nedá srovnávat s komerčními měřáky, protože při sériové výrobě by byly náklady po zohlednění množstevních slev přibližně třetinové.
(c) Martin Olejár, 2004 - www.elweb.cz
Použitá literatura
(c) Martin Olejár, 2004 - www.elweb.cz
V celé práci není citována žádná literatura. Při návrhu a stavbě přístroje jsem použil pouze následující katalogové listy:
(c) Martin Olejár, 2004 - www.elweb.cz
Microchip Technology Inc. 2002
PIC16F7X Data Sheet
http://www.microchip.com
(c) Martin Olejár, 2004 - www.elweb.cz
National Semiconductor 2000
LM555 Timer Data Sheet
http://www.national.com
(c) Martin Olejár, 2004 - www.elweb.cz
GES electronic
Internetový katalog
http://www.ges.cz
(c) Martin Olejár, 2004 - www.elweb.cz
(c) Martin Olejár, 2004 - www.elweb.cz
(c) Martin Olejár, 2004 - www.elweb.cz
(c) Martin Olejár, 2004 - www.elweb.cz
Poznámka: Tuto práci jsem vytvořil za účelem použití v soutěži
SOČ a ve čtvrtém ročníku ji zřejmě předložím i jako dlouhodobou maturitní práci.
obrázek/schéma ve formátu gifobrázek/schéma ve formátu gifobrázek/schéma ve formátu gifplošný spoj ve formátu gif (spodní strana)plošný spoj ve formátu gif (strana součástek) nebo drátěnné propojkyrozložení součástek na plošném spoji ve formátu gifprogram pro mikrokontrolér ve formátu hex (stažení: pravé tlačítko > uložit cíl jako)
V některých prodejnách s elektro součástkami vám podle tohoto souboru doneseného na disketě mikrokontrolér naprogramují (např. GM el.
www.gme.cz)
program pro mikrokontrolér ve formátu asm (stažení: pravé tlačítko > uložit cíl jako)
Asm je formát, ve kterém lze program upravovat. Před naprogramováním do mikrokontroléru se musí převést pomocí
assembleru do formátu hex