- Nepieciešamās sastāvdaļas
- MAX30205 ar Arduino - shēmas shēma
- Arduino saskarne ar MAX30205 ķermeņa temperatūras sensoru
- MAX30205 programmēšana ar Arduino
- Arduino ķermeņa temperatūras mērītājs - pārbaude
Medicīniskos vai klīniskos nolūkos cilvēka ķermeņa temperatūras mērīšana ir svarīgs parametrs, lai noteiktu jebkura cilvēka veselības stāvokli. Tomēr ir daudz veidu, kā nojaust temperatūru, taču ne visam ir precizitāte, lai atbilstu klīniskās termometrijas specifikācijām. MAX30205 temperatūras sensors ir īpaši paredzēts šai lietošanai. Ņemiet vērā, ka šis sensors nav bezkontakta temperatūras sensors. Ja meklējat bezkontakta IR temperatūras mērīšanu, pārbaudiet MLX90614 termometru, kuru mēs izstrādājām iepriekš.
Šajā projektā mēs saskarsimies ar MAX30205 cilvēka ķermeņa temperatūras sensoru, kuru var viegli savienot ar fitnesa joslu vai izmantot medicīniskiem mērķiem. Mēs izmantosim Arduino Nano kā galveno mikrokontroliera bloku, kā arī izmantosim 7 segmentu displejus, lai parādītu jutīgo temperatūru pēc Fārenheita. Kad jūs zināt, kā lietot sensoru, varat to izmantot jebkurā no jums vēlamajām lietojumprogrammām, kā arī varat pārbaudīt šo Arduino Smartwatch projektu, kuru kopā ar MAX30205 var izmantot, lai uzraudzītu personu temperatūru.
Nepieciešamās sastāvdaļas
- Arduino NANO
- 7-Seg parāda parasto katodu - 3gab
- 74HC595 - 3 gab
- 680R rezistors - 24gab
- MAX30205 moduļu plate
- 5V barošanas avots
- Maizes dēlis
- Daudz pieslēdzamu vadu
- Arduino IDE
- Mikro USB kabelis
MAX30205 ar Arduino - shēmas shēma
Pilna shēma, lai savienotu Arduino ar ķermeņa temperatūras sensoru MAX30205, parādīta zemāk. Shēma ir ļoti vienkārša, bet, tā kā mēs esam izmantojuši 7 segmentu displejus, tas izskatās mazliet sarežģīts. 7 segmentu displeji ar Arduino ir lielisks veids, kā parādīt savu vērtību lielu un spilgtu ar ļoti zemām izmaksām. Bet, ja vēlaties, šīs vērtības varat parādīt arī OLED vai LCD.
Arduino Nano ir savienots ar trim 74HC595. Trīs 74HC595 ir apvienoti kaskādē, lai saglabātu papildu izejas tapas no Arduino Nano trīs 7-Seg displeju savienošanai. Iepriekš mēs izmantojām 74HC595 ar Arduino daudzos citos projektos, piemēram, Arduino Clock, LED Board Display, Arduino čūsku spēlē utt.
MAX30205 moduļa kartei ir nepieciešami papildu pievilkšanas rezistori, jo tā sazinās ar I2C protokolu. Tomēr dažām moduļu plāksnēm nav nepieciešama papildu pievilkšana, jo pievilkšanas rezistori jau ir doti moduļa iekšpusē. Tāpēc ir jāapstiprina, vai moduļa plāksnei ir iekšējie pievilkšanas rezistori, vai arī tas papildus prasa ārēju pievilkšanu. Šajā projektā izmantotajā dēlī jau ir iebūvēti pievilkšanas rezistori moduļa plates iekšpusē.
Arduino saskarne ar MAX30205 ķermeņa temperatūras sensoru
Sensors, kas tiek izmantots šeit, ir MAX30205 no maksimāli integrēta. MAX30205 temperatūras sensors precīzi mēra temperatūru ar 0,1 ° C precizitāti (37 ° C līdz 39 ° C). Sensors darbojas ar protokolu I2C.
Moduļu plate var strādāt ar 5 vai 3,3 V. Tomēr tāfele ir konfigurēta lietošanai ar 5V darba spriegumu. Tas ietver arī loģiskā līmeņa pārslēdzēju, jo pats sensors kā maksimumu atbalsta 3,3 V kā strāvas vai ar datu komunikāciju saistītus mērķus.
Izejā trīs 74HC595, 8 bitu maiņu reģistri tiek izmantoti, lai trīs 7 segmentu displejus savienotu ar Arduino NANO. Piespraudes diagrammu var parādīt zemāk esošajā attēlā-
74HC595 tapas apraksts ir redzams zemāk esošajā tabulā-
QA līdz QH ir datu izvades tapas, kas ir savienotas ar 7-Seg displejiem. Tā kā trīs 74HC595 ir apvienoti kaskādē, pirmā maiņas reģistra datu ievades tapa (PIN14) tiks savienota ar Arduino NANO, un sērijas datu izvades tapa nodrošinās datus nākamajam maiņu reģistram. Šis sērijveida datu savienojums tiks turpināts līdz trešajam 74HC595.
MAX30205 programmēšana ar Arduino
Pilna šīs apmācības programma ir atrodama šīs lapas apakšdaļā. Šis kods ir izskaidrots šādi. Pirmkārt, mēs iekļaujam standarta Arduino I2C bibliotēkas galvenes failu.
# iekļaut
Iepriekš minētajā rindiņā tiks iekļauta Arduino bibliotēka no protocentral. Šai bibliotēkai ir svarīgas funkcijas, lai sazinātos ar MAX30205 sensoru. Bibliotēka ir ņemta no zemāk esošās GitHub saites-
https://github.com/protocentral/ProtoCentral_MAX30205
Pēc bibliotēkas importēšanas mēs definējam objekta MAX30205 datus, kā parādīts zemāk-
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
Nākamās divas rindas ir svarīgas, lai iestatītu parametrus. Zemāk redzamā līnija nodrošinās temperatūru pēc Fārenheita, ja tā būs iestatīta kā patiesa. Lai parādītu rezultātu pēc Celsija, līnija ir jāiestata kā nepatiesa.
const bool fahrenheittemp = patiess; // Es parādīju temperatūru pēc Fārenheita, ja vēlaties parādīt temperatūru pēc Celsija, padariet šo mainīgo nepatiesu.
Zem ap līnijas jākonfigurē, ja aparatūrā tiek izmantoti kopīgi katoda tipa 7 segmentu displeji. Padariet to nepatiesu, ja tiek izmantots kopīgs anods.
const bool commonCathode = true; // Es izmantoju common Cathode 7segment, ja izmantojat common Anode, tad mainiet vērtību uz false. const baits digit_pattern = {// 74HC595 Savienojuma papildinājums ar 7 segmentu displeju. 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 //. };
Iepriekš minēto masīvu izmanto, lai saglabātu 7 segmentu displeju ciparu modeli.
Iestatīšanas funkcijā pēc 74HC595 tapu tapu režīmu iestatīšanas tiek inicializēts protokols I2C un temperatūras sensora rādījums.
void setup () {// šeit ievietojiet iestatīšanas kodu, lai palaistu vienu reizi: // iestatiet seriālo portu uz 9600 Serial.begin (9600); kavēšanās (1000); // iestatiet vadības tapu 74HC595 kā izvades pinMode (latchPin, OUTPUT); // ST_CP no 74HC595 pinMode (clkPin, OUTPUT); // SH_CP no 74HC595 pinMode (dtPin, OUTPUT); // DS of 74HC595 // inicializēt I2C Libs Wire.begin (); // sākt MAX30205 temperatūru nolasīt nepārtrauktā režīmā, aktīvajā režīmā tempSensor.begin (); }
Cilpā temperatūru nolasa funkcija tempSensor.getTemperature () un glabā pludiņa mainīgajā ar nosaukumu temp . Pēc tam, ja tiek izvēlēts temperatūras režīms pēc Fārenheita, dati tiek pārvērsti no Celsija uz Fārenheitu. Pēc tam trīs ciparus no konvertētajiem uztvertās temperatūras datiem tālāk atdala trīs atsevišķos ciparos. Lai to izdarītu, tiek izmantotas zemāk esošās kodu rindas -
// saperate 3 cipari no pašreizējās temperatūras (piemēram, ja temp = 31,23c,) int dispDigit1 = (int) temp / 10; // cipars1 3 int dispDigit2 = (int) temp% 10; // cipars2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10); // cipars3 2
Tagad atdalītie trīs cipari tiek nosūtīti uz 7 segmentu displejiem, izmantojot 74HC595 maiņu reģistrus. Tā kā LSB pirmo reizi parādījās trešajā 7 segmentu displejā, izmantojot trešo 74HC595, vispirms tiek pārraidīts 3. cipars. Lai to izdarītu, fiksēto tapu velk zemu un funkcijas shiftOut () dati tiek iesniegti 74HC595 ;
Tādā pašā veidā atlikušie otrais un pirmais cipars tiek nosūtīti arī uz attiecīgo 74HC595, tādējādi paliekot diviem 7 segmentu displejiem. Pēc visu datu nosūtīšanas fiksatora tapa tiek atbrīvota un pacelta augstu, lai apstiprinātu datu pārraides beigas. Attiecīgos kodus var redzēt zemāk -
// parādīt ciparus 3, 7 segmentu displejā. digitalWrite (latchPin, LOW); if (commonCathode == true) {shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern-ciparu_pattern); // 1. (cipars + DP) shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); } else {shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (cipars_pattern-cipars_pattern)); // 1. (cipars + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); } digitalWrite (latchPin, HIGH);
Arduino ķermeņa temperatūras mērītājs - pārbaude
Ķēde ir veidota divos paneļu komplektos, kā redzat zemāk. Novietojot pirkstu uz sensora, tiek uztverta temperatūra un izeja tiek parādīta 7 segmentu displejā, šeit vērtība ir 92,1 * F.
Pilnīga projekta darbība ir atrodama zemāk esošajā videoklipā. Ceru, ka jums patika veidot projektu un uzzinājāt kaut ko noderīgu. Ja jums ir kādi jautājumi, atstājiet tos komentāru sadaļā zemāk vai izmantojiet mūsu forumus.