DS18B20 is een 1-draads digitale temperatuursensor geproduceerd door DALLAS, met een 3-pins TO-92 klein pakket. Het temperatuurmeetbereik is -55℃~+125℃, en het kan worden geprogrammeerd met een 9-bit~12-bit A/D-conversienauwkeurigheid. De resolutie van de temperatuurmeting kan 0,0625 ℃ bereiken, en de gemeten temperatuur wordt serieel uitgevoerd in de vorm van een 16-bits digitale grootheid met tekenuitbreiding. De werkende stroomvoorziening kan aan het afgelegen uiteinde worden geïntroduceerd of worden gegenereerd door een parasitaire stroomvoorziening. Er kunnen meerdere DS18B20's parallel worden aangesloten 3 of 2 lijnen. De CPU heeft slechts één poortlijn nodig om met veel DS18B20's te communiceren, minder poorten van de microprocessor in beslag nemen, wat veel leads en logische circuits kan besparen. De bovenstaande kenmerken maken de DS18B20 zeer geschikt voor meerpuntstemperatuurdetectiesystemen over lange afstanden.
2. Interne structuur van DS18B20 ds18b20 schakelschema
De interne structuur van DS18B20 wordt getoond in figuur 1, die voornamelijk bestaat uit 4 onderdelen: 64-beetje ROM, temperatuur sensor, niet-vluchtig temperatuuralarm activeert TH en TL, en configuratieregisters. De pinopstelling van DS18B20 wordt getoond in figuur 2. DQ is de digitale signaalingang/uitvoeraansluiting; GND is de krachtige grond; VDD is de externe stroomvoorziening inputterminal (geaard in parasitaire voedingsbedradingsmodus, zie figuur 4).
Het 64-bits serienummer in de ROM wordt gefoto-etst voordat het de fabriek verlaat. Het kan worden beschouwd als de adresvolgordecode van de DS18B20. Het 64-bit serienummer van elke DS18B20 is verschillend. De cyclische redundantiecontrolecode (CRC=X8+X5+X4+1) van de 64-bits ROM is gerangschikt. De rol van ROM is om elke DS18B20 anders te maken, zodat meerdere DS18B20's kunnen worden aangesloten op één bus.
Figuur 1, interne structuur van DS18B20
De temperatuursensor in DS18B20 voltooit de temperatuurmeting, die wordt geleverd in de vorm van 16-bit teken-uitgebreide binaire complementlezingen, uitgedrukt in de vorm van 0,0625℃/LSB, waar s het teken is. Bijvoorbeeld, De digitale output van +125 ℃ is 07d0h, De digitale output van +25.0625 ℃ is 0191H, de digitale uitgang van -25,0625℃ is FF6FH, en de digitale output van -55 ℃ is FC90H.
23
22
21
20
2-1
2-2
2-3
2-4
Temperatuurwaarde lage byte
MSBLSB
S
S
S
S
S
22
25
24
Temperatuurwaarde hoge byte
Het hoge en lage temperatuuralarm activeert TH en TL, en het configuratieregister zijn samengesteld uit één byte EEPROM. Een geheugenfunctiecommando kan worden gebruikt om naar TH te schrijven, TL, of het configuratieregister. Het formaat van het configuratieregister is als volgt:
0
R1
R0
1
1
1
1
1
MSBLSB
R1 en R0 bepalen het aantal cijfers van nauwkeurigheid voor temperatuurconversie: R1R0 = “00”, 9-beetje precisie, maximale conversietijd is 93,75 ms; R1R0 = “01”, 10-beetje precisie, maximale conversietijd is 187,5 ms. R1R0 = “10”, 11-beetje precisie, maximale conversietijd is 375 ms. R1R0 = “11”, 12-beetje precisie, maximale conversietijd is 750 ms. De standaardwaarde is 12-bits precisie als deze niet is geprogrammeerd.
Het hogesnelheidsregister is een geheugen van 9 bytes. De eerste twee bytes bevatten de digitale informatie van de gemeten temperatuur; de 3e, 4e, en 5e bytes zijn tijdelijke kopieën van TH, TL, en configuratieregisters, respectievelijk, en worden elke keer vernieuwd als er een reset bij het inschakelen plaatsvindt; de 6e, 7e, en 8e bytes worden niet gebruikt en worden weergegeven als allemaal logische 1-en; de 9e byte leest de CRC-code van alle voorgaande 8 bytes, die gebruikt kunnen worden om correcte communicatie te garanderen.
3. DS18B20 werkvolgorde
De eerstelijns werkprotocolstroom van DS18B20 is: initialisatie → ROM-bedieningsinstructie → geheugenbedieningsinstructie → datatransmissie. De werkvolgorde omvat de initialisatievolgorde, schrijfvolgorde en leesvolgorde, zoals weergegeven in figuur 3 (A) (B) (C).
(A) Initialisatievolgorde
(C) Lees volgorde
Figuur 3, DS18B20 werkvolgordediagram
4. Typisch interfaceontwerp van DS18B20 en microcomputer met één chip
Figuur 4 neemt de microcomputer met één chip uit de MCS-51-serie als voorbeeld om de typische verbinding tussen DS18B20 en microprocessor te tekenen. In figuur 4 (A), DS18B20 gebruikt de parasitaire voedingsmodus, en de VDD- en GND-terminals zijn geaard. In figuur 4 (B), DS18B20 maakt gebruik van de externe voedingsmodus, en de VDD-terminal wordt gevoed door een voeding van 3V ~ 5,5V.
A) Werkmodus voor parasitaire voeding
(B) Werkmodus externe voeding
Figuur 4 Typisch aansluitschema van DS18B20 en microprocessor
Aangenomen dat de kristalfrequentie die wordt gebruikt door het microcomputersysteem met één chip 12 MHz is, er worden drie subroutines geschreven volgens de initialisatietiming, schrijftiming en leestiming van DS18B20: INIT is de initialisatie-subroutine; SCHRIJVEN is schrijven (opdracht of gegevens) subroutine; READ is de subroutine voor het lezen van gegevens. Alle gegevens lezen en schrijven beginnen vanaf het laagste bit.
DATEQUP1.0
……
INIT:CLREA
INI10:SETBDAT
MOVR2,#200
INI11:Clrdat
DJNZR2,INI11; De host verzendt een resetpuls van 3μs×200=600μs
SETBDAT; De gastheer geeft de bus vrij, en de poortlijn wordt gewijzigd in invoer
MOVR2,#30
IN12:DJNZR2,INI12; DS18B20 wacht op 2μs×30=60μs
CLRC
Orlc,DAT; Is de datalijn van de DS18B20 bijna leeg (pols bestaat)?
JCINI10; DS18B20 is niet gereed, opnieuw initialiseren
MOVR6, #80
INI13: Orlc, DAT
JCINI14; DS18B20-datalijn gaat hoog, initialisatie is succesvol
DJNZR6, INI13; Het lage niveau van de datalijn kan 3 μs × duren 80 = 240 μs
SYMPINI10; initialisatie is mislukt, opnieuw opstarten
INI14: MOVR2, #240
IN15: DJNZR2, INI15; DS18B20 reageert minimaal 2μs× 240 = 48 0µs
RET
;-------------------------
SCHRIJVEN:CLREA
MOVR3,#8;Lus 8 keer, schrijf een byte
WR11:SETBDAT
MOVR4,#8
RRCA;Schrijfbit beweegt van A naar CY
Clrdat
WR12:DJNZR4,WR12
;Wacht 16 μs
MOVDAT,C;Het commandowoord wordt bit voor bit naar DS18B20 verzonden
MOVR4,#20
WR13:DJNZR4,WR1 3
; Zorg ervoor dat het schrijfproces 60 μs duurt
DJNZR3,WR11
; Ga door voordat u een byte verzendt
SETBDAT
RET
;------------------------
LEZEN:CLREA
MOVR6,#8; Lus 8 keer, een byte lezen
RD11:Clrdat
MOVR4,#4
NEE; Een laag niveau duurt 2 μs
SETBDAT; Stel de poortlijn in op invoer
RD12:DJNZR4,RD12
; Wacht 8 μs
MOVC,VAN T
;De host leest de gegevens van DS18B20 bit voor bit
RRCA;De gelezen gegevens worden verplaatst naar A
MOVR5,#30
RD13:DJNZR5,RD13
;Zorg ervoor dat het leesproces 60 μs duurt
DJNZR6,RD11
;Na het lezen van een byte aan gegevens, bewaar het in A
SETBDAT
RET
;-------------------------
De host moet drie stappen doorlopen om de DS18B20 te besturen en de temperatuurconversie te voltooien: initialisatie, ROM-bedieningsinstructies, en geheugenbedieningsinstructies. DS18B20 moet worden gestart om de conversie te starten voordat de temperatuurconversiewaarde wordt gelezen. Ervan uitgaande dat slechts één chip op één lijn is aangesloten, de standaard 12-bits conversienauwkeurigheid wordt gebruikt, en er wordt een externe voeding gebruikt, er kan een subroutine GETWD worden geschreven om een conversie te voltooien en de temperatuurwaarde te lezen.
Begaafd:LCALLINIT
BEWEGING,#0CCH
LCALLWRITE; stuur Skip ROM-opdracht
BEWEGING,#44 uur
LCALLWRITE; stuur het startconversiecommando
LCALLINIT
BEWEGING,#0CCH; stuur Skip ROM-opdracht
LCALLWRITE
BEWEGING,#0 BEH; stuur een leesgeheugencommando
LCALLWRITE
LCALLLEES
MOVWDLSB,A
; stuur een lage byte van de temperatuurwaarde naar WDLSB
LCALLLEES
MOVWDMSB,A
; stuur een hoge byte van de temperatuurwaarde naar WDMSB
RET
……
De hoge byte van de temperatuurwaarde die door de subroutine GETWD wordt gelezen, wordt naar de WDMSB-eenheid gestuurd, en de lage byte wordt naar de WDLSB-eenheid gestuurd. Vervolgens volgens het representatieformaat van de temperatuurwaardebyte en zijn tekenbit, de werkelijke temperatuurwaarde kan worden verkregen door eenvoudige transformatie.
Als er meerdere DS18B20 op één lijn zijn aangesloten, Er wordt gebruik gemaakt van de parasitaire voedingsaansluitmodus, configuratie van conversienauwkeurigheid, alarm voor hoge en lage limiet, enz. zijn vereist. Dan zal het schrijven van de subroutine GETWD ingewikkelder zijn. Vanwege ruimtebeperkingen, dit gedeelte wordt niet in detail beschreven. Raadpleeg de relevante inhoud.
We hebben DS18B20 met succes toegepast op de “huishoudelijk verwarmingsbad” besturingssysteem dat we hebben ontwikkeld. De hoge conversiesnelheid, hoge conversienauwkeurigheid, en de eenvoudige interface met de microprocessor hebben het hardwareontwerpwerk veel gemakkelijker gemaakt, het effectief verlagen van de kosten en het verkorten van ontwikkelingscycli.
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



