DIGITALNI
TERMOMETAR SA KOLOM LM75
Šema kola
digitalnog termometra koji se priključuje na serijski port PC računara prikazana je na slici
dole.

Kolo LM75 je I2C kolo koje za signal SDA
koristi DTR signal kao izlazni i CTS kao ulazni, a za signal SCL koristi signal RTS
sa strane serijskog porta. Signal TxD
se koristi za dobijanje napajanja od +5V
za kolo CD4081 i LM75.
Kolo CD4081
je četverostruko I kolo i u
ovom slučaju smo ga koristili za prilagođenje napona serijskog porta
kolu za merenje temperature LM75. Ovo
kolo je proizvod američke firme National Semiconductor a pojavilo
se je 2004. godine i namenjeno je za merenje temperature u opsegu -55 °C do +125
°C
sa tačnošću od ± 2 °C. Napon napajanja kola kreće se u granicama od
3 do 5.5 Volti sa tipičnom strujom od 250 mA. Pakuje se u dva oblika i to SOP-8 i mini SOP-8(MSOP). Nalazi primenu na mestima gde je potrebno
tačno merenje temperature a često se koristi i na matičnim
pločama PC računara za merenje temperature. Raspored pinova
ovog kola prikazan je na donjoj slici.

Značenje pojedinih pinova ovog
kola dato je u donjoj tabeli:
|
Pin |
Opis |
|
1-SDA |
Serijski ulaz-izlaz
podataka |
|
2-SCL |
Serijski
klok |
|
3-Tout |
Izlazni
signal termometra |
|
4-Gnd |
Masa |
|
8-Vcc |
Napajanje +
5V |
|
A0 |
Adresni
ulaz 0 |
|
A1 |
Adresni
ulaz 1 |
|
A2 |
Adresni
ulaz 2 |
Specifikacija materijala za izradu ovog
interfejsa data je u donjoj tabeli:
|
Rb. |
Komponenta |
Količina |
|
1. |
IC1 -
CD4081 |
1 kom |
|
2. |
IC2 -
LM75 |
1 kom |
|
3. |
ZD1, ZD2 i ZD3 - Zener diode 5V6 |
3 kom |
|
4. |
LD1 -
Led dioda crvena fi 3 mm |
1 kom |
|
5. |
DIL-14
podnožje |
1 kom |
|
6. |
DIL-8
podnožje |
1 kom |
|
7. |
R1 -
330 W |
1 kom |
|
8. |
R2, R3,
R4 i R5 - 10 kW |
4 kom |
|
9. |
DB-9 ženski konektor za štampu |
1 kom |
Temperatura je u kolu predstavljena sa 9-bita
pri čemu je zadnji bit ekvivalentanan vrednosti od 0.5 ° C, dok u slučaju kada su vrednosti
temperatura manje od nule temperatura je predstavljena u komplementu 2 što
je prikazano u donjoj tabeli.

Funkcionalna šema kola LM75
prikazana je na donjojo slici.

Iz strukture kola vidi se da postoje
četiri registra podataka koji se biraju pomoću Pointer registra, pa ako je npr.
sadržaj Pointer registra jednak
nuli tada je selektovan Temperature
registar. Svi registri omogućuju
upis i čitanje podataka izuzev Temperature
registra koji omoguće samo čitanje. Upis podataka u LM75 zahteva slanje adresnog bajta i Pointer bajta. Upis u Configuration registar zahteva jedan
bajt podatka, dok TOS i THYST zahtevaju dva bajta
podataka. Struktura Temperaturnog registra
prikazana je na slici dole.
![]()
Viši bajt temperature(MSB)
definišu biti D8 – D15 i
to predstavlja celi deo vrednosti temperature vrednosti, dok bit D7 u
nižem bajtu(LSB) daje
vrednost od po 0.5°C, tj. ako je njegova vrednost 1 temperatura iz MSB biće uvećana za 0.5 inače ako je 0 neće biti uvećanja,
što znači da ovaj termometar meri temperaturu u koracima po 0.5° C.
Način očitavanja temperature na I2C magistrali prikazan je na
slici dole.


Iz slike se vidi da je prvo potrebno poslati adresni bajt kola(u
našem slučaju 145) kao i sadržaj
pointer registra(čija je
vrednost 0 za Temperaturni registar), a zatim očitati sadržaj tog
registra, prvo MSB a zatim LSB bajt.
Pozivom programa dobićemo ekran prikazan na slici dole.

Program je tako napisan da u tajmerskoj proceduri svaka 2 sekunda
osvežava temperaturu.
Glavni deo koda
ovog programa je sledeći:
|
' unit termom01; //--------------------------------- // Program
za merenje temperature // sa I2C
kolom LM75 //--------------------------------- . . //--------Procedura
koja se poziva aktiv. forme------- procedure
TForm1.FormCreate(Sender: TObject); Var i
:integer; begin i := OpenCom(PChar('COM1:1200,N,8,1')); RTS(0); TXD(1); DTR(0); end; //--------Funkcija
slanja podatka na I2C-------------- Function TForm1.PosaljiPod(Bajt:
Byte):boolean; Begin I2CStart; Greska := Not (I2CPosalji(144)); I2CPosalji(Bajt); I2CStop; End; //--------Proceduru
preuzimanja podatka sa I2C-------------- Procedure
TForm1.PreuzmiPod(); Begin I2CStart; Greska := Not (I2CPosalji(145)); Bajt1 := I2CPreuzmi; I2CAcknowledge; Bajt2 := I2CPreuzmi; I2CNotAcknowledge; I2CStop; End; //--------Funkcija
upisivanja podatka na I2C-------------- Function
TForm1.UpisiPod(Bajt, Broj : Byte): boolean; Var Greska : boolean; Begin I2CStart; Greska := Not (I2CPosalji(144)); I2CPosalji (Bajt); I2CPosalji (Broj); I2CStop End; //--------Procedura
ocitanja i prikaza temperature--------- procedure
TForm1.ProcitajTemperaturu(); Var podatak : byte; Greska : boolean; temper: real; begin PosaljiPod (0); PreuzmiPod(); Podatak := bajt1; temper:=Bajt1 + Trunc(Bajt2/128) * 0.5; Edit1.Text:=FloatToSTr(temper); end; //--------Tajmerska
procedura------------------------------- procedure
TForm1.Timer1Timer(Sender: TObject); begin ProcitajTemperaturu; end; . . end. |
Pozivom program aktivira se procedura FormCreate
u kojoj otvorimo COM1 port za
komunikaciju i postavimo odgovarajuče signale prema I2C magistrali. Signal TxD
se postavlja na 1 budući da se
preko njega vrši napajanja našeg interfejsa a što se vidi
svetlenjem zelene led dioda na pločici interfejsa. U okviru tajmerske
procedure Timer1Timer(koja se poziva
svaka 2 sekunda) pozivamo proceduru ProcitajTemperaturu. U ovoj proceduri
prvo pošaljemo vrednost 0 na LM75 kolo a što znači da smo
izabrali Temperaturni registar(PosaljiPod(0)). Nakon toga preuzimama
dva bajta iz ovog registra(PreuzmiPod()).
Veći bajt(bajt1) predstavlja celi
deo vrednosti temperature(MSB) dok
najveći bajt drugog pročitanog bajta predstavlja korak od 0.5°C u slučaju ako je on postavljen na 1. Na kraju prikažemo dobijenu vrednost u Edit1 polju. Na formi je omogućeno da promenimo COM port a podrazumevani je COM2.
Kolo se može koristiti i kao termostat. Tada je neophodno prethodno
upisati temperaturu u registar TOS.
Kada bude dostignuta ta temperatura kola na pinu Tout biće postavljenja logička nula.
Izgled gotove interfejs pločice prikazan je na donjoj slici.

Sonda za merenje temperaure tj. kolo LM75 montirano je na posebnu
pločicu koja se flet kablom spaja na interfejs. Izgled montirane
pločice prikazan je dole.

PCB pločice digitalnog termometra dat je na donjoj
slici.

Program za podršku ovom interfejsu možete preuzeti ovde.
http://vojo.milanovic.org
© Copyright, 2006 Milanović Vojo
All right reserved