Teplomer na paralélny port so snímačom SMT160–30
K napísaniu toho članku ma išpiroval článok na serveri root.cz, ktorého autorom je pán Milan Ištok.
Pôvodný dizajn teplomera z článku uverejneného na serveri root.cz som upravil pridaním rezistorov R1 a R2 na piny 1 a 14 paralélneho portu. Predíde sa tým skratu v prípade, že na jednom pine je logická 1 a na druhom pine log 0. Vtedy je rozdiel potenciálov v najhoršom prípade +5V. Teda maximalný prúd tečúci z jedného pinu do druhého je cca 2,5mA (5V / 2000 Ohm = 2.5mA). Kondenzátor C by sa mal nachádzať čo najbližsie ku snímaču. V katalógovom liste je napájací prúd snímača uvádzaný v rozsahu od 160 do 200uA.
Snímač generuje obdĺžnikový signál s frekvenciou 1-4kHz v závislosti na teplote, so striedou podľa vzorca DC=0,32+0,0047*t , kde t je teplota v stupňoch Celsia.
Teplotu vypočítame podľa vzorca Teplota [st.C]=( ( (t2 / (t1 + t2) ) - 0.32) / 0.0047), kde t1 je počet meraní, keď bola na porte zistená logická 0 a t2 je počet meraní, keď bola na portu zistená logická 1.
Zdrojový kód
#include <stdio.h> #include <unistd.h> #include <sys/io.h> #define DATA 0x378 #define STATUS DATA+1 #define CONTROL DATA+2 // 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 // vlastn mereni // negace mereni v pripade, ze je port negovan // vlastn vypocet teploty "Program musi byt spusten rootem\n""Program musi byt spusten rootem\n""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 "Teplota je %4.1f \n", ZmerTo (STATUS, 3, 0)); // nastaveni control portu na 0 tak aby bylo vypnute napajeni cidla
Kompilácia sa spustí príkazom gcc -O6 smt160-30lpt.c -o teplomer
Ako je vidieť, program musí byť spustený rootom (alebo musí byť na programe nastavené SUID). Ďalej musím upozorniť na to, že na LPT porte sú niektoré vstupy a výstupy negované. Nevadí to, ale ak budete zapájať viac snímačov na jeden LPT port, je nutné s tím počítať.
Na stiahnutie
Anglický katalógový list
Český katalógový list
Zdrojový súbor smt160-30lpt.c