- Nødvendige komponenter
- MAX30205 med Arduino - kredsløbsdiagram
- Interfacing Arduino med MAX30205 kropstemperaturføler
- Programmering MAX30205 med Arduino
- Arduino kropstemperaturmåler - testning
Til medicinske eller kliniske anvendelser er måling af menneskets kropstemperatur en vigtig parameter for at bestemme den enkeltes helbredstilstand. Der er dog mange måder at føle temperatur på, men ikke alt har nøjagtigheden til at opfylde de kliniske termometri-specifikationer. MAX30205 temperaturføler er specielt designet til denne applikation. Bemærk, at denne sensor ikke er en kontaktløs temperaturføler. Hvis du leder efter en kontaktløs IR-temperaturmåling, skal du tjekke MLX90614 termometer, som vi designede tidligere.
I dette projekt vil vi grænseflade til en MAX30205 menneskelig kropstemperaturføler, der let kan forbindes med et fitnessbånd eller kan bruges til medicinske formål. Vi bruger Arduino Nano som den vigtigste mikrocontrollerenhed og bruger også 7-segmentskærme til at vise den registrerede temperatur i Fahrenheit. Når du først ved, hvordan du bruger sensoren, kan du bruge den til enhver af dine foretrukne applikationer. Du kan også tjekke dette Arduino Smartwatch-projekt, der kombineret med MAX30205 kan bruges til at overvåge enkeltpersoners temperatur.
Nødvendige komponenter
- Arduino NANO
- 7-Seg viser fælles katode - 3stk
- 74HC595 - 3 stk
- 680R modstand - 24stk
- MAX30205 modulkort
- 5V strømforsyning
- Brødbræt
- Masser af tilslutningsledninger
- Arduino IDE
- Et mikro-USB-kabel
MAX30205 med Arduino - kredsløbsdiagram
Det komplette kredsløbsdiagram til at forbinde Arduino med kropstemperaturføler MAX30205 er vist nedenfor. Kredsløbet er meget simpelt, men da vi har brugt 7-segmentskærme, ser det lidt kompliceret ud. 7-segmentskærme med Arduino er en fantastisk måde at vise din værdi stor og lys til meget lave omkostninger. Men du kan også vise disse værdier på en OLED eller LCD, hvis du ønsker det.
Arduino Nano er forbundet med tre 74HC595. Tre 74HC595 kaskaderes sammen for at gemme yderligere outputstifter fra Arduino Nano til tilslutning af tre 7-Seg-skærme. Vi har tidligere brugt 74HC595 med Arduino i mange andre projekter som Arduino Clock, LED Board Display, Arduino snake game osv. For at nævne nogle få.
MAX30205-modulkortet kræver yderligere pull-up-modstande, da det kommunikerer med I2C-protokollen. Imidlertid kræver få modulkort ikke yderligere pullup, da pull-up-modstandene allerede er angivet inde i modulet. Derfor skal man bekræfte, om modulkortet har interne pull-up-modstande, eller det kræver en ekstern pull-up yderligere. Kortet, der bruges i dette projekt, har allerede de indbyggede pull-up-modstande inde i modulkortet.
Interfacing Arduino med MAX30205 kropstemperaturføler
Sensoren, der bruges herover, er MAX30205 fra maxim integreret. MAX30205 temperatursensor måler nøjagtigt temperaturen med 0,1 ° C nøjagtighed (37 ° C til 39 ° C). Sensoren fungerer med I2C-protokollen.
Modulkortet kan arbejde med 5 eller 3,3 V. Kortet er dog konfigureret til at blive brugt med 5V driftsspænding. Det inkluderer også en logisk niveauskifter, da sensoren selv understøtter maksimalt 3,3 V som strøm- eller datakommunikationsrelaterede formål.
På output bruges tre 74HC595, 8-bit shift-registre til at interface tre 7-segmentskærme med Arduino NANO. Stiftdiagrammet kan vises i nedenstående billede-
Stiftbeskrivelsen af 74HC595 kan ses i nedenstående tabel-
QA til QH er dataudgangsstifterne, der er forbundet med 7-Seg-skærme. Da tre 74HC595 kaskaderes sammen, vil dataindgangsstiften (PIN14) i det første skiftregister være forbundet med Arduino NANO, og den serielle dataudgangsstiften vil give dataene til det næste skiftregister. Denne serielle dataforbindelse fortsættes op til den tredje 74HC595.
Programmering MAX30205 med Arduino
Det komplette program til denne vejledning kan findes nederst på denne side. Forklaringen på denne kode er som følger. For det første inkluderer vi standard Arduino I2C-bibliotekets headerfil.
#omfatte
Ovenstående linje inkluderer det Arduino-bidragede bibliotek fra protocentral. Dette bibliotek har vigtige funktioner til at kommunikere med MAX30205-sensoren. Biblioteket er taget fra nedenstående GitHub-link-
https://github.com/protocentral/ProtoCentral_MAX30205
Efter import af biblioteket definerer vi MAX30205 objektdata som vist nedenfor -
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
De næste to linjer er vigtige for at indstille parametrene. Nedenstående linje giver temperatur i Fahrenheit, hvis den er sat til. For at få vist resultatet i Celsius skal linjen indstilles falsk.
const bool fahrenheittemp = sandt; // Jeg viser temperaturen i Fahrenheit. Hvis du vil vise temperaturen i Celsius, gør denne variabel falsk.
Nedenstående linje skal konfigureres, hvis almindelige katodetype 7-segmentskærme bruges i hardwaren. Gør det forkert, hvis der anvendes almindelig anode.
const bool commonCathode = sand; // Jeg bruger fælles Cathode 7segment, hvis du bruger common Anode, så skift værdien 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 matrix bruges til at gemme cifret mønster til 7-segment skærme.
I indstillingsfunktionen initialiseres I2C-protokollen og temperaturfølerlæsning efter indstilling af pin-tilstande på 74HC595-ben.
ugyldig opsætning () {// sæt din opsætningskode her for at køre en gang: // indstil den serielle port til 9600 Serial.begin (9600); forsinkelse (1000); // indstil 74HC595 kontrolpind som output pinMode (latchPin, OUTPUT); // ST_CP af 74HC595 pinMode (clkPin, OUTPUT); // SH_CP af 74HC595 pinMode (dtPin, OUTPUT); // DS af 74HC595 // initialiser I2C Libs Wire.begin (); // start MAX30205 temperatur aflæst i kontinuerlig tilstand, aktiv tilstand tempSensor.begin (); }
I sløjfen læses temperaturen af funktionen tempSensor.getTemperature () og lagres i en flydevariabel med navnet temp . Herefter konverteres dataene fra Celsius til Fahrenheit, hvis Fahrenheit-temperaturtilstand er valgt. Derefter adskilles tre cifre fra de konverterede registrerede temperaturdata yderligere i tre individuelle cifre. For at gøre dette benyttes nedenstående linjer med koder -
// saperate 3 cifre fra den aktuelle temperatur (som hvis 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
Nu sendes de adskilte tre cifre til 7-segmentets displays ved hjælp af 74HC595 skiftregistre. Da LSB først viste sig i det tredje 7-segment display via den tredje 74HC595, transmitteres det 3. ciffer først. For at gøre dette trækkes låsestiften lavt, og dataene sendes til 74HC595 af funktionen shiftOut ();
På samme måde sendes de resterende andet og første cifre også til de respektive 74HC595, således at de resterende to 7-segment-displays forbliver. Efter afsendelse af alle data frigives låsestiften og trækkes højt for at bekræfte afslutningen på dataoverførslen. De respektive koder kan ses nedenfor -
// display cifre i 3, 7 segment display. 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); } andet {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 kropstemperaturmåler - testning
Kredsløbet er konstrueret i to sæt breadboards, som du kan se nedenfor. Når vi placerer fingeren på sensoren, registreres temperaturen, og output vises i et 7-segment display, her er værdien 92,1 * F.
Den komplette bearbejdning af projektet kan findes i den linkede video nedenfor. Håber du nød at bygge projektet og lærte noget nyttigt. Hvis du har spørgsmål, skal du lade dem være i kommentarfeltet nedenfor eller bruge vores fora.