- רכיבים נדרשים
- MAX30205 עם ארדואינו - דיאגרמת מעגלים
- ממשק Arduino עם חיישן טמפרטורת גוף MAX30205
- תכנות MAX30205 עם Arduino
- מד טמפרטורת גוף של ארדואינו - בדיקה
עבור יישומים רפואיים או קליניים, מדידת טמפרטורת גוף האדם היא פרמטר חשוב לקביעת מצבו הבריאותי של כל אדם. עם זאת, יש המון דרכים לחוש טמפרטורה, אך לא לכל דבר יש דיוק בכדי לעמוד במפרט התרמומטריה הקליני. חיישן הטמפרטורה MAX30205 תוכנן במיוחד ליישום זה. שים לב שחיישן זה אינו חיישן טמפרטורה ללא מגע. אם אתה מחפש מדידת טמפרטורת IR ללא מגע, עיין במדחום MLX90614 שתכננו קודם.
בפרויקט זה נתממש חיישן טמפרטורת גוף אנושי MAX30205 שניתן להתממשק בקלות עם רצועת כושר או להשתמש בו למטרות רפואיות. נשתמש בארדואינו ננו כיחידת המיקרו-בקר המרכזית ונשתמש גם בתצוגות של 7 קטעים כדי להציג את הטמפרטורה המורגשת בפרנהייט. לאחר שתדע כיצד להשתמש בחיישן, תוכל להשתמש בו בכל היישום המועדף עליך, תוכל גם לבדוק את פרויקט השעון החכם הזה של Arduino אשר בשילוב עם MAX30205 יכול לשמש לניטור הטמפרטורה של אנשים.
רכיבים נדרשים
- ארדואינו ננו
- 7-Seg מציג קתודה משותפת - 3 יחידות
- 74HC595 - 3 יח '
- נגד 680R - 24 יחידות
- לוח מודולים MAX30205
- ספק כוח 5V
- קרש לחם
- הרבה חוטי חיבור
- ארדואינו IDE
- כבל מיקרו USB
MAX30205 עם ארדואינו - דיאגרמת מעגלים
תרשים המעגל השלם לחיבור Arduino עם חיישן טמפרטורת גוף MAX30205 מוצג להלן. המעגל פשוט מאוד, אך מכיוון שהשתמשנו בתצוגות בעלות 7 קטעים, הוא נראה מעט מסובך. תצוגות עם 7 קטעים עם Arduino היא דרך נהדרת להציג את הערך שלך גדול ובהיר בעלות נמוכה מאוד. אך תוכל גם להציג ערכים אלה על גבי OLED או LCD אם תרצה בכך.
ה- Arduino Nano מחובר לשלושה 74HC595. שלושה 74HC595 מדורגים יחד כדי לשמור סיכות פלט נוספות מה- Arduino Nano לחיבור שלושה צגי 7-Seg. השתמשנו בעבר ב- 74HC595 עם Arduino בפרויקטים רבים אחרים כמו שעון Arduino, תצוגת לוח LED, משחק נחש Arduino וכו '.
לוח המודולים MAX30205 דורש נגדי משיכה נוספים מכיוון שהוא מתקשר עם פרוטוקול I2C. עם זאת, מעט לוחות מודולים אינם דורשים משיכה נוספת מכיוון שנגדי המשיכה כבר ניתנים בתוך המודול. לכן, צריך לאשר אם ללוח המודולים יש נגדי משיכה פנימיים או שהוא דורש משיכה חיצונית בנוסף. בלוח המשמש בפרויקט זה יש כבר נגדי משיכה מובנים בתוך לוח המודולים.
ממשק Arduino עם חיישן טמפרטורת גוף MAX30205
החיישן שמשמש כאן הוא ה- MAX30205 מ- maxim משולב. חיישן הטמפרטורה MAX30205 מודד במדויק טמפרטורה עם דיוק של 0.1 ° C (37 ° C עד 39 ° C). החיישן עובד עם פרוטוקול I2C.
לוח המודולים יכול לעבוד עם 5 או 3.3 וולט. עם זאת, הלוח מוגדר לשימוש עם מתח הפעלה 5V. הוא כולל גם מעביר רמה לוגית, מכיוון שהחיישן עצמו תומך במקסימום 3.3 וולט כמטרות הקשורות לתחום הספק או לתקשורת נתונים.
על הפלט, שלושה רושמים משמרת של 74HC595, 8 סיביות משמשים לממשק שלושה תצוגות עם 7 קטעים עם NANO Arduino. ניתן להציג את דיאגרמת הסיכה בתמונה למטה-
תיאור הסיכה של 74HC595 ניתן לראות בטבלה שלהלן-
ה- QA ל- QH הם סיכות פלט הנתונים המחוברות לתצוגות 7-Seg. מכיוון ששלושה 74HC595 מדורגים יחד, סיכת קלט הנתונים (PIN14) של רושם המשמרת הראשון תחובר ל- Arduino NANO וסיכת פלט הנתונים הסידורי תספק את הנתונים לרשם המשמרת הבא. חיבור נתונים סדרתי זה ימשיך עד 74HC595 השלישי.
תכנות MAX30205 עם Arduino
התוכנית המלאה להדרכה זו נמצאת בתחתית עמוד זה. ההסבר לקוד זה הוא כדלקמן. ראשית, אנו כוללים את קובץ הכותרת הרגיל של ספריית Arduino I2C.
#לִכלוֹל
השורה הנ"ל תכלול את הספרייה שתרמה ארדואינו ממרכז מרכז. לספריה זו יש פונקציות חשובות לתקשורת עם חיישן MAX30205. הספרייה לקוחה מהקישור שלהלן GitHub-
https://github.com/protocentral/ProtoCentral_MAX30205
לאחר ייבוא הספרייה, אנו מגדירים נתוני אובייקט MAX30205 כמוצג להלן-
# כלול "Protocentral_MAX30205.h" MAX30205 tempSensor;
שתי השורות הבאות חשובות להגדרת הפרמטרים. השורה שלמטה תספק טמפרטורה בפרנהייט אם היא מוגדרת נכון. כדי להציג את התוצאה ב צלזיוס, צריך לקבוע את השורה כלא נכונה.
const bool fahrenheittemp = נכון; // אני מציג את הטמפרטורה בפרנהייט, אם ברצונך להציג את הטמפרטורה בצלזיוס, הפוך את המשתנה לשקר.
צריך לקבוע את התצורה של השורה התחתונה אם נעשה שימוש בחומרה בתצוגות קטגוריות נפוצות מסוג קטודה מסוג 7. הפוך אותו לשקר אם משתמשים באנודה נפוצה.
const bool commonCathode = true; // אני משתמש בקתודה 7 קטגורית נפוצה אם אתה משתמש באנודה משותפת ואז שנה את הערך לשקר. const byte digit_pattern = {// 74HC595 Outpin חיבור עם תצוגת 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 וקריאת חיישן הטמפרטורה.
בטל התקנה () {// שים את קוד ההתקנה שלך כאן, להפעלה פעם אחת: // הגדר את היציאה הטורית על 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; // digit1 3 int dispDigit2 = (int) temp% 10; // digit2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10); // ספרה 3 2
כעת שלוש הספרות המופרדות נשלחות לתצוגות בעלות 7 קטעים באמצעות רושמות המשמרת 74HC595. מאז שה- LSB הציג לראשונה את התצוגה השלישית עם 7 קטעים דרך 74HC595 השלישי, הספרה השלישית מועברת לראשונה. לשם כך, הסיכה הנעולה נמשכת נמוך והנתונים מוגשים ל- 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. (ספרה + DP) shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); } אחר {shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern-digit_pattern)); // 1. (ספרה + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); } digitalWrite (latchPin, HIGH);
מד טמפרטורת גוף של ארדואינו - בדיקה
המעגל בנוי בשתי קבוצות של לוחות לחם כפי שניתן לראות להלן. כאשר אנו מניחים את האצבע על החיישן, הטמפרטורה מורגשת והפלט מוצג לתצוגת 7 קטעים, כאן הערך הוא 92.1 * F.
את העבודה המלאה של הפרויקט ניתן למצוא בסרטון המקושר למטה. מקווה שנהניתם לבנות את הפרויקט ולמדתם משהו שימושי. אם יש לך שאלות, השאיר אותן בסעיף ההערות למטה או השתמש בפורומים שלנו.