Tecnología de sensores de temperatura

Diseño de la función de medición de temperatura del sensor de temperatura digital DS18B20

Función de medición de temperatura del sensor de temperatura digital DS18B20

DS18B20 es un sensor de temperatura digital de 1 cable producido por DALLAS, con un paquete pequeño TO-92 de 3 pines. El rango de medición de temperatura es -55 ℃ ~ +125 ℃, y se puede programar con una precisión de conversión A/D de 9 bits a 12 bits. La resolución de medición de temperatura puede alcanzar 0,0625 ℃, y la temperatura medida se emite en serie en forma de una cantidad digital de 16 bits con extensión de signo. Su fuente de alimentación de trabajo puede introducirse en el extremo remoto o generarse mediante una fuente de alimentación parásita.. Se pueden conectar varios DS18B20 en paralelo a 3 o 2 pauta. La CPU solo necesita una línea de puerto para comunicarse con muchos DS18B20, ocupando menos puertos del microprocesador, Lo que puede ahorrar muchos cables y circuitos lógicos.. Las características anteriores hacen que el DS18B20 sea muy adecuado para sistemas de detección de temperatura multipunto de larga distancia..

Función de medición de temperatura del sensor de temperatura digital DS18B20

Función de medición de temperatura del sensor de temperatura digital DS18B20

2. Estructura interna del diagrama de circuito DS18B20 ds18b20
La estructura interna de DS18B20 se muestra en la Figura 1, que consiste principalmente en 4 regiones: 64-bit ROM, sensor de temperatura, La alarma de temperatura no volátil desencadena TH y TL, y registros de configuración. La disposición de los pines del DS18B20 se muestra en la Figura 2. DQ es el terminal de entrada/salida de señal digital; GND es el terreno de poder; VDD es el terminal de entrada de la fuente de alimentación externa (conectado a tierra en modo de cableado de energía parásita, ver figura 4).

El número de serie de 64 bits en la ROM está fotograbado antes de salir de fábrica. Puede considerarse como el código de secuencia de direcciones del DS18B20.. El número de serie de 64 bits de cada DS18B20 es diferente. El código de verificación de redundancia cíclica (CRC=X8+X5+X4+1) de la ROM de 64 bits está dispuesta. La función de la ROM es hacer que cada DS18B20 sea diferente, para que múltiples DS18B20 se puedan conectar a un bus.

Estructura interna del chip DS18B20

Estructura interna del chip DS18B20

Cifra 1, estructura interna de DS18B20

El sensor de temperatura en DS18B20 completa la medición de temperatura., que se proporciona en forma de lecturas de complemento binario con signo extendido de 16 bits, expresado en forma de 0,0625 ℃/LSB, donde s es el bit de signo. Por ejemplo, La salida digital de +125 ℃ es 07d0h, La salida digital de +25.0625 ℃ es 0191H, la salida digital de -25.0625 ℃ es FF6FH, y la salida digital de -55 ℃ es FC90H.

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

Valor de temperatura byte bajo
MSBLSB
S
S
S
S
S
22
25
24

Valor de temperatura byte alto
La alarma de alta y baja temperatura activa TH y TL, y el registro de configuración se componen de un byte de EEPROM. Se puede utilizar un comando de función de memoria para escribir en TH, TL, o el registro de configuración. El formato del registro de configuración es el siguiente:

0
R1
R0
1
1
1
1
1
MSBLSB

R1 y R0 determinan el número de dígitos de precisión para la conversión de temperatura: R1R0 = “00”, 9-precisión de bits, El tiempo máximo de conversión es 93,75 ms.; R1R0 = “01”, 10-precisión de bits, El tiempo máximo de conversión es de 187,5 ms.. R1R0 = “10”, 11-precisión de bits, El tiempo máximo de conversión es de 375 ms.. R1R0 = “11”, 12-precisión de bits, El tiempo máximo de conversión es de 750 ms.. El valor predeterminado es una precisión de 12 bits cuando no está programado.

El registro de alta velocidad es una memoria de 9 bytes.. Los primeros dos bytes contienen la información digital de la temperatura medida.; el tercero, 4th, y el quinto byte son copias temporales de TH, TL, y registros de configuración, respectivamente, y se actualizan cada vez que se produce un reinicio de encendido; el 6, 7th, y el octavo byte no se utilizan y se representan como todos 1 lógicos.; el noveno byte lee el código CRC de todos los anteriores 8 bytes, que se puede utilizar para garantizar una comunicación correcta.

3. Secuencia de trabajo DS18B20
El flujo del protocolo de trabajo de primera línea de DS18B20 es: inicialización → instrucción de operación de ROM → instrucción de operación de memoria → transmisión de datos. Su secuencia de trabajo incluye secuencia de inicialización., escribir secuencia y leer secuencia, como se muestra en la figura 3 (a) (b) (do).

(a) Secuencia de inicialización
(do) Leer secuencia

Diagrama de circuito de conexión típico de DS18B20 y microprocesador.

Diagrama de circuito de conexión típico de DS18B20 y microprocesador.

Cifra 3, Diagrama de secuencia de trabajo DS18B20

4. Diseño de interfaz típico de DS18B20 y microcomputadora de un solo chip
Cifra 4 Toma como ejemplo el microordenador de un solo chip de la serie MCS-51 para dibujar la conexión típica entre DS18B20 y el microprocesador.. En la figura 4 (a), DS18B20 adopta el modo de fuente de alimentación parásita, y sus terminales VDD y GND están conectados a tierra. En la figura 4 (b), DS18B20 adopta el modo de fuente de alimentación externa, y su terminal VDD está alimentado por una fuente de alimentación de 3V ~ 5,5 V.

a) Modo de trabajo de la fuente de alimentación parásita
(b) Modo de trabajo de fuente de alimentación externa

Diagrama de tiempos de trabajo DS18B20

Diagrama de tiempos de trabajo DS18B20

Cifra 4 Diagrama de conexión típico de DS18B20 y microprocesador.

Suponiendo que la frecuencia del cristal utilizada por el sistema de microcomputadora de un solo chip es de 12MHz, Se escriben tres subrutinas de acuerdo con el tiempo de inicialización., escribir tiempo y leer tiempo de DS18B20: INIT es la subrutina de inicialización; ESCRIBIR es la escritura (comando o datos) subrutina; READ es la subrutina de lectura de datos.. Toda la lectura y escritura de datos comienza desde el bit más bajo..

FECHAQUP1.0
……
INICIAR:CLREA
INI10:SETBDAT
MOVR2,#200
INI11:CLRDAT
DJNZR2,INI11; El host envía un pulso de reinicio de 3μs×200=600μs
SETBDAT; El anfitrión suelta el autobús., y la línea del puerto se cambia a entrada
MOVR2,#30
IN12:DJNZR2,INI12; DS18B20 espera 2μs×30=60μs
CLRC
ORLC,ESO; ¿La línea de datos DS18B20 está baja? (el pulso existe)?
JCINI10; DS18B20 no está listo, reinicializar
MOVR6, #80
INI13: ORLC, ESO
JCINI14; La línea de datos DS18B20 se vuelve alta, la inicialización es exitosa
DJNZR6, INI13; El nivel bajo de la línea de datos puede durar 3μs × 80 = 240μs
SYMPINI10; la inicialización falló, Reanudar
INI14: MOVR2, #240
EN15: DJNZR2, INI15; DS18B20 responde durante al menos 2 μs × 240 = 48 0μs
RETIRADO

;-------------------------
ESCRIBIR:CLREA
MOVR3,#8;Bucle 8 veces, escribe un byte
WR11:SETBDAT
MOVR4,#8
RRCA;Escribir movimientos de bits de A a CY
CLRDAT
WR12:DJNZR4,WR12
;Espere 16 μs
MOVDAT,do;La palabra de comando se envía al DS18B20 bit a bit
MOVR4,#20
WR13:DJNZR4,WR1 3
; Asegúrese de que el proceso de escritura dure 60 μs
DJNZR3,WR11
; Continuar antes de enviar un byte
SETBDAT
RETIRADO

;------------------------
LEER:CLREA
MOVR6,#8; Bucle 8 veces, leer un byte
RD11:CLRDAT
MOVR4,#4
NOP; El nivel bajo dura 2μs
SETBDAT; Configure la línea del puerto para ingresar
RD12:DJNZR4,RD12
; Espere 8μs
MOVC,DE T
;El host lee los datos de DS18B20 bit a bit
RRCA;Los datos leídos se mueven a A.
MOVR5,#30
RD13:DJNZR5,RD13
;Asegúrese de que el proceso de lectura dure 60 μs
DJNZR6,RD11
;Después de leer un byte de datos, guárdalo en A
SETBDAT
RETIRADO
;-------------------------
El host debe seguir tres pasos para controlar el DS18B20 y completar la conversión de temperatura.: inicialización, Instrucciones de funcionamiento de la ROM, e instrucciones de funcionamiento de la memoria. Se debe iniciar DS18B20 para iniciar la conversión antes de leer el valor de conversión de temperatura.. Suponiendo que solo un chip está conectado a una línea, se utiliza la precisión de conversión predeterminada de 12 bits, y se utiliza una fuente de alimentación externa, Se puede escribir una subrutina GETWD para completar una conversión y leer el valor de temperatura..

PUERTA:LCALLINIT
MOVER,#0CCH
LCALLWRITE; enviar comando de omitir ROM
MOVER,>44H
LCALLWRITE; enviar comando de inicio de conversión
LCALLINIT
MOVER,#0CCH; enviar comando de omitir ROM
LCALLWRITE
MOVER,#0 BEH; enviar comando de lectura de memoria
LCALLWRITE
LCALLREAD
MOVWDLSB,A
; enviar byte bajo del valor de temperatura a WDLSB
LCALLREAD
MOVWDMSB,A
; enviar byte alto del valor de temperatura a WDMSB
RETIRADO
……

El byte alto del valor de temperatura leído por la subrutina GETWD se envía a la unidad WDMSB, y el byte bajo se envía a la unidad WDLSB. Luego, de acuerdo con el formato de representación del byte del valor de temperatura y su bit de signo, el valor de temperatura real se puede obtener mediante una simple transformación.

Si hay varios DS18B20 conectados en una línea, Se adopta el modo de conexión de fuente de alimentación parásita., configuración de precisión de conversión, alarma de límite alto y bajo, etc.. son requeridos. Entonces la escritura de la subrutina GETWD será más complicada.. Debido a limitaciones de espacio, esta sección no se describirá en detalle. Consulte el contenido relevante..

Hemos aplicado con éxito DS18B20 al “baño calefactor doméstico” sistema de control que desarrollamos. Su rápida velocidad de conversión, alta precisión de conversión, y una interfaz sencilla con el microprocesador han aportado una gran comodidad al trabajo de diseño de hardware., Reducir eficazmente los costos y acortar los ciclos de desarrollo..