- חומר נדרש:
- ADC0804 ערוץ יחיד 8-bit ADC מודול:
- תרשים מעגל והסבר:
- תכנות ה- Raspberry Pi:
- מציג ערך חיישן Flex ב- LCD באמצעות Raspberry Pi:
Raspberry Pi הוא לוח מבוסס מעבד ארכיטקטורה של ARM המיועד למהנדסים אלקטרוניים וחובבים. ה- PI היא אחת מפלטפורמות פיתוח הפרויקטים המהימנות ביותר שקיימות כעת. עם מהירות מעבד גבוהה יותר ו- 1 GB RAM, ניתן להשתמש ב- PI לפרויקטים רבים בפרופיל גבוה כמו עיבוד תמונה ואינטרנט של הדברים. יש הרבה דברים מגניבים שניתן לעשות עם PI, אבל תכונה אחת עצובה היא שאין לו מודול ADC מובנה.
רק אם ניתן היה להתממשק בין ה- Raspberry Pi לחיישנים הוא יכול להכיר את הפרמטרים של העולם האמיתי ולהתקשר איתו. רוב החיישנים בחוץ הם חיישנים אנלוגיים ולכן עלינו ללמוד להשתמש במודול ADC חיצוני עם Raspberry Pi כדי לממשק חיישנים אלה. בפרויקט זה נלמד כיצד נוכל לממשק חיישן Flex עם Raspberry Pi ולהציג את ערכיו על גבי מסך LCD.
חומר נדרש:
- פטל פי (כל דגם)
- ADC0804 IC
- 16 * 2 תצוגת LCD
- חיישן להגמיש
- נגדים וקבלים
- לוח לחם או לוח perf.
ADC0804 ערוץ יחיד 8-bit ADC מודול:
לפני שנמשיך הלאה, הבה נלמד על IC זה ADC0804 וכיצד להשתמש בו עם פטל פטל. ADC0804 הוא ערוץ יחיד של 8 סיביות, כלומר הוא יכול לקרוא ערך ADC יחיד ולמפות אותו לנתונים דיגיטליים של 8 סיביות. הנתונים הדיגיטליים האלה של 8 סיביות יכולים להיקרא על ידי ה- Raspberry Pi, ולכן הערך יהיה 0-255 מכיוון ש- 2 ^ 8 הוא 256. כפי שמוצג בתוספות ה- IC שלמטה, הפינים DB0 ל- DB7 משמשים לקריאת הדיגיטליים האלה. ערכים.
עכשיו דבר חשוב נוסף כאן הוא, ה- 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 לפטל פי. לכן, בכל פעם שההגיון '1' מוצג על ידי ADC0804 נראה + 2.5 וולט ב- PI GPIO Pin, במקום + 5V. למידע נוסף על ADC כאן: מבוא ל- ADC0804.
להלן התמונה של מודול ADC המשתמש ב- ADC0804 שבנו על לוח Perf:
תרשים מעגל והסבר:
תרשים המעגל השלם לממשק חיישן Flex עם Raspberry Pi מוצג להלן. ההסבר לכך הוא כדלקמן.
מעגל חיישני פפל פטל פטל זה עשוי להיראות מעט מורכב עם הרבה חוטים, אך אם תסתכל מקרוב, רוב החוטים מחוברים ישירות מ- LCD וסיכת נתונים של 8 סיביות ל- Raspberry pi. הטבלה הבאה תעזור לך בעת יצירת ואימות החיבורים.
שם סיכה |
מספר פין פטל |
שם ה- GPIO של פטל פאי |
LCD Vss |
סיכה 4 |
קרקע, אדמה |
LCD Vdd |
סיכה 6 |
Vcc (+ 5V) |
מסך LCD |
סיכה 4 |
קרקע, אדמה |
LCD Rs |
סיכה 38 |
GPIO 20 |
LCD RW |
סיכה 39 |
קרקע, אדמה |
LCD E |
סיכה 40 |
GPIO 21 |
LCD D4 |
סיכה 3 |
GPIO 2 |
LCD D5 |
סיכה 5 |
GPIO 3 |
LCD D6 |
סיכה 7 |
GPIO 4 |
LCD D7 |
סיכה 11 |
GPIO 17 |
ADC0804 Vcc |
סיכה 2 |
Vcc (+ 5V) |
ADC0804 B0 |
פין 19 (עד 5.1K) |
GPIO 10 |
ADC0804 B1 |
פין 21 (עד 5.1K) |
GPIO 9 |
ADC0804 B2 |
פין 23 (עד 5.1K) |
GPIO 11 |
ADC0804 B3 |
סיכה 29 (עד 5.1K) |
GPIO 5 |
ADC0804 B4 |
פין 31 (עד 5.1K) |
GPIO 6 |
ADC0804 B5 |
פין 33 (עד 5.1K) |
GPIO 13 |
ADC0804 B6 |
פין 35 (עד 5.1K) |
GPIO 19 |
ADC0804 B7 |
סיכה 37 (עד 5.1K) |
GPIO 26 |
ADC0804 WR / INTR |
סיכה 15 |
GPIO 22 |
אתה יכול להשתמש בתמונה הבאה כדי לקבוע את מספרי הסיכות על פטל מאז.
כמו כל המודולים של ADC, גם ה- ADC0804 IC דורש אות שעון להפעלה, למרבה המזל ל- IC הזה יש מקור שעון פנימי, אז אנחנו רק צריכים להוסיף את מעגל RC לסיכות CLK in ו- CLK R כפי שמוצג במעגל. השתמשנו בערך של 10K ו- 105pf, אך אנו יכולים להשתמש בכל ערך קרוב כמו 1uf, 0.1uf, 0.01uf צריך לעבוד.
ואז כדי לחבר את חיישן ה- Flex השתמשנו במעגל חלוקה פוטנציאלי באמצעות נגד 100K. מכיוון שחיישן ה- Flex מכופף ההתנגדות על פניו תשתנה וכך גם הפוטנציאל ייפול על פני הנגד. ירידה זו נמדדת על ידי IC IC ADC0804 ונתוני 8 סיביות נוצרים בהתאם.
בדוק פרויקטים אחרים הקשורים ל- Flex Sensor:
- ממשק חיישן להגמיש עם מיקרו בקר AVR
- בקר משחק Angry Bird מבוסס Arduino באמצעות חיישן Flex
- בקרת מנוע סרוו על ידי חיישן Flex
- יצירת טונים על ידי הקשה על אצבעות באמצעות Arduino
תכנות ה- Raspberry Pi:
לאחר שסיימנו את החיבורים, עלינו לקרוא את הסטטוס של 8 הסיביות הללו באמצעות Raspberry Pi ולהמיר אותם לעשרוני כדי שנוכל להשתמש בהם. התוכנית לביצוע אותו הדבר והצגת הערכים המתקבלים על גבי מסך ה- LCD ניתנת בסוף עמוד זה. בהמשך הקוד מוסבר לנקודות קטנות למטה.
אנו זקוקים לספריית LCD כדי להתממשק LCD עם Pi. לשם כך אנו משתמשים בספרייה שפותחה על ידי shubham שתעזור לנו להתממשק תצוגת LCD 16 * 2 עם Pi במצב ארבעה חוטים. כמו כן אנו זקוקים לספריות בכדי לנצל את הזמן ואת סיכות ה- Pi GPIO של Pi.
הערה : יש להוריד מכאן את ה- lcd.py ולהניח אותה באותה ספריה בה נשמרת תוכנית זו. רק אז הקוד יתגודד.
ייבא lcd # ייבא את ספריית LCD על ידי [email protected] זמן ייבוא # יבוא זמן יבוא RPi.GPIO כ- GPIO # GPIO יופנה כ- GPIO בלבד
ההגדרות הפיניות LCD מוקצים המשתנה כמוצג להלן. שים לב שמספרים אלה הם מספרי הסיכה של GPIO ולא מספרי הסיכה בפועל. ניתן להשתמש בטבלה שלעיל כדי להשוות בין מספרי GPIO למספרי סיכה. מערך הבינארי של המערך יכלול את כל מספרי הסיכה של הנתונים וביטי המערך יאחסנו את הערך המתקבל של כל הפינים של GPIO.
# הגדרות סיכות LCD D4 = 2 D5 = 3 D6 = 4 D7 = 17 RS = 20 EN = 21 בינאריות = (10,9,11,5,6,13,19,26) # מערך של מספרים פינים להתחבר ל- DB0- סיביות DB7 = # תוצאות ערכים של נתונים 8 סיביות
כעת עלינו להגדיר את סיכות הקלט והפלט. שבעת סיכות הנתונים יהיו סיכת הקלט וסיכת ההדק (RST ו- INTR) תהיה סיכת המוצא. אנו יכולים לקרוא את ערכי הנתונים של 8 סיביות מסיכת הקלט רק אם נפעיל את סיכת הפלט גבוהה לזמן מסוים על פי גליון הנתונים. מכיוון שהכרזנו על הסיכות הבינאריות במערך הבינארי, נוכל להשתמש ב- for loop לצורך הצהרה כמוצג להלן.
עבור בינאריות בבינאריות: GPIO.setup (בינארי, GPIO.IN) # כל הפינים הבינאריים הם פינים קלט # סיכת טריגר GPIO.setup (22, GPIO.OUT) פינים #WR ו- INTR
כעת באמצעות פקודות הספרייה LCD אנו יכולים לאתחל את מודול ה- LCD ולהציג הודעת מבוא קטנה כפי שמוצג להלן.
mylcd = lcd.lcd () mylcd.begin (D4, D5, D6, D7, RS, EN) # Intro Message mylcd.Print ("חיישן להגמיש עם") mylcd.setCursor (2,1) mylcd.Print ("פטל Pi ") time.sleep (2) mylcd.clear ()
בתוך אינסופי בעוד לולאה, אנחנו מתחילים בקריאת הערכים בינאריים להמיר אותם עשרוניים ולעדכן את התוצאה על LCD. כפי שנאמר קודם לכן לפני שקראנו את ערכי ה- ADC עלינו להפוך את סיכת ההדק להיות גבוהה למשך זמן מסוים כדי להפעיל את המרת ה- ADC. זה נעשה על ידי שימוש בשורות הבאות.
GPIO.output (22, 1) # הפעל זמן טריגר. שינה (0.1) GPIO.output (22, 0) # כיבוי טריגר
כעת, עלינו לקרוא את סיכות 8 הנתונים ולעדכן את התוצאה במערך הביטים. לשם כך אנו משתמשים בלולאה for להשוות כל סיכת קלט עם True ו- False. אם נכון, מערך הביטים בהתאמה ייעשה כ -1 אחר הוא ייעשה כ 0. זה היה כל הנתונים של 8 סיביות ייעשו 0 ו- 1 בהתאמה לערכים שנקראו.
# קרא את סיכות הקלט ועדכן את התוצאה במערך סיביות עבור i בטווח (8): if (GPIO.input (binarys) == True): bits = 1 if (GPIO.input (binarys) == False): bits = 0
לאחר שעדכנו את מערך הביטים, עלינו להמיר מערך זה לערך עשרוני. זה אינו אלא המרה בינארית עד עשרונית. עבור נתונים בינאריים של 8 סיביות 2 ^ 8 הוא 256. אז נקבל נתונים עשרוניים בין 0 ל 255. בפייתון משתמשים במפעיל "**" כדי למצוא את הכוח של כל ערך. מכיוון שביטים מתחיל ב- MSB אנו מכפילים אותו עם 2 ^ (7 מיקומים). בדרך זו אנו יכולים להמיר את כל הערכים הבינאריים לנתונים עשרוניים ואז להציג אותם על גבי LCD
# חשב את הערך העשרוני באמצעות מערך סיביות עבור i בטווח (8): עשרוני = עשרוני + (סיביות * (2 ** (7-i)))
ברגע שאנו יודעים את הערך העשרוני קל לחשב את ערך המתח. עלינו רק להכפיל את זה עם 19.63. כי עבור 5VADC של 8 סיביות כל ביט הוא אנלוגיה של 19.3 מילי וולט. ערך המתח המתקבל הוא ערך המתח שהופיע על פני הפינים Vin + ו- Vin- של ה- ADC0804 IC.
# חישוב ערך מתח מתח = עשרוני * 19.63 * 0.001 יחידה אחת היא 19.3mV
באמצעות ערך המתח אנו יכולים לקבוע כיצד מכופף חיישן הגמישות ובאיזה כיוון הוא מכופף. בשורות שלהלן השוויתי זה עתה את ערכי המתח הנקרא עם ערכי מתח קבועים מראש כדי לציין את מיקומו של חיישן ה- Flex על גבי מסך ה- LCD.
# השווה מתח ומצב תצוגה של חיישן mylcd.setCursor (1,1) אם (מתח> 3.8): mylcd.Print ("כפוף קדימה") elif (מתח <3.5): mylcd.Print ("כפוף לאחור") אחר: mylcd.Print ("יציב")
באופן דומה תוכל להשתמש בערך המתח לביצוע כל משימה שתרצה ש- Raspberry Pi יבצע.
מציג ערך חיישן Flex ב- LCD באמצעות Raspberry Pi:
עבודת הפרויקט פשוטה מאוד. אך וודא שהורדת את קובץ הכותרת lcd.py ושמת אותו באותה הספרייה בה קיימת התוכנית הנוכחית שלך. ואז בצע את החיבורים המוצגים בתרשים המעגל באמצעות קרש לחם או לוח perf והפעל את התוכנית שלהלן על ה- Pi שלך, וכדאי שתעביד את הדבר. הגדרת צריכה להיראות ככה למטה.
כפי שמוצג LCD יציג את הערך העשרוני, ערך המתח ומיקום החיישן. פשוט כופף את החיישן קדימה או אחורה, אתה אמור להיות מסוגל לראות את המתח והערך העשרוני משתנים, כמו כן יוצג טקסט סטטוס. אתה יכול לחבר כל חיישן ולהבחין במתח עליו משתנה.
את העבודה המלאה של ההדרכה ניתן למצוא בסרטון הבא. מקווה שהבנתם את הפרויקט ונהניתם לבנות משהו דומה. אם יש לך ספק, השאר אותם במדור התגובות או בפורומים ואשתדל כמיטב יכולתי לענות עליהם.