בעיקר כיסינו את כל הרכיבים הבסיסיים המתממשקים עם פטל פי בסדרת ההדרכות של פטל. כיסינו את כל ההדרכות בצורה פשוטה ומפורטת, כך שכל אחד, בין אם הוא עבד עם Raspberry Pi ובין אם לאו, יוכל ללמוד מהסדרה הזו בקלות. ולאחר שעברתם את כל ההדרכות תוכלו לבנות כמה פרויקטים ברמה גבוהה באמצעות Raspberry Pi.
אז הנה אנו מתכננים יישום ראשון על סמך ההדרכות הקודמות. היישום הבסיסי הראשון הוא טמפרטורת חדר קריאה של Raspberry Pi. ותוכל לפקח על הקריאות במחשב.
כפי שנדון בהדרכות קודמות, אין ערוצי ADC המסופקים באופן פנימי ב- Raspberry Pi. אז אם אנחנו רוצים לממשק חיישנים אנלוגיים כלשהם אנו זקוקים ליחידת המרה של ADC. ובאחת ההדרכות שלנו יש לנו שבב ADC0804 ממשק ל- Raspberry Pi כדי לקרוא ערך אנלוגי. אז עברו על זה לפני שתבנו מדחום טמפרטורת חדר זה.
ADC0804 ו- Raspberry Pi:
ADC0804 הוא שבב המיועד להמיר אות אנלוגי לנתונים דיגיטליים של 8 סיביות. שבב זה הוא אחד הסדרות הפופולריות של ADC. זו יחידת המרה של 8 ביט, כך שיש לנו ערכים או 0 עד 255 ערכים. הרזולוציה של שבב זה משתנה על בסיס מתח הייחוס שנבחר, נדבר עליו בהמשך. להלן ה- Pinout של ADC0804:
עכשיו דבר חשוב נוסף כאן הוא, ה- ADC0804 פועל על 5 וולט ולכן הוא מספק פלט באות לוגית של 5 וולט. בפלט של 8 פינים (המייצג 8 ביטים), כל סיכה מספקת פלט של 5 וולט לייצוג לוגיקה '1'. אז הבעיה היא שהלוגיקה של PI היא של + 3.3 v, כך שלא תוכלו לתת + 5 V לוגיקה לסיכה של + 3.3 V GPIO של PI. אם אתה נותן + 5 וולט לכל סיכת GPIO של PI, הלוח נפגע.
אז כדי לרדת את רמת ההיגיון מ- + 5 V, נשתמש במעגל מחלק מתח. דנו בעבר במעגל מחלקי מתח לפני כן לבירור נוסף. מה שנעשה הוא, אנו משתמשים בשני נגדים כדי לחלק את ההיגיון + 5V לוגיקה 2 * 2.5V. אז לאחר החלוקה ניתן את ההיגיון + 2.5v ל- PI. לכן, בכל פעם שההגיון '1' מוצג על ידי ADC0804 נראה + 2.5 וולט ב- PI GPIO Pin, במקום + 5V.
חיישן טמפרטורה LM35:
עכשיו לקריאת טמפרטורת החדר, אנו זקוקים לחיישן. כאן נשתמש בחיישן טמפרטורה LM35. הטמפרטורה נמדדת בדרך כלל ב "צלזיוס" או "פרנהייט". חיישן "LM35" מספק פלט במעלות צלזיוס.
כפי שמוצג באיור, LM35 הוא מכשיר כמו טרנזיסטור בעל שלושה פינים. הסיכות ממוספרות כ, PIN1 = Vcc - הספק (מחובר ל- + 5V)
PIN2 = אות או פלט (מחובר לשבב ADC)
PIN3 = קרקע (מחובר לקרקע)
חיישן זה מספק מתח משתנה ביציאה, בהתבסס על טמפרטורה. על כל עליית טמפרטורה +1 מעלות יהיה מתח גבוה יותר ב- 10mV בסיכת המוצא. אז אם הטמפרטורה היא 0◦ צלזיוס תפוקת החיישן תהיה 0V, אם הטמפרטורה היא 10◦ צלזיוס תפוקת החיישן תהיה +100mV, אם הטמפרטורה היא 25◦ צלזיוס תפוקת החיישן תהיה + 250mV.
רכיבים נדרשים:
כאן אנו משתמשים ב- Raspberry Pi 2 דגם B עם Raspbian Jessie OS. כל דרישות החומרה והתוכנה הבסיסיות נדונו בעבר, אתה יכול לחפש את זה במבוא לפטל, מלבד זה שאנחנו צריכים:
- סיכות חיבור
- נגד 1KΩ (17 חתיכות)
- סיר 10K
- 0.1 µF קבלים
- קבלים של 100 µF
- קבלים של 1000 µF
- ADC0804 IC
- חיישן טמפרטורה LM35
- לוח לחם
הסבר על מעגל ועבודה:
החיבורים שבוצעו לחיבור פטל ל- ADC0804 ו- LM35 מוצגים בתרשים המעגל שלהלן.
ביציאת LM35 יש תנודות מתח רבות; אז קבל 100uF משמש להחלקת הפלט, כפי שמוצג באיור.
ל- ADC תמיד יש הרבה רעש, רעש זה יכול להשפיע מאוד על הביצועים, ולכן אנו משתמשים בקבל 0.1uF לסינון רעשים. בלי זה יהיו הרבה תנודות בתפוקה.
השבב עובד על שעון מתנד RC (Resistor-Capacitor). כפי שמוצג בתרשים המעגל , C2 ו- R20 יוצרים שעון. הדבר החשוב לזכור כאן הוא שניתן לשנות את הקבל C2 לערך נמוך יותר לשיעור גבוה יותר של המרת ADC. עם זאת במהירות גבוהה יותר תהיה ירידה ברמת הדיוק. אז אם היישום דורש דיוק גבוה יותר, בחר בקבל בעל ערך גבוה יותר ובמהירות גבוהה יותר בחר בקבל בעל ערך נמוך יותר.
כפי שנאמר קודם לכן ה- LM35 מספק + 10mV לכל צלזיוס. הטמפרטורה המרבית שניתן למדוד באמצעות ה- LM35 היא 150 מעלות צלזיוס. אז יהיה לנו מקסימום 1.5 וולט במסוף הפלט LM35. אך מתח הייחוס המוגדר כברירת מחדל של ADC0804 הוא + 5V. אז אם נשתמש בערך ייחוס זה, הרזולוציה של הפלט תהיה נמוכה מכיוון שהיינו משתמשים במרבית (5 / 1.5) 34% מטווח הפלט הדיגיטלי.
למרבה המזל ל- ADC0804 יש סיכת Vref מתכווננת (PIN9) כפי שמוצג בתרשים הפינים שלה לעיל. אז נגדיר את ה- Vref של השבב ל- + 2V. כדי להגדיר Vref + 2V, עלינו לספק מתח של + 1V (VREF / 2) ב- PIN9. כאן אנו משתמשים בסיר 10K כדי לכוונן את המתח ב- PIN9 ל- + 1V. השתמש במד המתח כדי לקבל את המתח המדויק.
השתמשנו בעבר בחיישן הטמפרטורה LM35 לקריאת טמפרטורת החדר עם Arduino ועם מיקרו בקר AVR. בדוק גם מדידת לחות וטמפרטורה באמצעות Arduino
הסבר על תכנות:
לאחר שהכל מחובר לפי דיאגרמת המעגל, אנו יכולים להפעיל את ה- PI כדי לכתוב את התוכנית ב- PYHTON.
נדבר על כמה פקודות בהן נשתמש בתוכנית PYHTON, אנו הולכים לייבא קובץ GPIO מהספרייה, הפונקציה הבאה מאפשרת לנו לתכנת סיכות GPIO של PI. אנו גם משנים את השם "GPIO" ל- "IO", ולכן בתוכנית בכל פעם שברצוננו להתייחס לסיכות GPIO נשתמש במילה 'IO'.
ייבא את RPi.GPIO כ- IO
לפעמים, כאשר סיכות ה- GPIO, בהן אנו מנסים להשתמש, עשויות לבצע פונקציות אחרות. במקרה כזה נקבל אזהרות בזמן ביצוע התוכנית. הפקודה למטה אומרת ל- PI להתעלם מהאזהרות ולהמשיך בתוכנית.
IO.setwarnings (שקר)
אנו יכולים להפנות את סיכות ה- GPIO של PI, על ידי מספר סיכה על הלוח או על ידי מספר הפונקציה שלהן. כמו 'PIN 29' על הלוח הוא 'GPIO5'. אז אנו אומרים כאן או שנציג את הסיכה כאן על ידי '29' או '5'.
IO.setmode (IO.BCM)
אנו מגדירים 8 פינים כסיכות קלט. אנו נגלה 8 סיביות של נתוני ADC על ידי סיכות אלה.
IO.setup (4, IO.IN) IO.setup (17, IO.IN) IO.setup (27, IO.IN) IO.setup (22, IO.IN) IO.setup (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
במקרה והתנאי בסוגריים נכון, ההצהרות בתוך הלולאה יבוצעו פעם אחת. כך שאם סיכת ה- GPIO 19 תעלה גבוה, ההצהרות בתוך לולאת ה- IF יבוצעו פעם אחת. אם סיכת ה- GPIO 19 אינה עולה גבוה, ההצהרות בתוך לולאת ה- IF לא יבוצעו.
אם (IO.input (19) == נכון):
הפקודה למטה משמשת לולאה לנצח, עם פקודה זו ההצהרות בתוך לולאה זו יבוצעו ברציפות.
בעוד 1:
הסבר נוסף על הקוד ניתן בסעיף הקוד להלן.
לאחר כתיבת התוכנית הגיע הזמן לבצע אותה. לפני ביצוע התוכנית, מאפשר שיחות מה קורה במעגל כסיכום. חיישן LM35 ראשון מזהה את טמפרטורת החדר ומספק מתח אנלוגי בפלט שלו. מתח משתנה זה מייצג את הטמפרטורה באופן ליניארי עם + 10mV ל ºC. אות זה מועבר לשבב ADC0804, שבב זה ממיר את הערך האנלוגי לערך דיגיטלי עם 255/200 = 1.275 ספירה לכל 10mv או 1.275 ספירה ל -1 תואר. ספירה זו נלקחת על ידי ה- PI GPIO. התוכנית ממירה את הספירה לערך הטמפרטורה ומציגה אותה על המסך. הטמפרטורה האופיינית שנקראה על ידי PI מוצגת להלן, מכאן אנחנו זה צג הטמפרטורה של פטל.