- Wymagane komponenty
- MAX30205 z Arduino - schemat obwodu
- Połączenie Arduino z czujnikiem temperatury ciała MAX30205
- Programowanie MAX30205 z Arduino
- Miernik temperatury ciała Arduino - testowanie
W zastosowaniach medycznych lub klinicznych pomiar temperatury ciała człowieka jest ważnym parametrem określającym stan zdrowia każdej osoby. Istnieje jednak wiele sposobów wykrywania temperatury, ale nie wszystkie mają dokładność, aby spełnić specyfikacje termometrii klinicznej. Czujnik temperatury MAX30205 jest specjalnie zaprojektowany do tego zastosowania. Zwróć uwagę, że ten czujnik nie jest bezkontaktowym czujnikiem temperatury, jeśli szukasz bezdotykowego pomiaru temperatury na podczerwień, sprawdź termometr MLX90614, który zaprojektowaliśmy wcześniej.
W tym projekcie użyjemy czujnika temperatury ludzkiego ciała MAX30205, który można łatwo połączyć z opaską fitness lub wykorzystać do celów medycznych. Wykorzystamy Arduino Nano jako główną jednostkę mikrokontrolera, a także wykorzystamy 7-segmentowe wyświetlacze do wyświetlania zmierzonej temperatury w stopniach Fahrenheita. Kiedy już wiesz, jak korzystać z czujnika, możesz użyć go w dowolnej preferowanej aplikacji, możesz również sprawdzić ten projekt Arduino Smartwatch, który w połączeniu z MAX30205 może być używany do monitorowania temperatury osób.
Wymagane komponenty
- Arduino NANO
- Wyświetlacze 7-Seg ze wspólną katodą - 3szt
- 74HC595 - 3 szt
- Rezystor 680R - 24szt
- Płytka modułu MAX30205
- Zasilanie 5V
- Płytka prototypowa
- Wiele przewodów do podłączenia
- Arduino IDE
- Kabel micro-USB
MAX30205 z Arduino - schemat obwodu
Pełny schemat obwodu do połączenia Arduino z czujnikiem temperatury ciała MAX30205 pokazano poniżej. Obwód jest bardzo prosty, ale ponieważ użyliśmy 7-segmentowych wyświetlaczy, wygląda na nieco skomplikowany. Wyświetlacze 7-segmentowe z Arduino to świetny sposób na wyświetlanie dużej i jasnej wartości przy bardzo niskich kosztach. Ale jeśli chcesz, możesz również wyświetlić te wartości na OLED lub LCD.
Arduino Nano jest połączony z trzema 74HC595. Trzy 74HC595 są połączone kaskadowo, aby zaoszczędzić dodatkowe piny wyjściowe z Arduino Nano do podłączenia trzech wyświetlaczy 7-segmentowych. Wcześniej używaliśmy 74HC595 z Arduino w wielu innych projektach, takich jak zegar Arduino, wyświetlacz tablicy LED, gra w węża Arduino itp., Aby wymienić tylko kilka.
Płytka modułu MAX30205 wymaga dodatkowych rezystorów podciągających, ponieważ komunikuje się z protokołem I2C. Jednak kilka płytek modułów nie wymaga dodatkowego podciągania, ponieważ rezystory podciągające są już podane wewnątrz modułu. W związku z tym należy sprawdzić, czy płytka modułu posiada wewnętrzne rezystory podciągające, czy też wymaga dodatkowego podciągania zewnętrznego. Płytka używana w tym projekcie ma już wbudowane rezystory podciągające wewnątrz płytki modułu.
Połączenie Arduino z czujnikiem temperatury ciała MAX30205
Zastosowany tutaj czujnik to MAX30205 firmy Maxim Integrated. Czujnik temperatury MAX30205 dokładnie mierzy temperaturę z dokładnością do 0,1 ° C (37 ° C do 39 ° C). Czujnik pracuje z protokołem I2C.
Płytka modułu może pracować z napięciem 5 lub 3,3 V. Jednak płyta jest skonfigurowana do użytku z napięciem roboczym 5 V. Zawiera również logiczny przesuwnik poziomu, ponieważ sam czujnik obsługuje maksymalnie 3,3 V w celach związanych z zasilaniem lub przesyłaniem danych.
Na wyjściu trzy 8-bitowe rejestry przesuwne 74HC595 są używane do połączenia trzech wyświetlaczy 7-segmentowych z Arduino NANO. Schemat pinów można pokazać na poniższym obrazku-
Opis pinów 74HC595 można zobaczyć w poniższej tabeli
QA do QH to styki wyjścia danych, które są połączone z wyświetlaczami 7-Seg. Ponieważ trzy 74HC595 są połączone kaskadowo, pin wejściowy danych (PIN14) pierwszego rejestru przesuwnego zostanie połączony z Arduino NANO, a pin wyjściowy danych szeregowych dostarczy dane do następnego rejestru przesuwnego. To szeregowe połączenie danych będzie kontynuowane aż do trzeciego 74HC595.
Programowanie MAX30205 z Arduino
Kompletny program tego samouczka można znaleźć na dole tej strony. Wyjaśnienie tego kodu jest następujące. Najpierw dołączamy standardowy plik nagłówkowy biblioteki Arduino I2C.
#zawierać
Powyższa linia będzie zawierać bibliotekę współtworzoną przez Arduino z protocentral. Ta biblioteka zawiera ważne funkcje do komunikacji z czujnikiem MAX30205. Biblioteka jest pobierana z poniższego linku GitHub-
https://github.com/protocentral/ProtoCentral_MAX30205
Po zaimportowaniu biblioteki definiujemy dane obiektu MAX30205, jak pokazano poniżej:
#include „Protocentral_MAX30205.h” MAX30205 tempSensor;
Kolejne dwie linie są ważne, aby ustawić parametry. Poniższa linia poda temperaturę w stopniach Fahrenheita, jeśli jest ustawiona na true. Aby wyświetlić wynik w stopniach Celsjusza, wiersz musi być ustawiony jako fałsz.
const bool fahrenheittemp = true; // Pokazuję temperaturę w stopniach Fahrenheita, jeśli chcesz pokazać temperaturę w stopniach Celsjusza, ustaw tę zmienną jako fałszywą.
Poniższa linia musi zostać skonfigurowana, jeśli w sprzęcie używane są 7-segmentowe wyświetlacze z typową katodą. Zrób fałsz, jeśli używana jest wspólna anoda.
const bool commonCathode = true; // Używam 7-segmentowej wspólnej katody, jeśli używasz wspólnej anody, a następnie zmień wartość na fałsz. const byte digit_pattern = {// 74HC595 Outpin Połączenie z siedmiosegmentowym wyświetlaczem. // 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 //. };
Powyższa tablica służy do przechowywania wzoru cyfr dla wyświetlaczy 7-segmentowych.
W funkcji setup po ustawieniu trybów pinów pinów 74HC595 inicjowany jest protokół I2C oraz odczyt czujnika temperatury.
void setup () {// wpisz tutaj swój kod instalacyjny, aby uruchomić go raz: // ustaw port szeregowy na 9600 Serial.begin (9600); opóźnienie (1000); // ustaw pin sterujący 74HC595 jako wyjściowy pinMode (latchPin, OUTPUT); // ST_CP z 74HC595 pinMode (clkPin, OUTPUT); // SH_CP z 74HC595 pinMode (dtPin, OUTPUT); // DS z 74HC595 // inicjalizacja I2C Libs Wire.begin (); // rozpoczęcie odczytu temperatury MAX30205 w trybie ciągłym, aktywny tryb tempSensor.begin (); }
W pętli temperatura jest odczytywana przez funkcję tempSensor.getTemperature () i przechowywana w zmiennej float o nazwie temp . Następnie, jeśli zostanie wybrany tryb temperatury Fahrenheita, dane są konwertowane ze stopni Celsjusza na Fahrenheita. Następnie trzy cyfry z przekonwertowanych danych zmierzonej temperatury są dalej rozdzielane na trzy oddzielne cyfry. Aby to zrobić, używane są poniższe wiersze kodów-
// saperate 3 cyfry od aktualnej temperatury (np. if temp = 31.23c,) int dispDigit1 = (int) temp / 10; // digit1 3 int dispDigit2 = (int) temp% 10; // digit2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10); // cyfra3 2
Teraz oddzielone trzy cyfry są wysyłane do 7-segmentowych wyświetlaczy przy użyciu rejestrów przesuwnych 74HC595. Ponieważ LSB po raz pierwszy pojawiło się na trzecim 7-segmentowym wyświetlaczu za pośrednictwem trzeciego 74HC595, trzecia cyfra jest przesyłana jako pierwsza. W tym celu zatrzaskowy pin jest wyciągany w dół, a dane są przesyłane do 74HC595 za pomocą funkcji shiftOut ();
W ten sam sposób pozostałe cyfry druga i pierwsza są również wysyłane do odpowiedniego 74HC595, a zatem pozostałe dwa wyświetlacze 7-segmentowe. Po wysłaniu wszystkich danych zatrzask jest zwalniany i wyciągany wysoko, aby potwierdzić zakończenie transmisji danych. Odpowiednie kody można zobaczyć poniżej -
// wyświetl cyfry na 3, 7-segmentowym wyświetlaczu. digitalWrite (latchPin, LOW); if (commonCathode == true) {shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); shiftOut (dtPin, clkPin, LSBFIRST, wzór_cyfrowy-wzór_cyfr); // 1. (Digit + DP) shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); } else {shiftOut (dtPin, clkPin, LSBFIRST, ~ (wzór_cyfry)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (wzór_cyfrowy-wzór_cyfry)); // 1. (Cyfra + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (wzór_cyfry)); } digitalWrite (latchPin, HIGH);
Miernik temperatury ciała Arduino - testowanie
Obwód składa się z dwóch zestawów płytek stykowych, jak widać poniżej. Kiedy kładziemy palec na czujniku, mierzona jest temperatura, a wyjście jest wyświetlane na 7-segmentowym wyświetlaczu, tutaj wartość wynosi 92,1 * F.
Pełne działanie projektu można znaleźć w poniższym wideo. Mam nadzieję, że spodobał Ci się projekt i nauczyłeś się czegoś przydatnego. Jeśli masz jakieś pytania, zostaw je w sekcji komentarzy poniżej lub skorzystaj z naszych forów.