Temperatursensorteknologi

Design av temperaturmålingsfunksjon til digital temperaturføler DS18B20

temperaturmålingsfunksjon til digital temperatursensor DS18B20

DS18B20 er en 1-leder digital temperatursensor produsert av DALLAS, med en 3-pins TO-92 liten pakke. Temperaturmåleområdet er -55℃~+125℃, og den kan programmeres til 9-bit~12-bit A/D-konverteringsnøyaktighet. Temperaturmålingsoppløsningen kan nå 0,0625 ℃, og den målte temperaturen sendes ut i serie i form av en 16-bits digital mengde med tegnforlengelse. Dens fungerende strømforsyning kan introduseres i den eksterne enden eller genereres av parasittisk strømforsyning. Flere DS18B20 kan kobles parallelt til 3 eller 2 linjer. CPU-en trenger bare én portlinje for å kommunisere med mange DS18B20-er, okkuperer færre porter på mikroprosessoren, som kan spare mange ledninger og logiske kretser. Ovennevnte egenskaper gjør DS18B20 svært egnet for langdistanse flerpunkts temperaturdeteksjonssystemer.

temperaturmålingsfunksjon til digital temperatursensor DS18B20

temperaturmålingsfunksjon til digital temperatursensor DS18B20

2. Intern struktur av DS18B20 ds18b20 kretsskjema
Den interne strukturen til DS18B20 er vist i figur 1, som hovedsakelig består av 4 deler: 64-bit ROM, temperaturføler, ikke-flyktig temperaturalarm utløser TH og TL, og konfigurasjonsregistre. Pinnearrangementet til DS18B20 er vist i figuren 2. DQ er den digitale signalinn-/utgangsterminalen; GND er kraftjorden; VDD er inngangsterminalen for ekstern strømforsyning (jordet i parasittisk strømledningsmodus, se figur 4).

64-biters serienummer i ROM-en fotoetses før det forlater fabrikken. Det kan betraktes som adressesekvenskoden til DS18B20. 64-biters serienummer for hver DS18B20 er forskjellig. Den sykliske redundanskontrollkoden (CRC=X8+X5+X4+1) av 64-bit ROM er arrangert. Rollen til ROM er å gjøre hver DS18B20 annerledes, slik at flere DS18B20 kan kobles til en buss.

Intern struktur av DS18B20-brikken

Intern struktur av DS18B20-brikken

Figur 1, intern struktur av DS18B20

Temperaturføleren i DS18B20 fullfører temperaturmålingen, som leveres i form av 16-bits fortegnsutvidede binære komplementavlesninger, uttrykt i form av 0,0625 ℃/LSB, hvor S er tegnbiten. For eksempel, den digitale utgangen på +125 ℃ er 07D0H, den digitale utgangen på +25,0625 ℃ er 0191H, den digitale utgangen på -25,0625 ℃ er FF6FH, og den digitale utgangen på -55 ℃ er FC90H.

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

Temperaturverdi lav byte
MSBLSB
S
S
S
S
S
22
25
24

Temperaturverdi høy byte
Høy- og lavtemperaturalarmen utløser TH og TL, og konfigurasjonsregisteret er sammensatt av en byte av EEPROM. En minnefunksjonskommando kan brukes til å skrive til TH, TL, eller konfigurasjonsregisteret. Formatet til konfigurasjonsregisteret er som følger:

0
R1
R0
1
1
1
1
1
MSBLSB

R1 og R0 bestemmer antall sifre med presisjon for temperaturkonvertering: R1R0 = “00”, 9-litt presisjon, maksimal konverteringstid er 93,75ms; R1R0 = “01”, 10-litt presisjon, maksimal konverteringstid er 187,5 ms. R1R0 = “10”, 11-litt presisjon, maksimal konverteringstid er 375ms. R1R0 = “11”, 12-litt presisjon, maksimal konverteringstid er 750ms. Standard er 12-biters presisjon når den ikke er programmert.

Høyhastighetsregisteret er et 9-byte minne. De to første bytene inneholder digital informasjon om den målte temperaturen; den 3, 4th, og 5. byte er midlertidige kopier av TH, TL, og konfigurasjonsregistre, hhv, og oppdateres hver gang en tilbakestilling ved oppstart skjer; den 6, 7th, og 8. byte brukes ikke og er representert som alle logiske 1-er; den 9. byten leser CRC-koden for alle de foregående 8 bytes, som kan brukes for å sikre korrekt kommunikasjon.

3. DS18B20 arbeidssekvens
Den første linjens arbeidsprotokollflyt for DS18B20 er: initialisering → ROM-driftsinstruksjon → minneoperasjonsinstruksjon → dataoverføring. Arbeidssekvensen inkluderer initialiseringssekvens, skrivesekvens og lesesekvens, som vist i figuren 3 (en) (b) (c).

(en) Initialiseringssekvens
(c) Les sekvens

Typisk koblingsskjema for DS18B20 og mikroprosessor

Typisk koblingsskjema for DS18B20 og mikroprosessor

Figur 3, DS18B20 arbeidssekvensdiagram

4. Typisk grensesnittdesign for DS18B20 og enkeltbrikke mikrodatamaskin
Figur 4 tar MCS-51-serien enkeltbrikke mikrodatamaskinen som et eksempel for å tegne den typiske forbindelsen mellom DS18B20 og mikroprosessor. I figur 4 (en), DS18B20 bruker parasittisk strømforsyningsmodus, og dens VDD- og GND-terminaler er jordet. I figur 4 (b), DS18B20 bruker ekstern strømforsyningsmodus, og VDD-terminalen drives av 3V~5,5V strømforsyning.

en) Parasittisk strømforsyning arbeidsmodus
(b) Arbeidsmodus for ekstern strømforsyning

DS18B20 arbeidstidsdiagram

DS18B20 arbeidstidsdiagram

Figur 4 Typisk koblingsskjema for DS18B20 og mikroprosessor

Forutsatt at krystallfrekvensen som brukes av enkeltbrikke-mikrodatamaskinsystemet er 12MHz, tre subrutiner skrives i henhold til initialiseringstidspunktet, skrivetiming og lesetiming for DS18B20: INIT er initialiseringssubrutinen; SKRIV er skrivingen (kommando eller data) subrutine; READ er lesedatasubrutinen. All datalesing og skriving starter fra den laveste biten.

DATEQUP1.0
……
INIT:CLREA
INI10:SETBDAT
MOVR2,#200
INI11:CLRDAT
DJNZR2,INI11; Verten sender en tilbakestillingspuls for 3μs×200=600μs
SETBDAT; Verten slipper bussen, og portlinjen endres til inngang
MOVR2,#30
IN12:DJNZR2,INI12; DS18B20 venter på 2μs×30=60μs
CLRC
ORLC,AT; Er DS18B20-datalinjen lav (puls eksisterer)?
JCINI10; DS18B20 er ikke klar, initialisere på nytt
MOVR6, #80
INI13: ORLC, AT
JCINI14; DS18B20-datalinjen går høyt, initialisering er vellykket
DJNZR6, INI13; datalinje lavt nivå kan vare i 3μs × 80 = 240μs
SYMPINI10; initialisering mislyktes, starte på nytt
INI14: MOVR2, #240
IN15: DJNZR2, INI15; DS18B20 reagerer i minst 2μs × 240 = 48 0μs
RET

;–––––––––––––––––––––––––
SKRIVE:CLREA
MOVR3,#8;Løkke 8 ganger, skriv en byte
WR11:SETBDAT
MOVR4,#8
RRCA;Skriv bitbevegelser fra A til CY
CLRDAT
WR12:DJNZR4,WR12
;Vent 16μs
MOVDAT,C;Kommandoord sendes til DS18B20 bit for bit
MOVR4,#20
WR13:DJNZR4,WR1 3
; Sørg for at skriveprosessen varer i 60μs
DJNZR3,WR11
; Fortsett før du sender en byte
SETBDAT
RET

;–––––––––––––––––––––––––
LESE:CLREA
MOVR6,#8; Løkke 8 ganger, lese en byte
RD11:CLRDAT
MOVR4,#4
NOP; Lavt nivå varer i 2μs
SETBDAT; Sett portlinjen til inngang
RD12:DJNZR4,RD12
; Vent i 8μs
MOVC,FRA T
;Verten leser dataene til DS18B20 bit for bit
RRCA;Lesedataene flyttes til A
MOVR5,#30
RD13:DJNZR5,RD13
;Sørg for at leseprosessen varer 60μs
DJNZR6,RD11
;Etter å ha lest en byte med data, lagre den i A
SETBDAT
RET
;–––––––––––––––––––––––––
Verten må gå gjennom tre trinn for å kontrollere DS18B20 for å fullføre temperaturkonverteringen: initialisering, ROM bruksanvisning, og bruksinstruksjoner for minne. DS18B20 må startes for å starte konvertering før avlesning av temperaturkonverteringsverdien. Forutsatt at kun én brikke er koblet til én linje, standard 12-biters konverteringsnøyaktighet brukes, og en ekstern strømforsyning brukes, en subrutine GETWD kan skrives for å fullføre en konvertering og lese temperaturverdien.

PORT:LCALLINIT
FLYTTE,#0CCH
LCALLWRITE; send skip ROM-kommando
FLYTTE,#44H
LCALLWRITE; send start konverteringskommando
LCALLINIT
FLYTTE,#0CCH; send skip ROM-kommando
LCALLWRITE
FLYTTE,#0 BEH; send leseminnekommando
LCALLWRITE
LCALLLES
MOVWDLSB,EN
; send lav byte med temperaturverdi til WDLSB
LCALLLES
MOVWDMSB,EN
; send høy byte med temperaturverdi til WDMSB
RET
……

Den høye byten med temperaturverdi som leses av subrutinen GETWD sendes til WDMSB-enheten, og den lave byten sendes til WDLSB-enheten. Deretter i henhold til representasjonsformatet til temperaturverdibyte og dens fortegnsbit, den faktiske temperaturverdien kan oppnås gjennom enkel transformasjon.

Hvis flere DS18B20 er tilkoblet på en linje, parasittisk strømforsyningstilkoblingsmodus er tatt i bruk, konfigurasjon av konverteringsnøyaktighet, høy og lav grense alarm, osv. er påkrevd. Da vil skrivingen av subrutinen GETWD være mer komplisert. På grunn av plassbegrensninger, denne delen vil ikke bli beskrevet i detalj. Vennligst se det relevante innholdet.

Vi har brukt DS18B20 på “husholdnings varmebad” kontrollsystem vi utviklet. Dens raske konverteringshastighet, høy konverteringsnøyaktighet, og enkelt grensesnitt med mikroprosessoren har brakt stor bekvemmelighet for maskinvaredesignarbeid, effektivt redusere kostnader og forkorte utviklingssykluser.