Tento článok si kladie za cieľ oboznámenie čitateľov a výskumníkov s perifériou k PC typu "dobré a užitočné zariadenie" (podľa mojich skúseností s potrebou snímania teploty pri vývoji zariadení alebo v domácnosti).
Popísané zariadenie umožňuje meranie teploty na 4-och miestach pomocou počítača. Pripája sa ku Game portu PC (ktorý je väčšinou nevyužitý) a senzory môžu byť od počítača vzdialené až 10 metrov. Absolútna presnosť merania teploty je lepšia než 1°C v teplotnom rozsahu -30÷100°C (dané použitými senzorami). Rozlíšenie je však (z praktických skúseností) 0.01°C (šum merania). Každý senzor sa pripája 3-vodičovým tenkým káblikom a keďže je prenos informácie digitálny, tak jeho parametre nevplývajú na presnosť merania. Obslužný program na PC zobrazuje teploty senzorov, môže ich chronologicky zaznamenávať do súboru a umožňuje aj kalibráciu jednotlivých senzorov.
Zariadenie využíva senzory
typu SMT160-30. Sú to integrované obvody na meranie teploty. K
svojej činnosti potrebujú iba napájacie napätie +5V. Ich výstupom je
digitálny signál o frekvencii cca 3kHz (1÷4kHz), ktorého strieda je priamo
úmerná teplote. Ich výhodou je: iba 3-vodičové pripojenie, digitálny
výstup, veľká dĺžka pripojenia (podľa výrobcu až 20m). Na
zrealizovanie teplomera potrebujeme iba senzory teploty, prívodné vodiče,
konektor CANNON15 (samec s krytom), príp. ochranné poistky. Samotná schéma
zapojenia je na nasledujúcom obrázku. Vidíme, že teplomer je veľmi
jednoduchý. Výhodou pripojenia na Game port počítača je prítomnosť
napájacieho napätia +5V, čím vylúčime potrebu externého
napájania. Poistky chránia toto napájanie pred prípadným skratom a sú
umiestnené priamo v kryte konektora CANNON15 (aby sme si náhodou nepokazili
zvukovú kartu!).
Schéma 4-kanálového teplomera:

a jeho fyzické prevedenie:


Senzory teploty SMT160-30 dávajú na výstup signál, ktorého strieda je priamo úmerná teplote. Tento signál je privedený na vstupné piny Game portu, ktoré slúžia ako vstupy pre tlačítka joysticku. Obslužný program sníma tento signál (jeho striedu) a vyhodnotí ho ako teplotu senzora podľa kalibračných konštánt (linearita a offset). Keďže výstupná frekvencia zo senzorov je relatívne veľká, sú kladené vyššie nároky na matematické výpočty a rýchlosť snímania, čo rieši softvér.
Softvérové vybavenie je vlastne srdcom celého teplomera. Základná obrazovka zobrazuje teplotu jednotlivých senzorov a umožňuje nastavenie meracích parametrov. Zaškrtnutím políčok si môžeme zvoliť, ktoré teploty senzorov budeme merať. Môžeme si zvoliť interval medzi dvomi meraniami, integračný čas jedného merania a koľko posledných hodnôt sa bude priemerovať (kĺzavý priemer). Zvýšením integračného času zvyšujeme presnosť merania. Zvýšením počtu priemerovaných teplôt opäť zvyšujeme presnosť merania, ale súčasne aj zavádzame dolnopriepustný filter na meranú teplotu (potlačíme prudké zmeny teploty). Ak senzor teploty nie je prítomný, program to automaticky zistí.
Je možné aj zmeniť
pomenovanie jednotlivých senzorov (napr. aby sme mali predstavu o
mieste merania). Mená senzorov si môžeme zvoliť nasledujúcim postupom:
Presunieme sa myšou alebo klávesnicou (tabulátorom alebo šípkami) na
zvolený senzor tak, aby bol okolo neho tenký rámik. Potom stlačíme
klávesu F2, čím sa políčko zafarbí na modro a sme v editovacom režime.
Teraz môžeme zadávať meno senzora. Editáciu mena ukončíme
klávesou F2 (alebo Enter, príp. Esc).

Program umožňuje aj kalibráciu
jednotlivých senzorov. Od výrobcu majú obvody SMT160-30-92 zaručenú
presnosť cca 1°C v teplotnom rozsahu -30÷100 °C, ale je možné to vylepšiť
zmenou sklonu a posunutím prevodovej krivky. Linearitu senzora totiž výrobca
zaručuje max. 0.2÷0.4 °C , čo je vlastne dosažiteľná presnosť
merania po kalibrácii. Pri menšom teplotnom rozsahu (napr. izbové teploty) je
možné dosiahnuť presnosť 0.1°C, čo je veľmi dobrý
výsledok. Pre kalibráciu slúži v programe samostatné okno. Tu zadáme skutočnú
teplotu (meranú napr. veľmi presným teplomerom) a teplotu meranú našim
senzorom. Môžeme kalibrovať samostatne offset alebo linearitu (vtedy zadávame
iba jeden pár teplôt), alebo môžeme urobiť úplnú kalibráciu z dvoch
teplôt (napr. pri 0°C a 100°C). Nakalibrované hodnoty sa uložia do "ini"
súboru.

Program je možné minimalizovať
do systémového menu (príkazom "Hide" z kontextového
menu, kliknutím na ikonu v systémovom menu alebo klávesou "Esc") a
opätovne ho vyvolať. Ako bublinku v systémovom menu program zobrazí
teplotu prvého senzora. Ak v systémovom menu klipneme stredným tlačítkom,
tak sa nám teplota zobrazí (rozvinie) do systémového menu (nefunguje ak
máte driver na kolečko myši). Kontextové menu je možné vyvolať
aj kliknutím na ikonu v systémovom menu pravým tlačítkom myši.
![]()
Program má aj zvukový výstup.
Povie nám teplotu daného senzora, ak na ňu klipneme v kontextovom menu.
Ak si chcete upraviť hlasový výstup na vašu reč (alebo jazyk),
stačí ak si nahráte "wav" súbory s číslovkami v
adresári "\Sound".

Pre meracie a výskumné účely program umožňuje
zaznamenávať teploty do súboru. Súbor má formát CSV a je ho
možné otvoriť v programe Microsoft Excel. V Exceli si môžete
vyniesť časový priebeh teplôt senzorov. Je vhodné si pri
vytváraní grafu v Exceli nastaviť formát času na hh:mm:ss.00
(prvý stĺpec) a dátumu na dd:mm:rrrr (druhý stĺpec). Záznam
do súboru spustíme z kontextového menu a rovnakým spôsobom ho aj zastavíme.

Pre sledovanie teploty v určitých
medziach slúži okno Alerts , kde si môžeme nadefinovať horné
a dolné hranice teplôt. Prekročenie týchto hraníc pre daný senzor
hlási program dvoma spôsobmi. Môže sa nám zobraziť do popredia okno,
alebo sa nám rovno povie cez zvukovú kartu daná teplota na detekovanom
senzore (zvukový výstup vo formáte: "alert" "sensorX"
"has" "<number>" "grades", napr. "pozor
prvý teplomer má 35.41 stupňov"). Toto oznamovanie sa deje v
intervale 30-tich sekúnd. Ak sú prekročené medze u viac senzorov, tak sa
oznamujú cyklicky (pričom prednosť má vyššia teplota).

Program si pamätá posledné
nastavenia a kalibráciu v "ini" súbore (stav pri ukončení
programu), takže ak chceme použiť inú sériu senzorov, musíme vymeniť
vzhľadom na kalibračné údaje tento "ini" súbor. Hlavné
okno programu sa pri presunutí k okraju obrazovky samo "prichytí"
tohto okraja (napr. ako okno Winampu). Ak chceme spustiť program
minimalizovaný, tak ho ukončíme tiež minilalizovaný (cez kontextové
menu "Exit" na ikone v systémovom menu). Ak sa pri pokuse o
zatvorenie programu robí záznam teplôt do súboru, program nás na to
upozorní (aby sme si náhodou neporušili meranie) - a pri následnom spustení
sa spýta na možnosť opätovného záznamu.
Ak chcete vidieť tento teplomer aj v okne
"Device manager" (zatiaľ však iba pod Windows9x),
stačí si ručne pridať nový hardware a naviesť k súboru \GamePortTemp\INF\GameTemp.inf
:
"ControlPanel"-"Add New
Hardware"-"Next"-"No the device isn't in the
list"-"Next"-"No, I want to select the hardware from a
list"-"Sound, video and game
controllers"-"Next"-"Have
Disk"-"Browse"-"<...\GamePortTemp\INF\GameTemp.inf>"-"OK"-"OK"-"Finish".
Potom sa v okne "Device manager" zobrazí zariadenie Temperature
Monitor on Game port tak, ako je to na nasledujúcich obrázkoch. Toto nemá
vplyv na funkčnosť programu a je to urobené iba pre estetiku (a pre
dokázanie si, že aj to sa dá ;-) ).

Požiadavky na systém:
Funkcie programu boli odskúšané na operačných
systémoch Windows9x a Windows XP (teda program by mal fungovať
aj pod WindowsNT/2000/XP - teda aspoň s administratorskými právami).
Program vyžaduje procesor aspoň Pentium/AMD-K6 a vyšší (nespustí sa na
procesore 486 - vypíše oznam). Testovaný bol na konfiguráciách od Pentium
150MHz bez MMX až po Pentium 1000MHz (takže všetko čo je
vyššie než 486). Program si sám zistí prítomnosť Game portu v
počítači a bez neho sa nespustí. Program je možné spustiť aj
viacnásobne - ale pri jeho násobnom spustení sa Vás na to spýta.
Na nasledujúcich obrázkoch je ukážka
merania priebehu teploty v byte. Senzory boli položené spoločne
na pracovnom stole pri okne v tvare štvorca tesne pri sebe (vzdialené cca
1cm). Teplota sa snímala od rána do večera (čas je na osi x). Z
grafu jasne vidieť, že citlivosť senzorov je skutočne dobrá (snímalo
sa každé 2 sekundy s integračnou dobou 30ms a priemerovaním 10-tich
posledných hodnôt).
Senzory, keďže boli pri sebe, ukazovali zhodne doobeda približne rovnaké
teploty. Na začiatku grafu vidieť ranné vetranie - pokles teploty a
opätovný nárast. Okolo 14-tej hodiny zrazu teplota prudko vzrástla pri súčasnej
nezhode teplôt senzorov. Senzory sa navzájom "rozišli" v teplotách
po pároch. Po poklese teploty sa senzory opäť dostali na spoločnú
teplotu. Tento graf ma tiež prekvapil - tak som skúmal prečo to tak bolo
a tu je vysvetlenie:
Senzory boli položené na pracovnom stole pri okne. Bol slnečný
zimný deň a o 14.00 sa tieň z naproti stojaceho domu dostal mimo
senzorov - preto ten nárast teploty. Ale prečo sa senzory navzájom rozišli?
Pretože boli tesne vedľa seba a dva predné senzory zakrývali svojím tieňom
dva zadné. Ostrý pokles a opätovný nárast teploty v strede grafu bol
spôsobený tieňom okrasnej mriežky na okne, ktorý je tenký a preto jeho
prechod trval krátko. Pokles teploty po 15-tej hodine bol pozvoľnejší než
nárast, lebo pracovný stôl je čierny a vyhrial sa pôsobením slnečných
lúčov. Na konci grafu je vidieť i náš príchod domov z práce -
mierny nárast teploty (po zväčšení tohto detailu grafu na druhom
obrázku je jasne viditeľný nárast o 0.2 °C).


Uvedený program je pre nekomerčné použitie freeware
(ale keby sa Vám extra páčil môžete mi
prispieť - venoval som tomu dosť času - a hlavne tá idea...).
Je možné si ho stiahnuť z internetu : ako
zbalený archív GamePortTemp.zip (alebo verzia 0.95 pre monitoring
teploty počítača: GamePortTempPC.zip). Tento archív obsahuje balík súborov,
ktoré stačí nakopírovať do ľubovoľného adresára. Ak si
chcete upraviť hlasové výstupy na svoju reč, stačí vymeniť
súbory v adresári "Sound" za Vaše (ten môj hlas nie je bohviečo
;-) ).
Uvedené senzory SMT160-30 je možné kúpiť v GM-electronic
http://www.gme.sk (alebo http://www.gme.cz)
za cenu cca 150,-Sk (alebo 100,-Kč). V Bratislave je
predajňa na Budovateľskej ulici č.27 a v poslednom čase sa
veľmi polepšili - isto Vám poradia.
Informácie o poslednej verzii:
verzia: 0.96 (DLL 0.72)
zmeny oproti predchádzajúcim verziám:
v0.8 - základná verzia pre Windows9x/ME
v0.81 - podpora WindowsXP/NT/2000
v0.83 - odstránenie kozmetických chýb a chyby nemožnosti kalibrácie vo
WindowsXP/NT/2000
v0.84 - možnosť pomenovania senzorov
v0.85 - odstranený problém načítania kalibrácie z INI súboru (ak ste
mali ako desatinný oddeľovač čiarku)
v0.86 - odstranený problém detekcie neštandardného umiestnenia Creative
SoundBlaster v systéme, odstránený problém logovania dlhých časov (nad
1 minútu)
v0.87 - odstránený problém dlhých meracích intervalov pod Windows XP, rozšírenie
rozsahu intervalu merania na 1milión sekúnd (999 999 999 milisekúnd - teda
cca 11 dní)
v0.88 - odstránený problém nespoľahlivého zavedenia drivera pod Windows
XP (niekedy pri štarte programu bol potrebný opätovný reštart)
v0.89 - odstránený problém nedetekovania SoundBlaster Live (zmena iba v DLL)
v0.90 - možnosť pokračovania v meraní aj po zobudení počítača
z hibernácie (v minulých verziách bol potrebný reštart programu)
v0.91 - možnosť automatického logovania do súboru uvedeného ako
parameter v príkazového riadku
v0.92 - zmenená DLL knižnica : zabudovaný HTTP server poskytujúci teplotu na
web stránke. Stačí zadať na ľuboloľnom počítači
v sieti do browsera http://<IPaddress> príp. http://<computername>
alebo (ak to beží lokálne) http://localhost a stránka \DLL\GameTemp.htm
sa vykoná interným webserverom (nahradia sa teploty). Pre viac informácii si
pozrite súbor \DLL\GameTemp.htm . Môžete si vyrobiť viac webstránok -
html súborov potom je dotaz v tvare http://<IPaddress>/<filename>.
v0.93 - malá úprava ohľadom desatinnej čiarky v HTTP serveri
v0.93 (DLL 0.72) - pridaná podpora v DLL knižnici na inicializáciu z INI súboru
(kalibračné údaje a parametre HTTP servera)
v0.95 - na podnet Vlastimila Jirečka pridaná podpora shutdown počítača
pri prekročení teploty (a zápis prvých troch teplôt do "TempLCD.txt"),
vhodné na meranie teploty komponentov počítača (link:Luxusní, nádherná a jedinečná dřevěná Case)
v0.96 - na podnet Vlastimila Jirečka zmenený formát súboru "TempLCD.txt"
- teraz sa zapisujú č teploty na každý riadok samostatne (ako čisté
čísla bez ďalších znakov - vhodné pre posielanie teploty na externý
LCD displej pomocou obslužného software)
Pre veľký záujem zo strany užívateľov (a
moju zaneprázdnenosť odpovedať na veľa otázok záujemcov) zverejňujem
všetky zdrojové kódy programu: DLL knižnica aj aplikácia.
Knižnica DLL "GameTemp.dll" je
jadrom systému a obsahuje základné funkcie na meranie teploty a kalibráciu
senzorov. Aplikácia využíva funkcie z tejto DLL knižnice a sprístupňuje
užívateľovi grafické rozhranie. Kto chce može si urobiť vlastnú
aplikáciu využívaním DLL knižnice (iba 5 základných funkcií). V DLL knižnici
je zabudovaný aj HTTP server - takže ju stačí iba otvoriť inou
aplikáciou a HTTP server bude fungovať.
Zdrojové kódy (spolu s binárnymi súbormi) si môžete stiahnuť
ako zbalený balíček GamePortTempSources.zip
.
[1] datasheet ku SMT160-30
[2] http://www.cesko.host.sk - sekcia
Hardware alebo Software
[3] http://www.gme.sk , http://www.gme.cz
- GM-electronic : predaj senzorov SMT160-30
[4] môj e-mail : cesko@internet.sk
Úvod
Pripojenie senzorov
Princíp činnosti
Obslužný program a jeho funkcie
Ukážka nameraných grafov
Download
Zdrojové kódy
Odkazy
autor: Ing. Igor Češko:
homepage: www.cesko.host.sk
e-mail: cesko@internet.sk