Término: sensor de termómetro de resistencia de 4 hilos

En este artículo discutiremos los diferentes tipos de sensores de temperatura y cómo se pueden utilizar en cada caso específico. La temperatura es un parámetro físico que se mide en grados. Es una parte esencial de cualquier proceso de medición. Las áreas que requieren mediciones de temperatura precisas incluyen medicina, investigación biológica, electrónica, investigación de materiales y rendimiento térmico de productos eléctricos. Un dispositivo utilizado para medir la cantidad de energía térmica que nos permite detectar cambios físicos en la temperatura se conoce como sensor de temperatura. Son digitales y analógicos.

Principales tipos de sensores

En general, existen dos métodos para obtener datos:

1. Contacto... Los sensores de temperatura de contacto están en contacto físico con un objeto o sustancia. Se pueden utilizar para medir la temperatura de sólidos, líquidos o gases.

2. Sin contacto... Los sensores de temperatura sin contacto detectan la temperatura interceptando parte de la energía infrarroja emitida por un objeto o sustancia y detectando su intensidad. Solo se pueden utilizar para medir la temperatura en sólidos y líquidos. No pueden medir la temperatura de los gases debido a su falta de color (transparencia).

Reglas de selección de sensores

El sensor de temperatura para calefacción por suelo radiante se selecciona teniendo en cuenta características como la potencia, el tipo de cubierta superior, el método de instalación y el equipo con funcionalidad adicional.

Poder

El valor ciertamente debe cumplir con los requisitos y la carga del piso cálido. De lo contrario, el sensor no funcionará correctamente. Cuando la potencia del elemento calefactor es mayor que la del regulador en sí, es necesario instalar adicionalmente un arrancador magnético entre ellos, para evitar daños en el dispositivo debido a una mayor carga.

Conjunto de características

El piso cálido está controlado por una unidad eléctrica, que le permite ajustar el funcionamiento de los elementos calefactores. Los controladores modernos tienen funciones tales como arrancar y desenergizar el sistema, ajustar las condiciones de temperatura y establecer la frecuencia de conexión y desconexión del elemento calefactor.

Facilidad de uso

Si cree que no comprenderá la programación, no debe comprar un dispositivo complejo. Incluso teniendo en cuenta toda su funcionalidad. Por ejemplo, a las personas mayores les resulta bastante problemático trabajar con dispositivos programables. Será mejor que elijan la opción mecánica.

Fácil de conectar

La documentación adjunta para el termostato siempre indica cómo conectar el sensor de calefacción por suelo radiante. Los terminales están ubicados en el borde de un lado de la unidad de control. Una vez conectados los cables eléctricos de acuerdo con el esquema, será necesario verificar el rendimiento del sistema de calefacción. Para hacer esto, mida la resistencia en los terminales del sensor de temperatura y el cable eléctrico calefactor, o conecte un piso cálido y aumente los valores de temperatura de cero al indicador recomendado por SNIP, es decir, hasta 30 ° C.

Apariencia

Un sensor térmico no solo debe ser funcionalmente comprensible, sino también atractivo en diseño. Las perillas modernas vienen en una variedad de colores y formas. Puede elegir una opción que esté en armonía con el interior de la habitación.

Tipos de sensores de temperatura

Hay muchos tipos diferentes de sensores de temperatura.Desde el simple control on / off de un dispositivo termostático hasta complejos sistemas de control de suministro de agua, con la función de calentarla, utilizados en los procesos de cultivo de plantas. Los dos tipos principales de sensores, de contacto y sin contacto, se subdividen en sensores resistivos, de voltaje y electromecánicos. Los tres sensores de temperatura más utilizados son:

  • Termistores
  • Termopares de resistencia
  • Par termoeléctrico

Estos sensores de temperatura se diferencian entre sí en términos de parámetros operativos.

Dispositivo

Es un termopar (placa o varilla) formado por cables que se conectan a los terminales del elemento sensor.

Dependiendo de la información de temperatura, cambia la resistencia de la parte sensible, respectivamente, cambia la señal eléctrica suministrada al termostato. Por tanto, se determina el valor absoluto de la temperatura del medio.

Diagrama de conexión del sensor de temperatura

Externo (sensor de temperatura externo para calefacción por suelo radiante), por regla general, se encuentra debajo del revestimiento del piso de acabado y mide sus indicadores de temperatura. Interno (incorporado), ubicado dentro del regulador y determina el nivel de calentamiento del aire.

El diseño de los sensores de temperatura se selecciona en función de las características del sistema:

Termistor

Un termistor es una resistencia sensible que cambia su resistencia física con la temperatura. Normalmente, los termistores están hechos de un material semiconductor cerámico como cobalto, manganeso u óxido de níquel y están recubiertos de vidrio. Son pequeños discos planos sellados que reaccionan con relativa rapidez a cualquier cambio de temperatura.

Debido a las propiedades semiconductoras del material, los termistores tienen un coeficiente de temperatura negativo (NTC), es decir la resistencia disminuye al aumentar la temperatura. Sin embargo, también existen termistores PTC cuya resistencia aumenta al aumentar la temperatura.

Programación del termistor

Ventajas de los termistores

  • Alta velocidad de respuesta a los cambios de temperatura, precisión.
  • Bajo costo.
  • Mayor resistencia en el rango de 2.000 a 10.000 ohmios.
  • Sensibilidad mucho mayor (~ 200 ohmios / ° C) dentro de un rango de temperatura limitado de hasta 300 ° C.

Dependencias de la temperatura de la resistencia

La dependencia de la resistencia de la temperatura se expresa mediante la siguiente ecuación:

Dónde A B C - estas son constantes (proporcionadas por los términos de cálculo), R - resistencia en ohmios, T - temperatura en Kelvin. Puede calcular fácilmente el cambio de temperatura a partir de un cambio de resistencia o viceversa.

¿Cómo usar un termistor?

Los termistores están clasificados por su valor resistivo a temperatura ambiente (25 ° C). Un termistor es un dispositivo resistivo pasivo, por lo que requiere la producción de monitoreo de la tensión de salida actual. Por regla general, se conectan en serie con estabilizadores adecuados que forman un divisor de tensión de red.

Ejemplo: Considere un termistor con un valor de resistencia de 2.2K a 25 ° C y 50 ohmios a 80 ° C. El termistor está conectado en serie con una resistencia de 1 kΩ a través de un suministro de 5 V.

Por lo tanto, su voltaje de salida se puede calcular de la siguiente manera:

A 25 ° C, RNTC = 2200 ohmios;

A 80 ° C, RNTC = 50 ohmios;

Sin embargo, es importante tener en cuenta que a temperatura ambiente los valores de resistencia estándar son diferentes para diferentes termistores, ya que no son lineales. Un termistor tiene un cambio de temperatura exponencial y, por lo tanto, una constante beta, que se utiliza para calcular su resistencia para una temperatura determinada. El voltaje y la temperatura de salida de la resistencia están relacionados linealmente.

Características de la interfaz de corriente de dos cables en los sensores de temperatura LMT01

Higo. 4. Organización de la interfaz actual con LMT01

Como se mencionó anteriormente, para transmitir el resultado de la medición, el LMT01 genera una secuencia de bits en forma de pulsos de conteo de corriente. Para esto, el sensor requiere solo dos cables (Figura 4). Para convertir los pulsos de corriente en la forma familiar para los microcircuitos digitales, en algunos casos puede usar una sola resistencia (pero no siempre, más sobre eso a continuación).

Después del encendido, el LMT01 inicia un ciclo de medición que toma hasta 54 ms (Figura 5). Durante este tiempo, se forma una corriente de bajo nivel de 28 ... 39 μA en la salida del sensor. A esto le sigue un ciclo de transferencia del resultado de la medición en forma de pulsos de corriente con una amplitud de 112 ... 143 μA. El microcontrolador receptor debe contar estos pulsos, por ejemplo, usando el contador / temporizador incorporado. Dado que la frecuencia de las señales es de aproximadamente 82 ... 94 kHz, entonces con el número máximo de pulsos (4095), la duración de la transmisión puede alcanzar los 50 ms.

Higo. 5. Diagramas de tiempo del funcionamiento del sensor LMT01

Por el número de pulsos contados (PC), el valor de temperatura se puede determinar de acuerdo con la fórmula 1:

, (1)

Por tanto, a 0 ° C, el sensor generará unos 800 pulsos.

Desafortunadamente, no siempre es posible usar una resistencia externa debido a la limitación de la caída de voltaje mínima en el sensor LMT01. Durante el ciclo de medición, la caída a través del sensor debe ser de al menos 2,15 V. Durante el ciclo de transmisión de datos, la caída de voltaje se puede reducir a 2 V. No es difícil hacer algunos cálculos aproximados.

Considere un dispositivo con un voltaje de suministro Vdd = 3.3 V. Si tomamos la caída mínima permitida en el sensor igual a 2.15 V durante el ciclo de medición, entonces se observará una señal de no más de 1.15 V a través de la resistencia. controladores, la unidad lógica es 0, 7 ∙ Vdd, que para nuestro caso será 2.31 V. Como resultado, el uso de una resistencia simple resulta imposible, ya que el microcontrolador simplemente no "verá" la señal de un unidad lógica. La forma de salir de esta situación puede ser el uso de un microcontrolador con un comparador incorporado o circuitos de conversión de nivel.

Sensores de temperatura resistivos

Los sensores de resistencia a la temperatura (RTD) están hechos de metales raros, como el platino, cuya resistencia eléctrica varía con la temperatura.

Los detectores resistivos de temperatura tienen un coeficiente de temperatura positivo y, a diferencia de los termistores, proporcionan una alta precisión de medición de temperatura. Sin embargo, tienen poca sensibilidad. El Pt100 es el sensor más ampliamente disponible con un valor de resistencia estándar de 100 ohmios a 0 ° C. La principal desventaja es el alto costo.

Las ventajas de tales sensores.

  • Amplio rango de temperatura de -200 a 650 ° C
  • Proporciona una salida de corriente de alta caída
  • Más lineal en comparación con termopares y RTD

Componentes adicionales y circuito del sensor

Además de los dispositivos de diodos principales, el circuito del sensor de temperatura incluye varios elementos adicionales. En primer lugar, es un condensador que protege el dispositivo de influencias externas. El hecho es que el amplificador operacional es muy sensible a los efectos de los campos electromagnéticos alternos. El condensador elimina esta dependencia inyectando retroalimentación negativa.

Circuito del sensor de temperatura

Con la participación de un transistor y un diodo Zener, se forma un voltaje de referencia estabilizado. Aquí, se utilizan resistencias con una clase de precisión más alta con un valor bajo del coeficiente de temperatura de resistencia. De ese modo, todo el esquema gana estabilidad adicional. En caso de posibles cambios significativos en las condiciones de temperatura, se pueden omitir las resistencias de precisión. Solo se utilizan para controlar pequeños sobrecalentamientos.

Par termoeléctrico

Los sensores de temperatura de termopar se utilizan con mayor frecuencia porque son precisos, funcionan en un amplio rango de temperatura de -200 ° C a 2000 ° C y son relativamente económicos. Un termopar con un cable y un enchufe en la foto de abajo:

Operación de termopar

Un termopar está hecho de dos metales diferentes soldados entre sí para producir una diferencia de potencial sobre la temperatura. A partir de la diferencia de temperatura entre las dos uniones, se genera un voltaje que se utiliza para medir la temperatura. La diferencia de voltaje entre las dos uniones se llama efecto Seebeck.

Si ambos compuestos están a la misma temperatura, el potencial de diferencia en diferentes compuestos es cero, es decir, V1 = V2. Sin embargo, si las uniones están a diferentes temperaturas, el voltaje de salida relativo a la diferencia de temperatura entre las dos uniones será igual a su diferencia V1 - V2.

Tipos de sensores de temperatura

Electrónico-mecánico

El tipo de regulador más simple y económico. Su principal pieza de trabajo es una placa de metal especial que responde a un aumento o disminución de temperatura. El sistema se enciende y apaga cambiando la curvatura de la placa durante el calentamiento y enfriamiento. Establecer el valor de temperatura exacto en un regulador de este tipo no funcionará.

Electrónico

El dispositivo tiene un elemento especial que genera una señal especial. La potencia depende directamente de los valores de la temperatura ambiente. En tales dispositivos, puede establecer lecturas precisas de la temperatura de calentamiento hasta una fracción de grado. El sistema está controlado por botones y una pequeña pantalla.

Programable

El más caro de los termoelementos. En él, puede establecer ciertos valores, una vez alcanzados, el regulador enciende o apaga todo el sistema. Gracias al dispositivo, se crea un microclima en la habitación que se adapta a una persona en particular. Es posible configurar el termostato para que el sistema se encienda a una hora determinada. Es decir, los pisos se calientan antes de que el propietario llegue a casa y, al mismo tiempo, no se consume electricidad cuando el propietario no.

Muchos modelos cuentan con diseños brillantes y elegantes y pantallas LCD que brindan información y facilitan el ajuste fino.

Trabajar con bibliotecas listas para usar

Entonces, para trabajar con sensores de temperatura DS18B20 en la red, puede encontrar una gran cantidad de bibliotecas, pero como regla, se utilizan dos de las más populares. Es una biblioteca y una biblioteca. Además, la segunda biblioteca es un complemento más conveniente que la primera y no se puede usar sin ella. En otras palabras, antes de conectar la biblioteca DallasTemperature.h, también debe conectar OneWire.h. Es posible instalar ciertas bibliotecas en el IDE de Arduino.

Biblioteca OneWire.h

Primero consideremos trabajar con la biblioteca OneWire.h. A continuación se muestra una lista de sus funciones con una breve descripción.

  • Sensor de temperatura OneWire (uint8_t pinNumber)

Esta función es un constructor de la clase OneWire y crea un objeto TemperatureSensor, es decir abre un canal de comunicación con un sensor o un grupo de sensores en el pin pinNumber. En nuestros ejemplos (Figuras 3-5), este es el pin "D2" del Arduino Nano. A él conectamos el bus de datos DQ DS18B20.

Ejemplo:

Sensor de temperatura OneWire
(
D2
);
// Un sensor o un grupo de sensores está conectado al pin D2

  • uint8_t búsqueda (addrArray)

La función busca el siguiente dispositivo en el bus de 1 cable y, cuando lo encuentra, ingresa el valor de la dirección en la matriz addrArray, devolviendo verdadero. Dado que la dirección única de cada sensor es de 64 bits, el addrArray debe tener un tamaño de 8 bytes. Si la búsqueda falla, la función devuelve falso. Cabe señalar que cuando se conectan varios sensores de temperatura a un bus, cada llamada a la función de búsqueda se dirigirá al siguiente sensor, luego al siguiente, etc., hasta que se enumeren todos los dispositivos del bus. La peculiaridad de esta función es recordar direcciones ya procesadas. Para restablecer la cola, debe llamar a la función reset_search (), que se discutirá a continuación.

Ejemplo:

byte addrArray
[
8
];
// Matriz para almacenar una dirección de 64 bits // Si el dispositivo está ausente en el bus o todos los dispositivos están enumerados // Mostrar la información correspondiente en el monitor de puerto
si(!
sensor de temperatura
.
buscar
(
addrArray
))
De serie
.
println
(
"No más direcciones."
);
// De lo contrario, si el siguiente dispositivo respondió a la solicitud de presencia, // muestra su dirección de 64 bits en el monitor de puerto
demás{por(
I
=
0
;
I
<
8
;
I
++)
De serie
.
imprimir
(
addrArray
[
I
],
MALEFICIO
);
}

  • vacíoreset_search ()

Como se mencionó anteriormente, esta función restablece la cola de sondeo de los dispositivos en el bus de 1 cable desde el principio. Siempre debe usarse junto con la función de búsqueda cuando esta última devuelve falso. Por ejemplo, en nuestro caso con 5 sensores en el bus, llamando a la función de búsqueda 5 veces, podemos obtener 5 direcciones. Por sexta vez, la función de búsqueda nos devolverá falso y hará esto con cada siguiente encuesta hasta que se vacíe la cola. Debe prestar atención a esto para evitar situaciones incomprensibles.

Ejemplo:

byte addrArray
[
8
];
// Matriz para almacenar una dirección de 64 bits // Si el dispositivo está ausente en el bus o todos los dispositivos están enumerados // Restablezca la cola de sondeo para repetir el ciclo de búsqueda
si(!
sensor de temperatura
.
buscar
(
addrArray
))
sensor de temperatura
.
reset_search
();

  • uint8_tReiniciar ()

La función de reinicio de 1 cable inicia el proceso de comunicación. Se llama cada vez que queremos comunicarnos con el sensor de temperatura. Los valores devueltos pueden ser verdaderos o falsos. Obtendremos el valor real si al menos un sensor en el bus responde al reinicio con un pulso de presencia. De lo contrario, nos volvemos falsos;

Ejemplo:
si(!
sensor de temperatura
.
Reiniciar
())
De serie
.
println
(
"No hay sensores en el bus"
);demás
De serie
.
println
(
"Sensor detectado"
);

  • vacíoseleccionar (addrArray)

La función permite seleccionar un dispositivo específico con el que queremos trabajar en este momento. La elección se realiza especificando explícitamente la dirección de 64 bits ingresada en la matriz addrArray. La dirección se puede establecer explícitamente escribiéndola en la matriz o usando la previamente leída por la función de búsqueda. Tenga en cuenta que se debe llamar a la función de reinicio antes de llamar a select. Con el siguiente reinicio, la conexión con el sensor seleccionado se interrumpe hasta la próxima llamada para seleccionar.
Ejemplo:
byte addrArray
[
8
];
// Matriz para almacenar una dirección de 64 bits // Si el dispositivo está ausente en el bus o todos los dispositivos están enumerados // envía la información correspondiente al monitor de puerto
si(!
sensor de temperatura
.
buscar
(
addrArray
))
De serie
.
println
(
"No más direcciones."
);
// De lo contrario, si el siguiente dispositivo respondió a la solicitud de presencia, // selecciónelo para el trabajo posterior
demás{
sensor de temperatura
.
Reiniciar ()
;
// No olvide emitir el comando de reinicio del sensor de temperatura
.
seleccionar (addrArray)
;
// Especifica una matriz con la dirección de lectura
}

  • vacíosaltar ()

La función es relevante solo cuando se trabaja con un sensor en el bus y simplemente omite la selección del dispositivo. En otras palabras, no puede utilizar la función de búsqueda y, por tanto, acceder rápidamente con su único sensor.

Ejemplo:
sensor de temperatura.
Reiniciar
();
// Restablecer el sensor de temperatura del neumático
.
saltar
();
// Seleccione el único sensor para seguir trabajando con él

  • vacíoescribir (uint8_tbyte, uint8_t powerType = 0)

La función envía un byte de datos al dispositivo seleccionado en el bus. El argumento powerType indica el tipo de fuente de alimentación para los sensores (0 - los sensores se alimentan directamente desde una fuente externa; 1 - se utiliza una conexión alimentada por parásitos). El segundo parámetro se puede omitir si se usa alimentación externa, ya que es 0 por defecto.

Ejemplo:

sensor de temperatura
.
Reiniciar
();
// Restablecer el sensor de temperatura del neumático
.
saltar
();
// Seleccione el único sensor para seguir trabajando con él // Envíe un comando para convertir la temperatura, // utilizando una conexión con energía parásita del bus de datos TemperatureSensor
.
escribir
(
0x44
,
1
);

  • uint8_tleer ()

Esta función lee un byte de datos enviados por el dispositivo esclavo (sensor) al bus de 1 cable.

Ejemplo:

// Lea 9 bytes de datos del bus de 1 cable y coloque el resultado en una matriz de bytes.
[
9
];por(
uint8_t i
=
0
;
I
<
9
;
I
++){
formación
[
I
]=
sensor de temperatura
.
leer
();}

  • estático uint8_t crc8 (const uint8_t * dirección, uint8_t len);

La función está diseñada para calcular la suma de comprobación. Diseñado para comprobar la correcta comunicación con el sensor de temperatura. Aquí addr es un puntero a la matriz de datos y len es el número de bytes.

Ejemplo:

byte addrArray
[
8
];
// Matriz para almacenar una dirección de 64 bits // Si el dispositivo está ausente en el bus o todos los dispositivos están enumerados // envía la información correspondiente al monitor de puerto
si(!
sensor de temperatura
.
buscar
(
addrArray
))
De serie
.
println
(
"No más direcciones."
);
// De lo contrario, si el siguiente dispositivo respondió a la solicitud de presencia, // verifique la suma de verificación de su dirección
demás{
// Si la suma de comprobación no coincide, muestra un mensaje de error
si(
OneWire
::
crc8
(
addrArray
,
7
)!=
addrArray
[
7
]){
De serie
.
println
(
"¡CRC no es válido!"
);}}
Examinamos cada función de la biblioteca OneWire.h por separado y para arreglar el material, a continuación daré un boceto para leer la temperatura de un grupo de sensores de temperatura DS18B20, que se conectarán al pin D2 mediante un circuito de alimentación parásito. El boceto contendrá comentarios detallados sobre todos los puntos necesarios.

#include // Conectamos la librería para trabajar con sensores térmicos DS18B20OneWire ds
(
2
);
// Un sensor o grupo de sensores está conectado al pin D2 del Arduino // PREAJUSTE FUNCIÓN void setup
(
vacío
){
De serie
.
empezar
(
9600
);
// Inicialización del trabajo con Serial-port} // MAIN CYCLE void loop
(
vacío
){
byte i
;
// Variable auxiliar para bucles de presencia de bytes
=
0
;
// Variable para determinar la disponibilidad del sensor para el byte de comunicación type_s
;
// Variable para definir el tipo de sensor térmico en el bus de datos de bytes
[
12
];
// Matriz para almacenar información recibida del sensor byte addr
[
8
];
// Matriz para almacenar la dirección de 64 bits del sensor celsius flotante
,
fahrenheit
;
// Variables para el cálculo de la temperatura // Si no se encuentran dispositivos en el bus o todos los dispositivos en el bus están enumerados // mostrar la información correspondiente en el monitor de puerto, resetear la cola // y realizar una búsqueda nuevamente, esperando 250ms
si(!
ds
.
búsqueda
(
addr
)){
De serie
.
println
(
"No más direcciones."
);
De serie
.
println
();
ds
.
reset_search
();
demora
(
250
);regreso;}
// Si se encuentra el siguiente dispositivo en el bus, muestre su dirección única // en el monitor de puerto en forma hexadecimal Serial
.
imprimir
(
"ROM ="
);por(
I
=
0
;
I
<
8
;
I
++){
De serie
.
escribir
(
‘ ‘
);
De serie
.
imprimir
(
addr
[
I
],
MALEFICIO
);}
// Verifica la suma de comprobación de la dirección del dispositivo encontrado // y si no coincide, muestra la información correspondiente
si(
OneWire
::
crc8
(
addr
,
7
)!=
addr
[
7
]){
De serie
.
println
(
"¡CRC no es válido!"
);regreso;}
De serie
.
println
();
// Verifique el byte cero de la dirección, que contiene información // sobre un tipo específico de sensor de temperatura. Dependiendo del valor del byte cero //, mostramos la serie del chip en el monitor del puerto. Si el byte cero contiene un valor // desconocido, muestra un mensaje sobre la familia desconocida del sensor de temperatura.
cambiar(
addr
[
0
]){caso
0x10
:
De serie
.
println
(
"Chip = DS18S20"
);
type_s
=
1
;descanso;caso
0x28
:
De serie
.
println
(
"Chip = DS18B20"
);
type_s
=
0
;descanso;caso
0x22
:
De serie
.
println
(
"Chip = DS1822"
);
type_s
=
0
;descanso;defecto:
De serie
.
println
(
"El dispositivo no es un dispositivo de la familia DS18x20".
);regreso;}
ds
.
Reiniciar
();
// Reinicia el bus para inicializar el intercambio de datos ds
.
Seleccione
(
addr
);
// Seleccionar el sensor con la dirección actual para trabajar con él // Enviar el comando para convertir la temperatura (según la documentación 0x44) // No te olvides del segundo parámetro "1", ya que estamos transmitiendo datos a través del / / linea con alimentacion parasitaria. ds
.
escribir
(
0x44
,
1
);
// El sensor inicia la conversión, que según la documentación tarda máx. 750ms // Para estar seguros, organizaremos una pausa de ё segundos de retraso
(
1000
);
// Reinicia el bus de nuevo para leer la información del sensor // guarda la respuesta de la función reset () en la variable presente para seguir trabajando con ella presente
=
ds
.
Reiniciar
();
ds
.
Seleccione
(
addr
);
// Re-seleccionar el sensor por su dirección, ya que hubo un pulso de reset // El comando 0xBE, según la documentación técnica, permite leer la memoria interna // del sensor de temperatura (Scratchpad), que consta de 9 bytes. ds
.
escribir
(
0xBE
);
// Leer y mostrar 9 bytes de la memoria interna del sensor de temperatura Serie al monitor de puerto
.
imprimir
(
"Datos ="
);
De serie
.
imprimir
(
regalo
,
MALEFICIO
);
De serie
.
imprimir
(
» «
);por(
I
=
0
;
I
<
9
;
I
++){
datos
[
I
]=
ds
.
leer
();
De serie
.
imprimir
(
datos
[
I
],
MALEFICIO
);
De serie
.
imprimir
(
» «
);}
// Verifique y envíe al monitor de puerto la suma de verificación de los datos recibidos Serial
.
imprimir
(
"CRC ="
);
De serie
.
imprimir
(
OneWire
::
crc8
(
datos
,
8
),
MALEFICIO
);
De serie
.
println
();
// Inicie el proceso de conversión de los datos recibidos en la temperatura real, // que se almacena en 0 y 1 bytes de memoria de lectura. Para hacer esto, combinamos estos dos // bytes en un número de 16 bits int16_t raw
=(
datos
[
1
]<<
8
)|
datos
[
0
];
// Antes de continuar con la conversión, debe definir la familia a la que // pertenece este sensor (anteriormente guardamos el resultado en la variable type_s). // Dependiendo de la familia, la temperatura se calculará de manera diferente, // ya que DS18B20 y DS1822 devuelven un valor de 12 bits, mientras que DS18S20 devuelve un valor de 9 bits
si(
type_s
){
// Si el sensor pertenece a la familia en bruto DS18S20
=
crudo
<<
3
;
// la resolución predeterminada es de 9 bits
si(
datos
[
7
]==
0x10
){
crudo
=(
crudo
&
0xFFF0
)+
12

datos
[
6
];}}demás{
// Determine con qué precisión de medición está configurado este sensor byte cfg
=(
datos
[
4
]&
0x60
);
// A resoluciones más bajas, puede poner a cero los bits menos significativos, // ya que no se definen antes
si(
cfg
==
0x00
)
crudo
=
crudo
&~
7
;
// 9 bits (la conversión tarda 93,75 ms)
demássi(
cfg
==
0x20
)
crudo
=
crudo
&~
3
;
// 10 bits (la conversión tarda 187,5 ms)
demássi(
cfg
==
0x40
)
crudo
=
crudo
&~
1
;
// 11 bits (la conversión tarda 375 ms) // La precisión predeterminada es de 12 bits (la conversión tarda 750 ms)
}
// Calcular y enviar valores de temperatura al monitor del puerto celsius
=(
flotador
)
crudo
/
16.0
;
fahrenheit
=
Celsius
*
1.8
+
32.0
;
De serie
.
imprimir
(
"Temperatura ="
);
De serie
.
imprimir
(
Celsius
);
De serie
.
imprimir
(
"Celsius,"
);
De serie
.
imprimir
(
fahrenheit
);
De serie
.
println
(
"Fahrenheit"
);}
Si todo se hace correctamente, entonces en la ventana del monitor de puerto deberíamos ver algo como lo siguiente (Figura 6):

Figura 6: el resultado de trabajar con la biblioteca OneWire.h

Biblioteca DallasTemperature.h

Esta biblioteca se basa en la anterior y simplifica un poco el proceso de programación debido a funciones más comprensibles. Después de la instalación, tendrá acceso a 14 ejemplos de código bien documentado para todas las ocasiones. En el marco de este artículo, se considerará un ejemplo de funcionamiento con un sensor.

El resultado del programa se muestra en la Figura 7

Figura №7: el resultado de leer la temperatura usando la biblioteca DallasTemperature.h

// Conectamos las bibliotecas necesarias # include #include // Conectamos el bus de datos al pin # 2 de Arduino # definimos ONE_WIRE_BUS 2 // Creamos una instancia de la clase para nuestro bus y un enlace a ella OneWire oneWire
(
ONE_WIRE_BUS
);
Dallas Sensores de temperatura
(&
oneWire
);
// FUNCIÓN PREAJUSTADA anular la configuración
(
vacío
){
De serie
.
empezar
(
9600
);
// Inicializar los sensores del puerto serie
.
empezar
();
// Inicializar el bus
}
// CICLO PRINCIPAL
(
vacío
){
De serie
.
imprimir
(
"Lectura de temperatura ..."
);
// Envía el comando para leer sensores
.
requestTemperatures
();
De serie
.
println
(
"Leer"
);
De serie
.
imprimir
(
"Temperatura del sensor 1:"
);
// Muestra el valor de temperatura Serial
.
imprimir
(
sensores
.
getTempCByIndex
(
0
));}

Sensor de temperatura KY-001 con interfaz de 1 cable

Este sensor se utiliza para medir la temperatura con precisión. La comunicación con el sensor se realiza a través de la interfaz de 1 cable [1-2], que le permite conectar varios dispositivos similares a la placa Arduino utilizando un pin del microcontrolador [3-4]. El módulo se basa en el microcircuito ds18b20 [5].

Tamaño del módulo 24 x 15 x 10 mm, peso 1,3 g.Se utiliza un conector de tres pines para la conexión. Contacto central - alimentación + 5V, contacto "-" - común, contacto "S" - informativo.

La placa tiene un LED rojo que se enciende cuando se intercambia información.

Consumo de corriente 0,6 mA durante el intercambio de información y 20 μA en modo de espera.

La conexión de este tipo de sensores a Arduino está bien descrita en muchas fuentes [6-8]. En este caso, las principales ventajas de Arduino se manifiestan nuevamente: la versatilidad y la presencia de una gran cantidad de información de referencia. Para trabajar con el sensor, necesitará la biblioteca OneWire [9]. Una vez cargado el programa desde [8] (hay un error en la primera versión del programa - no hay conexión de biblioteca #include en el encabezado del código), la siguiente información se puede observar en el monitor del puerto serie.

El autor también probó el código de [7], todo funcionó de inmediato, en el monitor del puerto serie puede leer información sobre el tipo de sensor conectado y los datos de temperatura reales.

En general, un sensor muy útil que permite familiarizarse con la interfaz 1-Wire en la práctica. El sensor proporciona los datos de temperatura correctos de inmediato, el usuario no necesita calibrar.

Clasificación
( 1 estimación, promedio 4 de 5 )

Calentadores

Hornos