Raspberry Pi הוא לוח מבוסס מעבד ארכיטקטורה של ARM המיועד למהנדסים אלקטרוניים וחובבים. ה- PI היא אחת מפלטפורמות פיתוח הפרויקטים המהימנות ביותר שקיימות כעת. עם מהירות מעבד גבוהה יותר ו- 1 GB RAM, ניתן להשתמש ב- PI לפרויקטים רבים בפרופיל גבוה כמו עיבוד תמונה ואינטרנט של הדברים.
לצורך ביצוע פרויקטים בפרופיל גבוה, יש להבין את הפונקציות הבסיסיות של PI. אנו נסקור את כל הפונקציות הבסיסיות של פטל פאי במדריכים אלה. בכל הדרכה נדון באחת הפונקציות של PI. בסוף סדרת הדרכה זו של פטל, תוכל לבצע פרויקטים בעלי פרופיל גבוה בעצמך. עבור להדרכות למטה:
- תחילת העבודה עם פטל פי
- תצורת פטל פי
- נורית LED מהבהבת
- ממשק כפתור פטל פי
- דור ה- PWM של פטל פי
- שליטה במנוע DC באמצעות Raspberry Pi
- בקרת מנוע צעד עם פטל פי
- ממשק ממשק משמרות עם פטל פי
במדריך זה, נתממש שבב ADC (אנלוגי להמרה דיגיטלית) ל- Raspberry Pi. אנו מכירים את כל הפרמטרים של אנלוגי, כלומר שם משתנים ברציפות לאורך זמן. אמור כי למשל טמפרטורת החדר, טמפרטורת החדר משתנה עם הזמן ברציפות. טמפרטורה זו מסופקת עם מספרים עשרוניים. אך בעולם הדיגיטלי אין מספרים עשרוניים, ולכן עלינו להמיר את הערך האנלוגי לערך דיגיטלי. תהליך המרה זה נעשה בטכניקת ADC. למידע נוסף על ADC כאן: מבוא ל- ADC0804
ADC0804 ו- Raspberry Pi:
לבקרים רגילים יש ערוצי ADC אך עבור PI אין ערוצי ADC המסופקים באופן פנימי. אז אם אנחנו רוצים לממשק חיישנים אנלוגיים כלשהם אנו זקוקים ליחידת המרה של ADC. אז למטרות אלו אנו הולכים לממשק ADC0804 עם Raspberry Pi.
ADC0804 הוא שבב המיועד להמיר אות אנלוגי לנתונים דיגיטליים של 8 סיביות. שבב זה הוא אחד הסדרות הפופולריות של ADC. זו יחידת המרה של 8 ביט, כך שיש לנו ערכים או 0 עד 255 ערכים. עם מתח מדידה של מקסימום 5 וולט, יהיה לנו שינוי לכל 19.5mV. להלן ה- 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.
למידע נוסף על סיכות GPIO של פטל פאי כאן ועבר על ההדרכות הקודמות שלנו.
רכיבים נדרשים:
כאן אנו משתמשים ב- Raspberry Pi 2 דגם B עם Raspbian Jessie OS. כל דרישות החומרה והתוכנה הבסיסיות נדונו בעבר, אתה יכול לחפש את זה במבוא לפטל, מלבד זה שאנחנו צריכים:
- סיכות חיבור
- 220Ω או 1KΩ נגד (17 חתיכות)
- סיר 10K
- 0.1 µF קבלים (2 חתיכות)
- ADC0804 IC
- לוח לחם
הסבר מעגל:
זה עובד על מתח אספקה של + 5V ויכול למדוד טווח מתח משתנה בטווח 0-5V.
קשרים להתממשקות ADC0804 כדי פטל PI, מוצגים בתרשים המעגל הנ"ל.
ל- ADC תמיד יש הרבה רעש, רעש זה יכול להשפיע מאוד על הביצועים, ולכן אנו משתמשים בקבל 0.1uF לסינון רעשים. בלי זה יהיו הרבה תנודות בתפוקה.
השבב עובד על שעון מתנד RC (Resistor-Capacitor). כפי שמוצג בתרשים המעגל, C2 ו- R20 יוצרים שעון. הדבר החשוב לזכור כאן הוא שניתן לשנות את הקבל C2 לערך נמוך יותר לשיעור גבוה יותר של המרת ADC. עם זאת במהירות גבוהה יותר תהיה ירידה ברמת הדיוק. אז אם היישום דורש דיוק גבוה יותר, בחר בקבל בעל ערך גבוה יותר ובמהירות גבוהה יותר בחר בקבל בעל ערך נמוך יותר.
הסבר על תכנות:
לאחר שהכל מחובר לפי דיאגרמת המעגל, אנו יכולים להפעיל את ה- 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:
הסבר נוסף על התוכנית מופיע בסעיף הקוד להלן.
עובד:
לאחר כתיבת התוכנית והוצאתה לפועל תופיע '0' על המסך. '0' פירושו 0 וולט בכניסה.
אם נתאים את סיר 10K המחובר לשבב, נראה את השינוי בערכים על המסך. הערכים על המסך ממשיכים לגלול ברציפות, אלה הערכים הדיגיטליים שנקראים על ידי PI.
נגיד שאם נגיע לסיר לנקודת האמצע, יש לנו + 2.5 וולט בכניסה ADC0804. אז אנו רואים 128 על המסך כפי שמוצג להלן.
עבור ערך אנלוגי + 5V, יהיה לנו 255.
לכן, על ידי שינוי הסיר אנו מגוונים את המתח בין 0 ל + 5 וולט בכניסה ADC0804. עם PI זה קרא ערכי 0-255. הערכים מודפסים על המסך.
אז יש לנו ממשק ADC0804 ל- Raspberry Pi.