- Gerekli Bileşenler
- MAX30205 with Arduino - Devre Şeması
- Arduino ile MAX30205 Vücut Sıcaklığı Sensörünün Arayüzü
- MAX30205'i Arduino ile Programlama
- Arduino Vücut Sıcaklığı Ölçer - Test
Tıbbi veya klinik uygulamalar için, insan vücut sıcaklığının ölçülmesi, herhangi bir bireyin sağlık durumunu belirlemek için önemli bir parametredir. Bununla birlikte, sıcaklığı algılamanın birçok yolu vardır, ancak her şey klinik termometri spesifikasyonlarını karşılayacak doğruluğa sahip değildir. MAX30205 sıcaklık sensörü, bu uygulama için özel olarak tasarlanmıştır. Bu sensörün temassız bir sıcaklık sensörü olmadığını unutmayın, temassız bir IR sıcaklık ölçümü arıyorsanız, daha önce tasarladığımız MLX90614 Termometreyi inceleyin.
Bu projede, bir fitness bandıyla kolayca arayüzlenebilen veya tıbbi amaçlar için kullanılabilen bir MAX30205 insan vücut sıcaklık sensörüne arayüz vereceğiz. Arduino Nano'yu ana mikro denetleyici birimi olarak kullanacağız ve ayrıca algılanan sıcaklığı Fahrenheit cinsinden göstermek için 7 Segmentli ekranlar kullanacağız. Sensörün nasıl kullanılacağını öğrendikten sonra, tercih ettiğiniz herhangi bir uygulamayı kullanabilir, ayrıca bireylerin sıcaklığını izlemek için kullanılabilen MAX30205 ile kombine edilen bu Arduino Smartwatch projesine de göz atabilirsiniz.
Gerekli Bileşenler
- Arduino NANO
- 7-Segment ortak katot görüntüler - 3 adet
- 74HC595 - 3 adet
- 680R direnç - 24 adet
- MAX30205 modül kartı
- 5V güç kaynağı
- Breadboard
- Çok sayıda bağlantı kablosu
- Arduino IDE
- Bir mikro USB kablosu
MAX30205 with Arduino - Devre Şeması
Arduino'yu MAX30205 Vücut Sıcaklığı sensörü ile bağlamak için eksiksiz devre şeması aşağıda gösterilmiştir. Devre çok basit, ancak 7 segmentli ekranlar kullandığımız için biraz karmaşık görünüyor. Arduino ile 7 Segmentli Ekranlar, değerinizi büyük ve parlak bir şekilde çok düşük maliyetle göstermenin harika bir yoludur. Ancak isterseniz bu değerleri bir OLED veya LCD'de de görüntüleyebilirsiniz.
Arduino Nano, üç adet 74HC595 ile bağlanmıştır. Üç adet 74HC595, üç adet 7 Segmentli ekranı bağlamak için Arduino Nano'dan ek çıkış pinlerinden tasarruf etmek için birlikte kademelendirilmiştir. Daha önce Arduino ile 74HC595'i Arduino Clock, LED Board Display, Arduino snake game gibi birçok başka projede birkaç isim olarak kullandık.
MAX30205 modül kartı, I2C protokolü ile iletişim kurduğu için ek kaldırma dirençleri gerektirir. Bununla birlikte, yukarı kaldırma dirençleri modül içinde zaten verildiğinden, az sayıda modül kartı ek pullup gerektirmez. Bu nedenle, modül kartının dahili kaldırma dirençlerine sahip olup olmadığı veya ek olarak harici bir kaldırma gerektirip gerektirmediğinin doğrulanması gerekir. Bu projede kullanılan kart zaten modül kartının içinde dahili kaldırma dirençlerine sahiptir.
Arduino ile MAX30205 Vücut Sıcaklığı Sensörünün Arayüzü
Burada kullanılan sensör maxim entegreli MAX30205'tir. MAX30205 sıcaklık sensörü, sıcaklığı 0.1 ° C Doğrulukla (37 ° C ila 39 ° C) doğru bir şekilde ölçer. Sensör, I2C protokolü ile çalışır.
Modül kartı 5 veya 3.3V ile çalışabilir. Ancak kart, 5V çalışma voltajı ile kullanılacak şekilde yapılandırılmıştır. Ayrıca, sensörün kendisi güç veya veri iletişimi ile ilgili amaçlar için maksimum 3,3V desteklediğinden, bir mantık seviyesi değiştirici içerir.
Çıkışta, Arduino NANO ile üç 7-Segment ekranı arayüzlemek için üç 74HC595, 8-bit kaydırma yazmaçları kullanılır. Pim diyagramı aşağıdaki resimde gösterilebilir.
74HC595'in pin açıklaması aşağıdaki tabloda görülebilir.
QA - QH, 7 Segmentli ekranlara bağlanan veri çıkış pinleridir. Üç 74HC595 birlikte basamaklandırıldığı için, ilk kaydırma yazmacının Veri giriş pini (PIN14) Arduino NANO ile bağlanacak ve Seri veri çıkış pini verileri sonraki kaydırma yazmacına sağlayacaktır. Bu seri veri bağlantısı üçüncü 74HC595'e kadar devam edecek.
MAX30205'i Arduino ile Programlama
Bu öğretici için tam program bu sayfanın altında bulunabilir. Bu kodun açıklaması aşağıdaki gibidir. İlk olarak, standart Arduino I2C kütüphane başlık dosyasını dahil ediyoruz.
#Dahil etmek
Yukarıdaki satır, protocentral'dan Arduino katkılı kütüphaneyi içerecektir. Bu kitaplığın MAX30205 sensörü ile iletişim kurmak için önemli işlevleri vardır. Kitaplık aşağıdaki GitHub bağlantısından alınmıştır.
https://github.com/protocentral/ProtoCentral_MAX30205
Kitaplığı içe aktardıktan sonra, MAX30205 nesne verilerini aşağıda gösterildiği gibi tanımlarız.
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
Sonraki iki satır, parametreleri ayarlamak için önemlidir. Doğru ayarlanırsa aşağıdaki satır Fahrenheit cinsinden sıcaklığı sağlayacaktır. Sonucu Santigrat cinsinden göstermek için satırın yanlış ayarlanması gerekir.
const bool fahrenheittemp = doğru; // Sıcaklığı Fahrenheit cinsinden gösteriyorum, Eğer sıcaklığı Celsius cinsinden göstermek isterseniz bu değişkeni yanlış yapın.
Donanımda ortak katot tipi 7 segmentli ekranlar kullanılıyorsa aşağıdaki satırın yapılandırılması gerekir. Ortak anot kullanılıyorsa yanlış yapın.
const bool commonCathode = true; // Ortak Anot kullanırsanız ortak Katot 7 segmenti kullanıyorum, ardından değeri yanlış olarak değiştirin. const byte digit_pattern = {// 74HC595 7 segmentli ekranlı Outpin Bağlantısı. // 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 //. };
Yukarıdaki dizi, 7 Segmentli ekranlar için rakam modelini saklamak için kullanılır.
Kurulum fonksiyonunda, 74HC595 pinlerinin pin modları ayarlandıktan sonra, I2C protokolü ve sıcaklık sensörü okuması başlatılır.
void setup () {// bir kez çalıştırmak için kurulum kodunuzu buraya yerleştirin: // seri bağlantı noktasını 9600 Serial.begin (9600) olarak ayarlayın; gecikme (1000); // 74HC595 Kontrol pinini çıkış pinMode (latchPin, OUTPUT) olarak ayarlayın; // 74HC595 pinMode'un ST_CP'si (clkPin, OUTPUT); // 74HC595 pinMode'un SH_CP'si (dtPin, OUTPUT); // 74HC595'in DS'si // I2C Libs Wire.begin (); // sürekli modda MAX30205 sıcaklık okumasını başlat, aktif mod tempSensor.begin (); }
Döngüde , sıcaklık tempSensor.getTemperature () fonksiyonu tarafından okunur ve temp adlı bir float değişkeninde saklanır. Bundan sonra, Fahrenheit sıcaklık modu seçilirse, veriler Celsius'tan Fahrenheit'e dönüştürülür. Daha sonra, dönüştürülmüş algılanan sıcaklık verilerinden üç hane ayrıca üç ayrı haneye ayrılır. Bunu yapmak için aşağıdaki kod satırları kullanılır.
// mevcut sıcaklıktan 3 hane ayırır (temp = 31.23c gibi) int dispDigit1 = (int) temp / 10; // digit1 3 int dispDigit2 = (int) temp% 10; // rakam2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10); // rakam3 2
Şimdi, ayrılmış üç basamak 74HC595 kaydırma yazmaçları kullanılarak 7 segmentli ekranlara gönderilir. LSB, üçüncü 74HC595 aracılığıyla üçüncü 7 segmentli ekrana ilk gösterildiğinden, ilk olarak 3. rakam iletilir. Bunu yapmak için, mandallı pim aşağı çekilir ve veriler shiftOut () işlevi tarafından 74HC595'e gönderilir ;
Aynı şekilde, kalan ikinci ve ilk rakamlar da ilgili 74HC595'e gönderilir, böylece geriye kalan iki 7 segmentli ekran. Tüm verileri gönderdikten sonra, mandal pimi serbest bırakılır ve veri aktarımının sonunu onaylamak için yukarı çekilir. İlgili kodlar aşağıda görülebilir -
// rakamları 3, 7 segmentli ekrana görüntüleme. digitalWrite (latchPin, DÜŞÜK); eğer (commonCathode == true) {shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern-digit_pattern); // 1. (Rakam + DP) shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); } else {shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern-digit_pattern)); // 1. (Rakam + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); } digitalWrite (latchPin, YÜKSEK);
Arduino Vücut Sıcaklığı Ölçer - Test
Devre, aşağıda görebileceğiniz gibi iki set devre tahtasında inşa edilmiştir. Parmağımızı sensörün üzerine yerleştirdiğimizde, sıcaklık algılanır ve çıktı 7 segmentli bir ekranda gösterilir, burada değer 92.1 * F'dir.
Projenin tam çalışması aşağıda bağlantısı verilen videoda bulunabilir. Umarım projeyi oluşturmaktan zevk almışsınızdır ve faydalı bir şey öğrenmişsinizdir. Herhangi bir sorunuz varsa, aşağıdaki yorum bölümüne bırakın veya forumlarımızı kullanın.