- Požadované komponenty
- MAX30205 s Arduino - schéma zapojení
- Propojení Arduina se snímačem tělesné teploty MAX30205
- Programování MAX30205 pomocí Arduina
- Měřič tělesné teploty Arduino - testování
Pro lékařské nebo klinické aplikace je měření teploty lidského těla důležitým parametrem pro určení zdravotního stavu každého jedince. Existuje však mnoho způsobů, jak snímat teplotu, ale ne všechno má přesnost, aby vyhovovalo specifikacím klinické termometrie. Teplotní senzor MAX30205 je speciálně navržen pro tuto aplikaci. Pamatujte, že tento senzor není bezkontaktní teplotní senzor, pokud hledáte bezkontaktní měření teploty IR, podívejte se na teploměr MLX90614, který jsme dříve navrhli.
V tomto projektu propojíme snímač teploty lidského těla MAX30205, který lze snadno propojit s fitness pásmem nebo jej lze použít pro lékařské účely. Jako hlavní jednotku mikrokontroléru použijeme Arduino Nano a také použijeme 7segmentové displeje k zobrazení snímané teploty ve stupních Fahrenheita. Jakmile budete vědět, jak senzor používat, můžete jej použít v jakékoli z vašich preferovaných aplikací, můžete si také prohlédnout tento projekt Arduino Smartwatch, který lze v kombinaci s MAX30205 použít ke sledování teploty jednotlivců.
Požadované komponenty
- Arduino NANO
- 7-Seg zobrazuje běžnou katodu - 3ks
- 74HC595 - 3 ks
- Rezistor 680R - 24ks
- Deska modulu MAX30205
- 5V napájení
- Nepájivá deska
- Spousta připojovacích kabelů
- Arduino IDE
- Kabel micro-USB
MAX30205 s Arduino - schéma zapojení
Kompletní schéma zapojení pro připojení Arduina se snímačem tělesné teploty MAX30205 je uvedeno níže. Obvod je velmi jednoduchý, ale protože jsme použili 7segmentové displeje, vypadá to trochu komplikovaně. 7segmentové displeje s Arduino jsou skvělý způsob, jak zobrazit vaši hodnotu velkou a jasnou s velmi nízkými náklady. Pokud si to přejete, můžete tyto hodnoty zobrazit také na OLED nebo LCD.
Arduino Nano je spojeno se třemi 74HC595. Tři 74HC595 jsou kaskádově uspořádány, aby se ušetřily další výstupní piny z Arduino Nano pro připojení tří 7-Seg displejů. Dříve jsme 74HC595 s Arduinem používali v mnoha dalších projektech, jako jsou hodiny Arduino, LED Board Display, hadí hra Arduino atd.
Deska modulu MAX30205 vyžaduje další pull-up rezistory, protože komunikuje s protokolem I2C. Několik desek modulů však nevyžaduje další vytažení, protože vytahovací rezistory jsou již uvedeny uvnitř modulu. Proto je třeba potvrdit, zda má deska modulu vnitřní pull-up rezistory nebo vyžaduje externí pull up dodatečně. Deska, která se používá v tomto projektu, již má zabudované pull-up rezistory uvnitř desky modulu.
Propojení Arduina se snímačem tělesné teploty MAX30205
Senzor, který se zde používá, je MAX30205 od maxim integrated. Teplotní senzor MAX30205 přesně měří teplotu s přesností 0,1 ° C (37 ° C až 39 ° C). Senzor pracuje s protokolem I2C.
Deska modulu může pracovat s 5 nebo 3,3 V. Deska je však nakonfigurována pro použití s 5V provozním napětím. Zahrnuje také řadič logické úrovně, protože samotný snímač podporuje maximálně 3,3 V pro účely související s napájením nebo datovou komunikací.
Na výstupu jsou použity tři 8bitové posuvné registry 74HC595 k propojení tří 7segmentových displejů s Arduino NANO. Schéma pinů může být zobrazeno na následujícím obrázku -
Popis pinů 74HC595 je uveden v následující tabulce -
QA až QH jsou datové výstupní piny, které jsou připojeny k 7-Seg displejům. Vzhledem k tomu, že tři 74HC595 jsou kaskádovitě uspořádány společně, bude pin vstupu dat (PIN14) prvního posuvného registru spojen s Arduino NANO a výstupní kolík sériových dat bude poskytovat data do dalšího posuvného registru. Toto sériové datové připojení bude pokračovat až do třetího 74HC595.
Programování MAX30205 pomocí Arduina
Kompletní program pro tento výukový program najdete ve spodní části této stránky. Vysvětlení tohoto kódu je následující. Nejprve přidáme standardní záhlaví souboru knihovny Arduino I2C.
#zahrnout
Výše uvedený řádek bude obsahovat knihovnu přispěnou Arduinem z protocentralu. Tato knihovna má důležité funkce pro komunikaci se senzorem MAX30205. Knihovna je převzata z níže uvedeného odkazu GitHub -
https://github.com/protocentral/ProtoCentral_MAX30205
Po importu knihovny definujeme objektová data MAX30205, jak je uvedeno níže -
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
Další dva řádky jsou důležité pro nastavení parametrů. Níže uvedený řádek bude poskytovat teplotu ve stupních Fahrenheita, pokud je nastavena na hodnotu true. Pro zobrazení výsledku ve stupních Celsia musí být řádek nastaven na hodnotu false.
const bool fahrenheittemp = true; // Zobrazuji teplotu ve stupních Fahrenheita. Pokud chcete zobrazit teplotu ve stupních Celsia, udělejte tuto proměnnou nepravdivou.
Pokud se v hardwaru používají běžné 7segmentové displeje s katodovým typem, je třeba nakonfigurovat spodní řádek. Pokud je použita běžná anoda, udělejte to nepravdivé.
const bool commonCathode = true; // Používám běžný segment Cathode 7, pokud používáte běžnou anodu, pak změňte hodnotu na false. const byte digit_pattern = {// 74HC595 Outpin připojení se 7segmentovým displejem. // 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 //. };
Výše uvedené pole se používá k uložení číslicového vzoru pro 7segmentové displeje.
Ve funkci nastavení se po nastavení režimů pinů pinů 74HC595 inicializuje čtení protokolu I2C a teplotního senzoru.
void setup () {// vložte svůj instalační kód, aby se spustil jednou: // nastavte sériový port na 9600 Serial.begin (9600); zpoždění (1000); // nastavit ovládací kolík 74HC595 jako výstupní pinMode (latchPin, OUTPUT); // ST_CP 74HC595 pinMode (clkPin, OUTPUT); // SH_CP 74HC595 pinMode (dtPin, OUTPUT); // DS of 74HC595 // inicializovat I2C Libs Wire.begin (); // spuštění čtení teploty MAX30205 v režimu Continuos, aktivní režim tempSensor.begin (); }
Ve smyčce je teplota načítána funkcí tempSensor.getTemperature () a ukládána do plovoucí proměnné s názvem temp . Poté, pokud je zvolen teplotní režim Fahrenheita, jsou data převedena z Celsia na Fahrenheita. Poté jsou tři číslice z převedených snímaných údajů o teplotě dále rozděleny na tři jednotlivé číslice. K tomu se používají níže uvedené řádky kódů -
// oddělit 3 číslice od aktuální teploty (napří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
Nyní jsou oddělené tři číslice odeslány na 7segmentové displeje pomocí posuvných registrů 74HC595. Vzhledem k tomu, že se LSB poprvé objevil na třetím 7segmentovém displeji prostřednictvím třetího 74HC595, je nejprve přenesena třetí číslice. Chcete-li to provést, západka se zatáhne nízko a data se odešlou do 74HC595 funkcí shiftOut ();
Stejným způsobem se zbývající druhá a první číslice také odešlou na příslušný 74HC595, čímž zůstanou dva 7segmentové displeje. Po odeslání všech dat se západka uvolní a zatáhne vysoko, aby se potvrdil konec přenosu dat. Příslušné kódy jsou uvedeny níže -
// zobrazení číslic na 3, 7segmentové zobrazení. 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);
Měřič tělesné teploty Arduino - testování
Obvod je sestaven ze dvou sad prkén, jak vidíte níže. Když přiložíme prst na senzor, snímá se teplota a výstup se zobrazuje na 7segmentovém displeji, zde je hodnota 92,1 * F.
Kompletní fungování projektu najdete ve videu, na které odkazujete níže. Doufám, že se vám projekt líbil a naučili jste se něco užitečného. Pokud máte nějaké dotazy, nechte je v sekci komentářů níže nebo použijte naše fóra.