DS18B20 är en 1-tråds digital temperatursensor tillverkad av DALLAS, med ett 3-stift TO-92 litet paket. Temperaturmätningsområdet är -55℃~+125℃, och den kan programmeras till 9-bitars~12-bitars A/D-omvandlingsnoggrannhet. Temperaturmätningsupplösningen kan nå 0,0625 ℃, och den uppmätta temperaturen matas ut i serie i form av en 16-bitars digital kvantitet med teckenförlängning. Dess fungerande strömförsörjning kan införas vid den avlägsna änden eller genereras av parasitisk strömförsörjning. Flera DS18B20 kan kopplas parallellt till 3 eller 2 rader. CPU:n behöver bara en portlinje för att kommunicera med många DS18B20:er, upptar färre portar på mikroprocessorn, vilket kan spara många ledningar och logiska kretsar. Ovanstående egenskaper gör DS18B20 mycket lämplig för flerpunktstemperaturdetekteringssystem på långa avstånd.
2. Intern struktur för DS18B20 ds18b20 kretsschema
Den interna strukturen för DS18B20 visas i figur 1, som huvudsakligen består av 4 delar: 64-bit ROM, temperatursensor, icke-flyktigt temperaturlarm utlöser TH och TL, och konfigurationsregister. Stiftarrangemanget för DS18B20 visas i figuren 2. DQ är den digitala signalingången/utgången; GND är kraftjorden; VDD är den externa strömförsörjningsingången (jordad i parasitisk kraftledningsläge, se figur 4).
64-bitars serienumret i ROM:et fotoetsas innan det lämnar fabriken. Det kan betraktas som adresssekvenskoden för DS18B20. 64-bitars serienumret för varje DS18B20 är olika. Den cykliska redundanskontrollkoden (CRC=X8+X5+X4+1) av 64-bitars ROM är anordnad. Rollen för ROM är att göra varje DS18B20 annorlunda, så att flera DS18B20 kan anslutas till en buss.
Figur 1, intern struktur för DS18B20
Temperaturgivaren i DS18B20 slutför temperaturmätningen, som tillhandahålls i form av 16-bitars teckenförlängda binära komplementavläsningar, uttryckt i form av 0,0625 ℃/LSB, där S är tecknet. Till exempel, den digitala utgången på +125 ℃ är 07D0H, den digitala utgången på +25,0625 ℃ är 0191H, den digitala utgången på -25,0625 ℃ är FF6FH, och den digitala utgången på -55 ℃ är FC90H.
23
22
21
20
2– 1
2– 2
2– 3
2-4
Temperaturvärde låg byte
MSBLSB
S
S
S
S
S
22
25
24
Temperaturvärde högt byte
Hög- och lågtemperaturlarmet utlöser TH och TL, och konfigurationsregistret är sammansatt av en byte av EEPROM. Ett minnesfunktionskommando kan användas för att skriva till TH, Tl, eller konfigurationsregistret. Formatet för konfigurationsregistret är som följer:
0
R1
R0
1
1
1
1
1
MSBLSB
R1 och R0 bestämmer antalet precisionssiffror för temperaturomvandling: R1R0 = “00”, 9-lite precision, maximal konverteringstid är 93,75ms; R1R0 = “01”, 10-lite precision, maximal konverteringstid är 187,5 ms. R1R0 = “10”, 11-lite precision, maximal konverteringstid är 375ms. R1R0 = “11”, 12-lite precision, maximal konverteringstid är 750ms. Standardinställningen är 12-bitars precision när den inte är programmerad.
Höghastighetsregistret är ett 9-byte minne. De två första byten innehåller digital information om den uppmätta temperaturen; den 3:e, 4th, och 5:e byte är tillfälliga kopior av TH, Tl, och konfigurationsregister, respektive, och uppdateras varje gång en startåterställning inträffar; den 6:e, 7th, och 8:e byte används inte och representeras som alla logiska ettor; den 9:e byten läser CRC-koden för alla föregående 8 bytes, som kan användas för att säkerställa korrekt kommunikation.
3. DS18B20 arbetssekvens
Det första linjens arbetsprotokollflöde för DS18B20 är: initiering → ROM-driftsinstruktion → minnesdriftinstruktion → dataöverföring. Dess arbetssekvens inkluderar initialiseringssekvens, skrivsekvens och lässekvens, som visas i figuren 3 (a) (b) (c).
(a) Initieringssekvens
(c) Läs sekvens
Figur 3, DS18B20 arbetssekvensdiagram
4. Typisk gränssnittsdesign för DS18B20 och en-chip mikrodator
Figur 4 tar MCS-51-serien enkelchips mikrodator som ett exempel för att rita den typiska kopplingen mellan DS18B20 och mikroprocessor. I figur 4 (a), DS18B20 använder parasitiskt strömförsörjningsläge, och dess VDD- och GND-terminaler är jordade. I figur 4 (b), DS18B20 använder extern strömförsörjningsläge, och dess VDD-terminal drivs av 3V~5,5V strömförsörjning.
a) Parasitisk strömförsörjning arbetsläge
(b) Arbetsläge för extern strömförsörjning
Figur 4 Typiskt anslutningsschema för DS18B20 och mikroprocessor
Om man antar att kristallfrekvensen som används av mikrodatorsystemet med en chip är 12MHz, tre subrutiner skrivs enligt initialiseringstidpunkten, skrivtid och lästid för DS18B20: INIT är initieringssubrutinen; SKRIV är att skriva (kommando eller data) subrutin; READ är läsdatasubrutinen. All dataläsning och skrivning börjar från den lägsta biten.
DATEQUP1.0
……
INIT:CLREA
INI10:SETBDAT
MOVR2,#200
INI11:Clrdat
DJNZR2,INI11; Värden skickar en återställningspuls för 3μs×200=600μs
SETBDAT; Programledaren släpper bussen, och portlinjen ändras till ingång
MOVR2,#30
IN12:DJNZR2,INI12; DS18B20 väntar på 2μs×30=60μs
CLRC
Orlc,ATT; Är DS18B20-datalinjen låg (puls finns)?
JCINI10; DS18B20 är inte klar, återinitiera
MOVR6, #80
INI13: Orlc, ATT
JCINI14; DS18B20-datalinjen går högt, initieringen lyckades
DJNZR6, INI13; datalinjens låga nivå kan vara i 3μs × 80 = 240 μs
SYMPINI10; initiering misslyckades, starta om
INI14: MOVR2, #240
IN15: DJNZR2, INI15; DS18B20 svarar i minst 2μs × 240 = 48 0μs
RÖTA
;----------------
SKRIVA:CLREA
MOVR3,#8;Slinga 8 gånger, skriv en byte
WR11:SETBDAT
MOVR4,#8
RRCA;Skriv bitrörelser från A till CY
Clrdat
WR12:DJNZR4,WR12
;Vänta 16 μs
MOVDAT,C;Kommandoord skickas till DS18B20 bit för bit
MOVR4,#20
WR13:DJNZR4,WR1 3
; Se till att skrivprocessen varar i 60μs
DJNZR3,WR11
; Fortsätt innan du skickar en byte
SETBDAT
RÖTA
;----------------
LÄSA:CLREA
MOVR6,#8; Slinga 8 gånger, läsa en byte
RD11:Clrdat
MOVR4,#4
NEJ; Låg nivå varar i 2μs
SETBDAT; Ställ in portlinjen på ingång
RD12:DJNZR4,RD12
; Vänta i 8μs
MOVC,FRÅN T
;Värden läser data från DS18B20 bit för bit
RRCA;Läsdata flyttas till A
MOVR5,#30
RD13:DJNZR5,RD13
;Se till att avläsningsprocessen varar 60μs
DJNZR6,RD11
;Efter att ha läst en byte med data, förvara den i A
SETBDAT
RÖTA
;----------------
Värden måste gå igenom tre steg för att styra DS18B20 för att slutföra temperaturomvandlingen: initiering, Användningsinstruktioner för ROM, och minnesdriftsinstruktioner. DS18B20 måste startas för att starta omvandlingen innan avläsning av temperaturomvandlingsvärdet. Förutsatt att endast ett chip är anslutet till en linje, standard 12-bitars konverteringsnoggrannhet används, och en extern strömkälla används, en subrutin GETWD kan skrivas för att slutföra en konvertering och läsa temperaturvärdet.
Begåvad:LCALLINIT
FLYTTA,#0CCH
LCALLWRITE; skicka skippa ROM-kommandot
FLYTTA,#44H
LCALLWRITE; skicka startkonverteringskommandot
LCALLINIT
FLYTTA,#0CCH; skicka skippa ROM-kommandot
LCALLWRITE
FLYTTA,#0 BEH; skicka läsminneskommando
LCALLWRITE
LÄS
MOVWDLSB,A
; skicka låg byte av temperaturvärde till WDLSB
LÄS
MOVWDMSB,A
; skicka hög byte av temperaturvärde till WDMSB
RÖTA
……
Den höga byten av temperaturvärde som läses av subrutinen GETWD skickas till WDMSB-enheten, och den låga byten skickas till WDLSB-enheten. Sedan enligt representationsformatet för temperaturvärdebyte och dess teckenbit, det faktiska temperaturvärdet kan erhållas genom enkel transformation.
Om flera DS18B20 är anslutna på en linje, anslutningsläge för parasitisk strömförsörjning antas, konfiguration för omvandlingsnoggrannhet, hög och låg gräns larm, etc. krävs. Då blir skrivningen av subrutinen GETWD mer komplicerad. På grund av utrymmesbegränsningar, detta avsnitt kommer inte att beskrivas i detalj. Se relevant innehåll.
Vi har framgångsrikt tillämpat DS18B20 på “hushållsvärmebad” kontrollsystem vi utvecklat. Dess snabba omvandlingshastighet, hög konverteringsnoggrannhet, och det enkla gränssnittet med mikroprocessorn har medfört stor bekvämlighet för arbetet med maskinvarudesign, effektivt minska kostnaderna och förkorta utvecklingscykler.
English
Afrikaans
العربية
বাংলা
bosanski jezik
Български
Català
粤语
中文(简体)
中文(漢字)
Hrvatski
Čeština
Nederlands
Eesti keel
Suomi
Français
Deutsch
Ελληνικά
हिन्दी; हिंदी
Magyar
Bahasa Indonesia
Italiano
日本語
한국어
Latviešu valoda
Lietuvių kalba
македонски јазик
Bahasa Melayu
Norsk
پارسی
Polski
Português
Română
Русский
Cрпски језик
Slovenčina
Slovenščina
Español
Svenska
ภาษาไทย
Türkçe
Українська
اردو
Tiếng Việt



