- Απαιτούμενα συστατικά
- MAX30205 με Arduino - Διάγραμμα κυκλώματος
- Διασύνδεση Arduino με αισθητήρα θερμοκρασίας σώματος MAX30205
- Προγραμματισμός MAX30205 με Arduino
- Μετρητής θερμοκρασίας σώματος Arduino - Δοκιμή
Για ιατρικές ή κλινικές εφαρμογές, η μέτρηση της θερμοκρασίας του ανθρώπινου σώματος είναι μια σημαντική παράμετρος για τον προσδιορισμό της κατάστασης της υγείας οποιουδήποτε ατόμου. Ωστόσο, υπάρχουν πολλοί τρόποι για να αισθανθείτε τη θερμοκρασία, αλλά δεν έχουν όλα την ακρίβεια να πληρούν τις προδιαγραφές της κλινικής θερμομετρίας. Ο αισθητήρας θερμοκρασίας MAX30205 έχει σχεδιαστεί ειδικά για αυτήν την εφαρμογή. Λάβετε υπόψη ότι αυτός ο αισθητήρας δεν είναι αισθητήρας θερμοκρασίας χωρίς επαφή, εάν ψάχνετε για μέτρηση θερμοκρασίας χωρίς επαφή IR, ελέγξτε το θερμόμετρο MLX90614 που σχεδιάσαμε νωρίτερα.
Σε αυτό το έργο, θα συνδέσουμε έναν αισθητήρα θερμοκρασίας ανθρώπινου σώματος MAX30205 που μπορεί εύκολα να συνδεθεί με μια ζώνη γυμναστικής ή μπορεί να χρησιμοποιηθεί για ιατρικούς σκοπούς. Θα χρησιμοποιήσουμε το Arduino Nano ως την κύρια μονάδα μικροελεγκτή και επίσης θα χρησιμοποιήσουμε οθόνες 7-Segment για να δείξουμε την αισθητήρια θερμοκρασία στο Fahrenheit. Μόλις μάθετε πώς να χρησιμοποιείτε τον αισθητήρα, μπορείτε να τον χρησιμοποιήσετε οποιαδήποτε από τις προτιμώμενες εφαρμογές σας, μπορείτε επίσης να δείτε αυτό το έργο Arduino Smartwatch το οποίο σε συνδυασμό με το MAX30205 μπορεί να χρησιμοποιηθεί για την παρακολούθηση της θερμοκρασίας των ατόμων.
Απαιτούμενα συστατικά
- Arduino NANO
- Το 7-Seg εμφανίζει κοινή κάθοδο - 3τμχ
- 74HC595 - 3 τεμ
- Αντίσταση 680R - 24τμχ
- Πίνακας μονάδων MAX30205
- Τροφοδοσία 5V
- Ψωμί
- Πολλά καλώδια σύνδεσης
- Arduino IDE
- Καλώδιο micro-USB
MAX30205 με Arduino - Διάγραμμα κυκλώματος
Το πλήρες διάγραμμα κυκλώματος για τη σύνδεση του Arduino με τον αισθητήρα θερμοκρασίας σώματος MAX30205 φαίνεται παρακάτω. Το κύκλωμα είναι πολύ απλό, αλλά αφού έχουμε χρησιμοποιήσει οθόνες 7 τμημάτων, φαίνεται λίγο περίπλοκο. Οι οθόνες 7-τμημάτων με το Arduino είναι ένας πολύ καλός τρόπος για να εμφανίσετε την αξία σας μεγάλη και φωτεινή με πολύ χαμηλό κόστος. Αλλά μπορείτε επίσης να εμφανίσετε αυτές τις τιμές σε OLED ή LCD εάν το επιθυμείτε.
Το Arduino Nano συνδέεται με τρία 74HC595. Τρεις 74HC595 αλληλογραφούνται μαζί για να αποθηκεύσουν επιπλέον καρφίτσες εξόδου από το Arduino Nano για τη σύνδεση τριών 7-Seg οθόνες. Έχουμε χρησιμοποιήσει προηγουμένως το 74HC595 με το Arduino σε πολλά άλλα έργα όπως το Arduino Clock, το LED Board Display, το Arduino snake game κ.λπ. για να αναφέρουμε μερικά.
Η πλακέτα μονάδας MAX30205 απαιτεί πρόσθετες αντιστάσεις pull-up, καθώς επικοινωνεί με το πρωτόκολλο I2C. Ωστόσο, λίγες πλακέτες δομοστοιχείων δεν απαιτούν επιπλέον έλξη καθώς οι αντιστάσεις έλξης έχουν ήδη δοθεί μέσα στη μονάδα. Επομένως, κάποιος πρέπει να επιβεβαιώσει εάν η πλακέτα μονάδας διαθέτει εσωτερικές αντιστάσεις έλξης ή απαιτεί επιπλέον τραβήξιμο. Η πλακέτα που χρησιμοποιείται σε αυτό το έργο έχει ήδη τις ενσωματωμένες αντιστάσεις έλξης μέσα στην πλακέτα μονάδας.
Διασύνδεση Arduino με αισθητήρα θερμοκρασίας σώματος MAX30205
Ο αισθητήρας που χρησιμοποιείται εδώ είναι ο MAX30205 από ενσωματωμένο maxim. Ο αισθητήρας θερμοκρασίας MAX30205 μετρά με ακρίβεια τη θερμοκρασία με 0,1 ° C Ακρίβεια (37 ° C έως 39 ° C). Ο αισθητήρας λειτουργεί με το πρωτόκολλο I2C.
Η πλακέτα μονάδας μπορεί να λειτουργήσει με 5 ή 3.3V. Ωστόσο, η πλακέτα έχει ρυθμιστεί ώστε να χρησιμοποιείται με τάση λειτουργίας 5V. Περιλαμβάνει επίσης μετατόπιση λογικού επιπέδου, καθώς ο ίδιος ο αισθητήρας υποστηρίζει μέγιστο 3,3V ως σκοπούς που σχετίζονται με την επικοινωνία ισχύος ή δεδομένων.
Στην έξοδο, χρησιμοποιούνται τρεις καταχωρητές μετατόπισης 74HC595, 8-bit για τη διασύνδεση τριών οθονών 7-τμημάτων με το Arduino NANO. Το διάγραμμα ακίδων μπορεί να εμφανιστεί στην παρακάτω εικόνα-
Η περιγραφή του 74HC595 φαίνεται στον παρακάτω πίνακα-
Τα QA έως QH είναι οι ακίδες εξόδου δεδομένων που συνδέονται με τις οθόνες 7-Seg. Δεδομένου ότι τρία 74HC595 αλληλοκαλύπτονται μεταξύ τους, ο πείρος εισόδου δεδομένων (PIN14) του πρώτου καταχωρητή μετατόπισης θα συνδεθεί με το Arduino NANO και ο ακροδέκτης εξόδου σειριακών δεδομένων θα παρέχει τα δεδομένα στον επόμενο καταχωρητή μετατόπισης. Αυτή η σύνδεση σειριακών δεδομένων θα συνεχιστεί μέχρι το τρίτο 74HC595.
Προγραμματισμός MAX30205 με Arduino
Το πλήρες πρόγραμμα για αυτό το σεμινάριο βρίσκεται στο κάτω μέρος αυτής της σελίδας. Η εξήγηση αυτού του κώδικα έχει ως εξής. Αρχικά, συμπεριλαμβάνουμε το τυπικό αρχείο κεφαλίδας βιβλιοθήκης Arduino I2C.
#περιλαμβάνω
Η παραπάνω γραμμή θα περιλαμβάνει τη βιβλιοθήκη που συνεισφέρει το Arduino από το πρωτοκεντρικό. Αυτή η βιβλιοθήκη έχει σημαντικές λειτουργίες για επικοινωνία με τον αισθητήρα MAX30205. Η βιβλιοθήκη προέρχεται από τον παρακάτω σύνδεσμο GitHub-
https://github.com/protocentral/ProtoCentral_MAX30205
Μετά την εισαγωγή της βιβλιοθήκης, ορίζουμε MAX30205 δεδομένα αντικειμένων όπως φαίνεται παρακάτω-
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
Οι επόμενες δύο γραμμές είναι σημαντικές για τον καθορισμό των παραμέτρων. Η παρακάτω γραμμή θα παρέχει θερμοκρασία σε Φαρενάιτ εάν οριστεί αληθής. Για να δείξετε το αποτέλεσμα σε Κελσίου, η γραμμή πρέπει να οριστεί λανθασμένη.
const bool fahrenheittemp = true; // Δείχνω τη θερμοκρασία σε Φαρενάιτ, Αν θέλετε να δείξετε τη θερμοκρασία σε Κελσίου, κάντε αυτή τη μεταβλητή λανθασμένη.
Η παρακάτω γραμμή πρέπει να διαμορφωθεί εάν χρησιμοποιούνται κοινές οθόνες 7-τμημάτων τύπου καθόδου στο υλικό. Κάντε το ψευδές εάν χρησιμοποιείται κοινή ανόδου.
const bool commonCathode = true; // Χρησιμοποιώ το κοινό τμήμα Cathode 7 εάν χρησιμοποιείτε το κοινό Anode, τότε αλλάζω την τιμή σε false. const byte digit_pattern = {// 74HC595 Σύνδεση Outpin με οθόνη 7segment. // 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-Segment.
Στη λειτουργία ρύθμισης, μετά τη ρύθμιση των λειτουργιών ακίδων των 74 ακροδεκτών 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 () και αποθηκεύεται σε μια μεταβλητή float που ονομάζεται temp . Μετά από αυτό, εάν επιλεγεί η λειτουργία θερμοκρασίας Φαρενάιτ, τα δεδομένα μετατρέπονται από Κελσίου σε Φαρενάιτ. Στη συνέχεια, τρία ψηφία από τα δεδομένα θερμοκρασίας που μετατράπηκαν διαχωρίζονται περαιτέρω σε τρία μεμονωμένα ψηφία. Για να γίνει αυτό, χρησιμοποιούνται παρακάτω γραμμές κωδικών-
// saperate 3 ψηφία από την τρέχουσα θερμοκρασία (όπως εάν temp = 31.23c,) int dispDigit1 = (int) temp / 10; // digit1 3 int dispDigit2 = (int) temp% 10; // digit2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10); // ψηφίο3 2
Τώρα, τα διαχωρισμένα τρία ψηφία αποστέλλονται στις οθόνες 7 τμημάτων χρησιμοποιώντας τους καταχωρητές μετατόπισης 74HC595. Δεδομένου ότι το LSB εμφανίστηκε για πρώτη φορά στην τρίτη οθόνη 7 τμημάτων μέσω του τρίτου 74HC595, το 3ο ψηφίο μεταδίδεται πρώτα. Για να γίνει αυτό, ο ασφαλισμένος πείρος τραβιέται χαμηλά και τα δεδομένα υποβάλλονται στο 74HC595 από τη συνάρτηση shiftOut ();
Με τον ίδιο τρόπο, τα υπόλοιπα δεύτερα και πρώτα ψηφία αποστέλλονται επίσης στο αντίστοιχο 74HC595, με αποτέλεσμα να παραμένουν δύο οθόνες 7 τμημάτων. Μετά την αποστολή όλων των δεδομένων, ο πείρος μανδάλωσης απελευθερώνεται και τραβιέται ψηλά για να επιβεβαιώσει το τέλος της μετάδοσης δεδομένων. Οι αντίστοιχοι κωδικοί φαίνονται παρακάτω -
// εμφάνιση ψηφίων σε οθόνη 3, 7 τμημάτων. digitalWrite (latchPin, LOW); εάν (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); } αλλιώς {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 - Δοκιμή
Το κύκλωμα είναι κατασκευασμένο σε δύο σετ ψωμιού όπως μπορείτε να δείτε παρακάτω. Όταν τοποθετούμε το δάχτυλο στον αισθητήρα, η θερμοκρασία ανιχνεύεται και η έξοδος εμφανίζεται σε οθόνη 7 τμημάτων, εδώ η τιμή είναι 92,1 * F.
Η πλήρης εργασία του έργου βρίσκεται στο παρακάτω βίντεο. Ελπίζω να σας άρεσε να φτιάξετε το έργο και να μάθετε κάτι χρήσιμο. Εάν έχετε απορίες, αφήστε τις στην παρακάτω ενότητα σχολίων ή χρησιμοποιήστε τα φόρουμ μας.