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

חיישן טמפרטורה סובלני תקלות בקר רשת: 8 שלבים
חיישן טמפרטורה סובלני תקלות בקר רשת: 8 שלבים

וִידֵאוֹ: חיישן טמפרטורה סובלני תקלות בקר רשת: 8 שלבים

וִידֵאוֹ: חיישן טמפרטורה סובלני תקלות בקר רשת: 8 שלבים
וִידֵאוֹ: ג'ושה באך: זמן, השערת סימולציה, קיום 2024, נוֹבֶמבֶּר
Anonim
בקר רשת חיישן טמפרטורה סובלני תקלות
בקר רשת חיישן טמפרטורה סובלני תקלות

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

הבקר יכול לנהל עד 8 חיישנים עם Arduino Uno. (והרבה יותר עם Arduino Mega או עם שינוי תוכנה קל.)

שלב 1: סיפור מאחורי …

לפני כמה שנים הקמתי רשת חיישני טמפרטורה DS18B20 בחממה של אבי לבקר החימום מבוסס ה- pi שלי. לרוע המזל, האמינות של הבקר הייתה ירודה בעיקר עקב הפסקות חיישנים תכופות. ניסיתי מספר התקנות - כוח טפיל, כוח ישיר, חיבור הרשת ל- pi וכן חיבור ללוח מותאם אישית מבוסס Atmega (שמטרתו העיקרית הייתה להניע מנועי שסתומים).

מה גרוע מכך, אמינות רשת החיישנים ירדה בעיקר בלילות החורף בעוד שכמעט לא היו בעיות בקיץ! מה לעזאזל קורה כאן?

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

שלב 2: איך זה עובד

DS18B20 (חיישן הטמפרטורה) משתמש בפרוטוקול קנייני של 1 חוטים המאפשר לחיישנים מרובים לשתף קישור נתונים משותף (אותו חוט אחד). קישור הנתונים הנפוץ הזה מחובר לאחד מסיכות ה- GPIO של Arduino ול -5 V באמצעות נגד משיכה-אין דבר נדיר, הוראות רבות מכסות את ההתקנה הזו.

הטריק הוא שכל מוליכי החשמל של כל חיישן מחוברים לסיכות GPIO (ייעודיות) משלהן, כך שניתן יהיה להדליק ולכבות אותן בנפרד. לדוגמה, אם לחיישן מחבר Vcc מחובר לסיכה מס '3 ול- GND לסיכה מספר 2, הגדרת סיכה מס' 3 ל- HIGH מספקת לחיישן כוח (ללא הפתעה) בעוד שהגדרת סיכה מספר 2 ל- LOW מספקת קרקע (הפתעה קטנה עבור לִי). הגדרת שני הסיכות למצב קלט (כמעט) תבודד לחלוטין את החיישן ואת החיווט שלו - לא משנה איזה כישלון (למשל קיצור דרך) יקרה בתוכו, הוא לא יפריע לאחרים.

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

שים לב ש DS18B20 צורכת עד 1, 5 mA ואילו סיכת ארדואינו אחת יכולה למקם / לשקוע עד 40 mA, כך שזה בטוח להפעלת חיישנים באמצעות סיכות GPIO ישירות.

שלב 3: חומר וכלים

חוֹמֶר

  • 1 לוח ארדואינו UNO
  • 3 כותרות סיכה נקבות: 1 × 4, 1 × 6 ו -1 × 6 (או יותר - חתכתי אותן מכותרת אחת × 40)
  • דבק
  • חתיכת חוט קופר חשוף (10 ס"מ לפחות)
  • סרט בידוד
  • חומרים מתכלים להלחמה (חוט, שטף …)

כלים

  • ציוד הלחמה (ברזל, מחזיקים, …)
  • צבת חיתוך קטנה

שלב 4: תקן דברים ביחד

לתקן דברים ביחד
לתקן דברים ביחד

הדבק את כותרות הסיכה הנשיות לכותרות הלוח של Arduino:

  1. כותרת 1 × 4 לצד כותרת סיכות "אנלוגית", מצד לצד עם סיכות A0 – A4
  2. כותרת 1 × 6 לצד כותרת סיכות דיגיטלית ראשונה, מצד לצד עם סיכות 2–7
  3. כותרת 1 × 6 לצד כותרת סיכות דיגיטלית שנייה, מצד לצד עם סיכות 8–13

שימו לב שהכותרות שלי קצת יותר ארוכות … אין לה חסרונות ואין יתרונות אני מניח.

שלב 5: חברו דברים ביחד

חברו דברים ביחד
חברו דברים ביחד
חברו דברים ביחד
חברו דברים ביחד

חיווט קו האוטובוס החד-חוטי:

  1. חבר את כל מוליכי הכותרות המודבקות בצד ה"דיגיטלי "(צמוד לפינים 2–13) על ידי הלחמה של חוט חשוף אליהן.
  2. הלחם את קצה החוט הזה להובלת סיכת SCL (מחובר פנימית ל- A5)
  3. חבר את כל מוליכי הכותרת המודבקת בצד "האנלוגי" (סיכות A0 – A3) על ידי הלחמת חתיכת חוט חשוף אליהם.
  4. הלחם את קצה החוט הזה למובילים מסוג A4 ו- A5 (השתמשתי ב- A5 ו- A6 מכיוון שיש לי לוח בעל A6 & A7)
  5. הלחם נגד 4k7 בין הקצה השני של חוט זה להובלת סיכה +5 V

הערות:

  • סיכות A0 – A5, למרות שמסומנות כ"אנלוגיות ", יכולות לשמש גם כסיכות דיגיטליות של GPIO.
  • סיכת SCL בצד ה"דיגיטלי "מחוברת פנימית ל- A5 בצד ה"אנלוגי"; המחובר לכותרות, זה יוצר את קו האוטובוס בן החוטים
  • A4 (המשמש ככניסה אנלוגית) מודד את המתח של האוטובוס למטרות אבחון. זו הסיבה שהוא מחובר ישירות לאוטובוס.
  • השתמשתי ב- A6 במקום ב- A4 מכיוון שיש לי לוח בעל A6 & A7; במקור רציתי להשתמש ב- A7 כמאסטר האוטובוסים בעל החוטים, אך לא ניתן להגדיר את שני הפינים הללו כ- GPIO דיגיטלי.
  • כדי למנוע חיבור שגוי של מחברי החיישנים אתה יכול להשמיט / לנתק את איש הקשר שאינו בשימוש (לא מחובר לשום חוט) מכל מחבר זכר ולהכניס אותו לחור המתאים בכותרת הסיכה המודבקת.

שלב 6: חיבור החיישנים

חיבור החיישנים
חיבור החיישנים

הרגע יצרת מערך של שמונה שקעים 2 × 2. ניתן להלחים ולהרכיב 2 × 2 מחברי Dupont לכבלי חיישן ולחבר אותם לשקעים אלה. התוכנה מגדירה את הסיכות כך שאפילו סיכות הן סיכות GND וסיכות אי -זוגיות הן סיכות Vcc. עבור כל חיישן, סיכת ה- Vcc היא רק סיכת GND + 1. אחד משני הפינים האחרים של שקע 2 × 2 (אחד משני אלה בכותרת המודבקת והמולחכת) מיועד לחוט הנתונים של החיישן. זה לא משנה באיזה שימוש אתה משתמש.

שלב 7: תוכנת בקר

תוכנת בקר
תוכנת בקר

הסקיצה של SerialThermometer מפעילה את הבקר. אתה יכול למצוא אותו ב- github. פתח והעלה באמצעות Arduino IDE.

צעד אחר צעד:

  1. פתח את Arduino IDE שלך והתקן את ספריית DallasTemperature ואת כל התלות שלה באמצעות Sketch | כלול ספרייה | נהל ספריות.
  2. מאגר git לשכפל. אם אינך מכיר git, הורד ופרק את ה- zip הזה בכל מקום במחשב שלך.
  3. פתח סקיצה של SerialThermometer ב- Arduino IDE שלך.
  4. חבר את לוח ה- Arduino שהשתנה למחשב באמצעות כבל USB (דרך סטנדרטית)
  5. העלה את הסקיצה באמצעות ה- Arduino IDE שלך
  6. פתח צג סידורי באמצעות כלים | צג סידורי
  7. אתה אמור לראות פלט אבחוני המכיל מספר מדידות פיזיות ואחריו קריאות טמפרטורה - כל שקע חיישן בקו יחיד. אם מספר החיישנים שונה כאשר הוא מופעל בנפרד וכשהכל מופעל יחד), לולאות אבחון עד שהן נפתרות. אבל אל דאגה, גם האבחון מספק מדידות טמפרטורה!

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

שלב 8: סיכום

יש לי תחושה חזקה שכשלים ברשת החיישנים שלי נגרמו עקב קיבול גבוה של החיווט הארוך שלי - בסביבות 10 מ 'של כבל LIYY 314 (3 × 0, 14 mm²) לכל חיישן. הניסויים שלי הראו שתקשורת נשברת אם יש קיבול בסביבות או גבוה מ 0.01 µF בין אוטובוס חד-חוטי לאדמה, אני חושב שמכיוון שנגד משיכה 4k7 אינו מסוגל למשוך את האוטובוס ל -5 V מספיק מהר כדי לעמוד במגבלות הפרוטוקול..

בהתקנה שלי זה קורה כאשר יותר משלושה חיישנים מחוברים זה לזה. לאחר מכן, הבקר לולאה במחזור אבחון, מדידת חיישן-אחר-חיישן טמפרטורה (מה גם מגניב …)

אבל גם החיישן החמישי (28: ff: f2: 41: 51: 17: 04: 31) נראה די חולה (אולי הלחמה לא נכונה), כך שאוכל לחקור יותר!

מוּמלָץ: