DS18B20 è un sensore di temperatura digitale a 1 filo prodotto da DALLAS, con un contenitore piccolo TO-92 a 3 pin. L'intervallo di misurazione della temperatura è -55℃~+125℃, e può essere programmato con una precisione di conversione A/D da 9 bit a 12 bit. La risoluzione della misurazione della temperatura può raggiungere 0,0625 ℃, e la temperatura misurata viene emessa in serie sotto forma di grandezza digitale a 16 bit con estensione del segno. La sua alimentazione funzionante può essere introdotta all'estremità remota o generata da un'alimentazione parassita. È possibile collegare più DS18B20 in parallelo 3 O 2 linee. La CPU necessita solo di una linea di porta per comunicare con molti DS18B20, occupando meno porte del microprocessore, che può far risparmiare molti cavi e circuiti logici. Le caratteristiche di cui sopra rendono DS18B20 molto adatto per sistemi di rilevamento della temperatura multipunto a lunga distanza.
2. Struttura interna dello schema elettrico DS18B20 ds18b20
La struttura interna del DS18B20 è mostrata in Figura 1, che consiste principalmente in 4 parti: 64-bit-ROM, sensore di temperatura, l'allarme di temperatura non volatile attiva TH e TL, e registri di configurazione. La disposizione dei pin del DS18B20 è mostrata in Figura 2. DQ è il terminale di ingresso/uscita del segnale digitale; GND è la terra di alimentazione; VDD è il terminale di ingresso dell'alimentazione esterna (collegato a terra in modalità di cablaggio di alimentazione parassita, vedere la figura 4).
Il numero di serie a 64 bit nella ROM è fotoinciso prima di lasciare la fabbrica. Può essere considerato come il codice di sequenza dell'indirizzo del DS18B20. Il numero di serie a 64 bit di ciascun DS18B20 è diverso. Il codice di controllo della ridondanza ciclica (CRC=X8+X5+X4+1) della ROM a 64 bit è organizzata. Il ruolo della ROM è quello di rendere ogni DS18B20 diverso, in modo che più DS18B20 possano essere collegati a un bus.
Figura 1, struttura interna del DS18B20
Il sensore di temperatura in DS18B20 completa la misurazione della temperatura, che viene fornito sotto forma di letture del complemento binario con estensione del segno a 16 bit, espresso sotto forma di 0,0625 ℃/LSB, dove S è il bit del segno. Per esempio, l'uscita digitale di +125℃ è 07D0H, l'uscita digitale di +25,0625℃ è 0191H, l'uscita digitale di -25,0625℃ è FF6FH, e l'uscita digitale di -55℃ è FC90H.
23
22
21
20
2-1
2-2
2-3
2-4
Byte basso del valore della temperatura
MSBLSB
S
S
S
S
S
22
25
24
Byte alto del valore della temperatura
L'allarme di alta e bassa temperatura attiva TH e TL, ed il registro di configurazione sono composti da un byte di EEPROM. È possibile utilizzare un comando di funzione di memoria per scrivere su TH, TL, o il registro di configurazione. Il formato del registro di configurazione è il seguente:
0
R1
R0
1
1
1
1
1
MSBLSB
R1 e R0 determinano il numero di cifre di precisione per la conversione della temperatura: R1R0 = “00”, 9-precisione in bit, il tempo massimo di conversione è 93,75 ms; R1R0 = “01”, 10-precisione in bit, il tempo massimo di conversione è 187,5 ms. R1R0 = “10”, 11-precisione in bit, il tempo massimo di conversione è 375 ms. R1R0 = “11”, 12-precisione in bit, il tempo massimo di conversione è 750 ms. L'impostazione predefinita è una precisione a 12 bit quando non è programmata.
Il registro ad alta velocità è una memoria da 9 byte. I primi due byte contengono l'informazione digitale della temperatura misurata; il 3°, 4th, e il quinto byte sono copie temporanee di TH, TL, e registri di configurazione, rispettivamente, e vengono aggiornati ogni volta che si verifica un ripristino all'accensione; il 6, 7th, e l'ottavo byte non vengono utilizzati e sono rappresentati come tutti 1 logici; il 9° byte legge il codice CRC di tutti i precedenti 8 byte, che possono essere utilizzati per garantire una corretta comunicazione.
3. Sequenza di lavoro DS18B20
Il flusso del protocollo di lavoro di prima linea di DS18B20 è: inizializzazione → istruzione operativa ROM → istruzione operativa memoria → trasmissione dati. La sua sequenza di lavoro include la sequenza di inizializzazione, scrivere la sequenza e leggere la sequenza, come mostrato nella Figura 3 (UN) (B) (C).
(UN) Sequenza di inizializzazione
(C) Leggi la sequenza
Figura 3, Diagramma della sequenza di lavoro DS18B20
4. Design dell'interfaccia tipico di DS18B20 e microcomputer a chip singolo
Figura 4 prende come esempio il microcomputer a chip singolo della serie MCS-51 per tracciare la tipica connessione tra DS18B20 e microprocessore. Nella figura 4 (UN), DS18B20 adotta la modalità di alimentazione parassita, e i suoi terminali VDD e GND sono messi a terra. Nella figura 4 (B), DS18B20 adotta la modalità di alimentazione esterna, e il suo terminale VDD è alimentato da un alimentatore da 3 V ~ 5,5 V.
UN) Modalità di funzionamento dell'alimentatore parassita
(B) Modalità di funzionamento dell'alimentatore esterno
Figura 4 Schema di collegamento tipico di DS18B20 e microprocessore
Supponendo che la frequenza del cristallo utilizzata dal sistema microcomputer a chip singolo sia 12 MHz, vengono scritte tre subroutine in base ai tempi di inizializzazione, scrivere i tempi e leggere i tempi di DS18B20: INIT è la subroutine di inizializzazione; SCRIVERE è la scrittura (comando o dati) sottoprogramma; READ è la subroutine di lettura dei dati. Tutta la lettura e la scrittura dei dati inizia dal bit più basso.
DATAQUP1.0
……
INIZIAL:CLREA
INI10:SETBDAT
MOVR2,#200
INI11:CLRDAT
DJNZR2,INI11; L'host invia un impulso di reset per 3μs×200=600μs
SETBDAT; L'host rilascia l'autobus, e la linea della porta viene modificata in input
MOVR2,#30
IN12:DJNZR2,INI12; DS18B20 attende 2μs×30=60μs
CLRC
ORLC,QUELLO; La linea dati DS18B20 è bassa (il polso esiste)?
JCINI10; DS18B20 non è pronto, reinizializzare
MOVR6, #80
INI13: ORLC, QUELLO
JCINI14; La linea dati DS18B20 diventa alta, l'inizializzazione ha avuto successo
DJNZR6, INI13; il livello basso della linea dati può durare 3μs × 80 = 240μs
SYMPINI10; l'inizializzazione non è riuscita, ricomincia
INI14: MOVR2, #240
IN15: DJNZR2, INI15; DS18B20 risponde per almeno 2μs × 240 = 48 0μs
RET
;--------------------------
SCRIVERE:CLREA
MOVR3,#8;Ciclo continuo 8 volte, scrivere un byte
WR11:SETBDAT
MOVR4,#8
RRCA;Il bit di scrittura si sposta da A a CY
CLRDAT
WR12:DJNZR4,WR12
;Attendere 16μs
MOVDAT,C;La parola di comando viene inviata al DS18B20 bit per bit
MOVR4,#20
WR13:DJNZR4,WR1 3
; Assicurarsi che il processo di scrittura duri 60μs
DJNZR3,WR11
; Continua prima di inviare un byte
SETBDAT
RET
;--------------------------
LEGGERE:CLREA
MOVR6,#8; Ciclo continuo 8 volte, leggere un byte
RD11:CLRDAT
MOVR4,#4
NO; Il livello basso dura 2μs
SETBDAT; Impostare la linea della porta su input
RD12:DJNZR4,RD12
; Attendere 8μs
MOVC,DA T
;L'host legge i dati del DS18B20 bit per bit
RRCA;I dati letti vengono spostati in A
MOVR5,#30
RD13:DJNZR5,RD13
;Assicurarsi che il processo di lettura duri 60μs
DJNZR6,RD11
;Dopo aver letto un byte di dati, memorizzatelo in A
SETBDAT
RET
;--------------------------
L'host deve eseguire tre passaggi per controllare DS18B20 e completare la conversione della temperatura: inizializzazione, Istruzioni per l'uso della ROM, e istruzioni per l'uso della memoria. DS18B20 deve essere avviato per avviare la conversione prima di leggere il valore di conversione della temperatura. Supponendo che solo un chip sia collegato a una linea, viene utilizzata la precisione di conversione predefinita a 12 bit, e viene utilizzato un alimentatore esterno, è possibile scrivere una subroutine GETWD per completare una conversione e leggere il valore della temperatura.
CANCELLO:LCALLINIT
MOSSA,#0CCH
LCALLWRITE; invia il comando di salto ROM
MOSSA,#44H
LCALLWRITE; inviare il comando di avvio conversione
LCALLINIT
MOSSA,#0CCH; invia il comando di salto ROM
LCALLWRITE
MOSSA,#0 BEH; inviare il comando di lettura della memoria
LCALLWRITE
LCALLREAD
MOVWDLSB,UN
; invia il byte basso del valore della temperatura a WDLSB
LCALLREAD
MOVWDMSB,UN
; invia il byte più significativo del valore della temperatura a WDMSB
RET
……
Il byte più significativo del valore della temperatura letto dalla subroutine GETWD viene inviato all'unità WDMSB, e il byte basso viene inviato all'unità WDLSB. Quindi in base al formato di rappresentazione del byte del valore della temperatura e del relativo bit di segno, il valore reale della temperatura può essere ottenuto tramite una semplice trasformazione.
Se più DS18B20 sono collegati su una linea, viene adottata la modalità di connessione dell'alimentatore parassita, configurazione dell'accuratezza della conversione, allarme limite alto e basso, ecc. sono richiesti. Quindi la scrittura della subroutine GETWD risulterà più complicata. A causa di limitazioni di spazio, questa sezione non verrà descritta in dettaglio. Si prega di fare riferimento al contenuto pertinente.
Abbiamo applicato con successo DS18B20 al “bagno di riscaldamento domestico” sistema di controllo che abbiamo sviluppato. La sua elevata velocità di conversione, elevata precisione di conversione, e la semplice interfaccia con il microprocessore hanno apportato grande comodità al lavoro di progettazione dell'hardware, riducendo efficacemente i costi e abbreviando i cicli di sviluppo.
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



