Aplicación Del sensor Digital DS18B20
La tecnología de bus de 1 cable tiene las características de ahorro de recursos de E/S, estructura simple, bajo costo, fácil expansión del bus y mantenimiento conveniente. Por lo tanto, es ampliamente utilizado en sistemas distribuidos de medición de temperatura. El sensor de temperatura inteligente de bus único DS18B20 producido por la empresa estadounidense DALLAS es un producto típico que utiliza tecnología de bus 1-Wire. DS18B20 transmite secuencias de comandos específicas y comunica datos a través de un solo cable según el protocolo 1-Wire. Una característica muy importante de esta serie de productos es que cada dispositivo se escribe con un código ROM o número de serie único de 64 bits antes de salir de fábrica, y el byte menos significativo es el código de familia. Representa el tipo de dispositivo. Por ejemplo, el código de familia de DS1990A es 01H y el código de familia de DS18B20 es 28H. Debido a que se pueden conectar varios dispositivos 1-Wire de la misma serie o de series diferentes al mismo bus 1-Wire al mismo tiempo, el host debe poder determinar cómo acceder correctamente a cada dispositivo en el bus 1-Wire. El código de familia en el código ROM de 64 bits proporciona el tipo de dispositivo y los siguientes 6 bytes son el número de serie único del dispositivo para distinguir diferentes dispositivos de la misma serie. Este número de serie sirve como dirección del dispositivo en el bus 1-Wire. De esta forma, todos los dispositivos del bus 1-Wire junto con el host forman una micro LAN. Se comunican a través de una línea común.
2. Características del sensor de temperatura digital y diagrama de bloques de funciones.
La función principal de DS18B20 es que se puede convertir directamente en cantidades digitales. Dado que cada sensor de temperatura inteligente DS18B20 tiene un número de serie único de 64 bits. Permite que varios DS18B20 funcionen en el mismo bus. Por lo tanto, se puede usar una microcomputadora de un solo chip para controlar múltiples sensores de temperatura digitales DS18B20 en un rango amplio, que a menudo se usa en control de temperatura ambiente, sistemas de monitoreo de temperatura y sistemas de control y monitoreo de procesos. El byte más significativo del número de serie de 64 bits del dispositivo 1-Wire es el código CRC de verificación de redundancia cíclica. El valor se basa en los 56 bits de datos anteriores. Cuando el host del sistema comienza a comunicarse con un dispositivo, puede leer 8 bytes de ROM a partir del bit de orden inferior, que es el número de serie de 64 bits.
El rango de medición de temperatura del sensor de temperatura con tecnología de bus de 1 cable DS18B20 es - 55 ℃ ~ + 125 ℃. La memoria del bloc de notas contiene un registro de temperatura de dos bytes que se utiliza para almacenar la salida digital del sensor de temperatura. Además, se proporcionan un registro de límite superior de alarma de byte TH y un registro de límite inferior de alarma de byte TL. También hay un registro de configuración de bytes. El registro de configuración permite al usuario establecer la resolución de 9 a 12 bits. Correspondiente a los valores de temperatura 0,5 ℃, 0,25 ℃, 0,125 ℃ y 0,0625 ℃ respectivamente. Los registros TH, TL y de configuración se pueden almacenar en EEPROM, de modo que cuando el sistema esté apagado, los datos en TH, TL y los registros de configuración aún se guardarán. El bloque funcional del sensor de temperatura DS18B20 de la tecnología de bus 1-Wire se muestra en la Figura 1.
Figura 1 Diagrama de bloques funcional del sensor de temperatura con tecnología 1-Wire DS18B20
3. Comandos ROM y comandos de función del sensor de temperatura digital.
Para que el sensor de temperatura DS18B20 de tecnología de bus 1-Wire funcione normalmente, los comandos relevantes deben ejecutarse en un orden determinado. Primero realice la inicialización, en segundo lugar ejecute los comandos ROM y finalmente ejecute los comandos de función DS18B20. Hay 5 comandos ROM de uso común. Cada comando es un byte. Antes de enviar el comando de función DS18B20, la CPU principal debe emitir el comando ROM apropiado. Los cinco comandos operativos para ROM incluyen el comando de búsqueda de ROM (código: F0H), el comando de ROM (código: 33H), el comando de coincidencia de ROM (código: 55H), el comando de omisión de ROM (código: CCH) y el comando de búsqueda de alarma (código: ECH) .
Después de que la CPU principal usa el comando ROM, si accede al dispositivo esclavo DS18B20 con el que desea comunicarse, la CPU principal puede emitir un comando de función DS18B20. Existen principalmente 5 comandos funcionales para el sensor de temperatura DS18B20 que utiliza tecnología de bus 1-Wire. Estos comandos permiten que la CPU principal lea o escriba la memoria temporal del DS18B20, inicie conversiones de temperatura y determine el modo de la fuente de alimentación. Los comandos de función DS18B20 se describen a continuación.
1. El comando de conversión de temperatura (código 44H) hace que el DS18B20 inicie la conversión. Los datos de temperatura convertidos se almacenan en el registro de temperatura de dos bytes.
2. El comando de escritura de memoria de notas (código 4EH) permite que la CPU principal escriba 3 bytes de datos en la memoria de notas. El primer byte de datos se escribe en el registro TH, el segundo byte de datos se escribe en el registro TL y el tercer byte de datos se escribe en el registro de configuración. Los datos se escriben empezando por el bit menos significativo. Se deben escribir tres bytes antes de que la CPU principal emita un impulso de reinicio.
3. El comando leer memoria de notas (código BEH) permite que la CPU principal lea el contenido de la memoria de notas. La transferencia de datos comienza desde el bit menos significativo del byte 0 al byte 8. Se lee el contenido de 9 bytes de la memoria de notas. El byte 8 es el código de verificación CRC. Si solo es necesario leer una parte de los bytes de la memoria del bloc de notas, la CPU principal puede enviar un pulso de reinicio en cualquier momento para finalizar la operación de lectura.
4. El comando copiar memoria de notas (código 48H) copiará los bytes 2, 3 y 4 de la memoria de notas, es decir, el contenido de TH, TL y los registros de configuración, a la EEPROM.
5. El comando de recuperación de EEPROM (código B8H) recuperará el contenido de TH, TL y los registros de configuración de EEPROM y colocará los datos en los bytes 2, 3 y 4 de la memoria del bloc de notas. La recuperación del comando de EEPROM (código B8H) se ejecutará automáticamente al encender.
4. Componentes de hardware del sistema de alarma contra incendios
El sistema de alarma contra incendios consta de AT89C51, circuito de reloj en tiempo real DS1302, circuito de teclado y pantalla, circuito de comunicación RS485, circuito de vigilancia compuesto por MAX813L, circuito de memoria serie E2PROM, etc. Usando múltiples sensores para medir la temperatura en diferentes habitaciones, puede establecer los límites superiores de alarma para diferentes habitaciones y realizar la visualización y alarma de las temperaturas correspondientes en varias habitaciones.
La composición del hardware del sistema de alarma contra incendios se muestra en la Figura 2.
Figura 2, Diagrama de composición del hardware del sistema de alarma contra incendios
5. Método de suministro de energía del sensor de temperatura digital con tecnología de bus de 1 cable
Hay dos tipos de fuentes de alimentación para DS18B20. Modo de fuente de alimentación externa y modo de fuente de alimentación parásita. El método de fuente de alimentación externa se muestra en la Figura 3. El pin VDD en la Figura 3 está conectado a la fuente de alimentación externa. El método de fuente de alimentación parásita no requiere una fuente de alimentación externa como se muestra en la Figura 4. Cuando se trabaja en modo de fuente de alimentación parásita, tanto VDD como GND están conectados a tierra. Muy útil cuando se requiere detección remota de temperatura y el espacio es limitado. En la Figura 3, cuando el bus 1-Wire está alto, DS18B20 "roba" energía del bus 1-Wire a través del pin DQ, y la carga robada suministra energía al bus. Cuando el bus está bajo, la carga almacenada en la capacitancia de suministro parásito alimenta el sensor. Cuando DS18B20 se utiliza en modo de fuente de alimentación parásita, VDD debe conectarse a tierra. Sin embargo, en el modo de fuente de alimentación parásita, cuando el DS18B20 realiza la conversión de temperatura y copia el contenido de la memoria del scratch pad a la EEPROM, la corriente de funcionamiento puede alcanzar 1,5 mA. Esta corriente puede hacer que el voltaje caiga significativamente e impedir que el sensor funcione correctamente. Para garantizar que el DS18B20 tenga suficiente corriente de suministro, se debe proporcionar un pull-up lo suficientemente fuerte en el bus al realizar la conversión de temperatura y copiar el contenido de la memoria del scratch pad a EEPROM. Se puede utilizar un tubo MOSFET para levantar el autobús, como se muestra en la Figura 4. Generalmente, cuando la temperatura detectada supera los 100°C, se recomienda no utilizar una fuente de alimentación parásita sino una fuente de alimentación externa. Porque a temperaturas tan altas, es imposible que el DS18B20 mantenga la comunicación de datos debido a la alta corriente de fuga. Por lo tanto, cuando las condiciones lo permitan, intente utilizar una fuente de alimentación externa.
Figura 3, método de fuente de alimentación externa de DS18B20
Figura 4, Modo de fuente de alimentación parásita de DS18B20
6. Diagrama de flujo de procesamiento y recolección de temperatura.
El sistema de alarma contra incendios diseñado en base al microcontrolador AT89C51 utiliza un sensor de temperatura inteligente DS18B20. Después de leer correctamente el número de serie de 64 bits, se debe escribir un programa de lectura de temperatura de acuerdo con estrictos requisitos de tiempo. El microcontrolador debe seguir el flujo de comando de DS18B20 para controlar la conversión de temperatura de DS18B20. Primero, se ejecuta la secuencia de inicialización y luego el microcontrolador emite un comando de omisión de ROM (el código es CCH). Este comando es para todos los DS18B20 en línea. Luego, el microcontrolador emite un comando de inicio de conversión (código 44H) para iniciar DS18B20 y completar la conversión de temperatura. Para una resolución de 12 bits, se requiere un retraso de 750 ms. Luego se ejecuta la secuencia de inicialización y luego el microcontrolador emite un comando ROM de coincidencia (código 55H) y un número de serie de 64 bits en la línea de datos, y luego emite un comando de lectura de 9 bytes (código BEH). Puede leer la temperatura correcta correspondiente después de completar la conversión de temperatura del número de serie correspondiente del sensor de temperatura inteligente DS18B20. El diagrama de flujo de procesamiento y adquisición de temperatura basado en DS18B20 se muestra en la Figura 5.
Figura 5 Diagrama de flujo del programa de procesamiento y adquisición de temperatura DS18B20 basado en tecnología 1-Wire
7. Conclusión
El método tradicional de medición de temperatura es transmitir la señal analógica al circuito de muestreo para la conversión A / D. Para obtener una mayor precisión, es necesario resolver el problema de la conmutación de medición multipunto y la deriva del punto cero del circuito de amplificación. . La aparición de sensores de temperatura digitales con tecnología de bus 1-Wire puede resolver mejor los problemas anteriores. La innovación del autor en este artículo es aplicar la tecnología de bus 1-Wire, utilizar múltiples sensores de temperatura digitales para diseñar un sistema de alarma contra incendios, analizar el modo y las características de la fuente de alimentación del sensor y elaborar los comandos ROM y los comandos de función del sensor de temperatura digital. Basado en AT89C51, se diseñan el circuito de visualización del reloj en tiempo real, el circuito de visualización del teclado, el circuito de memoria en serie, el circuito de comunicación RS485, el circuito de vigilancia, etc., y se explica el diagrama de composición del hardware del sistema de alarma contra incendios. Diseñé un diagrama de flujo para la adquisición de temperatura y escribí un programa para completar la visualización correcta de la temperatura. El sensor de temperatura DS18B20 con tecnología 1-Wire convierte la señal de temperatura directamente en una señal digital en serie para el procesamiento del microcontrolador. Se conectan varios sensores a una única interfaz de bus y la temperatura in situ se transmite directamente en un formato de bus digital para formar fácilmente un sistema distribuido de medición de temperatura multipunto. El uso de sensores de temperatura digitales con tecnología de bus 1-Wire reduce efectivamente los costos, haciendo que los sistemas de aplicación sean altamente confiables y con largas distancias de transmisión. Se ha utilizado ampliamente en sistemas de alarma contra incendios con medición distribuida de temperatura.
La función principal de DS18B20 es que se puede convertir directamente en cantidades digitales. Dado que cada sensor de temperatura inteligente DS18B20 tiene un número de serie único de 64 bits. Permite que varios DS18B20 funcionen en el mismo bus. Por lo tanto, se puede usar una microcomputadora de un solo chip para controlar múltiples sensores de temperatura digitales DS18B20 en un rango amplio, que a menudo se usa en control de temperatura ambiente, sistemas de monitoreo de temperatura y sistemas de control y monitoreo de procesos. El byte más significativo del número de serie de 64 bits del dispositivo 1-Wire es el código CRC de verificación de redundancia cíclica. El valor se basa en los 56 bits de datos anteriores. Cuando el host del sistema comienza a comunicarse con un dispositivo, puede leer 8 bytes de ROM a partir del bit de orden inferior, que es el número de serie de 64 bits.
El rango de medición de temperatura del sensor de temperatura con tecnología de bus de 1 cable DS18B20 es - 55 ℃ ~ + 125 ℃. La memoria del bloc de notas contiene un registro de temperatura de dos bytes que se utiliza para almacenar la salida digital del sensor de temperatura. Además, se proporcionan un registro de límite superior de alarma de byte TH y un registro de límite inferior de alarma de byte TL. También hay un registro de configuración de bytes. El registro de configuración permite al usuario establecer la resolución de 9 a 12 bits. Correspondiente a los valores de temperatura 0,5 ℃, 0,25 ℃, 0,125 ℃ y 0,0625 ℃ respectivamente. Los registros TH, TL y de configuración se pueden almacenar en EEPROM, de modo que cuando el sistema esté apagado, los datos en TH, TL y los registros de configuración aún se guardarán. El bloque funcional del sensor de temperatura DS18B20 de la tecnología de bus 1-Wire se muestra en la Figura 1.
Figura 1 Diagrama de bloques funcional del sensor de temperatura con tecnología 1-Wire DS18B20
Sensor de temperatura DS18B20 personalizado | Sonda de temperatura DS18B20 impermeable IP68 + conector de audio de 3,5 mm |
3. Comandos ROM y comandos de función del sensor de temperatura digital.
Para que el sensor de temperatura DS18B20 de tecnología de bus 1-Wire funcione normalmente, los comandos relevantes deben ejecutarse en un orden determinado. Primero realice la inicialización, en segundo lugar ejecute los comandos ROM y finalmente ejecute los comandos de función DS18B20. Hay 5 comandos ROM de uso común. Cada comando es un byte. Antes de enviar el comando de función DS18B20, la CPU principal debe emitir el comando ROM apropiado. Los cinco comandos operativos para ROM incluyen el comando de búsqueda de ROM (código: F0H), el comando de ROM (código: 33H), el comando de coincidencia de ROM (código: 55H), el comando de omisión de ROM (código: CCH) y el comando de búsqueda de alarma (código: ECH) .
Después de que la CPU principal usa el comando ROM, si accede al dispositivo esclavo DS18B20 con el que desea comunicarse, la CPU principal puede emitir un comando de función DS18B20. Existen principalmente 5 comandos funcionales para el sensor de temperatura DS18B20 que utiliza tecnología de bus 1-Wire. Estos comandos permiten que la CPU principal lea o escriba la memoria temporal del DS18B20, inicie conversiones de temperatura y determine el modo de la fuente de alimentación. Los comandos de función DS18B20 se describen a continuación.
1. El comando de conversión de temperatura (código 44H) hace que el DS18B20 inicie la conversión. Los datos de temperatura convertidos se almacenan en el registro de temperatura de dos bytes.
2. El comando de escritura de memoria de notas (código 4EH) permite que la CPU principal escriba 3 bytes de datos en la memoria de notas. El primer byte de datos se escribe en el registro TH, el segundo byte de datos se escribe en el registro TL y el tercer byte de datos se escribe en el registro de configuración. Los datos se escriben empezando por el bit menos significativo. Se deben escribir tres bytes antes de que la CPU principal emita un impulso de reinicio.
3. El comando leer memoria de notas (código BEH) permite que la CPU principal lea el contenido de la memoria de notas. La transferencia de datos comienza desde el bit menos significativo del byte 0 al byte 8. Se lee el contenido de 9 bytes de la memoria de notas. El byte 8 es el código de verificación CRC. Si solo es necesario leer una parte de los bytes de la memoria del bloc de notas, la CPU principal puede enviar un pulso de reinicio en cualquier momento para finalizar la operación de lectura.
4. El comando copiar memoria de notas (código 48H) copiará los bytes 2, 3 y 4 de la memoria de notas, es decir, el contenido de TH, TL y los registros de configuración, a la EEPROM.
5. El comando de recuperación de EEPROM (código B8H) recuperará el contenido de TH, TL y los registros de configuración de EEPROM y colocará los datos en los bytes 2, 3 y 4 de la memoria del bloc de notas. La recuperación del comando de EEPROM (código B8H) se ejecutará automáticamente al encender.
4. Componentes de hardware del sistema de alarma contra incendios
El sistema de alarma contra incendios consta de AT89C51, circuito de reloj en tiempo real DS1302, circuito de teclado y pantalla, circuito de comunicación RS485, circuito de vigilancia compuesto por MAX813L, circuito de memoria serie E2PROM, etc. Usando múltiples sensores para medir la temperatura en diferentes habitaciones, puede establecer los límites superiores de alarma para diferentes habitaciones y realizar la visualización y alarma de las temperaturas correspondientes en varias habitaciones.
La composición del hardware del sistema de alarma contra incendios se muestra en la Figura 2.
Figura 2, Diagrama de composición del hardware del sistema de alarma contra incendios
5. Método de suministro de energía del sensor de temperatura digital con tecnología de bus de 1 cable
Hay dos tipos de fuentes de alimentación para DS18B20. Modo de fuente de alimentación externa y modo de fuente de alimentación parásita. El método de fuente de alimentación externa se muestra en la Figura 3. El pin VDD en la Figura 3 está conectado a la fuente de alimentación externa. El método de fuente de alimentación parásita no requiere una fuente de alimentación externa como se muestra en la Figura 4. Cuando se trabaja en modo de fuente de alimentación parásita, tanto VDD como GND están conectados a tierra. Muy útil cuando se requiere detección remota de temperatura y el espacio es limitado. En la Figura 3, cuando el bus 1-Wire está alto, DS18B20 "roba" energía del bus 1-Wire a través del pin DQ, y la carga robada suministra energía al bus. Cuando el bus está bajo, la carga almacenada en la capacitancia de suministro parásito alimenta el sensor. Cuando DS18B20 se utiliza en modo de fuente de alimentación parásita, VDD debe conectarse a tierra. Sin embargo, en el modo de fuente de alimentación parásita, cuando el DS18B20 realiza la conversión de temperatura y copia el contenido de la memoria del scratch pad a la EEPROM, la corriente de funcionamiento puede alcanzar 1,5 mA. Esta corriente puede hacer que el voltaje caiga significativamente e impedir que el sensor funcione correctamente. Para garantizar que el DS18B20 tenga suficiente corriente de suministro, se debe proporcionar un pull-up lo suficientemente fuerte en el bus al realizar la conversión de temperatura y copiar el contenido de la memoria del scratch pad a EEPROM. Se puede utilizar un tubo MOSFET para levantar el autobús, como se muestra en la Figura 4. Generalmente, cuando la temperatura detectada supera los 100°C, se recomienda no utilizar una fuente de alimentación parásita sino una fuente de alimentación externa. Porque a temperaturas tan altas, es imposible que el DS18B20 mantenga la comunicación de datos debido a la alta corriente de fuga. Por lo tanto, cuando las condiciones lo permitan, intente utilizar una fuente de alimentación externa.
Figura 3, método de fuente de alimentación externa de DS18B20
Figura 4, Modo de fuente de alimentación parásita de DS18B20
6. Diagrama de flujo de procesamiento y recolección de temperatura.
El sistema de alarma contra incendios diseñado en base al microcontrolador AT89C51 utiliza un sensor de temperatura inteligente DS18B20. Después de leer correctamente el número de serie de 64 bits, se debe escribir un programa de lectura de temperatura de acuerdo con estrictos requisitos de tiempo. El microcontrolador debe seguir el flujo de comando de DS18B20 para controlar la conversión de temperatura de DS18B20. Primero, se ejecuta la secuencia de inicialización y luego el microcontrolador emite un comando de omisión de ROM (el código es CCH). Este comando es para todos los DS18B20 en línea. Luego, el microcontrolador emite un comando de inicio de conversión (código 44H) para iniciar DS18B20 y completar la conversión de temperatura. Para una resolución de 12 bits, se requiere un retraso de 750 ms. Luego se ejecuta la secuencia de inicialización y luego el microcontrolador emite un comando ROM de coincidencia (código 55H) y un número de serie de 64 bits en la línea de datos, y luego emite un comando de lectura de 9 bytes (código BEH). Puede leer la temperatura correcta correspondiente después de completar la conversión de temperatura del número de serie correspondiente del sensor de temperatura inteligente DS18B20. El diagrama de flujo de procesamiento y adquisición de temperatura basado en DS18B20 se muestra en la Figura 5.
Figura 5 Diagrama de flujo del programa de procesamiento y adquisición de temperatura DS18B20 basado en tecnología 1-Wire
7. Conclusión
El método tradicional de medición de temperatura es transmitir la señal analógica al circuito de muestreo para la conversión A / D. Para obtener una mayor precisión, es necesario resolver el problema de la conmutación de medición multipunto y la deriva del punto cero del circuito de amplificación. . La aparición de sensores de temperatura digitales con tecnología de bus 1-Wire puede resolver mejor los problemas anteriores. La innovación del autor en este artículo es aplicar la tecnología de bus 1-Wire, utilizar múltiples sensores de temperatura digitales para diseñar un sistema de alarma contra incendios, analizar el modo y las características de la fuente de alimentación del sensor y elaborar los comandos ROM y los comandos de función del sensor de temperatura digital. Basado en AT89C51, se diseñan el circuito de visualización del reloj en tiempo real, el circuito de visualización del teclado, el circuito de memoria en serie, el circuito de comunicación RS485, el circuito de vigilancia, etc., y se explica el diagrama de composición del hardware del sistema de alarma contra incendios. Diseñé un diagrama de flujo para la adquisición de temperatura y escribí un programa para completar la visualización correcta de la temperatura. El sensor de temperatura DS18B20 con tecnología 1-Wire convierte la señal de temperatura directamente en una señal digital en serie para el procesamiento del microcontrolador. Se conectan varios sensores a una única interfaz de bus y la temperatura in situ se transmite directamente en un formato de bus digital para formar fácilmente un sistema distribuido de medición de temperatura multipunto. El uso de sensores de temperatura digitales con tecnología de bus 1-Wire reduce efectivamente los costos, haciendo que los sistemas de aplicación sean altamente confiables y con largas distancias de transmisión. Se ha utilizado ampliamente en sistemas de alarma contra incendios con medición distribuida de temperatura.