- Nødvendige komponenter
- MAX30205 med Arduino - kretsskjema
- Grensesnitt Arduino med MAX30205 kroppstemperaturføler
- Programmering MAX30205 med Arduino
- Arduino kroppstemperaturmåler - testing
For medisinske eller kliniske anvendelser er måling av kroppstemperatur en viktig parameter for å bestemme helsetilstanden til enhver person. Imidlertid er det mange måter å føle temperatur på, men ikke alt har nøyaktigheten for å oppfylle spesifikasjonene for klinisk termometri. MAX30205 temperaturføler er spesielt designet for denne applikasjonen. Vær oppmerksom på at denne sensoren ikke er en kontaktløs temperatursensor. Hvis du er ute etter en kontaktløs IR-temperaturmåling, sjekk ut MLX90614 termometer som vi designet tidligere.
I dette prosjektet vil vi grensesnitt en MAX30205 temperaturføler for menneskekroppen som lett kan kobles til et treningsbånd eller kan brukes til medisinske formål. Vi vil bruke Arduino Nano som den viktigste mikrokontrollerenheten, og også bruke 7-segmentdisplayer for å vise den registrerte temperaturen i Fahrenheit. Når du vet hvordan du bruker sensoren, kan du bruke den til hvilken som helst av dine foretrukne applikasjoner. Du kan også sjekke ut dette Arduino Smartwatch-prosjektet som kombinert med MAX30205 kan brukes til å overvåke temperaturen til enkeltpersoner.
Nødvendige komponenter
- Arduino NANO
- 7-Seg viser vanlig katode - 3 stk
- 74HC595 - 3 stk
- 680R motstand - 24stk
- MAX30205 modulkort
- 5V strømforsyning
- Brettbrett
- Mange kroker
- Arduino IDE
- En mikro-USB-kabel
MAX30205 med Arduino - kretsskjema
Det komplette kretsskjemaet for å koble Arduino til kroppstemperaturføler MAX30205 er vist nedenfor. Kretsen er veldig enkel, men siden vi har brukt 7-segment skjermer, ser det litt komplisert ut. 7-segment skjermbilder med Arduino er en fin måte å vise verdien stor og lys til svært lave kostnader. Men du kan også vise disse verdiene på en OLED eller LCD hvis du ønsker det.
Arduino Nano er koblet til tre 74HC595. Tre 74HC595 er kaskadert sammen for å lagre ekstra utgangspinner fra Arduino Nano for tilkobling av tre 7-Seg-skjermer. Vi har tidligere brukt 74HC595 med Arduino i mange andre prosjekter som Arduino Clock, LED Board Display, Arduino snake game, etc. for å nevne noen.
MAX30205-modulkortet krever ekstra opptrekksmotstander siden det kommuniserer med I2C-protokollen. Imidlertid krever få modulkort ikke ekstra opptrekk, da opptrekksmotstandene allerede er gitt inne i modulen. Derfor må man bekrefte om modulkortet har interne trekkmotstander eller det krever en ekstern trekk opp i tillegg. Tavlen som brukes i dette prosjektet har allerede de innebygde opptrekksmotstandene inne i modulkortet.
Grensesnitt Arduino med MAX30205 kroppstemperaturføler
Sensoren som brukes her er MAX30205 fra maxim integrert. MAX30205 temperatursensor måler nøyaktig temperatur med 0,1 ° C nøyaktighet (37 ° C til 39 ° C). Sensoren fungerer med I2C-protokollen.
Modulkortet kan fungere med 5 eller 3,3V. Boardet er imidlertid konfigurert til å brukes med 5V driftsspenning. Den inkluderer også en logisk nivåskifter, siden sensoren selv støtter maksimalt 3,3 V som strøm- eller datakommunikasjonsrelaterte formål.
På utgangen brukes tre 74HC595, 8-biters skiftregistre til å grensesnitt tre 7-segmentdisplayer med Arduino NANO. Pin-diagrammet kan vises i nedenstående bilde-
Pinbeskrivelsen til 74HC595 kan sees i tabellen nedenfor -
QA til QH er datautgangspinnene som er koblet til 7-Seg-skjermene. Siden tre 74HC595 er kaskadert sammen, vil datainngangspinnen (PIN14) til det første skiftregisteret være koblet til Arduino NANO, og den serielle datautgangspinnen vil gi dataene til neste skiftregister. Denne serielle dataforbindelsen vil fortsette opp til den tredje 74HC595.
Programmering MAX30205 med Arduino
Hele programmet for denne veiledningen finner du nederst på denne siden. Forklaringen på denne koden er som følger. Først inkluderer vi standard Arduino I2C bibliotekets headerfil.
#inkludere
Ovennevnte linje inkluderer Arduino-bidratt bibliotek fra protosentral. Dette biblioteket har viktige funksjoner for å kommunisere med MAX30205-sensoren. Biblioteket er hentet fra GitHub-linken nedenfor -
https://github.com/protocentral/ProtoCentral_MAX30205
Etter å ha importert biblioteket, definerer vi MAX30205 objektdata som vist nedenfor -
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
De neste to linjene er viktige for å sette parametrene. Linjen nedenfor vil gi temperatur i Fahrenheit hvis den er satt. For å vise resultatet i Celsius, må linjen settes falsk.
const bool fahrenheittemp = true; // Jeg viser temperaturen i Fahrenheit. Hvis du vil vise temperaturen i Celsius, gjør denne variabelen falsk.
Nedenfor må linjen konfigureres hvis vanlige katodetyper med 7 segmenter brukes i maskinvaren. Gjør det falsk hvis vanlig anode brukes.
const bool commonCathode = true; // Jeg bruker vanlig katode 7segment hvis du bruker vanlig anode, og endre verdien til falsk. 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 //. };
Ovenstående matrise brukes til å lagre siffermønsteret for 7-segmentskjermene.
I innstillingsfunksjonen initialiseres I2C-protokollen og temperaturføleravlesning etter innstilling av pin-modusene til 74HC595-pins.
ugyldig oppsett () {// legg konfigurasjonskoden her, for å kjøre en gang: // sett serieporten til 9600 Serial.begin (9600); forsinkelse (1000); // angi 74HC595 kontrollpinne som utgang pinMode (latchPin, OUTPUT); // ST_CP av 74HC595 pinMode (clkPin, OUTPUT); // SH_CP av 74HC595 pinMode (dtPin, OUTPUT); // DS av 74HC595 // initialiser I2C Libs Wire.begin (); // start MAX30205 temperatur lest i kontinuerlig modus, aktiv modus tempSensor.begin (); }
I sløyfen leses temperaturen av funksjonen tempSensor.getTemperature () og lagres i en flytevariabel med navnet temp . Etter det, hvis Fahrenheit temperaturmodus er valgt, blir dataene konvertert fra Celsius til Fahrenheit. Deretter skilles tre sifre fra de konverterte registrerte temperaturdataene videre i tre individuelle sifre. For å gjøre dette brukes nedenstående kodelinjer-
// saperate 3 sifre fra gjeldende temperatur (som om 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
Nå blir de atskilte tre sifrene sendt til 7-segmentets skjermer ved hjelp av 74HC595 skiftregister. Siden LSB først dukket opp i den tredje 7-segmentskjermen via den tredje 74HC595, blir det tredje sifferet først overført. For å gjøre dette trekkes låsestiften lavt og dataene sendes til 74HC595 av funksjonen shiftOut ();
På samme måte sendes også gjenværende andre og første sifre til de respektive 74HC595, og gjenstår dermed to 7-segmentdisplayer. Etter å ha sendt alle dataene, frigjøres låsepinnen og trekkes høyt for å bekrefte slutten på dataoverføringen. De respektive kodene kan sees nedenfor -
// viser sifre i 3, 7-segmentvisning. digitalWrite (latchPin, LOW); hvis (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); } annet {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 kroppstemperaturmåler - testing
Kretsen er konstruert i to sett med brødbrett som du kan se nedenfor. Når vi plasserer fingeren på sensoren, registreres temperaturen og utgangen vises i et 7-segment display, her er verdien 92,1 * F.
Fullstendig arbeid av prosjektet finner du i videoen som er lenket nedenfor. Håper du likte å bygge prosjektet og lærte noe nyttig. Hvis du har spørsmål, kan du legge dem i kommentarfeltet nedenfor eller bruke forumene våre.