Jste zde

Jednoduchý, presný a lacný teplomer k PC

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). 

Úvod

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.
 

Schéma pripojenia 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!).

Klikni pro detail.

Princíp činnosti

Senzory teploty SMT160-30 dávajú na výstup signál, ktorého strieda je priamo úmerná frekvencii. 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.
 
 

Funkcie obslužného programu

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.
 

Ukážka nameraných grafov

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).

Klikni pro detail..

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).

Klikni pro detail...

Použitý SW

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". 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 ;-) ).

Informácie o poslednej verzii 0.85 -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)

Download & Odkazy

Hodnocení článku: