Hlavní navigace

Nejjednodušší online teploměr

Milan Ištok

Mnohé z nás určitě zaujal online teploměr, který přímo na internetových stránkách zobrazuje aktuální venkovní teplotu. Řadu zájemců ale odradí poměrně složité zapojení nebo nutnost naprogramovat nějaký jednochip. Ale existuje jednoduché zapojení, které sestává ze dvou součástek, konektoru a kabelu. Celková cena je nižší než 200 Kč.

Jádrem tohoto teploměru je teplotní čidlo SMT160–30 firmy Smartec. Teplotní čidlo SMT160–30 je převodník „teplota / střída“, jeho cena se pohybuje okolo 100 Kč.

Čidlo generuje obdelníkový signál s frekvencí 1–4kHz v závislosti na teplotě, se střídou podle vzorce DC=0,32+0,0047*t , kde t je teplota ve stupních Celsia.

Velkou výhodou tohoto čidla je velice malá spotřeba (menší než 1mW), napájení 5V, digitální výstup a kompatibilita s TTL a CMOS. Teplotní rozsah je od –45°C do +150 °C s absolutní přesností +/-0,7 °C a linearita výstupu je 0,2 °C. Bez větších problémů tak získáte teploměr, který měří s přesností na stupně celsia, což je pro většinu aplikací dostatečné.

Čidlo se dodává v několika pouzdrech, ale pro naše použití je nevhodnější pouzdro T092 (čidlo je potom značené SMT160–30–92, kde 92 značí typ pouzdra).

Připojení teploměru k počítači

V zásadě existují dvě základní zapojení tohoto čidla přímo do počítače. První připojení představuje zapojení čidla přímo na LPT port a druhé zapojení je zapojení čidla na GAME port (na tlačítko střelby).

Obě zapojení jsou si v zásadě rovnocenná, je u nich možné zapojit až 4 čidla zároveň. Dále se budu věnovat jen zapojení jednoho čidla přes LPT port.

Vzhledem k poměrně malému odběru čidla je možné použít k napájení přímo logiku LPT portu, čidlo pak nepotřebuje žádné další napájení.

Zapojení teploměru

V podstatě je možné připojit čidlo přímo na LPT port pomocí konektoru CANNON 25PIN.

Čidlo se bude napájet z PINu 1 (OUT 12) a 14 (OUT11) + 5V (napájí se ze dvou PINu tak, aby se zmenšil odběr). Signál z čidla se přivádí na PIN 15 (IN 5) konektoru. Poslední vývod z čidla – zem (GND) se zapojí na PIN 25.

Ještě je nutné doplnit napájení o kondenzátor 20nF (zapojit mezi +5V – PIN 1 a GND – PIN 25).

Schéma zapojení

Mechanické provedení

Základem je konektor CANNON 25 – LPT port, do kterého se zapájí vlastní vodiče a kondenzátor (je poměrně malý a není problém uložit ho do konektoru).

Co se týká přívodních kabelů, tak bez problémů používám čidlo na 10m kabelu. U vodičů je nutné především zajistit, aby netvořily smyčky. Potom může dojít ke zkreslení signálu a ke zhoršení přesnosti.

Uložení vlastního čidla závisí především na použití. Zejména je nutné zabránit pronikání vody ke kontaktům a vzniku zkratu.

Vzhledem k malým rozměrům čidla je možné ho uložit do kousku hliníkové trubičky (má výbornou tepelnou vodivost) nebo bužírky a konce zalít epoxidem. Získáte čidlo, které je možné použít na měření teploty na méně přístupných místech. K izolaci proti zkratu se hodí tepelně smršťující bužírka.

Detail konstrukce

Kompletní teploměr

Další možností je umístit do krabičky elektrikářskou svorkovnici („čokoládu“) a do ní zapojit čidlo a kabely. V případě, že chcete měřit teplotu v místnosti, je možné uložit čidlo přímo do konektoru.

Při zapojování je nutné dbát především na to, aby nemohlo dojít k vyzkratování napájení a tím ke spálení LPT portu v počítači.

Vlastní měření

K určení teploty stačí zjistit střídu signálu a přepočítat ji na teplotu. Nejjednodušší metodou, jak zjistit střídu, je několikrát otestovat logickou úroveň signálu a ze zjištěných údajů určit teplotu podle vzorce:

Teplota [st.C]=( ( (t2 / (t1 + t2) ) – 0.32) / 0.0047)

kde:

t1 je počet měření, kdy byla na portu zjištěna logická 0

t2 je počet měření, kdy byla na portu zjištěna logická 1

Nejjednodušší program na měření teploty

Soubor teplomer.c

#include <stdio.h>
#include <unistd.h>
#include <sys/io.h>

#define DATA 0x378
#define STATUS DATA+1
#define CONTROL DATA+2

float ZmerTo (unsigned short naportu, unsigned char odkud, int stav)

// funkce vraci teplotu ve st. Celsia
// parametry
// naportu - port na kterem se provadi mereni
// odkud  - bite na ktery je pripojen teplomer
// stav - urcuje zda je vstup negovan

#define DelkaCyklu  0xffff

{
int t0, t1, t2;
int mask = (1 << odkud);
t1=0;
t2=0;

for (t0 = 0; t0 < DelkaCyklu; t0++)
    // vlastní mereni
    if ((inb (naportu) & mask) == 0) t1++ ;

// negace mereni v pripade, ze je port negovan
t2=DelkaCyklu-t1;
if (stav!=0){
   t1=t2;
   t2=DelkaCyklu-t1;
    };
// vlastní vypocet teploty
return ((((double)t2 / ((double)DelkaCyklu)) - 0.32) / 0.0047);
}

int main (void)
{
if (setuid (0) < 0)
    {
    printf ("Program musi byt spusten rootem\n");
    exit (1);
     }
if (ioperm (STATUS, 3, 1))
    {
    printf ("Program musi byt spusten rootem\n");
    exit (1);
    }
if (ioperm (CONTROL, 3, 1))
    {
    printf ("Neni pristup na port\n");
        exit (1);
     }


// nastaveni control portu na 1 tak aby na nem bylo +5V pro napajeni
outb (52, CONTROL);

// zmereni teploty
//pro LPT port a pro teplomer zapojeny na PIN 15
printf ("Teplota je %4.1f \n",  ZmerTo (STATUS, 3, 0));

// nastaveni control portu na 0 tak aby bylo vypnute napajeni cidla
outb (55, CONTROL);

return (0);
}

Kompilace se spustí příkazem gcc -O6 teplomer.c -o teplomer .

Jak je vidět, program musí být spouštěn rootem (nebo musí být na programu nastavené SUID). Dále musím upozornit na to, že na LPT portu jsou některé vstupy a výstupy negovány. Nevadí to, ale pokud budete zapojovat více čidel na jeden LPT port, je nutné s tím počítat.

Nasazení v provozu

Nejjednodušší zapojení tohoto programu do internetového serveru je spouštění programu teploměr pomocí cronu každou hodinu a zápis naměřených hodnot do souboru. Naměřené hodnoty je potom možné zpracovat pomocí PHP nebo je pomocí programu GNUPLOT vynášet do grafu.

Zkušenosti z provozu

Výše uvedené zapojení používám už déle než půl roku pro pravidelné měření venkovní teploty. Čidlo je umístěné venku na 10m kabelu a už bylo vystaveno teplotám od plus 30 stupňů do mínus 20 stupňů Celsia. Vzhledem k umístění čidla (měřené hodnoty jsou ovlivňovány stěnou domu) provádím drobnou korekci teploty (kterou jsem zjistil kalibrací teploměru a u každého čidla bude trochu jiná).

Pokud budete chtít měřit venkovní teplotu úplně přesně, budete muset teploměr nejen zkalibrovat, ale především ho správně umístnit. Pro přesná meteorologická měření musí být teploměr umístěný na prázdném travnatém prostranství, kde nebude stíněn. Dále musí být teploměr umístěn v bílé, dobře větratelné budce, v určité výšce nad zemí…
Jak je vidět, podmínek je hodně a ve většině případů bude stačit, když se venkovní teploměr umístí tak, aby na něj nesvítilo slunce a aby nebyl ovlivňován teplem vycházejícím ze stěn domu.

Závěr

Pokud se rozhodnete postavit si tento teploměr, bude vám stačit jenom pájka a asi 200Kč. Na internetu se sice dá najít řada lepších zapojení, než je toto, ale ta jsou zase o něco složitější. K vyhodnocení údajů z čidla se většinou používají jednochipové procesory. Každý ale nemusí mít přístup k programátoru jednochipu, a tak jsou pro něj tato zapojení nepoužitelná.

Jediné, na co je potřeba dát si pozor, je to, aby nedošlo ke zkratování portů na počítači (a tak k jeho zničení) a aby se u venkovního teploměru nedostávala voda na čidlo.

Našli jste v článku chybu?

8. 7. 2011 10:00

vama (neregistrovaný)

ano presne tak, cim dlhsi kabel tym vacsi odpor ma a potom treba kalibrovat kazde cidlo na kazdy kabel. Dalo by sa to riesit tak, ze v blizkosti termistoru sa da MCU, ktore by premienalo analogovy signal na digitalny a ten bude vysielat po kabli do PC, ale toto nie je jednoduchsi sposob, kedze treba programovat MCU.
Ale na druhej strane treba poznamenat, ze ani pri dig. prenose nemoze byt donekonecna dlhy kabel, pretoze nastava skreslenie tvaru hran impulzov.


29. 1. 2009 0:36

thovt (neregistrovaný)
Aby fungovalo mereni teplomerem prepnout v BIOSu u paralelního portu do rezimu Normal ekvivalent SPP.
Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

Podnikatel.cz: V restauraci bez cigaret? Sněmovna kývla

V restauraci bez cigaret? Sněmovna kývla

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Vitalia.cz: Pamlsková vyhláška bude platit jen na základkách

Pamlsková vyhláška bude platit jen na základkách

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

Měšec.cz: Jak levně odeslat balík přímo z domu?

Jak levně odeslat balík přímo z domu?

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...