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

חיישן טמפרטורה DIY באמצעות דיודה אחת: 3 שלבים
חיישן טמפרטורה DIY באמצעות דיודה אחת: 3 שלבים

וִידֵאוֹ: חיישן טמפרטורה DIY באמצעות דיודה אחת: 3 שלבים

וִידֵאוֹ: חיישן טמפרטורה DIY באמצעות דיודה אחת: 3 שלבים
וִידֵאוֹ: תרמוסטט Zigbee לבקרת חימום תת רצפתי MOES BHT-006GAZB 2024, יולי
Anonim
חיישן טמפרטורה DIY באמצעות דיודה אחת
חיישן טמפרטורה DIY באמצעות דיודה אחת
חיישן טמפרטורה DIY באמצעות דיודה אחת
חיישן טמפרטורה DIY באמצעות דיודה אחת

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

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

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

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

אספקה

דיודה 1 - 1n4007 #12 - 1 נגד קוהם #13 - לוח Arduino

שלב 1: תרשים מעגלים

תרשים מעגלים
תרשים מעגלים

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

נגד 1 קילו אוהם עם אספקת 5V אמור לגרום לזרם דיודה של 4 מיליאמפר שהוא ערך מספיק למטרה זו. I (דיודה) = VCC / (Rseries + Rdiode)

שלב 2: קידוד

עלינו לזכור שיש כמה ערכים שצריך לשנות בקוד כדי להשיג את התוצאות הטובות יותר כמו:

1 - VCC_Voltage: כשערך analogRead () תלוי ב- VCC של שבב ה- ATmega, עלינו להוסיף אותו למשוואה לאחר מדידתו על לוח הארדואינו.

2 - V_OLD_0_C: ירידת המתח קדימה של הדיודה בשימוש בזרם של 4 mA וטמפרטורה של 0 צלזיוס

3 - Temperature_Coefficient: שיפוע הטמפרטורה של הדיודה שלך (עדיף להגיע מגליון הנתונים) או שאתה יכול למדוד אותו באמצעות משוואה זו: Vnew - Vold = K (Tnew - Told)

איפה:

Vnew = מתח נפילה שנמדד לאחרונה לאחר חימום הדיודה

Vold = מתח ירידה נמדד בטמפרטורת חדר כלשהי

Tnew = הטמפרטורה שאליה חיממה את הדיודה

Told = טמפרטורת החדר הישנה שבה נמדד וולד

K = Temperature_Coefficient (ערך שלילי המשתנה בין -1.0 ל -2.5 מיליוולט) לבסוף תוכל כעת להעלות את הקוד ולקבל את תוצאות הטמפרטורה שלך.

#define Sens_Pin A0 // PA0 ללוח STM32F103C8

כפול V_OLD_0_C = 690.0; // 690 mV מתח קדימה ב 0 צלזיוס בזרם בדיקה של 4 mA

כפולה V_NEW = 0; // מתח קדימה חדש בטמפרטורת החדר ב 4 mA טמפרטורה כפולה הנוכחי טמפרטורה = 0.0; // חדר מחושב טמפרטורה כפולה Temperature_Coefficient = -1.6; //-1.6 mV שינוי לתואר צלזיוס (-2.5 עבור דיודות גרמניום), עדיף לקבל ממדון הנתונים של דיודה כפול VCC_Voltage = 5010.0; // מתח קיים במסילת 5V של הארדואינו במיליוולט (נדרש לדיוק טוב יותר) (3300.0 עבור stm32)

הגדרת בטל () {

// שים את קוד ההתקנה שלך כאן, להפעלה פעם אחת: pinMode (Sens_Pin, INPUT); Serial.begin (9600); }

לולאת חלל () {

// שים את הקוד הראשי שלך כאן, כדי להריץ שוב ושוב: V_NEW = analogRead (Sens_Pin)*VCC_Voltage/1024.0; // חלקו ב- 4.0 אם אתם משתמשים בטמפרטורת ADC של 12 סיביות = ((V_NEW - V_OLD_0_C)/Temperature_Coefficient);

Serial.print ("Temp =");

Serial.print (טמפרטורה); Serial.println ("C");

עיכוב (500);

}

שלב 3: השגת ערכים טובים יותר

קבלת ערכים טובים יותר
קבלת ערכים טובים יותר
קבלת ערכים טובים יותר
קבלת ערכים טובים יותר

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

אתה יכול לראות שיש שגיאה ניכרת בקריאות שיכולות להגיע ל -3 או 4 מעלות צלזיוס אז מאיפה נובעת השגיאה הזו?

1 - ייתכן שיהיה עליך לצבוט את המשתנים שהוזכרו בשלב הקודם

2 - רזולוציית ה- ADC של הארדואינו נמוכה ממה שאנחנו צריכים כדי לזהות את הפרש המתח הקטן

3 - התייחסות המתח של הארדואינו (5V) גבוהה מדי לשינוי המתח הקטן הזה על פני הדיודה

אז אם אתה מתכוון להשתמש בהתקנה זו כחיישן טמפרטורה, עליך להיות מודע לכך שלמרות שהיא זולה ושימושית, היא אינה מדויקת אך היא יכולה לתת לך מושג טוב מאוד לגבי הטמפרטורה של המערכת שלך או שהיא על PCB או מותקן על מנוע פועל וכו '…

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

1 - הוסף כמה הגברות ושלבי סינון באמצעות מגברי אופ כמו בקישור 2 - השתמש בבקר התייחסות אנלוגי פנימי נמוך יותר כמו לוחות STM32F103C8 עם מתח התייחסות אנלוגי 3.3 וולט (ראה נקודה 4) 3 - השתמש בהתייחסות האנלוגית הפנימית 1.1 V ב arduino אבל שים לב שאתה לא יכול לחבר יותר מ 1.1 וולט לאף אחד מהסיכות האנלוגיות של הארדואינו.

אתה יכול להוסיף שורה זו בפונקציית ההתקנה:

analogReference (INTERNAL);

4 - השתמש במיקרו -בקר בעל ADC ברזולוציה גבוהה יותר כמו STM32F103C8 בעל רזולוציית ADC של 12 סיביות אז בקצרה, התקנה מבוססת ארדואינו יכולה לתת סקירה נעימה לגבי הטמפרטורה של המערכת אך תוצאות לא כל כך מדויקות (בערך 4.88 mV/קריאה)

ההתקנה STM32F103C8 תעניק לך תוצאה די מדויקת מכיוון שיש לה ADC גבוה יותר של 12 סיביות וערך התייחסות אנלוגי נמוך יותר של 3.3V (כ- 0.8 mV/קריאה)

ובכן זהו זה !!: ד

מוּמלָץ: