- Необхідні компоненти
- MAX30205 з Arduino - принципова схема
- Взаємодія Arduino з датчиком температури тіла MAX30205
- Програмування MAX30205 на Arduino
- Вимірювач температури тіла Arduino - тестування
Для медичного або клінічного застосування вимірювання температури тіла людини є важливим параметром для визначення стану здоров'я будь-якої людини. Однак існує багато способів відчути температуру, але не всі мають точність, щоб відповідати вимогам клінічної термометрії. Датчик температури MAX30205 спеціально розроблений для цього застосування. Зверніть увагу, що цей датчик не є безконтактним датчиком температури. Якщо ви шукаєте безконтактне вимірювання температури ІЧ, перевірте термометр MLX90614, який ми розробили раніше.
У цьому проекті ми підключимо датчик температури тіла MAX30205 до людини, який може бути легко пов’язаний з фітнес-стрічкою або може бути використаний в медичних цілях. Ми будемо використовувати Arduino Nano як головний блок мікроконтролера, а також використовувати 7-сегментні дисплеї для відображення виміряної температури у Фаренгейті. Після того, як ви знаєте, як користуватися датчиком, ви можете використовувати його в будь-якому з бажаних додатків, ви також можете перевірити цей проект Arduino Smartwatch, який у поєднанні з MAX30205 можна використовувати для контролю температури людей.
Необхідні компоненти
- Arduino NANO
- 7-Seg відображає загальний катод - 3 шт
- 74HC595 - 3 шт
- Резистор 680R - 24шт
- Плата модуля MAX30205
- Джерело живлення 5В
- Макет
- Багато дротів для підключення
- IDE Arduino
- Кабель micro-USB
MAX30205 з Arduino - принципова схема
Повна електрична схема для підключення Arduino до датчика температури тіла MAX30205 показана нижче. Схема дуже проста, але оскільки ми використовували 7-сегментні дисплеї, це виглядає дещо складно. 7-сегментні дисплеї з Arduino - це чудовий спосіб відобразити свою цінність великою та яскравою з дуже низькою вартістю. Але ви також можете відобразити ці значення на OLED або РК-дисплеї, якщо хочете.
Arduino Nano з'єднаний з трьома 74HC595. Три 74HC595 каскадно з'єднані, щоб зберегти додаткові вихідні штифти від Arduino Nano для підключення трьох 7-сегментних дисплеїв. Раніше ми використовували 74HC595 з Arduino у багатьох інших проектах, таких як Arduino Clock, LED Board Display, Arduino snake game тощо, щоб назвати декілька.
Плата модуля MAX30205 вимагає додаткових підтягуючих резисторів, оскільки вона взаємодіє з протоколом I2C. Однак на декількох платах модулів не потрібно додаткової тяги, оскільки підтягувальні резистори вже розміщені всередині модуля. Отже, потрібно підтвердити, чи має плата модуля внутрішні підтягуючі резистори, чи потрібно додатково зовнішнє підтягування. Плата, яка використовується в цьому проекті, вже має вбудовані підтягуючі резистори всередині плати модуля.
Взаємодія Arduino з датчиком температури тіла MAX30205
Тут використовується датчик MAX30205 від інтегрованого максимуму. Датчик температури MAX30205 точно вимірює температуру з точністю 0,1 ° C (від 37 ° C до 39 ° C). Датчик працює з протоколом I2C.
Модульна плата може працювати з напругою 5 або 3,3 В. Однак плата налаштована на використання з робочою напругою 5 В. Він також включає в себе логічний перемикач рівня, оскільки сам датчик підтримує максимум 3,3 В як цілі, пов'язані з живленням або передачею даних.
На виході використовуються три 8-бітові регістри зсуву 74HC595 для взаємодії трьох 7-сегментних дисплеїв з Arduino NANO. Схему штифтів можна показати на зображенні нижче -
Опис штифта 74HC595 можна побачити в таблиці нижче -
Від QA до QH - це висновки виводу даних, які підключені до 7-сегментних дисплеїв. Оскільки три 74HC595 каскадуються разом, штифт введення даних (PIN14) першого регістру зсуву буде з'єднаний з Arduino NANO, а вивід послідовного виводу даних буде надавати дані до наступного регістра зсуву. Це послідовне з'єднання даних буде продовжено до третього 74HC595.
Програмування MAX30205 на Arduino
Повну програму цього підручника можна знайти внизу цієї сторінки. Пояснення цього коду є наступним. По-перше, ми включаємо стандартний файл заголовка бібліотеки Arduino I2C.
#включати
Вищезазначений рядок включатиме бібліотеку Arduino від protocentral. Ця бібліотека має важливі функції взаємодії з датчиком MAX30205. Бібліотека взята з нижченаведеного посилання на GitHub -
https://github.com/protocentral/ProtoCentral_MAX30205
Після імпортування бібліотеки ми визначаємо MAX30205 об’єктних даних, як показано нижче -
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
Наступні два рядки важливі для встановлення параметрів. У наведеному нижче рядку буде вказана температура за Фаренгейтом, якщо встановлено значення true. Для відображення результату за Цельсієм, рядок потрібно встановити false.
const bool fahrenheittemp = істина; // Я показую температуру за Фаренгейтом. Якщо ви хочете показати температуру за Цельсієм, зробіть цю змінну хибною.
Нижче рядка потрібно налаштувати, якщо в апаратному забезпеченні використовуються загальноприйняті катодні 7-сегментні дисплеї. Зробіть його помилковим, якщо використовується загальний анод.
const bool commonCathode = true; // Я використовую загальний сегмент катода 7, якщо ви використовуєте загальний анод, потім змініть значення на 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, digit_pattern); shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern-digit_pattern); // 1. (Цифра + DP) shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); } ще {shiftOut (dtPin, clkPin, LSBFIRST, ~ (шаблон_значення)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (шаблон_значення-цифра_значення)); // 1. (Цифра + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (шаблон_значення)); } digitalWrite (latchPin, HIGH);
Вимірювач температури тіла Arduino - тестування
Схема побудована у двох наборах макетів, як ви можете бачити нижче. Коли ми кладемо палець на датчик, відчувається температура і вихід відображається на 7-сегментному дисплеї, тут значення становить 92,1 * F.
Повну роботу проекту можна знайти у відео, наведеному нижче. Сподіваюся, вам сподобалось будувати проект і дізнатися щось корисне. Якщо у вас виникли запитання, залиште їх у розділі коментарів нижче або скористайтеся нашими форумами.