DS18B20 je 1-vodičový digitálny snímač teploty vyrobený spoločnosťou DALLAS, s 3-kolíkovým TO-92 malým balením. Rozsah merania teploty je -55℃~+125℃, a dá sa naprogramovať na presnosť A/D prevodu 9-12-bit. Rozlíšenie merania teploty môže dosiahnuť 0,0625 ℃, a nameraná teplota je sériovo vydávaná vo forme 16-bitovej digitálnej veličiny s rozšírením znamienka. Jeho pracovné napájanie môže byť zavedené na vzdialený koniec alebo generované parazitným napájaním. Paralelne je možné pripojiť viacero DS18B20 3 alebo 2 linky. CPU potrebuje iba jednu portovú linku na komunikáciu s mnohými DS18B20, zaberá menej portov mikroprocesora, čo môže ušetriť veľa vodičov a logických obvodov. Vyššie uvedené vlastnosti robia DS18B20 veľmi vhodným pre diaľkové viacbodové systémy detekcie teploty.
2. Vnútorná štruktúra schémy zapojenia DS18B20 ds18b20
Vnútorná štruktúra DS18B20 je znázornená na obrázku 1, ktorý pozostáva hlavne z 4 časti: 64-bit ROM, teplotný snímač, neprchavý teplotný alarm spúšťa TH a TL, a konfiguračné registre. Usporiadanie kolíkov DS18B20 je znázornené na obrázku 2. DQ je vstupný/výstupný terminál digitálneho signálu; GND je uzemnenie napájania; VDD je vstupná svorka externého napájacieho zdroja (uzemnené v režime parazitného elektrického vedenia, pozri obrázok 4).
64-bitové sériové číslo v ROM je pred opustením továrne vyleptané. Možno ho považovať za kód sekvencie adries DS18B20. 64-bitové sériové číslo každého DS18B20 je iné. Kontrolný kód cyklickej redundancie (CRC = X8+X5+X4+1) 64-bitovej pamäte ROM. Úlohou ROM je urobiť každý DS18B20 iným, aby bolo možné pripojiť viacero DS18B20 na jednu zbernicu.
Obrázok 1, vnútorná štruktúra DS18B20
Teplotný senzor v DS18B20 dokončí meranie teploty, ktorý je poskytovaný vo forme 16-bitových čítaní binárneho doplnku s rozšírením znamienka, vyjadrené vo forme 0,0625 ℃/LSB, kde S je znamienkový bit. Napríklad, digitálny výstup +125℃ je 07D0H, digitálny výstup +25,0625 ℃ je 0191H, digitálny výstup -25,0625 ℃ je FF6FH, a digitálny výstup -55 ℃ je FC90H.
23
22
21
20
2-1
2-2
2-3
2-4
Nízky bajt hodnoty teploty
MSBLSB
S
S
S
S
S
22
25
24
Vysoký bajt hodnoty teploty
Alarm vysokej a nízkej teploty spustí TH a TL, a konfiguračný register pozostávajú z jedného bajtu EEPROM. Na zápis do TH možno použiť príkaz pamäťovej funkcie, TL, alebo konfiguračný register. Formát konfiguračného registra je nasledujúci:
0
R1
R0
1
1
1
1
1
MSBLSB
R1 a R0 určujú počet číslic presnosti pre prevod teploty: R1RO = “00”, 9-bitová presnosť, maximálny čas prevodu je 93,75 ms; R1RO = “01”, 10-bitová presnosť, maximálny čas prevodu je 187,5 ms. R1RO = “10”, 11-bitová presnosť, maximálny čas prevodu je 375 ms. R1RO = “11”, 12-bitová presnosť, maximálny čas prevodu je 750 ms. Predvolená je 12-bitová presnosť, keď nie je naprogramovaná.
Vysokorýchlostný register je 9-bajtová pamäť. Prvé dva bajty obsahujú digitálnu informáciu o nameranej teplote; 3, 4th, a 5. bajty sú dočasné kópie TH, TL, a konfiguračné registre, respektíve, a obnovujú sa vždy, keď dôjde k reštartu pri zapnutí; 6, 7th, a 8. bajty sa nepoužívajú a sú reprezentované ako všetky logické jednotky; 9. bajt prečíta CRC kód všetkých predchádzajúcich 8 bajtov, ktoré možno použiť na zabezpečenie správnej komunikácie.
3. Pracovná sekvencia DS18B20
Tok pracovného protokolu prvej línie DS18B20 je: inicializácia → prevádzkový pokyn ROM → príkaz na obsluhu pamäte → prenos dát. Jeho pracovná sekvencia zahŕňa inicializačnú sekvenciu, sekvenciu zápisu a sekvenciu čítania, ako je znázornené na obrázku 3 (a) (b) (c).
(a) Inicializačná sekvencia
(c) Prečítajte si sekvenciu
Obrázok 3, Schéma pracovnej sekvencie DS18B20
4. Typický dizajn rozhrania DS18B20 a jednočipového mikropočítača
Obrázok 4 berie ako príklad jednočipový mikropočítač série MCS-51 na nakreslenie typického spojenia medzi DS18B20 a mikroprocesorom. Na obr 4 (a), DS18B20 využíva režim parazitného napájania, a jeho svorky VDD a GND sú uzemnené. Na obr 4 (b), DS18B20 využíva režim externého napájania, a jeho VDD terminál je napájaný 3V~5,5V napájaním.
a) Pracovný režim parazitného napájacieho zdroja
(b) Pracovný režim externého napájacieho zdroja
Obrázok 4 Typická schéma zapojenia DS18B20 a mikroprocesora
Za predpokladu, že frekvencia kryštálu používaná jednočipovým mikropočítačovým systémom je 12 MHz, tri podprogramy sú zapísané podľa časovania inicializácie, časovanie zápisu a čítania DS18B20: INIT je inicializačný podprogram; WRITE je písanie (príkaz alebo údaje) podprogram; READ je podprogram čítania údajov. Všetky čítanie a zápis údajov začína od najnižšieho bitu.
DATEQUP1.0
……
INIT:CLREA
INI10:SETBDAT
MOVR2,#200
INI11:Clrdat
DJNZR2,INI11; Hostiteľ pošle resetovací impulz na 3μs×200=600μs
SETBDAT; Hostiteľ uvoľňuje autobus, a linka portu sa zmení na vstup
MOVR2,#30
IN12:DJNZR2,INI12; DS18B20 čaká 2μs×30=60μs
CLRC
Orlc,TO; Je dátová linka DS18B20 nízka (pulz existuje)?
JCINI10; DS18B20 nie je pripravený, znova inicializovať
MOVR6, #80
INI13: Orlc, TO
JCINI14; Dátová linka DS18B20 ide vysoko, inicializácia je úspešná
DJNZR6, INI13; nízka úroveň dátovej linky môže trvať 3 μs × 80 = 240 μs
SYMPINI10; inicializácia zlyhala, reštartovať
INI14: MOVR2, #240
IN15: DJNZR2, INI15; DS18B20 reaguje aspoň 2 μs × 240 = 48 0μs
RET
;----------------------
PÍSAŤ:CLREA
MOVR3,#8;Slučka 8 krát, napísať bajt
WR11:SETBDAT
MOVR4,#8
RRCA;Zapíšte bitové pohyby z A do CY
Clrdat
WR12:DJNZR4, WR12
;Počkajte 16 μs
MOVDAT,C;Príkazové slovo sa posiela do DS18B20 bit po bite
MOVR4,#20
WR13:DJNZR4, WR1 3
; Uistite sa, že proces zápisu trvá 60 μs
DJNZR3, WR11
; Pokračujte pred odoslaním bajtu
SETBDAT
RET
;---------------------
PREČÍTAJTE SI:CLREA
MOVR6,#8; Slučka 8 krát, prečítať bajt
RD11:Clrdat
MOVR4,#4
NOP; Nízka úroveň trvá 2 μs
SETBDAT; Nastavte linku portu na vstup
RD12:DJNZR4,RD12
; Počkajte 8 μs
MOVC,OD T
;Hostiteľ číta dáta DS18B20 bit po bite
RRCA;Načítané údaje sa presunú do A
MOVR5,#30
RD13:DJNZR5,RD13
;Uistite sa, že proces čítania trvá 60 μs
DJNZR6,RD11
;Po prečítaní bajtu údajov, uložiť do A
SETBDAT
RET
;----------------------
Hostiteľ musí prejsť tromi krokmi na ovládanie DS18B20, aby sa dokončila konverzia teploty: inicializácia, návod na obsluhu ROM, a pokyny na obsluhu pamäte. DS18B20 sa musí spustiť, aby sa spustila konverzia pred čítaním hodnoty konverzie teploty. Za predpokladu, že k jednej linke je pripojený iba jeden čip, použije sa predvolená 12-bitová presnosť prevodu, a používa sa externý zdroj napájania, možno zapísať podprogram GETWD na dokončenie prevodu a načítanie hodnoty teploty.
Nadaný:LCALLINIT
MOVE,#0CCH
LCALLWRITE; odoslať príkaz preskočiť ROM
MOVE,#44 hod
LCALLWRITE; odoslať príkaz na spustenie konverzie
LCALLINIT
MOVE,#0CCH; odoslať príkaz preskočiť ROM
LCALLWRITE
MOVE,#0 BEH; odoslať príkaz na čítanie pamäte
LCALLWRITE
LCALLREAD
MOVWDLSB,A
; odoslať nízky bajt hodnoty teploty do WDLSB
LCALLREAD
MOVWDMSB,A
; odoslať vysoký bajt hodnoty teploty do WDMSB
RET
……
Vysoký bajt hodnoty teploty načítaný podprogramom GETWD sa odošle do jednotky WDMSB, a nízky bajt sa odošle do jednotky WDLSB. Potom podľa formátu zobrazenia bajtu hodnoty teploty a jej znamienkového bitu, skutočnú hodnotu teploty možno získať jednoduchou transformáciou.
Ak je na jednej linke pripojených viacero DS18B20, je prijatý režim pripojenia parazitného napájania, konfigurácia presnosti prevodu, alarm hornej a dolnej hranice, tam. sú povinné. Potom bude zápis podprogramu GETWD komplikovanejší. Kvôli priestorovým obmedzeniam, táto časť nebude podrobne popísaná. Pozrite si príslušný obsah.
Úspešne sme aplikovali DS18B20 na “vykurovací kúpeľ pre domácnosť” riadiaci systém, ktorý sme vyvinuli. Jeho vysoká rýchlosť konverzie, vysoká presnosť prevodu, a jednoduché rozhranie s mikroprocesorom priniesli veľké pohodlie pri návrhu hardvéru, efektívne znižovanie nákladov a skrátenie vývojových cyklov.
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



