- פרוטוקול תקשורת טורית RS-485
- RS-485 בארדואינו
- רכיבים נדרשים
- תרשים מעגל
- תכנות Arduino UNO ו- Arduino Nano לתקשורת טורית RS485
- בקרת בהירות LED עם תקשורת טורית RS485
בחירת פרוטוקול תקשורת לתקשורת בין מיקרו-בקרים והתקנים היקפיים היא חלק חשוב ממערכת משובצת. חשוב כי הביצועים הכוללים של כל יישום מוטבע תלויים באמצעי תקשורת שכן הם קשורים להפחתת עלויות, העברת נתונים מהירה יותר, כיסוי למרחקים ארוכים וכו '.
בהדרכות הקודמות למדנו על פרוטוקול תקשורת I2C ופרוטוקולי תקשורת SPI בארדואינו. כעת יש פרוטוקול תקשורת סדרתי נוסף שנקרא RS-485. פרוטוקול זה משתמש בתקשורת טורית אסינכרונית. היתרון העיקרי של RS-485 הוא העברת נתונים למרחקים ארוכים בין שני מכשירים. והם משמשים לרוב בסביבה תעשייתית רועשת חשמלית.
במדריך זה נלמד על תקשורת טורית RS-485 בין שני ארדואינו ולאחר מכן נדגים זאת על ידי שליטה על בהירות הנורית המחוברת לארדוינו עבדים ממאסטר ארדואינו על ידי שליחת ערכי ADC דרך מודול RS-485. פוטנציומטר 10k משמש כדי לשנות את ערכי ה- ADC ב- Master Arduino.
נתחיל בהבנת העבודה של תקשורת טורית RS-485.
פרוטוקול תקשורת טורית RS-485
RS-485 הוא פרוטוקול תקשורת סדרתי אסינכרוני שאינו דורש דופק שעון. היא משתמשת בטכניקה הנקראת אות דיפרנציאלי להעברת נתונים בינאריים ממכשיר אחד לאחר.
אז מהי שיטת העברת אות דיפרנציאלית זו ??
שיטת אות הדיפרנציאל פועלת על ידי יצירת מתח דיפרנציאלי באמצעות 5V חיובי ושלילי. הוא מספק תקשורת חצי דופלקס בעת שימוש בשני חוטים ו- Full-Duplex דורש 4 חוטי ארבע.
באמצעות שיטה זו
- RS-485 תומך בקצב העברת נתונים גבוה יותר של מקסימום 30 מגה לשנייה.
- הוא גם מספק מרחק העברת נתונים מרבי בהשוואה לפרוטוקול RS-232. הוא מעביר נתונים עד 1200 מטר מקסימום.
- היתרון העיקרי של RS-485 על פני RS-232 הוא עבד מרובה עם מאסטר יחיד ואילו RS-232 תומך בעבד יחיד בלבד.
- זה יכול לכלול מקסימום 32 מכשירים המחוברים לפרוטוקול RS-485.
- יתרון נוסף של ה- RS-485 הוא שהוא חסין לרעש כאשר הם משתמשים בשיטת אות דיפרנציאלית להעברה.
- RS-485 מהיר יותר בהשוואה לפרוטוקול I2C.
RS-485 בארדואינו
לשימוש ב- RS-485 בארדואינו, יש צורך במודול בשם 5V MAX485 TTL ל- RS485 המבוסס על Maxim MAX485 IC מכיוון שהוא מאפשר תקשורת טורית למרחק ארוך של 1200 מטר והוא דו כיווני. במצב חצי דופלקס יש לו קצב העברת נתונים של 2. 5Mbps.
מודול 5V MAX485 TTL ל- RS485 דורש מתח של 5V ומשתמש ברמות לוגיות של 5V כך שהוא יכול להתממשק ליציאות סדרתיות של חומרה של מיקרו-בקרים כמו Arduino.
יש לו את התכונות הבאות:
- מתח הפעלה: 5V
- שבב MAX485 מובנה
- צריכת חשמל נמוכה לתקשורת RS485
- משדר מוגבל בקצב שינה
- מסוף 2P בגובה 5.08 מ"מ
- חיווט תקשורת RS-485 נוח
- ניתן לשלוט על כל סיכות השבב באמצעות המיקרו-בקר
- גודל לוח: 44 x 14 מ"מ
Pin-Out של RS-485:
שם סיכה |
להשתמש |
VCC |
5V |
א |
קלט מקלט לא הפוך פלט נהג שאינו הפוך |
ב |
היפוך קלט מקלט הפיכת פלט הנהג |
GND |
GND (0V) |
R0 |
מקלט (פין RX) |
מִחָדָשׁ |
פלט מקלט (LOW-Enable) |
DE |
פלט נהג (HIGH-Enable) |
DI |
קלט נהג (פין TX) |
מודול RS-485 זה יכול להתממשק בקלות עם Arduino. בואו נשתמש ביציאות הטוריות של החומרה של Arduino 0 (RX) ו- 1 (TX) (ב- UNO, NANO). התכנות גם פשוט פשוט השתמש ב- Serial.print () כדי לכתוב ל- RS-485 ו- Serial.Read () לקריאה מ- RS-485.
חלק התכנות מוסבר בהמשך בפירוט, אך תחילה מאפשר לבדוק את הרכיבים הנדרשים ודיאגרמת המעגל.
רכיבים נדרשים
- Arduino UNO או Arduino NANO (2)
- מודול ממיר MAX485 TTL ל- RS485 - (2)
- פוטנציומטר 10K
- צג LCD 16x2
- לד
- קרש לחם
- חוטי חיבור
במדריך זה Arduino Uno משמש כמורה ו- Arduino Nano משמש כעבד. שני לוחות Arduino משמשים כאן ולכן נדרשים שני מודולי RS-485.
תרשים מעגל
חיבור מעגל בין ה- RS-485 הראשון ל- Arduino UNO (מאסטר):
RS-485 |
ארדואינו UNO |
DI |
1 (TX) |
DE מִחָדָשׁ |
8 |
R0 |
0 (RX) |
VCC |
5V |
GND |
GND |
א |
ל- A של עבד RS-485 |
ב |
ל- B של עבד RS-485 |
חיבור בין RS-485 השני לארדואינו ננו (עבד):
RS-485 |
ארדואינו UNO |
DI |
D1 (TX) |
DE מִחָדָשׁ |
D8 |
R0 |
D0 (RX) |
VCC |
5V |
GND |
GND |
א |
ל- A של מאסטר RS-485 |
ב |
ל- B של מאסטר RS-485 |
חיבור מעגל בין LCD 16x2 ו- Arduino Nano:
LCD בגודל 16x2 |
ארדואינו ננו |
VSS |
GND |
VDD |
+ 5 וולט |
V0 |
לפין מרכז פוטנציומטר לבקרת ניגודיות של LCD |
RS |
D2 |
RW |
GND |
ה |
D3 |
D4 |
D4 |
D5 |
D5 |
D6 |
D6 |
D7 |
D7 |
א |
+ 5 וולט |
ק |
GND |
פוטנציומטר 10K מחובר לסיכה האנלוגית A0 של ה- Arduino UNO למתן כניסה אנלוגית ונורית LED מחוברת לסיכה D10 של Arduino Nano.
תכנות Arduino UNO ו- Arduino Nano לתקשורת טורית RS485
לתכנות שני הלוחות נעשה שימוש ב- Arduino IDE. אך וודא שבחרת את ה- PORT המתאים מ- Tools-> Port and Board מ- Tools-> Board.
קוד מלא עם סרטון הדגמה ניתן בסוף הדרכה זו. כאן אנו מסבירים חלק חשוב בקוד. ישנן שתי תוכניות במדריך זה, אחת עבור Arduino UNO (Master) ואחת עבור Arduino Nano (Slave).
הסבר קוד למאסטר: ארדואינו UNO
בצד הראשי, פשוט קחו קלט אנלוגי בסיכה A0 על ידי שינוי הפוטנציומטר ואז SerialWrite ערכים אלה לאוטובוס ה- RS-485 דרך יציאות החומרה (0,1) של Arduino UNO.
כדי להתחיל בתקשורת טורית באמצעות סיכות סידורי חומרה (0,1):
Serial.begin (9600);
כדי לקרוא ערך אנלוגי בסיכה A0 של Arduino UNO ולאחסן אותם בשימוש פוטפול משתנה:
int potval = analogRead (pushval);
לפני שכותבים את ערך הפוטבול ליציאה הטורית, הפינים DE ו- RE של RS-485 צריכים להיות HIGH המחוברים לסיכה 8 של Arduino UNO כדי להפוך את סיכה 8 HIGH:
digitalWrite (enablePin, HIGH);
ליד הצבת הערכים ביציאה הסדרתית המחוברת למודול RS-485, השתמש בהצהרה הבאה
Serial.println (potval);
הסבר קוד לעבד: Arduino NANO
בצד העבדים מתקבל ערך שלם מהמאסטר RS-485 הזמין ביציאה החומרית של הארדואינו ננו (סיכות -0,1). כל שעליך לעשות הוא לקרוא את הערך ולשמור במשתנה. הערכים הם בצורה של (0 -1023). אז זה מומר ל (0-255) כמו טכניקת PWM משמשת לשליטה על בהירות LED.
ואז AnalogWrite את הערך המומר לסיכת LED D10 (זהו סיכת PWM). אז בהתאם לערך ה- PWM הבהירות של נורית ה- LED משתנה וגם להציג ערכים אלה בתצוגת LCD בגודל 16x2.
על מנת שה- RS-485 של Slave Arduino יקבל את הערכים מהמאסטר, פשוט הפוך את הפינים DE & RE של RS-485 LOW. אז הסיכה D8 (enablePin) של Arduino NANO נעשית נמוכה.
digitalWrite (enablePin, LOW);
ולקרוא את נתוני המספרים השלמים הקיימים בנמל הסידורי ולאחסן אותם בשימוש משתנה
int pwmval = Serial.parseInt ();
הבא להמיר ערך מ (0-1023 ל- 0-255) ואחסן אותם במשתנה:
int להמיר = מפה (pwmval, 0,1023,0,255);
לאחר מכן כתוב את הערך האנלוגי (PWM) לסיכה D10 בה מחובר אנודת LED:
analogWrite (ledpin, convert);
כדי להדפיס את ערך ה- PWM בשימוש בתצוגת LCD בגודל 16x2
lcd.setCursor (0,0); lcd.print ("PWM FROM MASTER"); lcd.setCursor (0,1); lcd.print (להמיר);
בקרת בהירות LED עם תקשורת טורית RS485
כאשר ערך ה- PWM מוגדר ל- 0 באמצעות פוטנציומטר, נורית ה- LED כבויה.
וכאשר ערך PWM נקבע על 251 באמצעות פוטנציומטר: נורית הנורית דולקת עם בהירות מלאה כפי שמוצג בתמונה למטה:
אז ככה ניתן להשתמש ב- RS485 לתקשורת סדרתית בארדואינו.