תוכן עניינים:

בדיקת חיישני טמפרטורה - איזה מהם בשבילי ?: 15 שלבים (עם תמונות)
בדיקת חיישני טמפרטורה - איזה מהם בשבילי ?: 15 שלבים (עם תמונות)

וִידֵאוֹ: בדיקת חיישני טמפרטורה - איזה מהם בשבילי ?: 15 שלבים (עם תמונות)

וִידֵאוֹ: בדיקת חיישני טמפרטורה - איזה מהם בשבילי ?: 15 שלבים (עם תמונות)
וִידֵאוֹ: האנשים הכי שמנים בעולם | טופטן 2024, נוֹבֶמבֶּר
Anonim
בדיקת חיישני טמפרטורה - איזה מהם מתאים לי?
בדיקת חיישני טמפרטורה - איזה מהם מתאים לי?

אחד החיישנים הראשונים שחדשים למחשוב פיזי רוצים לנסות הוא משהו למדידת הטמפרטורה. ארבעה מהחיישנים הפופולריים ביותר הם ה- TMP36, בעל הפלט אנלוגי וזקוק לממיר אנלוגי לדיגיטלי, DS18B20, המשתמש בקישוריות חד-חוטית, ה- DHT22 או ה- DHT11 הזול מעט, שזקוק רק לסיכה דיגיטלית, אך גם מספק קריאת לחות, ולבסוף BME680 המשתמש ב- I2C (עם SPI גם בכמה לוחות פריצה) ונותן טמפרטורה, לחות, גז (VOC) ולחץ אטמוספרי אך עולה קצת יותר.

אני רוצה לראות עד כמה הם מדויקים ולגלות יתרונות או חסרונות. ברשותי כבר מד חום כספית מדויק, שנותר מהדפסה הצילומית בצבע עוד בימי העיבוד הכימי, להשוות ביניהם. (לעולם אל תזרוק שום דבר - תצטרך את זה מאוחר יותר!)

אני הולך להשתמש ב- CircuitPython ולוח פיתוח של Adafruit Itsybitsy M4 עבור בדיקות אלה. מנהלי התקנים מתאימים זמינים לכל המכשירים.

אספקה

הרשימה הראשונית שלי:

  • מיקרו -בקר Itsybitsy M4 Express
  • כבל מיקרו USB - לתכנות
  • TMP36
  • DS18B20
  • נגד 4.7K אוהם
  • DHT22
  • BME680
  • רב מטר
  • לוח לחם או לוח רצועות
  • חיבור חוט

שלב 1: מעגלים

מעגלים
מעגלים

החוטים הכתומים הם 3.3 וולט

החוטים השחורים הם GND

בתחתית הלוח נקודות בדיקה למדידת מתח. (3.3v, GND ו- TMP36 פלט אנלוגי)

השקעים המרכזיים הם משמאל לימין:

  • TMP36: 3.3v, אות אנלוגי החוצה, GND
  • DS18B20: GND, אות דיגיטלי החוצה, 3.3v
  • DHT22: 3.3v, אות החוצה, ריק, GND
  • BME680: 3.3v, SDA, SCL, ריק, GND

המחבר האחורי, לחיבור ללוח IB M4E, משמאל לימין

  • 3.3v
  • TMP36 - אנלוגי החוצה לפין A2
  • GND
  • יציאה דיגיטלית DS18B20 לפין D3 - ירוק
  • יציאה דיגיטלית DHT22 לפין D2 - צהוב
  • SDA - לבן
  • SCL - ורוד

הנגד 4.7K אוהם הוא pullup של אות ל 3.3v לחיבור 0-חוט על DS18B20.

בחלק האחורי של הלוח יש 2 מסלולים חתוכים:

מתחת לקצה השמאלי של החוטים הוורודים והלבנים. (מתחת לחוט הצהוב.)

שלב 2: שיטה

שיטה
שיטה

עבור כל חיישן אכתוב סקריפט קצר לקריאת הטמפרטורה (ופריטים אחרים אם קיימים) מספר פעמים ובודק את הטמפרטורה מול מדחום הכספית (Hg) שלי. אני אחפש לראות עד כמה הטמפרטורה משתווה לקריאת הכספית ואם הקריאות יציבות/עקביות.

אני אסתכל גם בתיעוד כדי לראות אם הקריאות מתאימות לדיוק הצפוי ואם יש משהו שניתן לעשות כדי לבצע שיפורים.

שלב 3: TMP36 - ניסיון ראשוני

TMP36 - ניסיון ראשוני
TMP36 - ניסיון ראשוני
TMP36 - ניסיון ראשוני
TMP36 - ניסיון ראשוני

רגל שמאל היא 3.3v, רגל ימין היא GND והרגל המרכזית היא מתח אנלוגי המייצג את הטמפרטורה באמצעות הנוסחה הבאה. TempC = (מיליוולט - 500) / 10

אז, 750 מילי -וולט נותן טמפרטורה של 25 מעלות צלזיוס

נראה שיש כאן כמה בעיות. הטמפרטורה ממדחום הכספית ה'רגיל 'נמוכה בהרבה מה- TMP36 והקריאות אינן עקביות במיוחד - יש קצת' רעש 'או רעש.

חיישן TMP36 שולח מתח ביחס לטמפרטורה. זה צריך לקרוא על ידי ממיר A/D לפני חישוב הטמפרטורה. בואו לקרוא את המתח ישירות מהרגל האמצעית של החיישן עם מטר רב ונשווה אותו לתוצאה מה- A/D. הקריאה מהרגל המרכזית עם מטר מרובה שלי היא 722 מיליוולט, הרבה יותר נמוכה וקריאה מאוד יציבה.

יש שני דברים שאנחנו יכולים לנסות. החלף פוטנציומטר ל- TMP36 והתאם את המתח בחישוב למתח האמיתי של הבקר. לאחר מכן נראה אם המתח המחושב קרוב יותר והאם הרעש/הרעש מופחת.

בואו למדוד את המתח בפועל בשימוש שלי באמצעות המיקרו -בקר ו- A/D. זה הונח על 3.3v אך למעשה הוא 3.275v בלבד.

שלב 4: תוצאות החלפת פוטנציומטר

תוצאות החלפת פוטנציומטר
תוצאות החלפת פוטנציומטר

זה הרבה יותר טוב. הקריאות הן בתוך כמה מיליוולט עם הרבה פחות רעש. זה מצביע על כך שהרעש הוא מה- TMP36 ולא מה- A/D. הקריאה במד תמיד יציבה - אין רעידות. (ייתכן שהמד 'מחליק' את הפלט העצבני.)

אחת הדרכים לשיפור המצב עשויה להיות קריאה ממוצעת. קח עשר קריאות במהירות והשתמש בממוצע. אני גם אחשב את סטיית התקן בזמן שאני משנה את התוכנית, כדי לתת אינדיקציה להתפשטות התוצאות. אני גם אספור את מספר הקריאות בתוך סטיית תקן אחת של הממוצע - ככל שהטוב יותר.

שלב 5: ממוצע קריאות ותוצאה

ממוצע קריאות ותוצאה
ממוצע קריאות ותוצאה

עדיין יש הרבה רעש והקריאה מ- TMP36 עדיין גבוהה יותר ממדחום הכספית. כדי להפחית רעש כללתי קבל 100NF בין אות ל- GND

לאחר מכן חיפשתי פתרונות אחרים באינטרנט ומצאתי את אלה: https://www.doctormonk.com/2015/02/accurate-and-re… ד ר מונק מציע לכלול נגד 47 k Ohm בין אות ל- GND.

www.desert-home.com/2015/03/battery-operate… בעוד שהבחור הזה מציע למיין 15 קריאות לפי סדר וממוצע המרכז 5.

שיניתי את התסריט ואת המעגל כך שיכללו את ההצעות האלה וכלל קריאה ממדחום הכספית.

לבסוף! כעת יש לנו קריאות קבועות בטווח הדיוק של תיאור המכשיר.

זה היה די הרבה מאמץ לגרום לחיישן לפעול שיש לו רק דיוק של היצרן של:

דיוק - הגבוה ביותר (הנמוך ביותר): ± 3 ° C (± 4 ° C) הם עולים רק כ $ 1.50 (£ 2)

שלב 6: DS18B20 - בדיקה ראשונית

DS18B20 - בדיקה ראשונית
DS18B20 - בדיקה ראשונית

תהיה מאוד זהיר. חבילה זו נראית מאוד דומה ל- TMP36 אך הרגליים הפוכות עם 3.3v מימין ו- GND משמאל. האות החוצה נמצא במרכז. על מנת לגרום למכשיר זה לפעול אנו זקוקים לנגד 4.7 קילו -אוהם בין האות ל -3.3 וולט. מכשיר זה משתמש בפרוטוקול חד-חוטי ואנו צריכים להוריד כמה מנהלי התקנים לתיקיית lib של ה- Itsybitsy M4 Express.

זה עולה בערך $ 4 / £ 4 מפרט טכני:

  • טווח טמפרטורות שמיש: -55 עד 125 ° C (-67 ° F עד +257 ° F)
  • רזולוציה לבחירה של 9 עד 12 ביט
  • משתמש בממשק 1 -Wire - דורש רק סיכה דיגיטלית אחת לתקשורת
  • מזהה ייחודי של 64 סיביות שנצרב בשבב
  • חיישנים מרובים יכולים לחלוק סיכה אחת
  • ± 0.5 ° C דיוק מ -10 ° C עד +85 ° C.
  • מערכת אזעקה מוגבלת טמפרטורה
  • זמן השאילתה הוא פחות מ- 750ms
  • ניתן לשימוש עם הספק של 3.0V עד 5.5V

הבעיה העיקרית בחיישן זה היא שהוא משתמש בממשק 1-Wire של דאלאס ולא לכל בקרי המיקרו יש מנהל התקן מתאים. יש לנו מזל, יש נהג ל- Itsybitsy M4 Express.

שלב 7: DS18B20 עובד היטב

DS18B20 עובד היטב
DS18B20 עובד היטב

זה מראה תוצאה נהדרת.

מערך קריאות קבוע ללא תקורות עבודה וחישוב נוספות. הקריאות נמצאות בטווח הדיוק הצפוי של ± 0.5 מעלות צלזיוס בהשוואה למדחום הכספית שלי.

יש גם גרסה עמידה למים בסביבות 10 $ בה השתמשתי בעבר בהצלחה שווה.

שלב 8: DHT22 ו- DHT11

DHT22 ו- DHT11
DHT22 ו- DHT11

ה- DHT22 משתמש בטרמיסטור כדי להשיג את הטמפרטורה ועולה כ- $ 10 / £ והוא האח המדויק והיקר יותר של ה- DHT11 הקטן יותר. הוא משתמש גם בממשק בעל חוט אחד אך אינו תואם את פרוטוקול דאלאס המשמש את DS18B20. הוא מרגיש לחות כמו גם טמפרטורה. התקנים אלה זקוקים לפעמים לנגד משיכה בין 3.3 וולט לבין סיכת האות. חבילה זו כבר מותקנת.

  • זול
  • הספק של 3 עד 5V וקלט/פלט
  • שימוש מקסימלי 2.5mA בזמן ההמרה (תוך בקשת נתונים)
  • טוב לקריאות לחות של 0-100% עם דיוק של 2-5%
  • טוב לקריאות טמפרטורה של -40 עד 80 מעלות צלזיוס ± 0.5 מעלות צלזיוס דיוק
  • קצב דגימה לא יותר מ 0.5 הרץ (אחת לשתי שניות)
  • גודל גוף 27mm x 59mm x 13.5mm (1.05 "x 2.32" x 0.53 ")
  • 4 סיכות, מרווח של 0.1 אינץ '
  • משקל (רק DHT22): 2.4 גרם

בהשוואה ל- DHT11, חיישן זה מדויק יותר, מדויק יותר ועובד בטווח טמפרטורות/לחות גדול יותר, אך הוא גדול ויקר יותר.

שלב 9: תוצאות DHT22

תוצאות DHT22
תוצאות DHT22

אלו תוצאות מצוינות עם מעט מאוד מאמץ. הקריאות די יציבות ובתוך הסובלנות הצפויה. קריאת הלחות היא בונוס.

אתה יכול לבצע קריאות רק כל שנייה.

שלב 10: מבחן DTH11

מבחן DTH11
מבחן DTH11

מדחום הכספית שלי הראה 21.9 מעלות צלזיוס. זהו DHT11 די ישן שחזרתי מפרוייקט ישן וערך הלחות שונה מאוד מקריאות DHT22 מלפני מספר דקות. זה עולה בערך 5 $ / 5 £.

התיאור שלה כולל:

  • טוב לקריאות לחות של 20-80% עם דיוק של 5%
  • טוב לקריאות טמפרטורה 0-50 ° C ± 2 ° C דיוק - פחות מה- DTH22

נראה שהטמפרטורה עדיין נמצאת בטווח הדיוק אך אינני סומך על קריאת הלחות מהמכשיר הישן הזה.

שלב 11: BME680

BME680
BME680

חיישן זה מכיל טמפרטורה, לחות, לחץ ברומטרי ויכולות חישת גז VOC באריזה אחת אך הוא היקר ביותר מבין החיישנים הנבדקים כאן. זה עולה בערך 18.50 פאונד / 22 $. יש מוצר דומה ללא חיישן הגז שהוא קצת יותר זול.

זהו חיישן סטנדרטי מזהב של החמישה. חיישן הטמפרטורה מדויק, ועם מנהלי התקנים מתאימים, קל מאוד לשימוש. גרסה זו משתמשת ב- I2C אך לוח הפריצה של Adafruit יכול להשתמש גם ב- SPI.

בדומה ל- BME280 & BMP280, חיישן דיוק זה של בוש יכול למדוד לחות עם ± 3% דיוק, לחץ ברומטרי עם דיוק מוחלט של 1 hPa וטמפרטורה עם דיוק של ± 1.0 ° C. מכיוון שהלחץ משתנה עם הגובה, ומדידות הלחץ כל כך טובות, אתה יכול להשתמש בו גם כמד גובה עם ± 1 מטר או דיוק טוב יותר!

התיעוד אומר שהוא צריך קצת זמן צריבה לחיישן הגז.

שלב 12: באיזה מהם עלי להשתמש?

באיזה מהם עלי להשתמש?
באיזה מהם עלי להשתמש?
  • ה- TMP36 זול מאוד, קטן ופופולרי אך די קשה לשימוש ועשוי להיות לא מדויק.
  • ה- DS18B20 קטן, מדויק, זול, קל מאוד לשימוש ובעל גרסה עמידה במים.
  • ה- DTH22 מציין גם לחות, מחירו בינוני וקל לשימוש אך עשוי להיות איטי מדי.
  • ה- BME680 עושה הרבה יותר מהאחרים אך הוא יקר.

אם אני רק רוצה טמפרטורה הייתי משתמש ב- DS18B20 עם דיוק של ± 0.5 ° C אבל המועדף עלי הוא BME680 מכיוון שהוא עושה הרבה יותר וניתן להשתמש בו במספר רב של פרויקטים שונים.

מחשבה אחת אחרונה. הקפד להרחיק את חיישן הטמפרטורה שלך מהמיקרו -מעבד. כמה כובעי Raspberry Pi מאפשרים לחום מהלוח הראשי לחמם את החיישן, מה שמקנה קריאת שווא.

שלב 13: מחשבות והתנסות נוספות

מחשבות והתנסות נוספות
מחשבות והתנסות נוספות

תודה gulliverrr, ChristianC231 ו- pgagen על ההערות שלך על מה שעשיתי עד כה. אני מצטער על העיכוב אבל הייתי בחופשה באירלנד, ללא גישה לערכת האלקטרוניקה שלי במשך כמה שבועות.

להלן ניסיון ראשון להראות את החיישנים העובדים יחד.

כתבתי תסריט לקרוא את החיישנים בתורו ולהדפיס את ערכי הטמפרטורה כל 20 שניות בערך.

הכנסתי את הערכה למקרר למשך שעה, כדי לצנן הכל. חיברתי אותו למחשב האישי וגרמתי למו להדפיס את התוצאות. הפלט הועתק לאחר מכן והפך לקובץ.csv (משתנים המופרדים בפסיקים) וגרפים מציירים מהתוצאות ב- Excel.

עברו כשלוש דקות מהוצאת הערכה מהמקרר עד שנרשמו תוצאות, כך שחלה עלייה מסוימת בטמפרטורה במרווח זה. אני חושד שלארבעת החיישנים יש יכולות תרמיות שונות ולכן הם יתחממו בקצב שונה. קצב ההתחממות צפוי לרדת כאשר החיישנים מתקרבים לטמפרטורת החדר. רשמתי את זה כ- 24.4 מעלות צלזיוס בעזרת מדחום הכספית שלי.

ההבדלים הרחבים בטמפרטורה בתחילת הקימורים עשויים לנבוע מהיכולות התרמיות השונות של החיישנים. אני שמח לראות שהקווים מתכנסים לקראת הסוף כשהם מתקרבים לטמפרטורת החדר. אני מודאג מכך שה- TMP36 תמיד גבוה בהרבה מהחיישנים האחרים.

חיפשתי את גליונות הנתונים כדי לבדוק שוב את הדיוק המתואר של מכשירים אלה

TMP36

  • ± 2 ° C דיוק מעל הטמפרטורה (הקלדה)
  • לינאריות ± 0.5 ° C (טיפוס)

DS18B20

± 0.5 ° C דיוק מ -10 ° C עד +85 ° C

DHT22

טמפרטורה ± 0.5 מעלות צלזיוס

BME680

טמפרטורה עם ± 1.0 ° C דיוק

שלב 14: גרף מלא

גרף מלא
גרף מלא

כעת ניתן לראות כי החיישנים אכן התייצבו בסופו של דבר ומסכימים על הטמפרטורה פחות או יותר בתוך דיוקם המתואר. אם מורידים 1.7 מעלות מערכי TMP36 (צפוי ± 2 מעלות צלזיוס) יש הסכמה טובה בין כל החיישנים.

בפעם הראשונה שהפעלתי את הניסוי הזה חיישן DHT22 גרם לבעיה:

פלט main.py:

14.9, 13.5, 10.3, 13.7

15.7, 14.6, 10.5, 14.0

16.6, 15.6, 12.0, 14.4

18.2, 16.7, 13.0, 15.0

18.8, 17.6, 14.0, 15.6

19.8, 18.4, 14.8, 16.2

21.1, 18.7, 15.5, 16.9

21.7, 19.6, 16.0, 17.5

22.4, 20.2, 16.5, 18.1

23.0, 20.7, 17.1, 18.7

שגיאת קריאה DHT: ('חיישן DHT לא נמצא, בדוק חיווט',)

Traceback (רוב השיחות האחרונות האחרונות):

קובץ "main.py", שורה 64, in

הקובץ "main.py", שורה 59, ב- get_dht22

NameError: משתנה מקומי שהוזכר לפני הקצאה

אז שיניתי את הסקריפט כדי להתמודד עם בעיה זו והפעלתי מחדש את ההקלטה:

שגיאת קריאה DHT: ('חיישן DHT לא נמצא, בדוק חיווט',)

25.9, 22.6, -999.0, 22.6

שגיאת קריאה DHT: ('חיישן DHT לא נמצא, בדוק חיווט',)

25.9, 22.8, -999.0, 22.7

25.9, 22.9, 22.1, 22.8

25.9, 22.9, 22.2, 22.9

שגיאת קריאה DHT: ('חיישן DHT לא נמצא, בדוק חיווט',)

27.1, 23.0, -999.0, 23.0

שגיאת קריאה DHT: ('חיישן DHT לא נמצא, בדוק חיווט',)

27.2, 23.0, -999.0, 23.1

25.9, 23.3, 22.6, 23.2

שגיאת קריאה DHT: ('חיישן DHT לא נמצא, בדוק חיווט',)

28.4, 23.2, -999.0, 23.3

שגיאת קריאה DHT: ('חיישן DHT לא נמצא, בדוק חיווט',)

26.8, 23.1, -999.0, 23.3

26.5, 23.2, 23.0, 23.4

26.4, 23.3, 23.0, 23.5

26.4, 23.4, 23.1, 23.5

26.2, 23.3, 23.1, 23.6

לא הייתה לי שום בעיה בריצה השנייה. התיעוד של Adafruit אכן מזהיר כי לפעמים חיישני ה- DHT אכן מפספסים קריאות.

שלב 15: מסקנות

מסקנות
מסקנות

עקומה זו מראה בבירור שהקיבולת התרמית הגבוהה יותר של חלק מהחיישנים מגדילה את זמן התגובה שלהם.

כל החיישנים רושמים טמפרטורות שעולות ויורדות.

הם לא ממהרים להסתפק בטמפרטורה חדשה.

הם לא מדויקים במיוחד. (האם הם מספיק טובים לתחנת מזג אוויר?)

ייתכן שיהיה עליך לכייל את החיישן מול מדחום מהימן.

מוּמלָץ: