- Zahtevane komponente
- MAX30205 z Arduino - vezje
- Povezava Arduina s senzorjem telesne temperature MAX30205
- Programiranje MAX30205 z Arduinom
- Merilnik telesne temperature Arduino - preskušanje
Za medicinsko ali klinično uporabo je merjenje človeške telesne temperature pomemben parameter za določanje zdravstvenega stanja posameznika. Vendar obstaja veliko načinov za zaznavanje temperature, vendar nimajo vsi natančnosti, da bi izpolnili zahteve klinične termometrije. Temperaturni senzor MAX30205 je posebej zasnovan za to aplikacijo. Upoštevajte, da ta senzor ni brezkontaktni temperaturni senzor. Če iščete brezkontaktno merjenje temperature IR, si oglejte termometer MLX90614, ki smo ga prej zasnovali.
V tem projektu bomo povezali MAX30205 senzor temperature človeškega telesa, ki ga je mogoče enostavno povezati s fitnes trakom ali uporabiti v medicinske namene. Kot glavno enoto mikrokrmilnika bomo uporabili Arduino Nano, za prikaz zaznane temperature v Fahrenheitu pa bomo uporabili tudi 7-segmentne zaslone. Ko veste, kako uporabljati senzor, ga lahko uporabite v kateri koli izmed najljubših aplikacij, lahko si ogledate tudi ta projekt Arduino Smartwatch, ki se lahko v kombinaciji z MAX30205 uporablja za nadzor temperature posameznikov.
Zahtevane komponente
- Arduino NANO
- 7-Seg prikazuje skupno katodo - 3 kos
- 74HC595 - 3 kos
- Upor 680R - 24 kosov
- Modularna plošča MAX30205
- 5V napajalnik
- Breadboard
- Veliko žic
- Arduino IDE
- Kabel micro-USB
MAX30205 z Arduino - vezje
Popoln diagram vezja za povezavo Arduina s senzorjem telesne temperature MAX30205 je prikazan spodaj. Vezje je zelo preprosto, a ker smo uporabili 7-segmentne zaslone, je videti nekoliko zapleteno. 7-segmentni prikazovalniki z Arduinom so odličen način za prikaz velike in svetle vrednosti z zelo nizkimi stroški. Če pa želite, lahko te vrednosti prikažete tudi na OLED ali LCD.
Arduino Nano je povezan s tremi 74HC595. Trije 74HC595 so kaskadno združeni, da prihranijo dodatne izhodne nožice iz Arduino Nano za priključitev treh 7-Seg zaslonov. Pred tem smo 74HC595 z Arduinom uporabljali v številnih drugih projektih, kot so Arduino Clock, LED Board Display, Arduino snake game itd.
Modularna plošča MAX30205 zahteva dodatne vlečne upore, saj komunicira s protokolom I2C. Vendar le malo modularnih plošč ne potrebuje dodatnega vlečenja, saj so vlečni upori že nameščeni znotraj modula. Zato je treba potrditi, ali ima plošča modula notranje vlečne upore ali pa dodatno zahteva zunanji vlek. Plošča, ki se uporablja v tem projektu, že ima vgrajene vlečne upore znotraj plošče modula.
Povezava Arduina s senzorjem telesne temperature MAX30205
Senzor, ki je tukaj uporabljen, je MAX30205 od maxim integriranega. Temperaturni senzor MAX30205 natančno meri temperaturo z natančnostjo 0,1 ° C (37 ° C do 39 ° C). Senzor deluje s protokolom I2C.
Modularna plošča lahko deluje s 5 ali 3,3 V. Vendar je plošča konfigurirana za uporabo z 5V delovno napetostjo. Vključuje tudi logični preklopnik nivoja, saj sam senzor podpira največ 3,3 V kot namen napajanja ali podatkovne komunikacije.
Na izhodu se za povezovanje treh 7-segmentnih zaslonov z Arduino NANO uporabljajo trije 8-bitni pomični registri 74HC595. Shema pinov je lahko prikazana na spodnji sliki-
Opis zatiča 74HC595 je prikazan v spodnji tabeli -
QA do QH so izhodni zatiči podatkov, ki so povezani z zasloni 7-Seg. Ker so trije 74HC595 kaskadno združeni, bo vhodni zatič podatkov (PIN14) prvega prestavnega registra povezan z Arduino NANO, serijski izhodni zatič pa podatke v naslednji prestavni register. Ta serijska podatkovna povezava se bo nadaljevala do tretjega 74HC595.
Programiranje MAX30205 z Arduinom
Celoten program za to vadnico najdete na dnu te strani. Razlaga te kode je naslednja. Najprej vključimo standardno datoteko glave knjižnice Arduino I2C.
#include
Zgornja vrstica bo vključevala Arduino knjižnico iz protocentrala. Ta knjižnica ima pomembne funkcije za komunikacijo s senzorjem MAX30205. Knjižnica je povzeta po spodnji povezavi do GitHub-
https://github.com/protocentral/ProtoCentral_MAX30205
Po uvozu knjižnice določimo MAX30205 podatke o objektu, kot je prikazano spodaj -
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
Naslednji dve vrstici sta pomembni za nastavitev parametrov. Spodnja vrstica bo zagotovila temperaturo v Fahrenheitu, če je nastavljena na true. Za prikaz rezultata v Celziju mora biti vrstica nastavljena na false.
const bool fahrenheittemp = res; // Prikazujem temperaturo v Fahrenheitu. Če želite prikazati temperaturo v Celziju, naj bo ta spremenljivka napačna.
Če se v strojni opremi uporabljajo običajni 7-segmentni zasloni katode, je treba konfigurirati spodnjo vrstico. Naj bo napačno, če se uporablja skupna anoda.
const bool commonCathode = true; // Uporabljam skupni segment Katode 7, če uporabljam skupno Anode, nato spremenim vrednost v false. 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 //. };
Zgornja matrika se uporablja za shranjevanje številskega vzorca za 7-segmentne zaslone.
V nastavitveni funkciji se po nastavitvi načinov zatičev zatičev 74HC595 inicializira protokol I2C in odčitavanje temperaturnega senzorja.
void setup () {// postavite svojo nastavitveno kodo sem, da se zažene enkrat: // nastavite serijska vrata na 9600 Serial.begin (9600); zamuda (1000); // nastavimo krmilni zatič 74HC595 kot izhodni pinMode (latchPin, OUTPUT); // ST_CP od 74HC595 pinMode (clkPin, OUTPUT); // SH_CP od 74HC595 pinMode (dtPin, IZHOD); // DS od 74HC595 // inicializiramo I2C Libs Wire.begin (); // zagon MAX30205 odčitavanje temperature v neprekinjenem načinu, aktivni način tempSensor.begin (); }
V zanki funkcijo tempSensor.getTemperature () odčita temperatura in jo shrani v spremenljivo spremenljivko z imenom temp . Po tem, če je izbran temperaturni način Fahrenheita, se podatki pretvorijo iz Celzija v Fahrenheit. Nato se tri številke iz pretvorjenih zaznanih temperaturnih podatkov še naprej ločijo na tri posamezne števke. Za to se uporabljajo spodnje vrstice kod -
// ločimo 3 števke od trenutne temperature (na primer, če je temp = 31,23c,) int dispDigit1 = (int) temp / 10; // številka1 3 int dispDigit2 = (int) temp% 10; // številka2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10); // številka3 2
Zdaj se ločene tri števke pošljejo na 7-segmentne zaslone z uporabo pomičnih registrov 74HC595. Ker se je LSB prvič prikazal na tretjem 7-segmentnem zaslonu prek tretjega 74HC595, se najprej prenese tretja številka. Za to se zapah zatiča povleče nizko in podatki shiftOut () posredujejo podatke 74HC595 ;
Na enak način se preostali drugi in prvi števki pošljeta tudi na ustrezni 74HC595 in tako ostaneta dva 7-segmentna zaslona. Po pošiljanju vseh podatkov se zaskočni zapah sprosti in povleče visoko, da se potrdi konec prenosa podatkov. Ustrezne kode si lahko ogledate spodaj -
// prikaz števk na 3, 7-segmentni prikaz. 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, ~ (vzorec_mest)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (mestni_vzorec-mestni_vzorec)); // 1. (Digit + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); } digitalWrite (latchPin, HIGH);
Merilnik telesne temperature Arduino - preskušanje
Vezje je sestavljeno iz dveh sklopov, kot lahko vidite spodaj. Ko položimo prst na senzor, se zazna temperatura in izhod se prikaže na 7-segmentnem zaslonu, tukaj je vrednost 92,1 * F.
Celotno delovanje projekta najdete v spodnjem videoposnetku. Upam, da ste uživali pri izdelavi projekta in se naučili kaj koristnega. Če imate kakršna koli vprašanja, jih pustite v spodnjem oddelku za komentarje ali uporabite naše forume.