- Požadované komponenty
- MAX30205 s Arduino - schéma zapojenia
- Prepojenie Arduina so snímačom telesnej teploty MAX30205
- Programovanie MAX30205 s Arduino
- Merač telesnej teploty Arduino - testovanie
Pre lekárske alebo klinické aplikácie je meranie teploty ľudského tela dôležitým parametrom na určenie zdravotného stavu každého jednotlivca. Existuje však veľa spôsobov, ako snímať teplotu, ale nie všetko má takú presnosť, aby vyhovovalo špecifikáciám klinickej termometrie. Teplotný snímač MAX30205 je špeciálne navrhnutý pre túto aplikáciu. Pamätajte na to, že tento snímač nie je bezkontaktný snímač teploty. Ak hľadáte bezkontaktné meranie teploty IR, pozrite sa na teplomer MLX90614, ktorý sme navrhli skôr.
V tomto projekte prepojíme snímač teploty ľudského tela MAX30205, ktorý je možné ľahko prepojiť s fitnes pásmom alebo použiť na lekárske účely. Ako hlavnú jednotku mikrokontroléra použijeme Arduino Nano a na zobrazenie snímanej teploty vo stupňoch Fahrenheita tiež použijeme 7-segmentové displeje. Keď viete, ako senzor používať, môžete ho použiť v ktorejkoľvek z vašich preferovaných aplikácií. Môžete sa tiež pozrieť na tento projekt Arduino Smartwatch, ktorý v kombinácii s MAX30205 možno použiť na sledovanie teploty jednotlivcov.
Požadované komponenty
- Arduino NANO
- 7-Seg zobrazuje bežnú katódu - 3ks
- 74HC595 - 3 ks
- Rezistor 680R - 24ks
- Doska modulu MAX30205
- Napájanie 5V
- Nepál
- Veľa káblov na pripojenie
- Arduino IDE
- Kábel micro-USB
MAX30205 s Arduino - schéma zapojenia
Kompletná schéma zapojenia pre pripojenie Arduina k senzoru telesnej teploty MAX30205 je uvedená nižšie. Obvod je veľmi jednoduchý, ale keďže sme použili 7-segmentové displeje, vyzerá to trochu komplikovane. 7-segmentové displeje s Arduino sú skvelým spôsobom, ako zobraziť vašu hodnotu veľkú a jasnú s veľmi nízkymi nákladmi. Tieto hodnoty však môžete zobraziť aj na OLED alebo LCD.
Arduino Nano je spojené s tromi 74HC595. Tri 74HC595 sú kaskádované dohromady, aby ušetrili ďalšie výstupné piny z Arduino Nano pre pripojenie troch 7-seg displejov. Predtým sme 74HC595 s Arduinom používali v mnohých ďalších projektoch, ako sú hodiny Arduino, LED Board Display, hadia hra Arduino atď.
Doska modulu MAX30205 vyžaduje ďalšie pull-up rezistory, pretože komunikuje s protokolom I2C. Niekoľko modulových dosiek však nevyžaduje ďalšie vyťahovanie, pretože vyťahovacie rezistory sú už umiestnené vo vnútri modulu. Preto je potrebné potvrdiť, či má doska modulu vnútorné pull-up rezistory alebo vyžaduje externé pull-up navyše. Doska použitá v tomto projekte už má zabudované pull-up rezistory vo vnútri dosky modulu.
Prepojenie Arduina so snímačom telesnej teploty MAX30205
Senzor, ktorý sa tu používa, je MAX30205 od spoločnosti Maxim Integrated. Teplotný snímač MAX30205 presne meria teplotu s presnosťou na 0,1 ° C (37 ° C až 39 ° C). Senzor pracuje s protokolom I2C.
Doska modulu môže pracovať s napätím 5 alebo 3,3 V. Doska je však nakonfigurovaná na použitie s 5V prevádzkovým napätím. Zahŕňa tiež radič logickej úrovne, pretože samotný snímač podporuje maximálne 3,3 V na účely napájania alebo dátovej komunikácie.
Na výstupe sa používajú tri 8-bitové posuvné registre 74HC595 na prepojenie troch 7-segmentových displejov s Arduino NANO. Schéma pripínania je znázornená na nasledujúcom obrázku -
Popis pinov 74HC595 je uvedený v nasledujúcej tabuľke -
QA až QH sú kolíky výstupu údajov, ktoré sú spojené so 7-seg displejmi. Pretože sú tri 74HC595 kaskádované dohromady, bude kolík vstupu dát (PIN14) prvého posuvného registra spojený s Arduino NANO a výstupný kolík sériových údajov poskytne údaje do nasledujúceho posuvného registra. Toto sériové dátové pripojenie bude pokračovať až do tretieho 74HC595.
Programovanie MAX30205 s Arduino
Celý program pre tento tutoriál nájdete v spodnej časti tejto stránky. Vysvetlenie tohto kódu je nasledujúce. Najskôr zahrnieme štandardný hlavičkový súbor knižnice Arduino I2C.
#include
Vyššie uvedený riadok bude obsahovať knižnicu od Arduino od protocentralu. Táto knižnica má dôležité funkcie na komunikáciu so snímačom MAX30205. Knižnica je prevzatá z nižšie uvedeného odkazu na GitHub -
https://github.com/protocentral/ProtoCentral_MAX30205
Po importe knižnice definujeme objektové dáta MAX30205, ako je uvedené nižšie -
#include „Protocentral_MAX30205.h“ MAX30205 tempSensor;
Nasledujúce dva riadky sú dôležité pre nastavenie parametrov. Nižší riadok poskytne teplotu vo stupňoch Fahrenheita, ak je nastavený na hodnotu true. Na zobrazenie výsledku v stupňoch Celzia je potrebné, aby čiara bola nastavená na hodnotu false.
const bool fahrenheittemp = true; // Zobrazujem teplotu vo stupňoch Fahrenheita. Ak chcete zobraziť teplotu v stupňoch Celzia, urobte túto premennú nepravdivou.
Ak sa v hardvéri používajú bežné 7-segmentové displeje s katódovým typom, je potrebné nakonfigurovať spodný riadok. Ak sa používa bežná anóda, urobte to nepravdivé.
const bool commonCathode = true; // Používam spoločný segment Cathode 7, ak používate bežnú anódu, potom zmeňte hodnotu na hodnotu false. const byte digit_pattern = {// 74HC595 Outpin pripojenie so 7segmentovým displejom. // 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 //. };
Vyššie uvedené pole sa používa na uloženie číslicového vzoru pre 7-segmentové displeje.
Vo funkcii nastavenia sa po nastavení režimov pinov pinov 74HC595 inicializuje čítanie protokolu I2C a snímača teploty.
void setup () {// vložte svoj nastavovací kód, aby sa spustil raz: // nastavte sériový port na 9600 Serial.begin (9600); oneskorenie (1 000); // nastavi riadiaci pin 74HC595 ako vystupny pinMode (latchPin, OUTPUT); // ST_CP 74HC595 pinMode (clkPin, OUTPUT); // SH_CP of 74HC595 pinMode (dtPin, OUTPUT); // DS of 74HC595 // inicializovať I2C Libs Wire.begin (); // spustenie čítania teploty MAX30205 v režime Continuos, aktívny režim tempSensor.begin (); }
V slučke je teplota načítaná funkciou tempSensor.getTemperature () a uložená vo floatovej premennej s názvom temp . Potom, ak je zvolený teplotný režim Fahrenheita, dáta sa prevedú z Celzia na Fahrenheita. Potom sú tri číslice z prevedených snímaných údajov o teplote ďalej rozdelené na tri jednotlivé číslice. K tomu slúžia nasledujúce riadky kódov -
// oddelené 3 číslice od aktuálnej teploty (napríklad if 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
Teraz sa oddelené tri číslice posielajú na 7-segmentové displeje pomocou posuvných registrov 74HC595. Pretože LSB sa prvýkrát ukázal na treťom 7-segmentovom displeji cez tretí 74HC595, je najskôr vysielaná 3. číslica. Za týmto účelom je západka zatiahnutá nízko a dáta sú odoslané do 74HC595 pomocou funkcie shiftOut ();
Rovnakým spôsobom sa zvyšné druhé a prvé číslice tiež pošlú na príslušný 74HC595, čím zostanú dva 7-segmentové displeje. Po odoslaní všetkých údajov sa západka uvoľní a potiahne vysoko, aby sa potvrdil koniec prenosu údajov. Príslušné kódy sú uvedené nižšie -
// zobrazenie číslic na 3, 7segmentové zobrazenie. 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);
Merač telesnej teploty Arduino - testovanie
Obvod je zostavený z dvoch sád nepájivých panelov, ako vidíte nižšie. Keď priložíme prst na snímač, zaznamená sa teplota a výstup sa zobrazí na 7 segmentovom displeji, tu je hodnota 92,1 * F.
Kompletné fungovanie projektu nájdete vo videu, na ktoré odkazujete nižšie. Dúfam, že sa vám projekt páčil a dozvedeli ste sa niečo užitočné. Ak máte akékoľvek otázky, nechajte ich v sekcii komentárov nižšie alebo použite naše fóra.