- Nödvändiga komponenter
- MAX30205 med Arduino - kretsschema
- Gränssnitt Arduino med MAX30205 kroppstemperatur sensor
- Programmering MAX30205 med Arduino
- Arduino kroppstemperaturmätare - testning
För medicinska eller kliniska tillämpningar är mätning av kroppstemperaturen en viktig parameter för att bestämma hälsotillståndet för varje individ. Det finns dock många sätt att känna av temperatur men inte allt har noggrannhet för att uppfylla de kliniska termometrispecifikationerna. MAX30205 temperaturgivare är speciellt utformad för denna applikation. Observera att denna sensor inte är en kontaktlös temperatursensor. Om du letar efter en kontaktlös IR-temperaturmätning, kolla in MLX90614 termometer som vi designade tidigare.
I det här projektet kommer vi att ansluta en MAX30205 människokroppstemperatursensor som lätt kan kopplas till ett fitnessband eller kan användas för medicinska ändamål. Vi kommer att använda Arduino Nano som den huvudsakliga mikrokontrollenheten och också använda 7-segmentskärmar för att visa den avkända temperaturen i Fahrenheit. När du väl vet hur du använder sensorn kan du använda den av vilken applikation du helst föredrar, du kan också kolla in detta Arduino Smartwatch-projekt som i kombination med MAX30205 kan användas för att övervaka individens temperatur.
Nödvändiga komponenter
- Arduino NANO
- 7-Seg visar vanlig katod - 3st
- 74HC595 - 3 st
- 680R motstånd - 24st
- MAX30205 modulkort
- 5V strömförsörjning
- Bakbord
- Massor av anslutningskablar
- Arduino IDE
- En mikro-USB-kabel
MAX30205 med Arduino - kretsschema
Det fullständiga kretsschemat för att ansluta Arduino med kroppstemperaturgivare MAX30205 visas nedan. Kretsen är väldigt enkel, men eftersom vi har använt 7-segment skärmar ser det lite komplicerat ut. 7-segmentsdisplayer med Arduino är ett utmärkt sätt att visa ditt värde stort och ljust till mycket låga kostnader. Men du kan också visa dessa värden på en OLED eller LCD om du vill.
Arduino Nano är ansluten till tre 74HC595. Tre 74HC595 är kaskaderade tillsammans för att spara ytterligare utgångsstift från Arduino Nano för anslutning av tre 7-seg-skärmar. Vi har tidigare använt 74HC595 med Arduino i många andra projekt som Arduino Clock, LED Board Display, Arduino ormspel etc. för att nämna några.
MAX30205-moderkortet kräver ytterligare uppdragsmotstånd eftersom det kommunicerar med I2C-protokollet. Det är dock få modulkort som inte kräver ytterligare uppdragning eftersom uppdragningsmotstånden redan finns inuti modulen. Därför måste man bekräfta om moderkortet har interna uppdragningsmotstånd eller om det kräver en extern uppdragning dessutom. Kortet som används i detta projekt har redan de inbyggda motstånden inuti modulkortet.
Gränssnitt Arduino med MAX30205 kroppstemperatur sensor
Sensorn som används här är MAX30205 från maximalt integrerad. MAX30205 temperatursensor mäter noggrant temperaturen med 0,1 ° C noggrannhet (37 ° C till 39 ° C). Sensorn fungerar med I2C-protokollet.
Modulkortet kan fungera med 5 eller 3,3V. Kortet är dock konfigurerat för att användas med 5V driftspänning. Den innehåller också en logisk nivåförskjutare, eftersom sensorn själv stöder maximalt 3,3 V som effekt- eller datakommunikationsrelaterade ändamål.
På utgången används tre 74HC595, 8-bitars skiftregister för att koppla ihop tre 7-segmentskärmar med Arduino NANO. Stiftdiagrammet kan visas i bilden nedan-
Stiftbeskrivningen för 74HC595 kan ses i nedanstående tabell-
QA till QH är datauttagsstift som är anslutna till 7-seg-skärmarna. Eftersom tre 74HC595 är kaskad tillsammans, kommer datainmatningsstiftet (PIN14) i det första skiftregistret att anslutas till Arduino NANO och den seriella datautgångsstiften kommer att ge informationen till nästa skiftregister. Denna seriella dataanslutning fortsätter upp till den tredje 74HC595.
Programmering MAX30205 med Arduino
Det fullständiga programmet för denna handledning finns längst ner på denna sida. Förklaringen till denna kod är som följer. Först inkluderar vi standard Arduino I2C-bibliotekets rubrikfil.
#omfatta
Ovanstående rad kommer att innehålla det Arduino-bidragna biblioteket från protocentralt. Detta bibliotek har viktiga funktioner för att kommunicera med MAX30205-sensorn. Biblioteket är hämtat från nedanstående GitHub-länk-
https://github.com/protocentral/ProtoCentral_MAX30205
Efter att ha importerat biblioteket definierar vi MAX30205-objektdata som visas nedan-
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
Nästa två rader är viktiga för att ställa in parametrarna. Raden nedan ger temperatur i Fahrenheit om den är sant. För att visa resultatet i Celsius måste raden ställas in som falsk.
const bool fahrenheittemp = true; // Jag visar temperaturen i Fahrenheit. Om du vill visa temperaturen i Celsius så gör denna variabel falsk.
Nedanstående linje måste konfigureras om vanliga katodtyp 7-segment skärmar används i hårdvaran. Gör det falskt om vanlig anod används.
const bool commonCathode = true; // Jag använder ett vanligt katod 7-segment om du använder en gemensam anod och ändrar sedan värdet till falskt. 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 //. };
Ovanstående matris används för att lagra sifframönstret för 7-segmentsdisplayerna.
I inställningsfunktionen initialiseras I2C-protokollet och temperatursensoravläsning efter att ha ställt in stiftlägena för 74HC595-stift.
ogiltig installation () {// placera din installationskod här, för att köra en gång: // ställ in seriell port på 9600 Serial.begin (9600); fördröjning (1000); // ställ in 74HC595-kontrollstiftet som utgång pinMode (latchPin, OUTPUT); // ST_CP för 74HC595 pinMode (clkPin, OUTPUT); // SH_CP av 74HC595 pinMode (dtPin, OUTPUT); // DS av 74HC595 // initialisera I2C Libs Wire.begin (); // starta MAX30205 temperatur läst i kontinuerligt läge, aktivt läge tempSensor.begin (); }
I slingan läses temperaturen av funktionen tempSensor.getTemperature () och lagras i en flottörvariabel med namnet temp . Därefter, om Fahrenheit-temperaturläge väljs, konverteras data från Celsius till Fahrenheit. Därefter separeras tre siffror från de omvandlade avkända temperaturdata till tre individuella siffror. För att göra detta används nedanstående koderader -
// saperate 3 siffror från den aktuella temperaturen (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
Nu skickas de separerade tre siffrorna till 7-segmentsdisplayerna med 74HC595 skiftregister. Eftersom LSB först visade in i den tredje 7-segmentsdisplayen via den tredje 74HC595 sänds den 3: e siffran först. För att göra detta dras den låsta stiftet lågt och data skickas till 74HC595 av funktionen shiftOut ();
På samma sätt skickas resterande andra och första siffror också till respektive 74HC595, så att de återstår två 7-segmentsdisplayer. Efter att ha skickat all data släpps spärrstiftet och dras högt för att bekräfta slutet på dataöverföringen. De respektive koderna kan ses nedan -
// visa siffror i 3, 7segmentvisning. digitalWrite (latchPin, LOW); if (commonCathode == true) {shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern-digit_pattern); // 1. (Siffra + DP) shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); } annat {shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern-digit_pattern)); // 1. (Siffra + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); } digitalWrite (latchPin, HIGH);
Arduino kroppstemperaturmätare - testning
Kretsen är uppbyggd i två uppsättningar brödbrädor som du kan se nedan. När vi lägger fingret på sensorn känns temperaturen och utgången visas i en 7-segmentsdisplay, här är värdet 92,1 * F.
Det fullständiga arbetet med projektet finns i videon som länkas nedan. Hoppas att du gillade att bygga projektet och lärt dig något användbart. Om du har några frågor lämnar du dem i kommentarfältet nedan eller använder våra forum.