LabVIEW Controla Múltiples Valores de Temperatura DS18B20
DS18B20 es un sensor de temperatura inteligente digital de bus único de DALLAS Semiconductor Company en Estados Unidos. En comparación con los termistores tradicionales, puede leer directamente la temperatura medida y puede lograr una lectura de valores digitales de 9 a 12 dígitos mediante una programación simple de acuerdo con los requisitos reales. Leer o escribir información desde DS18B20 solo requiere una línea (bus único) para leer y escribir, y el propio bus también puede proporcionar energía al dispositivo conectado sin la necesidad de una fuente de alimentación adicional.
Esta publicación de blog implementará LabVIEW para controlar Arduino y recopilar múltiples valores de temperatura DS18B20. Con respecto al control de Arduino por LabVIEW, ya hemos explicado los métodos de recolección de muchos tipos de sensores de temperatura en lo básico. Para más detalles, consulte el siguiente enlace:
LabVIEW controla Arduino para recopilar el valor del sensor de temperatura LM35 (Conceptos básicos - 12)
LabVIEW controla Arduino para recopilar el valor de temperatura del termistor (Conceptos básicos - 13)
2. Estructura del proyecto
Este proyecto introducirá el uso de 2 sensores DS18B20, Arduino Uno y LabVIEW para formar un sistema de medición digital de temperatura multicanal. El diagrama de bloques del sistema de medición digital de temperatura multicanal se muestra a continuación:
Entre ellos, dos sensores de temperatura DS18B20 están conectados a un solo bus en paralelo, y Arduino Uno sirve como computadora esclava, responsable de la lectura, escritura y transmisión de datos de DS18B20. El software de visualización escrito en LabVIEW sirve como computadora host, y las computadoras host y esclava utilizan la interfaz USB-TTL para lograr la comunicación.
3. Entorno de hardware
Conecte Vcc y GND del sensor de temperatura DS18B20 a +5V y GND del controlador Arduino Uno respectivamente para proporcionar energía al DS18B20. El pin DQ de DS18B20 está conectado al pin digital D2 del controlador Arduino Uno y se conecta una resistencia pull-up de 4,7 KΩ, porque el pin DQ de DS18B20 necesita agregar una resistencia pull-up para un funcionamiento normal. El diagrama de conexión de hardware del sistema de medición digital de temperatura multicanal se muestra a continuación:
4. Diseño funcional de Arduino
En el sistema de monitoreo de temperatura de computadora superior e inferior basado en Arduino y LabVIEW, la placa de control Arduino Uno debe completar las siguientes funciones: recibir y juzgar comandos y recopilar y transmitir datos de temperatura. La placa de control Arduino Uno recibe comandos de la computadora host a través del puerto serie, analiza y obtiene comandos válidos, lee y escribe el sensor DS18B20 para obtener la temperatura y carga los datos de temperatura al software LabVIEW.
El controlador Arduino Uno es responsable de leer el comando de adquisición de temperatura enviado por la computadora host de LabVIEW y leer el sensor DS18B20 correspondiente para obtener los datos de temperatura y los envía de regreso al software LabVIEW de la computadora host a través del puerto serie. El código del programa para el controlador Arduino Uno es el siguiente:
#include <OneWire.h>#include <DallasTemperature.h>#define ONE_WIRE_BUS 2 //DS18B20 está conectado al puerto digital 2 de Arduino
#define T1_COMMAND 0x80 //Recopilar palabras de comando #define T2_COMMAND 0x81 //Recopilar palabras de comando
OneWire oneWire(ONE_WIRE_BUS);Sensores de temperatura de Dallas(&oneWire);
byte datos de coma[3]={0};
//Definir datos de matriz para almacenar datos de comando del puerto serie void recibir_data(void);
//Recibir datos del puerto serie void test_do_data(void);
//Prueba si los datos del puerto serie son correctos y ejecuta el comando void setup(){ Serial.begin(9600); // Inicia la biblioteca sensores.begin();} void loop(){ while (Serial.available( ) > 0)
//Detectar continuamente si hay datos en el puerto serie { recibir_data();
//Aceptar datos del puerto serie test_do_data();
//Prueba si los datos son correctos y ejecuta el comando }} void recibir_data(void) { int i ; for(i=0;i<3;i++) { comdata[i] =Serial.read();
//Retraso por un tiempo para permitir que el caché del puerto serie prepare el siguiente byte. No retrasarlo puede resultar en pérdida de datos delay(2); }} void test_do_data(void)
//Prueba y ejecuta el comando { if(comdata[0] == 0x55) /
/0x55 y 0xAA son comandos válidos para determinar si { if(comdata[1] == 0xAA) { switch (comdata[2]) { case T1_COMMAND: sensors.requestTemperatures();
//ratures Serial.print(sensors.getTempCByIndex(0)); break; case T2_COMMAND: sensores.requestTemperatures(); /
/ Establecer temperaturas Serial.print(sensors.getTempCByIndex(1)); break; } } }}
5. Diseño funcional de LabVIEW
La parte de la computadora host de LabVIEW debe completar las siguientes funciones: enviar comandos de adquisición de temperatura al controlador Arduino de la computadora host. El controlador ino recibe comandos de la computadora host a través del puerto serie y transmite los datos después de completar la recopilación de datos de temperatura. El software LabVIEW muestra los datos de temperatura devueltos en el panel frontal.
5.1 Diseño del panel frontal
El panel frontal de LabVIEW está dividido en terminales de visualización de temperatura y selección de sensores. El terminal de selección de sensor se usa para determinar el sensor monitoreado actualmente y los datos de forma de onda se usan para mostrar la tendencia cambiante de los datos de temperatura. El panel frontal de la computadora host LabVIEW del sistema de medición digital de temperatura multicanal se muestra en la siguiente figura:
5.2 Diseño del diagrama de bloques del programa.
La estructura del programa principal de la computadora host de LabVIEW es una estructura secuencial + bucle While. Primero, en el marco de la estructura de secuencia, la comunicación del puerto serie se inicializa a través del número de puerto serie establecido y se borra el gráfico de forma de onda. Luego, el programa ingresa al bucle While y a la estructura de secuencia plana, envía el código de comando para la medición de temperatura del sensor 1 o 2 al controlador Arduino Uno, espera 100 ms y, después de recibir la temperatura devuelta, la muestra en el panel frontal y muestra la forma de onda de temperatura. Finalmente cierre la comunicación serial.
Utilice los botones de opción en el panel frontal para seleccionar el sensor que se va a medir y luego envíe el código de comando de adquisición de temperatura correspondiente al controlador Arduino Uno. El código de comando para el sensor 1 es 0x55AA80 y el código de comando para el sensor 2 es 0x55AA81. Y al retrasar 800 milisegundos, se logra la función de muestreo una vez por segundo. El diagrama de bloques del programa correspondiente al sensor 1 y al sensor 2 se muestra a continuación:
Esta publicación de blog implementará LabVIEW para controlar Arduino y recopilar múltiples valores de temperatura DS18B20. Con respecto al control de Arduino por LabVIEW, ya hemos explicado los métodos de recolección de muchos tipos de sensores de temperatura en lo básico. Para más detalles, consulte el siguiente enlace:
LabVIEW controla Arduino para recopilar el valor del sensor de temperatura LM35 (Conceptos básicos - 12)
LabVIEW controla Arduino para recopilar el valor de temperatura del termistor (Conceptos básicos - 13)
Sensor digital DS18B20 con cable blindado de 1M, 2M, 3M, 4M | Sensor de temperatura DS18b20 + conector para auriculares de 3,5 mm |
2. Estructura del proyecto
Este proyecto introducirá el uso de 2 sensores DS18B20, Arduino Uno y LabVIEW para formar un sistema de medición digital de temperatura multicanal. El diagrama de bloques del sistema de medición digital de temperatura multicanal se muestra a continuación:
Entre ellos, dos sensores de temperatura DS18B20 están conectados a un solo bus en paralelo, y Arduino Uno sirve como computadora esclava, responsable de la lectura, escritura y transmisión de datos de DS18B20. El software de visualización escrito en LabVIEW sirve como computadora host, y las computadoras host y esclava utilizan la interfaz USB-TTL para lograr la comunicación.
3. Entorno de hardware
Conecte Vcc y GND del sensor de temperatura DS18B20 a +5V y GND del controlador Arduino Uno respectivamente para proporcionar energía al DS18B20. El pin DQ de DS18B20 está conectado al pin digital D2 del controlador Arduino Uno y se conecta una resistencia pull-up de 4,7 KΩ, porque el pin DQ de DS18B20 necesita agregar una resistencia pull-up para un funcionamiento normal. El diagrama de conexión de hardware del sistema de medición digital de temperatura multicanal se muestra a continuación:
4. Diseño funcional de Arduino
En el sistema de monitoreo de temperatura de computadora superior e inferior basado en Arduino y LabVIEW, la placa de control Arduino Uno debe completar las siguientes funciones: recibir y juzgar comandos y recopilar y transmitir datos de temperatura. La placa de control Arduino Uno recibe comandos de la computadora host a través del puerto serie, analiza y obtiene comandos válidos, lee y escribe el sensor DS18B20 para obtener la temperatura y carga los datos de temperatura al software LabVIEW.
El controlador Arduino Uno es responsable de leer el comando de adquisición de temperatura enviado por la computadora host de LabVIEW y leer el sensor DS18B20 correspondiente para obtener los datos de temperatura y los envía de regreso al software LabVIEW de la computadora host a través del puerto serie. El código del programa para el controlador Arduino Uno es el siguiente:
#include <OneWire.h>#include <DallasTemperature.h>#define ONE_WIRE_BUS 2 //DS18B20 está conectado al puerto digital 2 de Arduino
#define T1_COMMAND 0x80 //Recopilar palabras de comando #define T2_COMMAND 0x81 //Recopilar palabras de comando
OneWire oneWire(ONE_WIRE_BUS);Sensores de temperatura de Dallas(&oneWire);
byte datos de coma[3]={0};
//Definir datos de matriz para almacenar datos de comando del puerto serie void recibir_data(void);
//Recibir datos del puerto serie void test_do_data(void);
//Prueba si los datos del puerto serie son correctos y ejecuta el comando void setup(){ Serial.begin(9600); // Inicia la biblioteca sensores.begin();} void loop(){ while (Serial.available( ) > 0)
//Detectar continuamente si hay datos en el puerto serie { recibir_data();
//Aceptar datos del puerto serie test_do_data();
//Prueba si los datos son correctos y ejecuta el comando }} void recibir_data(void) { int i ; for(i=0;i<3;i++) { comdata[i] =Serial.read();
//Retraso por un tiempo para permitir que el caché del puerto serie prepare el siguiente byte. No retrasarlo puede resultar en pérdida de datos delay(2); }} void test_do_data(void)
//Prueba y ejecuta el comando { if(comdata[0] == 0x55) /
/0x55 y 0xAA son comandos válidos para determinar si { if(comdata[1] == 0xAA) { switch (comdata[2]) { case T1_COMMAND: sensors.requestTemperatures();
//ratures Serial.print(sensors.getTempCByIndex(0)); break; case T2_COMMAND: sensores.requestTemperatures(); /
/ Establecer temperaturas Serial.print(sensors.getTempCByIndex(1)); break; } } }}
5. Diseño funcional de LabVIEW
La parte de la computadora host de LabVIEW debe completar las siguientes funciones: enviar comandos de adquisición de temperatura al controlador Arduino de la computadora host. El controlador ino recibe comandos de la computadora host a través del puerto serie y transmite los datos después de completar la recopilación de datos de temperatura. El software LabVIEW muestra los datos de temperatura devueltos en el panel frontal.
5.1 Diseño del panel frontal
El panel frontal de LabVIEW está dividido en terminales de visualización de temperatura y selección de sensores. El terminal de selección de sensor se usa para determinar el sensor monitoreado actualmente y los datos de forma de onda se usan para mostrar la tendencia cambiante de los datos de temperatura. El panel frontal de la computadora host LabVIEW del sistema de medición digital de temperatura multicanal se muestra en la siguiente figura:
5.2 Diseño del diagrama de bloques del programa.
La estructura del programa principal de la computadora host de LabVIEW es una estructura secuencial + bucle While. Primero, en el marco de la estructura de secuencia, la comunicación del puerto serie se inicializa a través del número de puerto serie establecido y se borra el gráfico de forma de onda. Luego, el programa ingresa al bucle While y a la estructura de secuencia plana, envía el código de comando para la medición de temperatura del sensor 1 o 2 al controlador Arduino Uno, espera 100 ms y, después de recibir la temperatura devuelta, la muestra en el panel frontal y muestra la forma de onda de temperatura. Finalmente cierre la comunicación serial.
Utilice los botones de opción en el panel frontal para seleccionar el sensor que se va a medir y luego envíe el código de comando de adquisición de temperatura correspondiente al controlador Arduino Uno. El código de comando para el sensor 1 es 0x55AA80 y el código de comando para el sensor 2 es 0x55AA81. Y al retrasar 800 milisegundos, se logra la función de muestreo una vez por segundo. El diagrama de bloques del programa correspondiente al sensor 1 y al sensor 2 se muestra a continuación: