- Erforderliche Komponenten
- MAX30205 mit Arduino - Schaltplan
- Verbindung von Arduino mit dem Körpertemperatursensor MAX30205
- Programmierung von MAX30205 mit Arduino
- Arduino Körpertemperaturmesser - Testen
Für medizinische oder klinische Anwendungen ist die Messung der Körpertemperatur des Menschen ein wichtiger Parameter, um den Gesundheitszustand einer Person zu bestimmen. Es gibt jedoch viele Möglichkeiten, die Temperatur zu erfassen, aber nicht alles hat die Genauigkeit, um die Spezifikationen der klinischen Thermometrie zu erfüllen. Der Temperatursensor MAX30205 wurde speziell für diese Anwendung entwickelt. Beachten Sie, dass dieser Sensor kein berührungsloser Temperatursensor ist. Wenn Sie nach einer berührungslosen IR-Temperaturmessung suchen, lesen Sie das MLX90614-Thermometer, das wir zuvor entwickelt haben.
In diesem Projekt werden wir einen menschlichen Körpertemperatursensor MAX30205 anschließen, der leicht mit einem Fitnessband verbunden oder für medizinische Zwecke verwendet werden kann. Wir werden Arduino Nano als Haupt-Mikrocontroller-Einheit verwenden und auch 7-Segment-Anzeigen verwenden, um die erfasste Temperatur in Fahrenheit anzuzeigen. Sobald Sie wissen, wie der Sensor verwendet wird, können Sie ihn in jeder von Ihnen bevorzugten Anwendung verwenden. Sie können sich auch dieses Arduino Smartwatch-Projekt ansehen, das in Kombination mit MAX30205 zur Überwachung der Temperatur von Personen verwendet werden kann.
Erforderliche Komponenten
- Arduino NANO
- 7-Seg zeigt gemeinsame Kathode - 3 Stück
- 74HC595 - 3 Stk
- 680R Widerstand - 24St
- MAX30205 Modulplatine
- 5V Stromversorgung
- Steckbrett
- Viele Anschlussdrähte
- Arduino IDE
- Ein Micro-USB-Kabel
MAX30205 mit Arduino - Schaltplan
Das vollständige Schaltbild zur Verbindung von Arduino mit dem Körpertemperatursensor MAX30205 ist unten dargestellt. Die Schaltung ist sehr einfach, aber da wir 7-Segment-Displays verwendet haben, sieht sie etwas kompliziert aus. 7-Segment-Displays mit Arduino sind eine großartige Möglichkeit, Ihren Wert groß und hell mit sehr geringen Kosten anzuzeigen. Sie können diese Werte aber auch auf einer OLED oder einem LCD anzeigen, wenn Sie dies wünschen.
Der Arduino Nano ist mit drei 74HC595 verbunden. Drei 74HC595 sind kaskadiert, um zusätzliche Ausgangspins vom Arduino Nano für den Anschluss von drei 7-Seg-Displays zu sparen. Wir haben 74HC595 mit Arduino bereits in vielen anderen Projekten wie der Arduino Clock, dem LED Board Display, dem Arduino Snake Game usw. verwendet, um nur einige zu nennen.
Die MAX30205-Modulplatine benötigt zusätzliche Pull-up-Widerstände, da sie mit dem I2C-Protokoll kommuniziert. Einige Modulplatinen erfordern jedoch kein zusätzliches Pullup, da die Pullup-Widerstände bereits im Modul vorhanden sind. Daher muss überprüft werden, ob die Modulplatine über interne Pull-up-Widerstände verfügt oder ob zusätzlich ein externer Pull-up erforderlich ist. Die in diesem Projekt verwendete Platine verfügt bereits über die eingebauten Pull-up-Widerstände in der Modulplatine.
Verbindung von Arduino mit dem Körpertemperatursensor MAX30205
Der hier verwendete Sensor ist der MAX30205 von maxim integriert. Der Temperatursensor MAX30205 misst die Temperatur genau mit einer Genauigkeit von 0,1 ° C (37 ° C bis 39 ° C). Der Sensor arbeitet mit dem I2C-Protokoll.
Die Modulplatine kann mit 5 oder 3,3 V betrieben werden. Die Karte ist jedoch für die Verwendung mit 5 V Betriebsspannung konfiguriert. Es enthält auch einen Logikpegel-Shifter, da der Sensor selbst maximal 3,3 V für Strom- oder Datenkommunikationszwecke unterstützt.
Am Ausgang werden drei 8-Bit-Schieberegister 74HC595 verwendet, um drei 7-Segment-Anzeigen mit dem Arduino NANO zu verbinden. Das Pin-Diagramm kann im folgenden Bild gezeigt werden.
Die Pin-Beschreibung des 74HC595 finden Sie in der folgenden Tabelle:
QA bis QH sind die Datenausgangspins, die mit den 7-Seg-Anzeigen verbunden sind. Da drei 74HC595 miteinander kaskadiert sind, wird der Dateneingangspin (PIN14) des ersten Schieberegisters mit dem Arduino NANO verbunden, und der serielle Datenausgangspin liefert die Daten an das nächste Schieberegister. Diese serielle Datenverbindung wird bis zum dritten 74HC595 fortgesetzt.
Programmierung von MAX30205 mit Arduino
Das vollständige Programm für dieses Tutorial finden Sie unten auf dieser Seite. Die Erklärung dieses Codes lautet wie folgt. Zunächst fügen wir die Standard-Header-Datei der Arduino I2C-Bibliothek hinzu.
#einschließen
Die obige Zeile enthält die von Arduino bereitgestellte Bibliothek von protocentral. Diese Bibliothek verfügt über wichtige Funktionen für die Kommunikation mit dem Sensor MAX30205. Die Bibliothek stammt aus dem folgenden GitHub-Link.
https://github.com/protocentral/ProtoCentral_MAX30205
Nach dem Importieren der Bibliothek definieren wir die MAX30205-Objektdaten wie unten gezeigt.
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
Die nächsten beiden Zeilen sind wichtig, um die Parameter einzustellen. Die folgende Zeile gibt die Temperatur in Fahrenheit an, wenn sie auf true gesetzt ist. Um das Ergebnis in Celsius anzuzeigen, muss die Zeile auf false gesetzt werden.
const bool fahrenheittemp = true; // Ich zeige die Temperatur in Fahrenheit an. Wenn Sie die Temperatur in Celsius anzeigen möchten, machen Sie diese Variable falsch.
Die folgende Zeile muss konfiguriert werden, wenn in der Hardware gängige 7-Segment-Anzeigen vom Kathodentyp verwendet werden. Machen Sie es falsch, wenn eine gemeinsame Anode verwendet wird.
const bool commonCathode = true; // Ich verwende Common Cathode 7segment. Wenn Sie Common Anode verwenden, ändern Sie den Wert in false. const byte digit_pattern = {// 74HC595 Outpin-Verbindung mit 7-Segment-Anzeige. // 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 //. };
Das obige Array wird verwendet, um das Ziffernmuster für die 7-Segment-Anzeigen zu speichern.
In der Setup-Funktion wird nach dem Einstellen der Pin-Modi der 74HC595-Pins das Lesen des I2C-Protokolls und des Temperatursensors initialisiert.
void setup () {// Gib deinen Setup-Code hier ein, um ihn einmal auszuführen: // setze die serielle Schnittstelle auf 9600 Serial.begin (9600); Verzögerung (1000); // setze den 74HC595 Control Pin als AusgangspinMode (latchPin, OUTPUT); // ST_CP von 74HC595 pinMode (clkPin, OUTPUT); // SH_CP von 74HC595 pinMode (dtPin, OUTPUT); // DS von 74HC595 // I2C Libs initialisieren Wire.begin (); // MAX30205 Temperatur im Continuos-Modus lesen, aktiver Modus tempSensor.begin (); }}
In der Schleife wird die Temperatur durch die Funktion gelesene tempSensor.getTemperature () und in einem Hin- und Herbewegung Variable mit dem Namen gespeichert Temp . Wenn danach der Fahrenheit-Temperaturmodus ausgewählt ist, werden die Daten von Celsius in Fahrenheit konvertiert. Dann werden drei Ziffern aus den konvertierten erfassten Temperaturdaten weiter in drei einzelne Ziffern getrennt. Zu diesem Zweck werden die folgenden Codezeilen verwendet:
// setze 3 Stellen von der aktuellen Temperatur ab (wie wenn temp = 31.23c,) int dispDigit1 = (int) temp / 10; // digit1 3 int dispDigit2 = (int) temp% 10; // digit2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10); // Ziffer3 2
Jetzt werden die getrennten drei Ziffern unter Verwendung der 74HC595-Schieberegister an die 7-Segment-Anzeigen gesendet. Da das LSB zum ersten Mal über den dritten 74HC595 in der dritten 7-Segment-Anzeige angezeigt wurde, wird zuerst die dritte Ziffer übertragen. Dazu wird der verriegelte Pin nach unten gezogen und die Daten werden von der Funktion shiftOut () an den 74HC595 gesendet.
Auf die gleiche Weise werden auch die verbleibenden zweiten und ersten Ziffern an den jeweiligen 74HC595 gesendet, wodurch zwei verbleibende 7-Segment-Anzeigen verbleiben. Nach dem Senden aller Daten wird der Latch-Pin freigegeben und hochgezogen, um das Ende der Datenübertragung zu bestätigen. Die jeweiligen Codes sind unten zu sehen -
// Ziffern in 3, 7-Segment-Anzeige anzeigen. digitalWrite (latchPin, LOW); if (commonCathode == true) {shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern-digit_pattern); // 1. (Digit + DP) shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); } else {shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern-digit_pattern)); // 1. (Digit + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); } digitalWrite (latchPin, HIGH);
Arduino Körpertemperaturmesser - Testen
Die Schaltung besteht aus zwei Sätzen von Steckbrettern, wie Sie unten sehen können. Wenn wir den Finger auf den Sensor legen, wird die Temperatur erfasst und die Ausgabe in einer 7-Segment-Anzeige angezeigt. Hier beträgt der Wert 92,1 * F.
Die vollständige Arbeitsweise des Projekts finden Sie im unten verlinkten Video. Ich hoffe, Sie haben das Projekt genossen und etwas Nützliches gelernt. Wenn Sie Fragen haben, lassen Sie diese im Kommentarbereich unten oder nutzen Sie unsere Foren.