- Szükséges alkatrészek
- MAX30205 Arduino-val - áramköri ábra
- Összekötő Arduino és MAX30205 testhőmérséklet-érzékelő
- A MAX30205 programozása Arduinóval
- Arduino testhőmérséklet mérő - tesztelés
Orvosi vagy klinikai alkalmazások esetén az emberi testhőmérséklet mérése fontos paraméter az egyének egészségi állapotának meghatározásához. A hőmérséklet érzékelésére azonban sokféle módszer létezik, de nem minden olyan pontosságú, hogy megfeleljen a klinikai hőmérés specifikációinak. A MAX30205 hőmérséklet-érzékelőt kifejezetten erre az alkalmazásra tervezték. Ne feledje, hogy ez az érzékelő nem érintés nélküli hőmérséklet-érzékelő, ha érintés nélküli IR hőmérséklet-mérést szeretne, nézze meg az MLX90614 hőmérőt, amelyet korábban terveztünk.
Ebben a projektben egy MAX30205 emberi testhőmérséklet-érzékelőt fogunk összekapcsolni, amely könnyen összekapcsolható egy fitnesz sávval vagy orvosi célokra használható. Az Arduino Nano-t fogjuk használni a fő mikrovezérlő egységként, és a 7 szegmenses kijelzőket is használjuk az érzékelt hőmérséklet Fahrenheitben történő megjelenítésére. Ha már tudja, hogyan kell használni az érzékelőt, használhatja bármelyik kívánt alkalmazást, és megnézheti ezt az Arduino Smartwatch projektet is, amely a MAX30205-zel kombinálva felhasználható az egyének hőmérsékletének monitorozására.
Szükséges alkatrészek
- Arduino NANO
- A 7-Seg megjeleníti a közös katódot - 3db
- 74HC595 - 3 db
- 680R ellenállás - 24db
- MAX30205 modul kártya
- 5V tápegység
- Kenyérlemez
- Sok összekötött vezeték
- Arduino IDE
- Mikro-USB kábel
MAX30205 Arduino-val - áramköri ábra
Az Arduino és a MAX30205 testhőmérséklet- érzékelő csatlakoztatásának teljes kapcsolási rajza az alábbiakban látható. Az áramkör nagyon egyszerű, de mivel 7 szegmenses kijelzőket használtunk, kissé bonyolultnak tűnik. A 7 szegmenses kijelzők az Arduino segítségével nagyszerű módja annak, hogy nagy és világos értéket jelenítsen meg nagyon alacsony költség mellett. De ha szeretné, ezeket az értékeket OLED-en vagy LCD-n is megjelenítheti.
Az Arduino Nano három 74HC595-tel van összekötve. Három 74HC595 együtt lépcsőzik, hogy további 7 kimeneti érintkező csatlakoztatásához az Arduino Nano további kimeneti tűit mentse el. Korábban már használtuk a 74HC595-t az Arduinóval számos más projektben, például az Arduino Clock, a LED Board Display, az Arduino kígyójáték stb., Hogy csak néhányat említsünk.
A MAX30205 modul kártyához további felhúzási ellenállásokra van szükség, mivel kommunikál az I2C protokollal. Néhány modulpanel azonban nem igényel további felhúzást, mivel a felhúzási ellenállások már meg vannak adva a modulon belül. Ezért meg kell győződni arról, hogy a modullap rendelkezik-e belső felhúzási ellenállásokkal, vagy pedig külső meghúzást igényel. Az ebben a projektben használt kártya már beépített felhúzási ellenállásokkal rendelkezik a modul panelben.
Összekötő Arduino és MAX30205 testhőmérséklet-érzékelő
Az itt használt érzékelő a maximálisan integrált MAX30205. A MAX30205 hőmérséklet-érzékelő pontosan méri a hőmérsékletet 0,1 ° C pontossággal (37 ° C és 39 ° C között). Az érzékelő az I2C protokollal működik.
A modul kártya 5 vagy 3,3 V feszültséggel működhet. A kártya azonban úgy van konfigurálva, hogy 5V-os üzemi feszültséggel használható legyen. Tartalmaz egy logikai szintű váltót is, mivel maga az érzékelő tápellátással vagy adatkommunikációval kapcsolatosan legfeljebb 3,3 V-ot támogat.
A kimeneten három 74HC595, 8 bites shift regisztert használnak három 7 szegmenses kijelző összekapcsolására az Arduino NANO-val. A tűs diagram az alábbi kép-
A 74HC595 tű leírása az alábbi táblázatban látható:
A QA-QH azok az adatkimeneti csapok, amelyek a 7-szegmenses kijelzőkhöz kapcsolódnak. Mivel három 74HC595 együtt lépcsőzik, az első műszakregiszter adatbemeneti tűje (PIN14) összekapcsolódik az Arduino NANO-val, és a soros adatkimeneti tű biztosítja az adatokat a következő váltóregiszterbe. Ez a soros adatkapcsolat a harmadik 74HC595-ig folytatódik.
A MAX30205 programozása Arduinóval
Az oktatóanyag teljes programja az oldal alján található. A kód magyarázata a következő. Először belefoglaljuk a szokásos Arduino I2C könyvtár fejlécfájlt.
#include
A fenti sor tartalmazza az Arduino által közreműködő könyvtárat a protocentralból. Ennek a könyvtárnak fontos funkciói vannak a MAX30205 érzékelővel való kommunikációhoz. A könyvtár az alábbi GitHub link-
https://github.com/protocentral/ProtoCentral_MAX30205
A könyvtár importálása után meghatározzuk a MAX30205 objektumadatokat az alábbiak szerint -
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
A következő két sor fontos a paraméterek beállításához. Az alábbi vonal igazolja a hőmérsékletet Fahrenheit-ben. Az eredmény Celsiusban történő megjelenítéséhez a sort hamisra kell állítani.
const bool fahrenheittemp = igaz; // Fahrenheitben mutatom a hőmérsékletet, Ha Celsius-hőmérsékletet akarod megmutatni, akkor tedd hamissá ezt a változót.
A sor alatt kell beállítani, ha a hardverben közös 7-es katód típusú kijelzőket használnak. Tegyük tévessé, ha közös anódot használunk.
const bool commonCathode = true; // A közös katód 7szegmentumot használom, ha a közös anódot használja, akkor állítsa az értéket hamisra. const byte digit_pattern = {// 74HC595 Outpin Connection 7 szegmenses kijelzővel. Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7, // 0 };
A fenti tömböt a 7 szegmenses kijelzők számjegyének tárolására használják.
A beállítási funkcióban, miután beállította a 74HC595 tüskék tüskemódjait, az I2C protokoll és a hőmérséklet-érzékelő leolvasása inicializálódik.
void setup () {// tegye ide a beállító kódot, hogy egyszer fusson: // állítsa a soros portot 9600-ra. Serial.begin (9600); késés (1000); // állítsa be a 74HC595 Vezérlő tüskét kimeneti pinMode (latchPin, OUTPUT); // 74_HC595 pinMode ST_CP (clkPin, OUTPUT); // SH_CP / 74HC595 pinMode (dtPin, OUTPUT); // a 74HC595 DS-je // inicializálja az I2C Libs Wire.begin (); // a MAX30205 hőmérséklet indítása folyamatos módban, aktív módban tempSensor.begin (); }
A ciklusban a hőmérsékletet a tempSensor.getTemperature () függvény olvassa le, és a temp nevű úszó változóban tárolja. Ezt követően, ha a Fahrenheit hőmérsékleti módot választja, az adatokat Celsius-ról Fahrenheitre konvertálja. Ezután az átalakított érzékelt hőmérsékleti adatok három számjegyét további három külön számra osztjuk. Ehhez az alábbi kódsorokat kell használni:
// 3 számjegy az aktuális hőmérséklettől (például ha a hőmérséklet = 31,23c,) int dispDigit1 = (int) temp / 10; // digit1 3 int dispDigit2 = (int) temp% 10; // digit2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10); // számjegy3 2
Most az elválasztott három számjegyet elküldik a 7 szegmenses kijelzőkre a 74HC595 eltolási regiszterek segítségével. Mivel az LSB először a harmadik 7-szegmenses kijelzőn mutatkozott be a harmadik 74HC595-en keresztül, először a 3. számjegy kerül továbbításra. Ehhez a reteszelt csapot alacsonyra húzzák, és az adatokat a shiftOut () függvény elküldi a 74HC595-nek;
Ugyanígy a fennmaradó második és első számjegyeket is elküldik a megfelelő 74HC595-höz, így két két szegmenses kijelző marad. Az összes adat elküldése után a reteszelőcsap felszabadul és magasra húzódik, hogy megerősítse az adatátvitel végét. A megfelelő kódok alább láthatók -
// számjegyeket jelenít meg 3, 7 szegmenses kijelzőn. 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);
Arduino testhőmérséklet mérő - tesztelés
Az áramkör két kenyérlemez-készletből áll, amint az alább látható. Amikor az ujját az érzékelőre helyezzük, érzékeli a hőmérsékletet, és a kimenetet egy 7 szegmenses kijelző mutatja, itt az érték 92,1 * F.
A projekt teljes kidolgozása az alábbi linken található videóban található. Remélem, hogy élvezte a projekt építését, és valami hasznosat tanult. Ha bármilyen kérdése van, hagyja őket az alábbi megjegyzés részben, vagy használja fórumunkat.