- Необходими компоненти
- MAX30205 с Arduino - Електрическа схема
- Свързване на Arduino със сензор за телесна температура MAX30205
- Програмиране на MAX30205 с Arduino
- Измервател на телесна температура Arduino - Тестване
За медицински или клинични приложения измерването на температурата на човешкото тяло е важен параметър за определяне на здравословното състояние на всеки индивид. Има обаче много начини да се усети температурата, но не всичко има точност, за да отговаря на спецификациите на клиничната термометрия. Температурният сензор MAX30205 е специално проектиран за това приложение. Имайте предвид, че този сензор не е безконтактен температурен сензор, ако търсите безконтактно измерване на температурата на IR, проверете MLX90614 термометър, който сме проектирали по-рано.
В този проект ще свържем MAX30205 сензор за човешкото тяло, който може лесно да се свърже с фитнес лента или да се използва за медицински цели. Ще използваме Arduino Nano като основна единица за микроконтролер, а също така ще използваме 7-сегментни дисплеи, за да покажем усетената температура във Фаренхайт. След като знаете как да използвате сензора, можете да го използвате с някое от предпочитаните от вас приложения, можете да разгледате и този проект на Arduino Smartwatch, който в комбинация с MAX30205 може да се използва за наблюдение на температурата на хората.
Необходими компоненти
- Arduino NANO
- 7-Seg показва общ катод - 3бр
- 74HC595 - 3 бр
- 680R резистор - 24бр
- Модулна платка MAX30205
- 5V захранване
- Макет
- Много кабели
- IDE на Arduino
- Микро-USB кабел
MAX30205 с Arduino - Електрическа схема
Пълната електрическа схема за свързване на Arduino със сензор за телесна температура MAX30205 е показана по-долу. Схемата е много проста, но тъй като сме използвали 7-сегментни дисплеи, тя изглежда малко сложна. 7-сегментните дисплеи с Arduino са чудесен начин да покажете своята стойност голяма и ярка с много ниска цена. Но можете да покажете тези стойности и на OLED или LCD, ако желаете.
Arduino Nano е свързан с три 74HC595. Три 74HC595 са каскадни заедно, за да запазят допълнителни изходни щифтове от Arduino Nano за свързване на три 7-сегментни дисплея. Преди това използвахме 74HC595 с Arduino в много други проекти като Arduino Clock, LED Board Display, Arduino змийска игра и т.н., за да назовем само няколко.
Модулната платка MAX30205 изисква допълнителни издърпващи резистори, тъй като комуникира с протокола I2C. Въпреки това, малко модулни платки не изискват допълнително издърпване, тъй като издърпващите резистори вече са дадени вътре в модула. Следователно трябва да се потвърди дали модулната платка има вътрешни издърпващи резистори или допълнително изисква външно изтегляне. Платката, която се използва в този проект, вече има вградени издърпващи резистори вътре в модулната платка.
Свързване на Arduino със сензор за телесна температура MAX30205
Сензорът, който се използва тук, е MAX30205 от интегрирана максима. Температурният сензор MAX30205 измерва точно температурата с точност 0,1 ° C (37 ° C до 39 ° C). Сензорът работи с протокола I2C.
Модулната платка може да работи с 5 или 3.3V. Платката обаче е конфигурирана да се използва с 5V работно напрежение. Той също така включва логически превключвател на нивото, тъй като самият сензор поддържа максимум 3.3V като цели, свързани с захранването или комуникацията на данни.
На изхода се използват три 74HC595, 8-битови регистри за смяна, за да свържат три 7-сегментни дисплея с Arduino NANO. Диаграмата на щифтовете може да бъде показана на изображението по-долу -
Пиновото описание на 74HC595 може да се види в таблицата по-долу -
QA до QH са изводите за извеждане на данни, които са свързани с 7-сегментните дисплеи. Тъй като три 74HC595 са каскадни заедно, ПИН за въвеждане на данни (PIN14) на първия регистър на смяна ще бъде свързан с Arduino NANO, а изходният ПИН за серийни данни ще предостави данните към следващия регистър на смяната. Тази последователна връзка за данни ще бъде продължена до третия 74HC595.
Програмиране на MAX30205 с Arduino
Пълната програма за този урок може да бъде намерена в долната част на тази страница. Обяснението на този код е следното. Първо, включваме стандартния заглавен файл на библиотеката Arduino I2C.
#include
Горният ред ще включва библиотеката, предоставена от Arduino от protocentral. Тази библиотека има важни функции за комуникация със сензора MAX30205. Библиотеката е взета от долната връзка към GitHub -
https://github.com/protocentral/ProtoCentral_MAX30205
След импортиране на библиотеката дефинираме MAX30205 обектни данни, както е показано по-долу -
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
Следващите два реда са важни за задаване на параметрите. Долната линия ще осигури температура във Фаренхайт, ако е зададена true. За показване на резултата в Целзий, линията трябва да бъде зададена false.
const bool fahrenheittemp = вярно; // Показвам температурата във Фаренхайт, Ако искате да покажете температурата в Целзий, направете тази променлива невярна.
Трябва да бъде конфигуриран по-долу ред, ако в хардуера се използват често срещани катодни 7-сегментни дисплеи. Направете го false, ако се използва общ анод.
const bool commonCathode = true; // Използвам общ сегмент Cathode 7, ако използвате общ Anode, след това променете стойността на false. const byte digit_pattern = {// 74HC595 Outpin Connection с 7-сегментен дисплей. // 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 //. };
Горният масив се използва за съхраняване на цифровата схема за 7-сегментните дисплеи.
Във функцията за настройка, след задаване на режимите на щифтове от 74HC595 пина, се инициализира протоколът I2C и отчитането на температурния сензор.
void setup () {// поставете вашия код за настройка тук, за да стартирате веднъж: // задайте серийния порт на 9600 Serial.begin (9600); забавяне (1000); // задаваме контролния щифт 74HC595 като изходен pinMode (latchPin, OUTPUT); // ST_CP на 74HC595 pinMode (clkPin, OUTPUT); // SH_CP на 74HC595 pinMode (dtPin, OUTPUT); // DS от 74HC595 // инициализиране на I2C Libs Wire.begin (); // стартиране на MAX30205 отчитане на температурата в непрекъснат режим, активен режим tempSensor.begin (); }
В цикъла температурата се отчита от функцията tempSensor.getTemperature () и се съхранява в плаваща променлива с име temp . След това, ако е избран температурен режим по Фаренхайт, данните се преобразуват от Целзий във Фаренхайт. След това три цифри от преобразуваните данни за отчетената температура се разделят допълнително на три отделни цифри. За целта се използват долни редове кодове -
// отделяме 3 цифри от текущата температура (като ако temp = 31.23c,) int dispDigit1 = (int) temp / 10; // цифра1 3 int dispDigit2 = (int) temp% 10; // цифра2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10); // цифра3 2
Сега отделените три цифри се изпращат към 7-сегментните дисплеи, използвайки регистрите за смяна 74HC595. Тъй като LSB се появи за първи път в третия 7-сегментен дисплей чрез третия 74HC595, третата цифра се предава първо. За да направите това, фиксираният щифт се изтегля ниско и данните се подават на 74HC595 от функцията shiftOut ();
По същия начин останалите втора и първа цифра също се изпращат до съответните 74HC595, като по този начин остават два 7-сегментни дисплея. След изпращане на всички данни, щифтът на ключалката се освобождава и дърпа високо, за да потвърди края на предаването на данни. Съответните кодове могат да се видят по-долу -
// показва цифри в 3, 7-сегментен дисплей. digitalWrite (latchPin, LOW); if (commonCathode == true) {shiftOut (dtPin, clkPin, LSBFIRST, цифрен_патерн); shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern-digit_pattern); // 1. (Digit + DP) shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); } else {shiftOut (dtPin, clkPin, LSBFIRST, ~ (образец_цифрен)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern-digit_pattern)); // 1. (Цифра + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (цифрен_патерн)); } digitalWrite (latchPin, HIGH);
Измервател на телесна температура Arduino - Тестване
Веригата е изградена в два комплекта макети, както можете да видите по-долу. Когато поставим пръста върху сензора, температурата се усеща и изходът се показва на 7 сегментен дисплей, тук стойността е 92,1 * F.
Пълната работа на проекта може да бъде намерена във видеото, свързано по-долу. Надявам се, че ви е харесало да изградите проекта и сте научили нещо полезно. Ако имате някакви въпроси, оставете ги в раздела за коментари по-долу или използвайте нашите форуми.