- Vaaditut komponentit
- MAX30205 Arduinolla - piirikaavio
- Arduino ja MAX30205 kehon lämpötila-anturi
- MAX30205: n ohjelmointi Arduinon kanssa
- Arduino-kehon lämpötilamittari - testaus
Lääketieteellisissä tai kliinisissä sovelluksissa ihmisen kehon lämpötilan mittaaminen on tärkeä parametri yksilön terveydentilan määrittämiseksi. Lämpötilan havaitsemiseksi on kuitenkin monia tapoja, mutta kaikella ei ole tarkkuutta kliinisen lämpömetrian määritysten täyttämiseksi. MAX30205-lämpötila-anturi on suunniteltu erityisesti tätä sovellusta varten. Huomaa, että tämä anturi ei ole kosketukseton lämpötila-anturi. Jos etsit kontaktitonta IR-lämpötilan mittausta, tutustu MLX90614-lämpömittariin, jonka suunnittelemme aiemmin.
Tässä projektissa liitämme MAX30205-kehon lämpötila-anturin, joka voidaan helposti liittää kuntokaistaan tai jota voidaan käyttää lääketieteellisiin tarkoituksiin. Käytämme Arduino Nanoa tärkeimpänä mikrokontrolleriyksikkönä ja käytämme myös 7-segmenttisiä näyttöjä havaitun lämpötilan näyttämiseksi Fahrenheit-asteikolla. Kun tiedät kuinka anturia käytetään, voit käyttää sitä missä tahansa valitsemassasi sovelluksessa, voit myös tarkistaa tämän Arduino Smartwatch -projektin, jota yhdessä MAX30205: n kanssa voidaan käyttää yksilöiden lämpötilan seuraamiseen.
Vaaditut komponentit
- Arduino NANO
- 7-Seg näyttää yleisen katodin - 3 kpl
- 74HC595 - 3 kpl
- 680R-vastus - 24kpl
- MAX30205-moduulilevy
- 5 V: n virtalähde
- Leipälauta
- Paljon koukkujohtoja
- Arduino IDE
- Mikro-USB-kaapeli
MAX30205 Arduinolla - piirikaavio
Täydellinen kytkentäkaavio Arduinon liittämiseksi kehon lämpötila-anturiin MAX30205 on esitetty alla. Piiri on hyvin yksinkertainen, mutta koska olemme käyttäneet 7-segmenttisiä näyttöjä, se näyttää hieman monimutkaiselta. 7-segmenttiset näytöt Arduinolla ovat loistava tapa näyttää arvo suuri ja kirkas erittäin edullisilla hinnoilla. Mutta voit halutessasi näyttää nämä arvot myös OLED- tai LCD-näytöllä.
Arduino Nano on kytketty kolmeen 74HC595: een. Kolme 74HC595 on kaskadoitu yhteen, jotta Arduino Nano -laitteesta voidaan tallentaa lisää 7-segmenttisen näytön liitäntänastoja. Olemme aiemmin käyttäneet 74HC595: tä Arduinon kanssa monissa muissa projekteissa, kuten Arduino Clock, LED Board Display, Arduino käärmepeli jne.
MAX30205-moduulilevy vaatii ylimääräisiä vetovastuksia, koska se on yhteydessä I2C-protokollaan. Harvat moduulilevyt eivät kuitenkaan vaadi ylimääräistä vetämistä, koska vetovastukset on jo annettu moduulin sisällä. Siksi on varmistettava, onko moduulilevyllä sisäisiä vetovastuksia vai vaatiiko se lisäksi ulkoista vetoa. Tässä projektissa käytetyssä levyssä on jo sisäänrakennetut vetovastukset moduulilevyn sisällä.
Arduino ja MAX30205 kehon lämpötila-anturi
Tässä käytettävä anturi on MAX30205, joka on integroitu maksimi. MAX30205-lämpötila-anturi mittaa lämpötilan tarkasti 0,1 ° C: n tarkkuudella (37 ° C - 39 ° C). Anturi toimii I2C-protokollan kanssa.
Moduulilevy voi toimia 5 tai 3,3 V: n jännitteellä. Levy on kuitenkin määritetty käytettäväksi 5 V: n käyttöjännitteellä. Se sisältää myös logiikkatasonsiirtimen, koska anturi itse tukee enintään 3,3 V: n tehoa tai tiedonsiirtoon liittyviä tarkoituksia.
Lähdössä käytetään kolmea 8-bittistä 74HC595 -rekisteriä kolmen 7-segmenttisen näytön liittämiseksi Arduino NANO -laitteeseen. Tappikaavio voidaan näyttää alla olevassa
74HC595: n tapin kuvaus näkyy alla olevassa taulukossa -
Laadunvalvonta - QH ovat 7-segmenttisiin näyttöihin liitetyt datan ulostulonastat. Koska kolme 74HC595 on kaskadoitu yhdessä, ensimmäisen siirtorekisterin datan syöttötappi (PIN14) kytketään Arduino NANO -laitteeseen ja sarjadatan ulostulotappi toimittaa tiedot seuraavaan siirtorekisteriin. Tätä sarjatietoyhteyttä jatketaan kolmanteen 74HC595 asti.
MAX30205: n ohjelmointi Arduinon kanssa
Tämän opetusohjelman täydellinen ohjelma on tämän sivun alaosassa. Tämän koodin selitys on seuraava. Ensinnäkin sisällytämme tavallisen Arduino I2C -kirjaston otsikkotiedoston.
#sisältää
Yllä oleva rivi sisältää Arduinon toimittaman kirjaston protocentralista. Tällä kirjastolla on tärkeitä toimintoja kommunikoida MAX30205-anturin kanssa. Kirjasto on otettu alla olevasta GitHub-linkistä.
https://github.com/protocentral/ProtoCentral_MAX30205
Kun olet tuonut kirjaston, määritämme MAX30205-objektidatan alla olevan kuvan mukaisesti-
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
Seuraavat kaksi riviä ovat tärkeitä parametrien asettamiseksi. Alla oleva viiva antaa lämpötilan Fahrenheit-asteikolla, jos se asetetaan tosi. Tuloksen näyttämiseksi celsiusasteessa viiva on asetettava vääräksi.
const bool fahrenheittemp = tosi; // Näytän lämpötilan Fahrenheit-asteikolla. Jos haluat näyttää lämpötilan celsiusasteina, tee muuttuja vääräksi.
Viivan alapuolelle on määritettävä, jos laitteistossa käytetään yleisiä katodityypin 7-segmenttinäyttöjä. Tee vääräksi, jos käytetään yleistä anodia.
const bool commonCathode = tosi; // Käytän tavallista katodia 7segmenttiä, jos käytät tavallista anodia, vaihda arvo vääräksi. const tavu digit_pattern = {// 74HC595 Outpin-yhteys 7 segmentin näytöllä. // 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 //. };
Yllä olevaa taulukkoa käytetään 7-segmenttisten näyttöjen numerokuvion tallentamiseen.
Asetustoiminnossa, kun 74HC595-nastojen nastatilat on asetettu, I2C-protokolla ja lämpötila-anturin lukema alustetaan.
void setup () {// laita asetuskoodisi tähän, jotta se voidaan suorittaa kerran: // aseta sarjaportti arvoon 9600 Serial.begin (9600); viive (1000); // aseta 74HC595-ohjaustappi lähtötapamoodiksi (latchPin, OUTPUT); // ST_CP / 74HC595 pinMode (clkPin, OUTPUT); // SH_CP / 74HC595 pinMode (dtPin, OUTPUT); // DS of 74HC595 // alustaa I2C Libs Wire.begin (); // käynnistä MAX30205 -lämpötila jatkuvana-tilassa, aktiivisessa tilassa tempSensor.begin (); }
Silmukassa lämpötila luetaan funktiolla tempSensor.getTemperature () ja se tallennetaan kelluvaan muuttujaan nimeltä temp . Tämän jälkeen, jos valitaan Fahrenheit-lämpötilatila, data muunnetaan Celsiuksesta Fahrenheitiksi. Sitten kolme numeroa muunnetusta tunnistetusta lämpötiladatasta erotetaan edelleen kolmeksi yksittäiseksi numeroksi. Tätä varten käytetään alla olevia koodirivejä -
// saperate 3 numeroa nykyisestä lämpötilasta (kuten jos lämpötila = 31,23c,) int dispDigit1 = (int) temp / 10; // numero1 3 int dispDigit2 = (int) lämpötila% 10; // numero2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10); // numero3 2
Nyt erotetut kolme numeroa lähetetään 7-segmenttisiin näyttöihin käyttämällä 74HC595-siirtorekistereitä. Koska LSB näytti ensin kolmannessa 7-segmenttinäytössä kolmannen 74HC595: n kautta, lähetetään ensin kolmas numero. Tätä varten lukittu tappi vedetään matalaksi ja toiminto shiftOut () lähettää tiedot 74HC595: lle ;
Samalla tavalla jäljellä olevat toinen ja ensimmäinen numero lähetetään myös vastaavaan 74HC595: ään, jolloin jäljelle jää kaksi 7-segmenttistä näyttöä. Kun kaikki tiedot on lähetetty, salvatappi vapautetaan ja vedetään korkealle vahvistamaan tiedonsiirron loppu. Vastaavat koodit näkyvät alla -
// näyttää numerot 3, 7 segmentin näytössä. digitalWrite (latchPin, LOW); if (commonCathode == true) {shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern-digit_pattern); // 1. (Numero + DP) shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); } else {shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_malli)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (numero_malli-numero_malli)); // 1. (Numero + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_malli)); } digitalWrite (latchPin, HIGH);
Arduino-kehon lämpötilamittari - testaus
Piiri on rakennettu kahteen leipälevysarjaan, kuten näet alla. Kun asetamme sormen anturille, lämpötila tunnistetaan ja lähtö näytetään 7 segmentin näytössä, tässä arvo on 92,1 * F.
Projektin täydellinen toiminta löytyy alla olevasta videosta. Toivottavasti pidit projektin rakentamisesta ja opit jotain hyödyllistä. Jos sinulla on kysyttävää, jätä ne alla olevaan kommenttiosioon tai käytä foorumeitamme.