Měření teploty na AmizeKarel Ondráček
Chtěli jste někdy, aby vaše přítelkyně měřila teplotu např. ve vašem pokoji?
Tento článek vám snad k tomu pomůže. Trocha teorie úvodem
Abychom mohli měřit teplotu počítačem, potřebujeme teplotní čidlo. Při
výběru teplotního čidla máme mnoho možností (odporové snímače kovové nebo
polovodičové, termočlánky, integrované teplotní snímače). Pro naši potřebu bude
nejvhodnější integrovaný teplotní snímač. Integrovaný teplotní snímač má na
společném substrátu umístěno jak vlastní čidlo snímače teploty, tak i podpůrné
elektronické obvody (linearizaci, napájení zesilovače, převodníky atd.).
Vstupní část integrovaného snímače zajišťuje převod teploty na elektronickou
veličinu. Pro snímání mohou být použity klasická analogová čidla a jejich
výstupní analogový signál může být linearizován, filtrován nebo zesílen. Hlavním
prvkem vnitřní části integrovaného snímače bývá většinou jednočipový
mikropočítač. Ten provádí ovládání A/D převodníku, číslicovou linearizaci,
modifikaci výstupního signálu. Výstupní části integrovaného snímače zajišťují
komunikaci mezi integrovaným snímačem a okolím a případný převod číslicového
signálu na normalizovaný analogový výstupní signál. Integrovaných teplotních
snímačů lze nalézt obrovský sortiment v různých cenových relacích a s různou
přesností.
Z velkého sortimentu integrovaných teplotních snímačů jsem vybral teplotní
cenzor SMT 160-30 firmy Smartec pro jeho příznivé vlastnosti. Jeho výstupem je
TTL kompatibilní signál, který je šířkově modulovaný. To nám umožňuje přímé
připojení teplotního cenzoru k portům počítače. Použitím jednoduchého algoritmu
vyhodnocování signálu je možno získat absolutní hodnotu měřené teploty. Senzor
nevyžaduje žádnou kalibraci, neboť se kalibruje přímo na čipu během výroby.
Rovněž třídrátové připojení téměř libovolným vodičem na vzdálenost do dvaceti
metrů neklade žádné konstrukční omezení pro naši aplikaci. Teplotní senzor SMT
160-30 má široký teplotní rozsah od -45 °C do +130 °C. Jeho absolutní přesnost
je +/- 0,7 °C, nelinearita maximálně 0,2 °C. Napájí se stejnosměrným napětím 5V
a má spotřebu menší než 1mW. Pro tento cenzor mluví i jeho nízká cena. Senior se
dodává v pouzdrech TO-18, TO-92 a TO-220. Senzory v pouzdrech TO-92 a TO-220
nemají tak velkou přesnost jako cenzor v pouzdru TO-18. Proto doporučuji cenzor
v provedení TO-18.
Šířka modulace výstupního signálu je lineárně závislá na teplotě podle vztahu:
DC = 0,320 + 0,0047 * t,
kde t je teplota ve °C, DC („duty cycle“) je činitel poměru plnění úrovně
logické 1 k délce periody výstupního signálu. Pro názornost je na obr. 1
vyobrazen TTL výstupní signál teplotního senzoru, kde T1 značí šířku pulsu a T2
délku periody. Z takového výstupního signálu vypočítáme absolutní teplotu podle
vztahu:
r = K1 * (T1/T2) + K2,
kde K1 = 1/0,0047, K2 = 0,320/0,0047 a T1/T2 odpovídá činiteli poměru plnění DC. Stavba pomocného hardware
Nyní máme teorii za sebou a můžeme přikročit k vlastní realizaci
elektronického teploměru. Budeme potřebovat cenzor SMT 160-30 v provedení TO-18,
3-pinovou patici na cenzor, konektor Canon DB25M (samec), krytku na konektor
Canon a libovolný 3-žilový drát. Na obr. 2 je vyobrazeno zapojení pouzdra
teplotního cenzoru SMT 160-30 při pohledu zespodu. Na obr. 3 je nakresleno
připojení teplotního cenzoru k paralelnímu portu počítače. Výrobce cenzoru
udává, že napájení teplotního cenzoru může být blokováno keramickým
kondenzátorem 10nF, ale není to nezbytné. Napájení cenzoru propojíme přes
3-pinovou patici s napájením +5V a GND paralelního portu a výstup cenzoru
připojíme k signálu D0 (nebo D1 až D7). Teď můžeme senior zasunout do patice a
konektor do paralelního portu vypnutého počítače. A co software?
A teď zbývá to nejhorší, napsat program pro snímání teploty z čidla. Ne,
neděste se. To za nás již někdo (Hans Forssell) udělal. Já jsem třeba nalezl v
síti Aminet programový balík AmigaTemp v adresáři hard/misc/AmigaTemp.lha. Tento
program mimochodem najdete i na CD Aminet 19. Program AmigaTemp je freeware a ve
verzi 1.42 vyžaduje MUI. Možná, že starší verze tohoto programu MUI nevyžadují.
V tomto programu lze nastavovat další spoustu parametrů, o kterých se dočtete v
dokumentaci v tradičním formátu guide. Programový balík obsahuje množství
prográmků s různým typem zobrazení teploty a určitě si některý vyberete. Program
umí monitorovat teplotu i z více cenzorů najednou. Není tedy problém sledovat
např. pokojovou a venkovní teplotu najednou. AmigaTemp lze ovládat i pomocí
jazyka ARexx. Ten využijí asi jen zkušenější Amigisté např. pro různé druhy
regulace teploty. Nastavení a kalibrace
Program musíme assignovat. Po instalaci programu spustíme AmigaTemp, který
nám ohlásí, že nenalezl konfigurační soubor pro senzor. Ten vytvoříme, když
spustíme AT_Control_MUI, kde si navolíme některé parametry. Nastavíme připojení
cenzoru k paralelnímu portu signálu D0 (pin #2), typ výstupního signálu senzoru
„duty cycle“, nastavíme hodnotu vzorkování „samples“ dle vaší rychlosti CPU.
Autor uvádí, že pro hodnotu 1000 se na CPU 68030/28 Mhz čtou výsledky 0,1 s. Pro
pomalejší CPU hodnotu snižte. Pro lepší informaci si spusťte položku „Open/Close
senzor info“.
Nyní musíme program skalibrovat. Z dříve uvedeného vztahu vypočítáme 2 hodnoty
DC pro různé teploty. Např. pro t = 0°C odpovídá DC = 0,320 a pro t = 130°C je
DC = 0,931. Ty zadáme do programu a na gadgetu nastavíme „1-deg Lin“. Tlačítkem
„Calc“ program skalibrujeme. Pokud jsme vše udělali správně, program by měl
ukazovat reálnou hodnotu teploty. Závěrem
Teploměr funguje spolehlivě a jeho stavbu zvládne i méně zkušený amigista.
Připájet tři dráty snad po menším tréninku svede každý. Sice není obvyklé měřit
třeba pokojovou teplotu počítačem a natož Amigou, ale proč to nezkusit. Na
setkání u dalších článků o hardware se těší Vytlačiť článok
Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.
Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing
none
|