*   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