Temperatūros jutiklio technologija

Skaitmeninio temperatūros jutiklio DS18B20 temperatūros matavimo funkcijos projektavimas

Skaitmeninio temperatūros jutiklio DS18B20 temperatūros matavimo funkcija

DS18B20 yra 1 laido skaitmeninis temperatūros jutiklis, kurį gamina DALLAS, su 3 kontaktų TO-92 maža pakuote. Temperatūros matavimo diapazonas yra -55 ℃ ~ + 125 ℃, ir jis gali būti užprogramuotas 9 bitų ~ 12 bitų A/D konvertavimo tikslumu. Temperatūros matavimo skiriamoji geba gali siekti 0,0625 ℃, ir išmatuota temperatūra nuosekliai išvedama 16 bitų skaitmeninio dydžio su ženklo plėtiniu pavidalu. Jo darbinis maitinimo šaltinis gali būti įvestas nuotoliniu būdu arba generuojamas parazitinio maitinimo šaltiniu. Lygiagrečiai galima prijungti kelis DS18B20 3 arba 2 linijos. CPU reikia tik vienos prievado linijos, kad galėtų susisiekti su daugeliu DS18B20, užima mažiau mikroprocesoriaus prievadų, kuri gali sutaupyti daug laidų ir loginių grandinių. Dėl aukščiau pateiktų charakteristikų DS18B20 labai tinka tolimojo kelių taškų temperatūros aptikimo sistemoms.

Skaitmeninio temperatūros jutiklio DS18B20 temperatūros matavimo funkcija

Skaitmeninio temperatūros jutiklio DS18B20 temperatūros matavimo funkcija

2. DS18B20 ds18b20 grandinės schemos vidinė struktūra
Vidinė DS18B20 struktūra parodyta paveikslėlyje 1, kuri daugiausia susideda iš 4 dalys: 64-bitų ROM, Temperatūros jutiklis, nepastovios temperatūros aliarmas suveikia TH ir TL, ir konfigūracijos registrus. DS18B20 kaiščių išdėstymas parodytas paveikslėlyje 2. DQ yra skaitmeninio signalo įvesties/išvesties terminalas; GND yra maitinimo įžeminimas; VDD yra išorinio maitinimo šaltinio įvesties gnybtas (įžemintas parazitinio maitinimo laidų režimu, žr. pav 4).

64 bitų serijos numeris ROM yra išgraviruotas prieš išvežant iš gamyklos. Jis gali būti laikomas DS18B20 adreso sekos kodu. Kiekvieno DS18B20 64 bitų serijos numeris skiriasi. Ciklinio atleidimo patikrinimo kodas (CRC=X8+X5+X4+1) 64 bitų ROM yra sutvarkytas. ROM vaidmuo yra padaryti kiekvieną DS18B20 skirtingą, kad prie vienos magistralės būtų galima prijungti kelis DS18B20.

DS18B20 lusto vidinė struktūra

DS18B20 lusto vidinė struktūra

Paveikslas 1, vidinė DS18B20 struktūra

DS18B20 temperatūros jutiklis užbaigia temperatūros matavimą, kuris pateikiamas 16 bitų ženklu išplėsto dvejetainio komplemento rodmenų pavidalu, išreikšta 0,0625 ℃/LSB forma, kur S yra ženklo bitas. Pavyzdžiui, skaitmeninė +125 ℃ išvestis yra 07D0H, skaitmeninė +25,0625 ℃ išvestis yra 0191H, skaitmeninė išvestis -25,0625 ℃ yra FF6FH, ir skaitmeninė išvestis -55 ℃ yra FC90H.

23
22
21
20
2-1
2-2
2-3
2-4

Žemos temperatūros vertės baitas
MSBLSB
S
S
S
S
S
22
25
24

Aukštos temperatūros vertės baitas
Aukštos ir žemos temperatūros signalizacija suveikia TH ir TL, ir konfigūracijos registrą sudaro vienas EEPROM baitas. Atminties funkcijos komanda gali būti naudojama rašant į TH, TL, arba konfigūracijos registrą. Konfigūracijos registro formatas yra toks:

0
R1
R0
1
1
1
1
1
MSBLSB

R1 ir R0 nustato temperatūros konvertavimo tikslumo skaitmenų skaičių: R1R0 = “00”, 9-bitų tikslumas, maksimalus konvertavimo laikas yra 93,75 ms; R1R0 = “01”, 10-bitų tikslumas, maksimalus konvertavimo laikas yra 187,5 ms. R1R0 = “10”, 11-bitų tikslumas, maksimalus konvertavimo laikas yra 375 ms. R1R0 = “11”, 12-bitų tikslumas, maksimalus konvertavimo laikas yra 750 ms. Numatytasis yra 12 bitų tikslumas, kai jis neužprogramuotas.

Didelės spartos registras yra 9 baitų atmintis. Pirmuosiuose dviejuose baituose yra skaitmeninė išmatuotos temperatūros informacija; 3-ioji, 4th, ir 5 baitai yra laikinos TH kopijos, TL, ir konfigūracijos registrus, atitinkamai, ir atnaujinami kiekvieną kartą, kai įvyksta įjungimo atstatymas; 6-oji, 7th, ir 8 baitai nenaudojami ir pateikiami kaip visi loginiai 1; 9-asis baitas skaito visų ankstesnių CRC kodą 8 baitų, kuriais galima užtikrinti teisingą bendravimą.

3. DS18B20 darbo seka
Pirmosios eilės DS18B20 darbo protokolo srautas yra: inicijavimas → ROM veikimo instrukcija → atminties veikimo instrukcija → duomenų perdavimas. Jo darbo seka apima inicijavimo seką, rašymo seka ir skaitymo seka, kaip parodyta paveiksle 3 (a) (b) (c).

(a) Inicijavimo seka
(c) Skaitymo seka

Tipinė DS18B20 ir mikroprocesoriaus sujungimo schema

Tipinė DS18B20 ir mikroprocesoriaus sujungimo schema

Paveikslas 3, DS18B20 darbo sekos schema

4. Tipiškas DS18B20 ir vieno lusto mikrokompiuterio sąsajos dizainas
Paveikslas 4 Kaip pavyzdį naudojamas MCS-51 serijos vieno lusto mikrokompiuteris, kad būtų galima nubrėžti tipišką ryšį tarp DS18B20 ir mikroprocesoriaus. Paveiksle 4 (a), DS18B20 priima parazitinio maitinimo režimą, o jo VDD ir GND gnybtai įžeminti. Paveiksle 4 (b), DS18B20 priima išorinio maitinimo režimą, ir jo VDD gnybtas maitinamas 3V ~ 5,5V maitinimo šaltiniu.

a) Parazitinio maitinimo šaltinio darbo režimas
(b) Išorinio maitinimo šaltinio darbo režimas

DS18B20 darbo laiko schema

DS18B20 darbo laiko schema

Paveikslas 4 Tipinė DS18B20 ir mikroprocesoriaus sujungimo schema

Darant prielaidą, kad vieno lusto mikrokompiuterių sistemos naudojamas kristalų dažnis yra 12MHz, trys paprogramės parašytos pagal inicijavimo laiką, DS18B20 rašymo ir skaitymo laikas: INIT yra inicijavimo paprogramė; RAŠYTI yra rašymas (komandą ar duomenis) paprogramė; READ yra duomenų skaitymo paprogramė. Visų duomenų skaitymas ir rašymas prasideda nuo žemiausio bito.

DATEQUP1.0
……
INIT:CLREA
INI10:SETBDAT
MOVR2,#200
INI11:Clrdat
DJNZR2,INI11; Šeimininkas siunčia atstatymo impulsą 3 μs × 200 = 600 μs
SETBDAT; Šeimininkas išleidžia autobusą, ir prievado linija pakeičiama į įvestį
MOVR2,#30
IN12:DJNZR2, INI12; DS18B20 laukia 2μs × 30=60μs
CLRC
Orlc,TAI; Ar žema DS18B20 duomenų linija (pulsas egzistuoja)?
JCINI10; DS18B20 neparengtas, iš naujo inicijuoti
MOVR6, #80
INI13: Orlc, TAI
JCINI14; DS18B20 duomenų linija yra aukšta, inicijavimas sėkmingas
DJNZR6, INI13; Žemas duomenų linijos lygis gali trukti 3 μs × 80 = 240 μs
SYMPINIS10; inicijavimas nepavyko, paleisti iš naujo
INI14: MOVR2, #240
IN15: DJNZR2, INI15; DS18B20 reaguoja mažiausiai 2 μs × 240 = 48 0μs
RET

;------------------
RAŠYKITE:CLREA
MOVR3,#8;Kilpa 8 kartų, parašyti baitą
WR11:SETBDAT
MOVR4,#8
RRCA;Rašymo bitai juda iš A į CY
Clrdat
WR12:DJNZR4, WR12
;Palaukite 16 μs
MOVDAT,C;Komandos žodis po bitų siunčiamas į DS18B20
MOVR4,#20
WR13:DJNZR4, WR1 3
; Įsitikinkite, kad rašymo procesas trunka 60 μs
DJNZR3, WR11
; Tęskite prieš siųsdami baitą
SETBDAT
RET

;---------------------
SKAITYTI:CLREA
MOVR6,#8; Kilpa 8 kartų, perskaityti baitą
RD11:Clrdat
MOVR4,#4
NOP; Žemas lygis trunka 2 μs
SETBDAT; Nustatykite prievado liniją į įvestį
RD12:DJNZR4, RD12
; Palaukite 8 μs
MOVC,NUO T
;Pagrindinis kompiuteris skaito DS18B20 duomenis po bitų
RRCA;Nuskaityti duomenys perkeliami į A
MOVR5,#30
RD13:DJNZR5, RD13
;Įsitikinkite, kad skaitymo procesas trunka 60 μs
DJNZR6, RD11
;Perskaičius baitą duomenų, laikyti jį A
SETBDAT
RET
;------------------
Pagrindinis kompiuteris turi atlikti tris veiksmus, kad valdytų DS18B20 ir baigtų temperatūros konvertavimą: inicijavimas, ROM naudojimo instrukcijos, ir atminties veikimo instrukcijos. DS18B20 turi būti paleistas, kad būtų galima pradėti konvertuoti prieš nuskaitant temperatūros konvertavimo vertę. Darant prielaidą, kad prie vienos linijos prijungtas tik vienas lustas, naudojamas numatytasis 12 bitų konvertavimo tikslumas, ir naudojamas išorinis maitinimo šaltinis, galima parašyti paprogramę GETWD, kad būtų užbaigtas konvertavimas ir nuskaityta temperatūros reikšmė.

Gabus:LCALLINIT
JUDĖTI,#0CCH
LCALLWRITE; siųsti skip ROM komandą
JUDĖTI,# 44h
LCALLWRITE; siųsti komandą pradėti konvertuoti
LCALLINIT
JUDĖTI,#0CCH; siųsti skip ROM komandą
LCALLWRITE
JUDĖTI,#0 BEH; siųsti skaitymo atminties komandą
LCALLWRITE
LCALLREAD
MOVWDLSB,A
; siųsti žemą temperatūros vertės baitą į WDLSB
LCALLREAD
MOVWDMSB,A
; siųsti aukštą temperatūros vertės baitą į WDMSB
RET
……

Aukštas temperatūros vertės baitas, kurį nuskaito paprogramė GETWD, siunčiamas į WDMSB įrenginį, ir žemas baitas siunčiamas į WDLSB įrenginį. Tada pagal temperatūros reikšmės baito ir jo ženklo bito vaizdavimo formatą, faktinę temperatūros vertę galima gauti naudojant paprastą transformaciją.

Jei vienoje linijoje yra prijungti keli DS18B20, priimamas parazitinio maitinimo šaltinio prijungimo režimas, konversijos tikslumo konfigūracija, aukščiausios ir žemos ribos pavojaus signalas, ir tt. būtini. Tada paprogramės GETWD rašymas bus sudėtingesnis. Dėl erdvės apribojimų, šis skyrius nebus išsamiai aprašytas. Žr. atitinkamą turinį.

Sėkmingai pritaikėme DS18B20 “buitinė šildymo vonia” mūsų sukurta valdymo sistema. Jo greitas konversijos greitis, didelis konversijos tikslumas, ir paprasta sąsaja su mikroprocesoriumi suteikė didelį patogumą aparatinės įrangos projektavimo darbams, efektyviai sumažinti išlaidas ir sutrumpinti kūrimo ciklus.