- Componente necesare
- MAX30205 cu Arduino - Diagrama circuitului
- Interfațarea Arduino cu senzorul de temperatură corporală MAX30205
- Programarea MAX30205 cu Arduino
- Contor de temperatură corporală Arduino - Testare
Pentru aplicații medicale sau clinice, măsurarea temperaturii corpului uman este un parametru important pentru a determina starea de sănătate a oricărui individ. Cu toate acestea, există o mulțime de moduri de a simți temperatura, dar nu totul are acuratețea pentru a îndeplini specificațiile clinice de termometrie. Senzorul de temperatură MAX30205 este special conceput pentru această aplicație. Rețineți că acest senzor nu este un senzor de temperatură fără contact, dacă doriți o măsurare a temperaturii IR fără contact, consultați termometrul MLX90614 pe care l-am proiectat mai devreme.
În acest proiect, vom interfața un senzor de temperatură corporală MAX30205 care poate fi ușor interfațat cu o bandă de fitness sau poate fi utilizat în scopuri medicale. Vom folosi Arduino Nano ca unitate principală de microcontroler și vom folosi, de asemenea, afișaje cu 7 segmente pentru a arăta temperatura detectată în Fahrenheit. Odată ce știi cum să folosești senzorul, îl poți folosi oricare dintre aplicațiile tale preferate, poți verifica și acest proiect Arduino Smartwatch care, combinat cu MAX30205, poate fi utilizat pentru monitorizarea temperaturii persoanelor.
Componente necesare
- Arduino NANO
- 7-Seg afișează catod comun - 3buc
- 74HC595 - 3 buc
- Rezistor 680R - 24buc
- Placă modul MAX30205
- Alimentare 5V
- Breadboard
- O mulțime de fire conectate
- IDE Arduino
- Un cablu micro-USB
MAX30205 cu Arduino - Diagrama circuitului
Schema completă a circuitului pentru conectarea Arduino cu senzorul de temperatură corporală MAX30205 este prezentată mai jos. Circuitul este foarte simplu, dar din moment ce am folosit afișaje pe 7 segmente, pare puțin complicat. Afișajele pe 7 segmente cu Arduino sunt o modalitate excelentă de a afișa valoarea dvs. mare și luminoasă, cu un cost foarte mic. Dar puteți afișa aceste valori și pe un ecran OLED sau LCD, dacă doriți.
Arduino Nano este conectat cu trei 74HC595. Trei 74HC595 sunt conectate în cascadă împreună pentru a salva pini de ieșire suplimentari de la Arduino Nano pentru conectarea a trei afișaje 7-Seg. Am folosit anterior 74HC595 cu Arduino în multe alte proiecte, cum ar fi Arduino Clock, LED Board Display, Arduino snake game etc., pentru a numi doar câteva.
Placa modulului MAX30205 necesită rezistențe suplimentare de tragere, deoarece comunică cu protocolul I2C. Cu toate acestea, puține plăci de module nu necesită preluare suplimentară, deoarece rezistențele de tracțiune sunt deja date în interiorul modulului. Prin urmare, trebuie să confirmați dacă placa modulului are rezistențe de tragere interne sau necesită suplimentar o extragere externă. Placa care este utilizată în acest proiect are deja rezistențele de tragere încorporate în interiorul plăcii modulului.
Interfațarea Arduino cu senzorul de temperatură corporală MAX30205
Senzorul folosit aici este MAX30205 de la maxim integrat. Senzorul de temperatură MAX30205 măsoară cu precizie temperatura cu precizie de 0,1 ° C (37 ° C până la 39 ° C). Senzorul funcționează cu protocolul I2C.
Placa modulului poate funcționa cu 5 sau 3.3V. Cu toate acestea, placa este configurată pentru a fi utilizată cu tensiune de funcționare de 5V. Acesta include, de asemenea, un schimbător de nivel logic, deoarece senzorul în sine suportă maximum 3,3 V ca scopuri legate de putere sau comunicare de date.
La ieșire, trei registre de schimbare de 8 biți 74HC595 sunt utilizate pentru interfața a trei afișaje cu 7 segmente cu Arduino NANO. Diagrama pin poate fi afișată în imaginea de mai jos-
Descrierea pinului 74HC595 poate fi văzută în tabelul de mai jos-
QA la QH sunt pinii de ieșire a datelor care sunt conectați cu afișajele 7-Seg. Deoarece trei 74HC595 sunt în cascadă împreună, pinul de intrare de date (PIN14) al primului registru de schimbare va fi conectat cu Arduino NANO și pinul de ieșire a datelor seriale va furniza datele următorului registru de schimbare. Această conexiune de date seriale va fi continuată până la al treilea 74HC595.
Programarea MAX30205 cu Arduino
Programul complet pentru acest tutorial poate fi găsit în partea de jos a acestei pagini. Explicația acestui cod este următoarea. În primul rând, includem fișierul antet standard al bibliotecii Arduino I2C.
#include
Linia de mai sus va include biblioteca contribuită Arduino de la protocentral. Această bibliotecă are funcții importante pentru a comunica cu senzorul MAX30205. Biblioteca este preluată de pe linkul GitHub de mai jos-
https://github.com/protocentral/ProtoCentral_MAX30205
După importul bibliotecii, definim datele obiectului MAX30205 așa cum se arată mai jos-
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
Următoarele două linii sunt importante pentru a seta parametrii. Linia de mai jos va furniza temperatura în Fahrenheit dacă este setată adevărată. Pentru afișarea rezultatului în grade Celsius, linia trebuie setată ca false.
const bool fahrenheittemp = adevărat; // Afișez temperatura în Fahrenheit, dacă doriți să arătați temperatura în Celsius, faceți această variabilă falsă.
Linia de mai jos trebuie configurată dacă sunt utilizate afișaje comune cu 7 segmente de tip catod. Faceți-l fals dacă este utilizat anod comun.
const bool commonCathode = adevărat; // Folosesc catodul comun 7segment dacă utilizați anodul comun, apoi schimbați valoarea în fals. const byte digit_pattern = {// 74HC595 Outpin Connection with 7segment display. // 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 //. };
Matricea de mai sus este utilizată pentru a stoca modelul de cifre pentru afișajele cu 7 segmente.
În funcția de configurare, după setarea modurilor de pin ale pinilor 74HC595, se inițializează protocolul I2C și citirea senzorului de temperatură.
void setup () {// puneți codul de configurare aici, pentru a rula o dată: // setați portul serial la 9600 Serial.begin (9600); întârziere (1000); // setați pinul de control 74HC595 ca pin pin de ieșire (latchPin, OUTPUT); // ST_CP de 74HC595 pinMode (clkPin, OUTPUT); // SH_CP din 74HC595 pinMode (dtPin, OUTPUT); // DS din 74HC595 // inițializează I2C Libs Wire.begin (); // porniți temperatura MAX30205 citită în modul continuu, modul activ tempSensor.begin (); }
În buclă, temperatura este citită de funcția tempSensor.getTemperature () și stocată într-o variabilă plutitoare numită temp . După aceea, dacă este selectat modul de temperatură Fahrenheit, datele sunt convertite de la Celsius la Fahrenheit. Apoi, trei cifre din datele de temperatură detectată convertite sunt separate în continuare în trei cifre individuale. Pentru a face acest lucru, sunt utilizate mai jos linii de coduri-
// saperate 3 cifre de la temperatura actuală (cum ar fi dacă temp = 31.23c,) int dispDigit1 = (int) temp / 10; // digit1 3 int dispDigit2 = (int) temp% 10; // digit2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10); // cifră3 2
Acum, cele trei cifre separate sunt trimise pe afișajele cu 7 segmente folosind registrele de schimbare 74HC595. Deoarece LSB a apărut pentru prima oară în al treilea afișaj cu 7 segmente prin al treilea 74HC595, a treia cifră este transmisă mai întâi. Pentru a face acest lucru, știftul blocat este tras jos și datele sunt trimise la 74HC595 prin funcția shiftOut ();
În același mod, a doua și prima cifră rămase sunt, de asemenea, trimise la respectivul 74HC595, rămânând astfel două afișaje cu 7 segmente. După trimiterea tuturor datelor, știftul de blocare este eliberat și tras în sus pentru a confirma sfârșitul transmisiei de date. Codurile respective pot fi văzute mai jos -
// afișează cifrele în afișajul de 3, 7 segmente. 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, ~ (model_cifră)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern-digit_pattern)); // 1. (Digit + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); } digitalWrite (latchPin, HIGH);
Contor de temperatură corporală Arduino - Testare
Circuitul este construit în două seturi de panouri, după cum puteți vedea mai jos. Când așezăm degetul pe senzor, temperatura este detectată și ieșirea este afișată într-un afișaj pe 7 segmente, aici valoarea este de 92,1 * F.
Funcționarea completă a proiectului poate fi găsită în videoclipul legat mai jos. Sper că ți-a plăcut să construiești proiectul și ai învățat ceva util. Dacă aveți întrebări, lăsați-le în secțiunea de comentarii de mai jos sau utilizați forumurile noastre.