Náhled na konstrukci - ke zvětšení obrázku klikněte na náhled   Tato stránka popisuje konstrukci velmi jednoduchého přenosného elektronického teploměru, se zobrazováním naměřené teploty na sedmisegmentovém LED displeji. Naměřená data lze z teploměru mimo zobrazení na displeji získat také přes sériovou linku RS232 (po dostavbě převodníku). Napájení zajišťuje destičková baterie 9V, teploměr se ovládá jedním tlačítkem.



  Napájení 9V baterie
  Rozsah měřených teplot -45°C až 130°C (teoreticky, dáno použitým čidlem)
  Použité čidlo Smartec SMT 160-30
  Doba zobrazování po stisku tlačítka - cca 10 sekund


Popis zapojení
     Teploměr je řízen jednočipovým mikroprocesorem typu 89C2051. Procesor zajišťuje převod signálu z čidla na stupně Celsia a jejich zobrazení na displeji a případně odeslání dat sériovou linkou nadřízenému systému. Pro pochopení činnosti je nejprve třeba osvětlit činnost čidla Smartec SMT 160-30. Toto čidlo lze s výhodou použít u různých systémů pro snímání teploty. Čidlo má různé pouzdření, je napájené 5V, a výstup tohoto čidla je šířkově modulovaný výstupní signál, což umožňuje přímé připojení senzoru k mikroprocesoru a jednoduché vyhodnocení teploty bez potřeby použití A/D převodníku. K jednomu mikroprocesoru lze multiplexováním připojit i několik těchto čidel. Použitím velmi jednoduchého algoritmu vyhodnocování signálu je možno získat přímo absolutní hodnotu měřené teploty. Hlavní úsporou času pro vývojáře je skutečnost, že senzor nevyžaduje žádnou kalibraci, neboť je kalibrován přímo na čipu během výroby. Navíc je díky použitému výstupu (třídrátové připojení) možnost přenosu informace na vzdálenost až dvaceti metrů.
Čip je dostupný v různém pouzdření, ve svojí konstrukci jsem použil pouzdro TO92, mimo jiné jsou k dispozici také pouzdra TO18, TO220, případně SMD pouzdro SO8L.
     Naměřené hodnoty jsou zobrazovány na čtyřmístném LED displeji, řízeném multiplexně.

Popis konstrukce
     Teploměr je osazen na jednostranné desce plošných spojů, která je umístěna v klasické bílé instalační krabičce s víčkem. Protože je deska u dna krabičky a sedmisegmentovky by hluboko pod víčkem nevypadaly hezky, jsou pro ně použity patice, kterými je vymezena vzdálenost zobrazovačů od desky. Tím dosáhneme umístění horní strany těsně pod sklíčko víčka. Taktéž tlačítko je nutné naletovat na čtyři krátké měděné vodiče (průměr cca 1mm) a tím jej umístit výše. Stabilizátor z 9V na 5V (LF 50CDT) je umístěn ze strany spojů. Baterie je umístěna ze strany součástek.

Náhled na schéma - ke zvětšení obrázku klikněte na náhled
Náhled na schéma zapojení

     Vlastní zapojení je v podstatě klasické zapojení procesoru s multiplexně řízeným displejem. Výstup signálu z čidla je přiveden na vstup externího přerušení procesoru. Za bližší zmínku snad stojí konstrukce "zdroje" - tedy napájecí části, kdy jsem potřeboval co nejnižší spotřebu ve vypnutém stavu a pokud možno nastavení intervalu, kdy je teploměr zapnut (po stisknutí tlačítka) externě, bez nutnosti zásahu do programu. Detailní popis funkce tohoto zapojení zdroje naleznete na jiné stránce tohoto webu. Pro připojení teploměru k PC musíme použít převodník úrovní, který (alespoň prozatím, protože jsem to nepotřeboval) není na desce implementován. Ale je možné jej vestavět do krytky konektoru CANNON (naleznete na jiné stránce mého webu).

Náhled na plošný spoj Náhled na osazení
Náhled na plošný spoj Náhled na osazení


Programové vybavení
      Program pro svoji činnost využívá dvou časovačů. První časovač (časovač 0) pracuje v módu 1, střídavě měří dobu setrvání čidla teploměru v log.1 (je spouštěn externím signálem - čítá pouze na dobu, kdy je na jeho vstupu hodnota log.1) a periodu signálu.
      Druhý časovač v módu 2 generuje přenosovou rychlost pro sériovou linku.

      Po spuštění programu se nejprve provede nastavení všech proměnných v paměti RAM, nastavení módů čítačů a spuštění přerušení. Přerušení od vnějšího vstupu INT0 je spuštěno každou sestupnou hranou signálu z čidla. Součástí programu obsluhy přerušení jsou veškerá měření a zajištění zobrazování (multiplex displeje).
      V první fázi program měří dobu ve které je signál z čidla v log.1 (měří šířku impulzu). Protože je kmitočet čidla dosti vysoký, je nutné měřit větší množství period signálu pro potřebnou přesnost měření.
      Následně se měří perioda signálu. Čítač T0 je přemódován a běží trvale po dobu několika period čidla. Tyto dvě funkce se neustále střídají. Při každém přerušení je též ošetřeno zobrazení na displeji - provádí se rozsvícení další cifry u multiplexu, dekódování hodnoty pro zobrazení a podobně. Po ukončení jednoho měřícího cyklu je bitem namereno signalizováno hlavnímu programu, že jsou k dispozici nové naměřené hodnoty. Při vhodném volbě počtu měření, je změřená hodnota periody přímo hodnotou pro 0,1°C. Nyní již stačí provést vydělení a výsledkem je absolutní hodnota teploty čidla. Pro dělení je použita metoda postupného odečítání (je jednoduchá a na výpočet je k dispozici dostatečně dlouhá doba). Od výsledku odečteme posun nuly, čímž získáme přímo teplotu ve stupních. Výsledek pro záporné teploty je nutno ještě převést na kladné číslo, pak následuje zobrazení znaménka. Binární hodnotu teploty již známe, stačí ji jen převést na dekadickou. Výsledkem převodu jsou již hodnoty pro jednotlivé dekády: stovky, desitky, jednotky a desetiny. Další část v programu je vysílání naměřených hodnot po sériové lince.
      Parametry čítače 1 sérivé linky jsou nastaveny po resetu programu. Nastavené parametry jsou 19200 b/s , 8 datových bitů bez parity, 1 stop bit. Jako první se vysílá znaménko, dále jednotlivá čísla. Požadovaná hodnota je vždy nejprve upravena na hodnotu ASCII a vyslána. Pátým znakem je kód 13 ( CR ).
      Po odvysílání všech hodnot program pokračuje zpět na test bitu namereno a čeká na další změřenou hodnotu. Celá smyčka se takto opakuje stále dokola. V případě, že není po resetu čidlo připojeno ( nebo je vadné ) zobrazí se na displeji znak "-".

      Převod signálu (střídy) na hodnotu lze docílit několika způsoby. Zvolil jsem způsob, který procesor příliš nezatěžuje, není nejpřesnější, ale v tomto případě dostačuje.
      Pokud budeme měřit střídu běžným způsobem, je potřeba implementovat do procesoru rutiny pro výpočty dělení a násobení, nehledě na to, že měření střídy musí být provedeno s dostatečně velkou přesností, což je závislé na rychlosti procesoru a může to být někdy limitující. Níže uvedený způsob měření je jednodušší variantou - co do délky i složitosti kódu - a lze jej bez větších problémů upravit pro libovolný mikroprocesor.
      Jestliže vzorkujeme vstupní signál v pravidelných intervalech po dostatečně dlouhou dobu, pak počet stavů, kdy je vstup v log. 1, bude přímo úměrný teplotě t. Pokud vhodně zvolíme počet vzorků, bude převod výsledku na teplotu poměrně jednoduchou záležitostí. Protože je kmitočet čidla dosti vysoký, je nutno měřit dostatečné množství period signálu pro potřebnou přesnost měření. Výsledná hodnota je uložena ve třech bajtech s označením zmerenol, zmerenom a zmerenoh.

Příklad:
     Střídě DC = 0 odpovídá teplota t = 0.32 / -0.0047 tj. -68.09°C, a protože výsledné číslo je přímo úměrné střídě, pak vím, že při obsahu bytů zmerenol, zmerenom a zmerenoh 0 odpovídá teplota -68,09°C.
      Teplotě 0°C pak odpovídá 0°C = -68,1°C + 68,1°C čili binární hodnotě (zmerenol, zmerenom a zmerenoh) 0°C odpovídá číslo 138 (68 + 68 bez znaménka). Tímto postupem víme, že hodnoty pod 138 jsou záporné, nad 138 jsou kladné.
      Pro celý rozsah, pokud by střída dosáhla 1 (čidlo samozřejmě v tomto rozsahu nepracuje) je teplota 144,68°C (1=0,32+0,0047*t). Těmito výpočty tedy víme, že úplný teoretický rozsah teplot pro střídu od 0 do 1 je 212,78°C.
      Při měření výsledku s přesností na 0.1°C, musíme tento výsledek vynásobit 10, tedy výsledný rozsah bude 2127. Když tedy bude doba vzorkování 2127, pak doba, po kterou byl signál v log. H odpovídá teplotě v desetinách °C.

Kalibrační konstanty
Počet desetin stupňů pro celý rozsah:
n = 10* (1/ 0,0047 )
n = 2127
Posun 0 stupňů v desetinách :
p = 10* (0,320/0,0047)
p = 681

Chyby měření:
     První chyba měření, ke které dochází, je dána faktem, že nikdy neměříme přesně celé pulsy, ale na začátku či na konci měření teoreticky může být až maximálně polovinu jednoho pulzu navíc. Tato chyba se dá eliminovat délkou měření, pro nejnižší možnou frekvenci převodníku 1kHz - pokud bude doba měření trvat cca 100msec - bude maximální hodnota chyby okolo 1%. Čím delší doba měření, nebo vyšší frekvence převodníku, tím bude chyba nižší. Další chybou je chyba daná rychlostí vzorkování. Kupříkladu s mikroprocesorem PIC na hodinovém kmitočtu 4MHz je vzorkovací perioda 8-9usec. Při této hodnotě a frekvenci 4KHz převodníku může chyba narůst v extrémním případě až na 8.5°C. Samozřejmě pouze ve velmi nepravděpodobné situaci - pokud by došlo k přesné synchronizaci obou frekvencí na tomto kmitočtu, nebo na některé harmonické. Tato situace je poměrně nepravděpodobná, ale je nutné s tím počítat. Chyba se sníží při rostoucí frekvenci vzorkování. Další možností by bylo, vzorkovat vícekrát po sobě s časovým posunem a nebo do vzorkování úmyslně vložit chybu. Kupříkladu, pokud každý 256tý vzorek bude o 1usec zpožděný, tato chyba se zmenší, přičemž chyba vnesená touto nepřesností měření není nikterak veliká.

Vnitřní uspořádání konstrukce - pozor, na této fotografii ještě není implementován zdroj (spínání)

Rozpiska součástek

 C1,C2 18pF keramika
 C3 4u7 elektrolytický (nejlépe tantal)
 C4 220uF/6,3V elektrolytický
 C5 100nF keramický
 C6 6u8 elektrolytický (nejlépe tantal)
 DIS1, DIS2 sedmisegmentovka HDSP 5521
 IC1 naprogramovaný AT89C2051 (prefix DH servis - čip DHS010)
 IC2 stabilizátor LF50CTD (GM electronic)
 IC3 teplotní čidlo SMT 160-30 / TO-92C (GM electronic)
 Q1 krystal 11,0592 MHz / HC49U-V
 R1 až R7 rezistor miniaturní 22R
 R8 rezistor miniaturní 68R
 R9 až R12 rezistor miniaturní 1k
 R13 rezistor miniaturní 27R
 R14 rezistor miniaturní 1M8
 T1 až T4 tranzistor BC557C
 T5,T6 tranzistor IRFD 120
 TL1 tlačítko DT6

patice DIL 20 precizní
krabička instalační bílá na omítku

Pokud nemáte možnost si čip naprogramovat, můžete si jej objednat na mojí e-mailové adrese, kde je možnost objednat si i plošný spoj.


Ke stažení jsou tyto soubory:

Velikost 51 kByte Plošné spoje a schémata ve formátu EAGLE 4.01
 
Velikost 182 kByte Plošné spoje, schémata a osazení ve formátu *.bmp, rozlišení 300dpi + štítek na krabičku
 
Velikost 4 kByte  Program teploměru (vložený zdrojový kód)

Vytisknout stránku

Zpátky Zpátky
© DH servis 2002 -