Fabricantes de sensores chinos

China Temperature Sensor & Thermistor manufacturer

Aplicación del Sensor de Temperatura Digital DS18B20 de 1 Cable

Características de DS18B20:
El sensor de temperatura digital de un solo cable DS18B20, un "dispositivo de primera línea", tiene ventajas únicas:
     (1) Cuando se conecta al microprocesador mediante una única interfaz de bus, solo se necesita una línea de puerto para lograr una comunicación bidireccional entre el microprocesador y DS18B20. El bus único tiene las ventajas de una buena economía, una gran capacidad antiinterferente, es adecuado para la medición de temperatura in situ en entornos hostiles y es fácil de usar. Permite a los usuarios construir fácilmente redes de sensores e introduce nuevos conceptos en la construcción de sistemas de medición.
     (2) Amplio rango de temperatura de medición: alta precisión de medición. El rango de medición del DS18B20 es -55 ℃ ~+ 125 ℃; dentro del rango de -10~+ 85°C, la precisión es ± 0,5°C.
     (3) No se requieren componentes externos durante el uso.
     (4) Admite la función de red multipunto: se pueden conectar varios DS18B20 en paralelo en una sola línea para lograr una medición de temperatura multipunto.
     (5) Método de suministro de energía flexible: DS18B20 puede obtener energía de la línea de datos a través de circuitos parásitos internos. Por lo tanto, cuando la sincronización en la línea de datos cumple ciertos requisitos, no se puede conectar ninguna fuente de alimentación externa, lo que hace que la estructura del sistema sea más simple y confiable.
     (6) Los parámetros de medición son configurables: la resolución de medición del DS18B20 se puede configurar en 9 ~ 12 bits a través del programa.
     (7) Características de voltaje negativo: cuando se invierte la polaridad de la fuente de alimentación, el termómetro no se quemará debido al calor, pero no funcionará correctamente.
     (8) Función de protección de apagado: DS18B20 contiene una EEPROM en su interior, que aún puede guardar la configuración de resolución y temperatura de alarma después de apagar el sistema.
     DS18B20 tiene un tamaño más pequeño, un voltaje aplicable más amplio, un paquete más económico, opcional más pequeño y un rango de voltaje aplicable más amplio. Es adecuado para construir su propio sistema económico de medición de temperatura, por lo que los diseñadores lo prefieren.

Sensor de temperatura DS18B20 impermeable con conector de audio Sensor de temperatura digital DS18B20 en carcasa de ABS
Sensor de temperatura DS18B20 impermeable con conector de audio Sensor de temperatura digital DS18B20 en carcasa de ABS

Estructura interna DS18B20:
Compuesto principalmente por 4 partes: ROM de 64 bits, sensor de temperatura, disparador de alarma de temperatura no volátil TH y TL, registro de configuración. El número de serie de 64 bits en la ROM está fotograbado antes de salir de fábrica. Puede considerarse como el número de serie de dirección 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=X^8+X^5+X^4+1) de la ROM de 64 bits. La función de la ROM es hacer que cada DS18B20 sea diferente, de modo que se puedan conectar varios DS18B20 a un bus.

Disposición de pines DS18B20:
1. GND es la tierra eléctrica;
2. DQ es el terminal de entrada/salida de señal digital;
3. VDD es el terminal de entrada de la fuente de alimentación externa (conectado a tierra en el modo de cableado de alimentación parásito)

Composición interna DS18B20:
La memoria del scratchpad consta de 9 bytes. Cuando se emite el comando de conversión de temperatura, el valor de temperatura convertido se almacena en los bytes 0 y 1 de la memoria caché en forma de complemento de dos bytes. El microcontrolador puede leer estos datos a través de la interfaz de un solo cable. Al leer, el bit bajo está al frente y el bit alto está detrás. Cálculo de temperatura correspondiente: cuando el bit de signo S = 0, convierta directamente los bits binarios a decimales. Cuando S = 1, primero cambie el código complementario al código original y luego calcule el valor decimal.

Los ocho bits inferiores de datos de temperatura 0
Datos altos de 8 bits de temperatura 1
Umbral de alta temperatura 2
Umbral de baja temperatura 3
Reservado 4
Reservado 5
Cuente el valor restante 6
Cuenta por grado 7
control CRC 8

El sensor de temperatura en DS18B20 completa la medición de temperatura y la proporciona en formato binario de 16 bits, donde S es el bit de signo.

Por ejemplo:
+125 ℃ salida digital 07D0H
(La temperatura positiva convierte directamente el número hexadecimal en decimal para obtener el valor de temperatura)

La salida digital de -55 ℃ es FC90H.
(Para temperatura negativa, invierta el número hexadecimal obtenido, agregue 1 y luego conviértalo a un número decimal)

Secuencia de trabajo de DS18B20:

Tiempo de inicialización

El host primero envía un pulso de bajo nivel de 480 a 960 microsegundos, luego libera el bus a un nivel alto y detecta el bus dentro de los 480 microsegundos siguientes. Si aparece un nivel bajo, significa que un dispositivo del bus ha respondido. Si no hay un nivel bajo, siempre es un nivel alto, lo que indica que no hay respuesta del dispositivo en el bus.
Como dispositivo esclavo, DS18B20 ha estado detectando si hay un nivel bajo de 480-960 microsegundos en el bus tan pronto como se enciende. Si es así, espere entre 15 y 60 microsegundos después de que el bus alcance el nivel alto, luego baje el nivel del bus durante 60 a 240 microsegundos para responder con un pulso, indicando al host que el dispositivo está listo. Si no se detecta, seguirá comprobando y esperando.

operación de escritura

El ciclo de escritura es de un mínimo de 60 microsegundos y un máximo de 120 microsegundos. Al comienzo del ciclo de escritura, el maestro primero baja el bus durante 1 microsegundo para indicar el inicio del ciclo de escritura. Posteriormente, si el host quiere escribir 0, continuará tirando del nivel bajo durante al menos 60 microsegundos hasta el final del ciclo de escritura y luego liberará el bus a un nivel alto. Si el host quiere escribir 1, inicialmente bajará el nivel del bus durante 1 microsegundo y luego liberará el nivel del bus a un nivel alto hasta el final del ciclo de escritura. Como esclavo, DS18B20 espera 15 microsegundos después de detectar que el bus está apagado y luego comienza a muestrear el bus de 15us a 45us. Es 1 si el nivel del bus es alto durante el período de muestreo y 0 si el nivel del bus es bajo durante el período de muestreo.

Leer operación

El tiempo de la operación de lectura de datos también se divide en dos procesos: tiempo de lectura 0 y tiempo de lectura 1. El intervalo de tiempo de lectura es después de que el host baja el bus único y luego lo libera al nivel alto después de 1 microsegundo para permitir que DS18B20 transmita datos al bus único. DS18B20 comienza a enviar datos después de detectar que el bus está bajo durante 1 microsegundo. Si quiere enviar 0, baja el bus hasta el final del ciclo de lectura. Si desea enviar 1, suelte el bus al nivel alto. Inicialmente, el host baja el bus durante 1 microsegundo y luego lo libera, y luego completa el muestreo y la detección del bus en 15 microsegundos, incluido el microsegundo anterior de bajar el nivel del bus. Durante el período de muestreo, el bus está bajo. nivel Se confirma que es 0. Si el bus está alto durante el período de muestreo, se confirma como 1. Se necesitan al menos 60 us para completar un proceso de sincronización de lectura.

Comunicación de un solo cable DS18B20:
La función de comunicación de línea única del DS18B20 se completa en tiempo compartido y tiene un concepto de intervalo de tiempo estricto. Si se produce un desorden en la secuencia, el dispositivo 1-WIRE no responderá al host, por lo que la sincronización de lectura y escritura es importante. Se deben realizar varias operaciones del sistema en DS18B20 de acuerdo con el protocolo. Según el protocolo DS18B20, el microcontrolador controla el DS18B20 para completar la conversión de temperatura mediante los siguientes tres pasos:
(1) Reinicie e inicialice DS18B20 antes de cada lectura y escritura. El reinicio requiere que la CPU principal baje la línea de datos durante 500us y luego la suelte. Después de recibir la señal, DS18B20 espera aproximadamente 16 us ~ 60 us y luego envía un pulso bajo de 60 us ~ 240 us. Después de que la CPU principal recibe esta señal, indica que el reinicio se realizó correctamente.
(2) Enviar un comando ROM
(3) Enviar comando de memoria

Ejemplos de operación específicos:
Ahora lo que tenemos que hacer es dejar que DS18B20 realice una conversión de temperatura, la operación específica es:
1. El host realiza primero una operación de reinicio.
2. Luego, el host escribe el comando de operación de omisión de ROM (CCH).
3. Luego, el host escribe un comando de operación para convertir la temperatura y luego libera el bus durante al menos un segundo para permitir que el DS18B20 complete la operación de conversión. Lo que se debe tener en cuenta aquí es que al escribir cada byte de comando, el byte bajo se escribe primero. Por ejemplo, el número binario de CCH es 11001100. Al escribir en el bus, debe escribirse desde el bit bajo, el orden de escritura es "cero, cero, uno, uno, cero, cero, uno, uno". El estado del autobús de toda la operación se muestra a continuación.

Lea los datos de temperatura en la RAM. De manera similar, esta operación también requiere tres pasos.
1. El host emite una operación de reinicio y recibe el pulso de respuesta (existencia) de DS18B20.
2. El host emite un comando (CCH) para omitir la operación de la ROM.
3. El host emite un comando de lectura de RAM (BEH) y luego lee nueve bytes de datos del 0 al 8 enviados por DS18B20 en secuencia. Si solo desea leer los datos de temperatura, simplemente ignore los datos posteriores enviados por DS18B20 después de leer los datos 0 y 1. De manera similar, la lectura de datos también es de orden inferior. El estado del bus de toda la operación es el siguiente:

Código de lenguaje C:
poco DQ=P3^3;
uchar t; //Establece variables globales, utilizadas específicamente para programas de retardo

bit Init_DS18B20 (nulo)
{
bandera de bits;
DQ=1;
_nop_(); //??????????????? for(t=0;t<2;t++);
DQ=0;
para(t=0;t<200;t++);
DQ=1;
for(t=0;t<15;t++);//???????????????? for(t=0;t<10;t++);
bandera=DQ;
para(t=0;t<200;t++);
bandera de retorno;
}

uchar ReadOneChar(vacío)
{
uchar i=0;
uchar dat;
para(i=0;i<8;i++)
{
DQ=1;
_nop_();
DQ=0;
_nop_();
DQ=1; //Subido artificialmente para preparar que el microcontrolador detecte el nivel de salida de DS18B20
for(t=0;t<3;t++);//Retraso mes 9us?????????????????????????????? for(t=0 ;t<2;t++);
datos>>=1;
si(DQ==1)
{
datos|=0x80;
}
demás
datos|=0x00;
for(t=0;t<1;t++);//Retraso 3us, se requiere al menos 1us de período de recuperación entre dos secuencias de lectura?????????for(t=0;t<8 ;t++) );
}
devolver fecha;
}

void WriteOneChar(uchar dat)
{
uchar i=0;
para(i=0;i<8;i++)
{
DQ=1;
_nop_();
DQ=0;
_nop_();// ????????????????????????????????????????????? ??
DQ=dat&0x01;
for(t=0;t<15;t++);//El retraso es de aproximadamente 45us, DS18B20 muestra datos en 15~60us????????????for(t=0;t <10; t++);
DQ=1; //Libera la línea de datos
for(t=0;t<1;t++); //Retraso de 3us, se requiere al menos 1us de período de recuperación entre dos secuencias de escritura
datos>>=1;
}
para(t=0;t<4;t++);
}

anular ReadyReadTemp (anular)
{
Init_DS18B20();
WriteOneChar(0xcc);
WriteOneChar(0x44);
retrasonms(1000);//???????????????????????????? retrasonms(200);
Init_DS18B20();
WriteOneChar(0xcc);
WriteOneChar(0xbe);
}
PREV:Microcontrolador·Sensor de Temperatura DS18B20
NEXT:LabVIEW Controla Múltiples Valores de Temperatura DS18B20

RELATED POSTS




Skype

WhatsApp

WangWang

QQ
Email me

Mail to us