- Componenti richiesti
- MAX30205 con Arduino - Schema del circuito
- Interfacciamento di Arduino con il sensore di temperatura corporea MAX30205
- Programmazione MAX30205 con Arduino
- Misuratore della temperatura corporea di Arduino - Test
Per applicazioni mediche o cliniche, la misurazione della temperatura corporea umana è un parametro importante per determinare le condizioni di salute di ogni individuo. Tuttavia, ci sono molti modi per rilevare la temperatura, ma non tutto ha la precisione per soddisfare le specifiche della termometria clinica. Il sensore di temperatura MAX30205 è progettato specificamente per questa applicazione. Tieni presente che questo sensore non è un sensore di temperatura senza contatto, se stai cercando una misurazione della temperatura IR senza contatto, controlla il termometro MLX90614 che abbiamo progettato in precedenza.
In questo progetto, interfacciamo un sensore di temperatura del corpo umano MAX30205 che può essere facilmente interfacciato con una fascia fitness o può essere utilizzato per scopi medici. Useremo Arduino Nano come unità principale del microcontrollore e utilizzeremo anche display a 7 segmenti per mostrare la temperatura rilevata in Fahrenheit. Una volta che sai come utilizzare il sensore, puoi usarlo con qualsiasi applicazione preferita, puoi anche dare un'occhiata a questo progetto Arduino Smartwatch che combinato con MAX30205 può essere utilizzato per monitorare la temperatura delle persone.
Componenti richiesti
- Arduino NANO
- Display 7-Seg a catodo comune - 3 pezzi
- 74HC595 - 3 pezzi
- Resistenza 680R - 24 pezzi
- Scheda del modulo MAX30205
- Alimentazione 5V
- Breadboard
- Molti cavi di collegamento
- IDE Arduino
- Un cavo micro-USB
MAX30205 con Arduino - Schema del circuito
Di seguito è mostrato lo schema del circuito completo per collegare Arduino con il sensore di temperatura corporea MAX30205. Il circuito è molto semplice, ma poiché abbiamo utilizzato display a 7 segmenti, sembra un po 'complicato. I display a 7 segmenti con Arduino sono un ottimo modo per mostrare il tuo valore grande e luminoso a un costo molto basso. Ma puoi anche visualizzare questi valori su un OLED o LCD se lo desideri.
L'Arduino Nano è collegato a tre 74HC595. Tre 74HC595 sono collegati in cascata per salvare pin di uscita aggiuntivi da Arduino Nano per il collegamento di tre display 7-Seg. Abbiamo già utilizzato 74HC595 con Arduino in molti altri progetti come Arduino Clock, LED Board Display, Arduino snake game, ecc. Per citarne alcuni.
La scheda del modulo MAX30205 richiede resistenze di pull-up aggiuntive poiché comunica con il protocollo I2C. Tuttavia, poche schede modulo non richiedono un pull-up aggiuntivo poiché le resistenze di pull-up sono già fornite all'interno del modulo. Pertanto, è necessario confermare se la scheda del modulo ha resistenze di pull-up interne o richiede un pull-up esterno aggiuntivo. La scheda che viene utilizzata in questo progetto ha già le resistenze di pull-up integrate all'interno della scheda del modulo.
Interfacciamento di Arduino con il sensore di temperatura corporea MAX30205
Il sensore che viene utilizzato qui è il MAX30205 di Maxim integrato. Il sensore di temperatura MAX30205 misura accuratamente la temperatura con una precisione di 0,1 ° C (da 37 ° C a 39 ° C). Il sensore funziona con il protocollo I2C.
La scheda del modulo può funzionare con 5 o 3,3 V. Tuttavia, la scheda è configurata per essere utilizzata con una tensione operativa di 5V. Include anche un cambio di livello logico, poiché il sensore stesso supporta un massimo di 3,3 V come alimentazione o per scopi legati alla comunicazione dati.
In uscita, tre registri a scorrimento a 8 bit 74HC595 vengono utilizzati per interfacciare tre display a 7 segmenti con Arduino NANO. Il diagramma dei pin può essere mostrato nell'immagine sottostante-
La descrizione dei pin del 74HC595 può essere vista nella tabella sottostante-
Da QA a QH sono i pin di uscita dati collegati ai display a 7 segmenti. Poiché tre 74HC595 sono collegati in cascata insieme, il pin di ingresso dati (PIN14) del primo registro a scorrimento sarà collegato ad Arduino NANO e il pin di uscita dati seriali fornirà i dati al registro a scorrimento successivo. Questa connessione dati seriale continuerà fino al terzo 74HC595.
Programmazione MAX30205 con Arduino
Il programma completo di questo tutorial si trova in fondo a questa pagina. La spiegazione di questo codice è la seguente. Innanzitutto, includiamo il file di intestazione della libreria I2C Arduino standard.
#includere
La riga sopra includerà la libreria Arduino fornita da protocentral. Questa libreria ha importanti funzioni per comunicare con il sensore MAX30205. La libreria è presa dal collegamento GitHub sottostante-
https://github.com/protocentral/ProtoCentral_MAX30205
Dopo aver importato la libreria, definiamo i dati dell'oggetto MAX30205 come mostrato di seguito-
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
Le due righe successive sono importanti per impostare i parametri. La riga sottostante fornirà la temperatura in Fahrenheit se impostata su true. Per mostrare il risultato in Celsius, la linea deve essere impostata su falso.
const bool fahrenheittemp = true; // Sto mostrando la temperatura in Fahrenheit, se vuoi mostrare la temperatura in Celsius, rendi falsa questa variabile.
La linea sottostante deve essere configurata se nell'hardware vengono utilizzati display a 7 segmenti di tipo catodo comune. Rendilo falso se viene utilizzato un anodo comune.
const bool commonCathode = true; // Sto usando il segmento Cathode 7 comune se usi un anodo comune, quindi cambia il valore in falso. const byte digit_pattern = {// 74HC595 Outpin Connection con visualizzazione a 7 segmenti. // 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 matrice di cui sopra viene utilizzata per memorizzare il modello di cifre per i display a 7 segmenti.
Nella funzione di configurazione, dopo aver impostato le modalità dei pin dei pin 74HC595, viene inizializzato il protocollo I2C e la lettura del sensore di temperatura.
void setup () {// inserisci qui il tuo codice di configurazione, da eseguire una volta: // imposta la porta seriale su 9600 Serial.begin (9600); ritardo (1000); // imposta il pin di controllo 74HC595 come output pinMode (latchPin, OUTPUT); // ST_CP di 74HC595 pinMode (clkPin, OUTPUT); // SH_CP di 74HC595 pinMode (dtPin, OUTPUT); // DS di 74HC595 // inizializza I2C Libs Wire.begin (); // avvia MAX30205 temperatura letta in modalità continua, modalità attiva tempSensor.begin (); }
Nel ciclo, la temperatura viene letta dalla funzione tempSensor.getTemperature () e memorizzata in una variabile float denominata temp . Successivamente, se viene selezionata la modalità di temperatura Fahrenheit, i dati vengono convertiti da Celsius a Fahrenheit. Quindi, tre cifre dei dati di temperatura rilevati convertiti vengono ulteriormente separate in tre singole cifre. Per fare ciò, vengono utilizzate le seguenti righe di codici:
// riconoscere 3 cifre dalla temperatura corrente (come se temp = 31.23c,) int dispDigit1 = (int) temp / 10; // digit1 3 int dispDigit2 = (int) temp% 10; // digit2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10); // digit3 2
Ora, le tre cifre separate vengono inviate ai display a 7 segmenti utilizzando i registri a scorrimento 74HC595. Poiché l'LSB viene visualizzato per la prima volta nel terzo display a 7 segmenti tramite il terzo 74HC595, viene trasmessa per prima la terza cifra. Per fare ciò, il pin bloccato viene abbassato ei dati vengono inviati al 74HC595 dalla funzione shiftOut ();
Allo stesso modo, anche la seconda e la prima cifra rimanenti vengono inviate al rispettivo 74HC595, rimanendo così due display a 7 segmenti. Dopo aver inviato tutti i dati, il perno di chiusura viene rilasciato e tirato in alto per confermare la fine della trasmissione dei dati. I rispettivi codici possono essere visti di seguito -
// visualizza le cifre nel display a 3, 7 segmenti. digitalWrite (latchPin, LOW); if (commonCathode == true) {shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern-digit_pattern); // 1. (Digit + DP) shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); } else {shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern-digit_pattern)); // 1. (Digit + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); } digitalWrite (latchPin, HIGH);
Misuratore della temperatura corporea di Arduino - Test
Il circuito è costruito in due serie di breadboard come puoi vedere di seguito. Quando posizioniamo il dito sul sensore, la temperatura viene rilevata e l'uscita viene mostrata in un display a 7 segmenti, qui il valore è 92,1 * F.
Il funzionamento completo del progetto si trova nel video linkato di seguito. Spero ti sia piaciuto costruire il progetto e hai imparato qualcosa di utile. Se hai domande, lasciale nella sezione commenti qui sotto o usa i nostri forum.