Termometru cu DS1621 pentru PC

by donpedro

Aşa de cool că poţi chiar să-l măsori!
Acest termometru incredibil de simplu se conectează la orice port serial liber. Nu foloseşte componente programabile cum ar fi microcontrolerele. Oferă temperatura cu o exactitate de 0.5°C fără calibrare. Este ieftin, astfel că l-am montat pe orice PC pe care îl folosesc. Este atât de comod să poţi citi temperatura pe bara de sarcini Windos, încât foarte mulţi prieteni m-au rugat să construiesc unul pentru ei!

Construiţi singuri un termometru exact
Deoarece nu am timp să construiesc un milion de termometre pcTHERM pentru prietenii mei, vă ofer schema şi software-ul pentru a putea singuri să-l construiţi.
Acest proiect este destul de uşor şi pentru începători, singura dificultate fiind incompatibiliatea hardware între porturile seriale ale PC-urilor. În varianta cu un singur traductor aveţi nevoie doar de un singur integrat traductor, un stabilizator de tensiune şi câteva diode şi rezistoare. Construiţi-l şi aflaţi secretele busului IIC, cum puteţi implementa busul IIC folosind doar două rezistoare şi două diode zener, cum îl puteţi comanda pe un port serial folosind. Componentele necesare sunt disponibile în toate cataloagele.

Temperatura indicată pe bara de stare Windows

Aspecte tehnice:

Schema electronică

Afişează temperatura din interior şi exterior pe bara de stare Windows (vezi figura);
Se conectează la orice port com liber al PC-ului;
Domeniu: -20 … +125°C (-4 … 257°F);
Exactitatea şi rezoluţia 0.5°C;
Scală în Centigrade (°C) sau Farenheit (°F);
Data logging într-un fişier text uşor de citit;
Frecvenţa de eşantionare 1, 5, 30 sau 60 secunde;
Unul sau două traductoare de temperatură (upgradabil până la 8);
Alimentat de la “portul com”, nu necesită alimentare exterioară;
Uşor de realizat, nu are componente programabile sau hardware exotice;
Nu este necesară calibrare;
Codul sursă gratis (utilizare numai educaţională şi necomercială);

Lista componentelor
2 x 1N4148 diode;
2 x 5.1 volţi, 1/4W diode zener;
2 x 4700 ohm rezistoare;
2 x 100 nF condensatoare;
2 x 47uF 16V condensatoare electrolitice;
2 x DS1621 traductoare digital de temperatură (Dallas Semiconductor);
1 x LM2936-z5 low-droput 5V stabilizator (National Semiconductor);
1 x DB9 conector mamă.

Funcţionare
Principala componentă este traductorul de temperatură DS1621 de la Dallas Semiconductor. Acest mic circuit integrat cu 8 pini necesită doar o tensiune de +5 volţi pentru măsurarea temperaturii şi trimitera valorilor citite prin intermediul busului IIC. Deoarece multe dispozitive folosite pentru bus-ul IIC pot fi conectate în paralel, sunt disponibile trei intrări de adresă (A0, A1, A2) pentru selectarea dispozitivului. În acest fel pot fi conectate maxim 8 traductoare în paralel. Am setat traductorul pentru temperatura din interior la adresa 0 şi cel pentru temperatura din exterior la adresa 1. Dacă folosiţi doar un traductor conectaţi-l la adresa 0.

Ferestre pcTherm

Interfaţarea busului IIC cu portul com RS232 se reduce la adaptarea nivelelor. IIC funcţionează cu nivele de semnal de 0..5V, iar RS232 foloseşte -12V .. +12V. Deşi nivelele specificate sunt de -12V..+12V, aproape toate porturile com ale PC-urilor lucrează la fel de bine şi cu semnale 0..5V. Acest lucru elimină necesitatea de ridicare a ieşirii IIC la nivelele pentru RS232, iar linia de date SDA se conectează direct la linia CTS a PC-ului. Invers, semnalele RS232 pot periclita intrările IIC, astfel că am folosit limitatoarele de tensiune (R1, DZ2, R2, DZ1) pe intrarea de tact SCL şi pe intrarea de date SDA (SDA este bidirecţional: primeşte de la linia DTR şi transmite către linia CTS). Deoarece circuitul necesită un curent foarte mic, nu este necesară o sursă exterioară de alimentare. Tensiunea de +12V de la linia RS232 este redresată de diodele D1, D2, filtrată de C1 şi stabilizată la +5V de LM2936-Z5. Nu îl înlocuiţi cu un stabilizator comun 78L05 decât dacă doriţi o baterie externă de +9V: LM2936 stabilizează chiar şi pentru tensiuni de intrare de 6V, aşa cum este cazul cu multe porturi seriale.

Software
Am scris partea de software în 5 (Da, de această dată nu am folosit cod în limbajul de asamblare sau C++!). Codul este realizat în manieră directă, fără optimizări care l-ar fi făcut mai greu de citit. Chiar cu aceste limitări, IIC rulează la o viteză respectabilă de 1,5 kHz chiar şi pe un P90 lent în modul interpretat. Prima dată când rulaţi programul veţi fi atenţionat că nu există fişierul de setup (el va fi creat automat la sfârşitul sesiunii) şi că va fi folosit cel implicit. Când porniţi programul, el rulează minimizat pe bara de sarcini, oferind un “temperature icon”. Acesta este modul meu preferat de folosire, ca şi cum ar fi un icon “clock” oferit de Windows.
Un click pe icon deschide fereastra de setup care vă permite selectarea unuia din cele 4 porturi com, numărul de traductoare, intervalul dintre măsurători, unitatea de măsură şi dacă doriţi să logaţi temperatur în fişierul “pc_therm.txt”. Dacă alegeţi un port greşit puteţi avea măsurători false sau mesaje “unable do read”.

Fişiere disponibile:
Executabile (1,5MB) care include şi setup.exe (îl găsiţi la secţiunea download din paginia ziarului www.electronica-azi.ro