- Componentes requeridos
- MAX30205 con Arduino - Diagrama de circuito
- Interfaz de Arduino con el sensor de temperatura corporal MAX30205
- Programando MAX30205 con Arduino
- Medidor de temperatura corporal Arduino - Prueba
Para aplicaciones médicas o clínicas, medir la temperatura corporal humana es un parámetro importante para determinar el estado de salud de cualquier individuo. Sin embargo, hay muchas formas de detectar la temperatura, pero no todas tienen la precisión para cumplir con las especificaciones de termometría clínica. El sensor de temperatura MAX30205 está diseñado específicamente para esta aplicación. Tenga en cuenta que este sensor no es un sensor de temperatura sin contacto, si está buscando una medición de temperatura IR sin contacto, consulte el termómetro MLX90614 que diseñamos anteriormente.
En este proyecto, conectaremos un sensor de temperatura del cuerpo humano MAX30205 que se puede conectar fácilmente con una banda de fitness o se puede utilizar con fines médicos. Usaremos Arduino Nano como la unidad de microcontrolador principal y también usaremos pantallas de 7 segmentos para mostrar la temperatura detectada en Fahrenheit. Una vez que sepa cómo usar el sensor, puede usarlo en cualquiera de sus aplicaciones preferidas, también puede consultar este proyecto de Arduino Smartwatch que, combinado con MAX30205, se puede usar para monitorear la temperatura de las personas.
Componentes requeridos
- Arduino NANO
- 7 segmentos muestra cátodo común - 3 piezas
- 74HC595 - 3 piezas
- Resistencia 680R - 24 piezas
- Placa de módulo MAX30205
- Fuente de alimentación 5V
- Tablero de circuitos
- Muchos cables de conexión
- IDE de Arduino
- Un cable micro-USB
MAX30205 con Arduino - Diagrama de circuito
El diagrama de circuito completo para conectar Arduino con el sensor de temperatura corporal MAX30205 se muestra a continuación. El circuito es muy simple, pero como usamos pantallas de 7 segmentos, parece un poco complicado. Las pantallas de 7 segmentos con Arduino son una excelente manera de mostrar su valor en grande y brillante a un costo muy bajo. Pero también puede mostrar estos valores en un OLED o LCD si lo desea.
El Arduino Nano está conectado con tres 74HC595. Tres 74HC595 se conectan en cascada para ahorrar pines de salida adicionales del Arduino Nano para conectar tres pantallas de 7 segmentos. Anteriormente hemos utilizado 74HC595 con Arduino en muchos otros proyectos como el reloj Arduino, la pantalla LED, el juego de serpientes Arduino, etc., por nombrar algunos.
La placa del módulo MAX30205 requiere resistencias pull-up adicionales ya que se comunica con el protocolo I2C. Sin embargo, pocas placas de módulo no requieren pullup adicional ya que las resistencias pull-up ya se encuentran dentro del módulo. Por lo tanto, es necesario confirmar si la placa del módulo tiene resistencias pull-up internas o si requiere un pull-up externo adicionalmente. La placa que se utiliza en este proyecto ya tiene las resistencias pull-up incorporadas dentro de la placa del módulo.
Interfaz de Arduino con el sensor de temperatura corporal MAX30205
El sensor que se utiliza aquí es el MAX30205 de maxim integrado. El sensor de temperatura MAX30205 mide con precisión la temperatura con una precisión de 0,1 ° C (37 ° C a 39 ° C). El sensor funciona con el protocolo I2C.
La placa del módulo puede funcionar con 5 o 3,3 V. Sin embargo, la placa está configurada para usarse con voltaje de operación de 5V. También incluye un cambiador de nivel lógico, ya que el sensor en sí admite un máximo de 3,3 V para fines relacionados con la alimentación o la comunicación de datos.
En la salida, se utilizan tres registros de desplazamiento de 8 bits 74HC595 para conectar tres pantallas de 7 segmentos con el Arduino NANO. El diagrama de pines se puede mostrar en la siguiente imagen:
La descripción de los pines del 74HC595 se puede ver en la siguiente tabla:
QA a QH son los pines de salida de datos que están conectados con las pantallas de 7 segmentos. Dado que tres 74HC595 están conectados en cascada, el pin de entrada de datos (PIN14) del primer registro de desplazamiento se conectará con el Arduino NANO y el pin de salida de datos en serie proporcionará los datos al siguiente registro de desplazamiento. Esta conexión de datos en serie continuará hasta el tercer 74HC595.
Programando MAX30205 con Arduino
El programa completo de este tutorial se puede encontrar al final de esta página. La explicación de este código es la siguiente. Primero, incluimos el archivo de encabezado de la biblioteca Arduino I2C estándar.
#incluir
La línea anterior incluirá la biblioteca aportada por Arduino desde protocentral. Esta biblioteca tiene funciones importantes para comunicarse con el sensor MAX30205. La biblioteca se toma del siguiente enlace de GitHub:
https://github.com/protocentral/ProtoCentral_MAX30205
Después de importar la biblioteca, definimos los datos del objeto MAX30205 como se muestra a continuación:
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
Las siguientes dos líneas son importantes para configurar los parámetros. La siguiente línea proporcionará la temperatura en Fahrenheit si se establece en verdadero. Para mostrar el resultado en grados Celsius, la línea debe establecerse como falsa.
const bool fahrenheittemp = verdadero; // Estoy mostrando la temperatura en Fahrenheit, si quieres mostrar la temperatura en Celsius, haz que esta variable sea falsa.
La línea inferior debe configurarse si se utilizan pantallas de 7 segmentos de tipo cátodo común en el hardware. Hágalo falso si se utiliza un ánodo común.
const bool commonCathode = true; // Estoy usando el segmento 7 del cátodo común si usa el ánodo común, luego cambie el valor a falso. const byte digit_pattern = {// 74HC595 Outpin Conexión con pantalla de 7 segmentos. // Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 // abcdefg DP 0b11111100, // 0 0b01100000, // 1 0b11011010, // 2 0b11110010, // 3 0b01100110, // 4 0b10110110, // 5 0b10111110, // 6 0b11100000, // 7 0b11111110, // 8 0b11110110, // 9 0b11101110, // A 0b00111110, // b 0b00011010, // C 0b01111010, // d 0b10011110, // E 0b10001110, // F 0b00000001 //. };
La matriz anterior se utiliza para almacenar el patrón de dígitos para las pantallas de 7 segmentos.
En la función de configuración, después de configurar los modos de los pines 74HC595, se inicializa el protocolo I2C y la lectura del sensor de temperatura.
void setup () {// ponga su código de configuración aquí, para que se ejecute una vez: // establezca el puerto serie en 9600 Serial.begin (9600); retraso (1000); // establece el pin de control 74HC595 como pinMode de salida (latchPin, OUTPUT); // ST_CP de 74HC595 pinMode (clkPin, SALIDA); // SH_CP de 74HC595 pinMode (dtPin, OUTPUT); // DS de 74HC595 // inicializar I2C Libs Wire.begin (); // iniciar la lectura de temperatura MAX30205 en modo continuo, modo activo tempSensor.begin (); }
En el ciclo, la función tempSensor.getTemperature () lee la temperatura y la almacena en una variable flotante denominada temp . Después de eso, si se selecciona el modo de temperatura Fahrenheit, los datos se convierten de Celsius a Fahrenheit. Luego, tres dígitos de los datos de temperatura detectados convertidos se separan en tres dígitos individuales. Para hacer esto, se utilizan las siguientes líneas de códigos:
// separa 3 dígitos de la temperatura actual (como si temp = 31.23c,) int dispDigit1 = (int) temp / 10; // dígito1 3 int dispDigit2 = (int) temp% 10; // dígito2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10); // dígito3 2
Ahora, los tres dígitos separados se envían a las pantallas de 7 segmentos utilizando los registros de cambio 74HC595. Dado que el LSB se mostró por primera vez en la tercera pantalla de 7 segmentos a través del tercer 74HC595, primero se transmite el tercer dígito. Para hacer esto, el pin enganchado se baja y los datos se envían al 74HC595 mediante la función shiftOut ();
De la misma manera, el segundo y el primer dígito restantes también se envían al 74HC595 respectivo, quedando así dos pantallas de 7 segmentos. Después de enviar todos los datos, se suelta el pestillo y se tira hacia arriba para confirmar el final de la transmisión de datos. Los códigos respectivos se pueden ver a continuación:
// mostrar dígitos en pantalla de 3, 7 segmentos. digitalWrite (latchPin, LOW); if (commonCathode == true) {shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); shiftOut (dtPin, clkPin, LSBFIRST, patrón_dígito-patrón_dígito); // 1. (Dígito + DP) shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); } else {shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (patrón_dígitos-patrón_dígitos)); // 1. (Dígito + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); } digitalWrite (latchPin, HIGH);
Medidor de temperatura corporal Arduino - Prueba
El circuito está construido en dos juegos de placas de prueba como puede ver a continuación. Cuando colocamos el dedo en el sensor, se detecta la temperatura y la salida se muestra en una pantalla de 7 segmentos, aquí el valor es 92.1 * F.
El funcionamiento completo del proyecto se puede encontrar en el video vinculado a continuación. Espero que hayas disfrutado construyendo el proyecto y hayas aprendido algo útil. Si tiene alguna pregunta, déjela en la sección de comentarios a continuación o utilice nuestros foros.