תקשורת קווית לטווח ארוך עם RS-485

קיץ 1997. שני עתודאים צעירים באמצע שום מקום, שומרים ימים ולילות על שום דבר. לידם טלפון שדה ענתיקה שמחובר, בתיאוריה, לעמדת שמירה נוספת במרחק כמה מאות מטרים, אבל הוא הפסיק לעבוד. אף אחד לא יודע אם הבעיה באחד המכשירים, או שיש נתק איפשהו בכבל שעובר ביניהם, קבור למחצה בחול לאורך כל הדרך.

"מה הבעיה," אומר העתודאי לפסיכולוגיה, "בכבל הרי יש שני חוטים – נחבר סוללה בצד אחד, איזה LED בצד השני ונראה מיד אם יש נתק או לא."

"זה לא כל כך פשוט," מסביר העתודאי להנדסת חשמל, "כשהכבלים בכזה אורך, יש להם התנגדות והשראה וכל מיני סיבוכים אחרים."

RS485 chip
ג'וק לתקשורת בתקן RS-485

כשאנחנו – החובבים – חושבים על תקשורת בין רכיבים, אנחנו מדמיינים בדרך כלל כמה ג'וקים או לוחות שמחוברים פחות או יותר לאותה מטריצה, אם לא ממש רוכבים אחד על השני, והחוטים שמשמשים להעברת מידע ביניהם הם קצרצרים בהתאם. תקשורת קווית בין חדרים נחשבת יוצאת-דופן, וגם כשהיא מתבצעת, בדרך כלל מדובר על סיגנלים פשוטים מאד (כגון קריאה מחיישן ON/OFF או שליחת/הפסקת זרם לאלקטרומגנט). בתנאים כאלה הדברים נוטים לעבוד בלי תקלה, אך כאשר טווחי התקשורת מתארכים, התכונות של הכבלים עצמם והפרעות אלקטרומגנטיות מסביבתם הופכות למשמעותיות ועלולות לפגוע בנתונים.

כאן באה לעזרתנו הפרדה שבדרך כלל אנחנו לא מודעים לה, בין השכבה הלוגית של הנתונים לבין השכבה הפיזית – האופן שבו הנתונים מיוצגים ועוברים כאלקטרונים לאורך החוטים. כשאנחנו מחברים חוטים סתם כך על מטריצה, שתי השכבות הן זהות למעשה: הגדרת פין פלט כ-1 גורמת לאלקטרונים לזרום דרך הכבל, והגדרתו כ-0 גורמת להפסקת הזרימה. זה יכול לעבוד, אגב, גם בכבלים ארוכים יותר, אבל ההצלחה לא מובטחת. לתקשורת אמינה יותר אנחנו זקוקים לפתרון שמטפל ספציפית בשכבה הפיזית.

כשקיבלתי משימה שכללה העברת מידע לטווח ארוך, נזכרתי באזהרה ההיא מתחילת הפוסט (אני העתודאי הראשון, אם עוד לא ניחשתם) וחיפשתי שיטות "רשמיות" לעשות זאת. השם שעלה כמעט מיד היה RS-485, תקן ידוע ומקובל למטרה זו בדיוק. תקן זה מדבר אך ורק על התכונות החשמליות של התקשורת והקו הפיזי: הוא לא מתייחס לדברים "גבוהים" יותר כמו יחידות מידע בסיסיות, בקרת שגיאות וכדומה. הוא מיועד לעבודה בטווחים של עד 1200 מטרים, עם כבלים מסוג Twisted Pair, ולחבר שניים עד 32 התקנים בקצב העברת נתונים של 100 קילוביט לשניה (באורך קו מקסימלי).

RS-485 chip amongst wires

סבך של חוטים, עם ג'וק RS-485 מסתתר בפנים

המשמעות של תקן פיזי היא ששליחת וקבלת הנתונים הלוגיים נעשות כרגיל: שני הארדואינו שמשתתפים במערכת שיצרתי מדברים דרך פיני ה-RX וה-TX הרגילים, ממש כאילו חיברתי ביניהם ישירות בחוט. בהשאלה, זה כמו ששני אנשים מדברים: יכול להיות ביניהם קצת אוויר (אם הם מדברים פנים אל פנים), או גביעי לבן עם חוט מתוח ביניהם, או טלפון קווי, או מחשב עם מיקרופון וסקייפ – בכל מקרה, פעולת הדיבור היא זהה, ורק התווך שמעביר את הקולות שונה.

אז במקום חוט רגיל, בין ה-TX של השולח לבין ה-RX של המקבל נמצא כבל ארוך מאד עם שני גידים, ובכל קצה של הכבל הזה ג'וק RS-485 שמתחבר לפין הארדואינו המתאים. יש מבחר עצום של ג'וקים כאלה. במקרה שלי, מכיוון שהתנאים הכתיבו תקשורת חד-סטרית ומתח עבודה של 3,3V, בחרתי בדגם MAX3483E של חברת MAXIM. החיבורים פשוטים להפליא, כמתואר באיור הבא (לחצו להגדלה):

Connecting MAX3483E's
סכמת חיבור לתקשורת חד-סטרית עם רכיבי MAX3483E

מבחינה חשמלית, במקום להשתמש בחוט אחד כאדמה ובשני כמתח, הג'וקים מעבירים את המידע ביניהם על ידי הפיכה של הפרש הפוטנציאלים בין שני החוטים A ו-B. את הכניסה והיציאה (שמסומנות באיור כ-data) אפשר לחבר ישירות לארדואינו, אפילו שהוא עובד ב-5V.

המערכת הזו עברה בהצלחה את הבדיקות הראשוניות, וזה בעצם כל מה שיש לי לומר עליה. למי שמחפש פתרונות דו-סטריים, ישנם ג'וקים דומים שמעבירים מידע דרך כבל ארבעה-גידי (למשל MAX3488E), וכמובן גם דגמים שעובדים עם מתח של 5V. תקשורת נעימה!

להרשמה
הודע לי על
9 Comments
מהכי חדשה
מהכי ישנה לפי הצבעות
Inline Feedbacks
הראה את כל התגובות

ועוד שאלה, בדוגמאות שראיתי על חיבור רכיב max485 (ליתר דיוק rs485 to ttl) נראה שחיברו את הרכיבים לאותו פלוס ואותה אדמה (זאת אומרת שמשניהם יוצא כבל שמתחבר לכבל אחד שמחובר לאדמה), מה שאומר שזה חיבור בטור ולא במקביל (נכון?), אם כן, איך זה שהמתח מספיק? הרי אם כל אחד צורך 5v ומחברים אותם בטור לחיבור רגיל של 5v המתח אמור להתחלק ביניהם או "להיגמר" ברכיב הראשון, אז איך באמת החיבור שלהם עובד? ועוד שאלה שעלתה בעקבות זה אך לא כל כך קשורה, אשמח לתשובה גם עליה. בחשמל ביתי כמו בכל חיבור יש אפס ומתח, איך זה שבאפס לא זורם חשמל?… לקרוא עוד »

אהה מצוין, עזרת לי מאוד, תודה.
בגדול, בדרך כלל בדיקה על ידי מברג טסטר מראה שאין זרם/מתח ב"אדמה".

תוספת לגבי קו האפס:

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

בחיבור תלת פאזי מאוזן- הזרם מפאזה אחת חוזר דרך 2 הפאזות הנותרות, ואין זרם בקו האפס.
באופן תיאורטי (בלבד!), אין בו צורך.

הי עידו את הפוסט הסה קראתי לפני שנה בערך, השבת שאלו אותי עד איזה מרחק אפשר להעביר מידע על גבי כבל חשמל, מיד נזכרתי בפוסט ועניתי בבטחון גמור מטר-מטר וחצי בלחץ, וכבר אז המידע ממש לא אמין, להפתעתי אמרו לי שהם חיברו כבל של מסך לכבל אינטרנט רגיל בצד השני חיברו שוב לכבל מסך (כנראה עם מתאם כלשהו) והופה השיגו חיבור למסך במרחק של מעל קומה! והביאו עוד דוגמא של חיבור אינטרנט קוי, הוא מצליח לעבור קילומטרים רבים, במהירויות די יפות, האמת, קצת התבלבתי, הסברתי להם על הrs-485 אמרתי להם שבטוח זה עובד על משהו כזה, אבל האמת שזה לא… לקרוא עוד »

אה אוקיי תודה רבה.

תודה רבה על הפוסט
למדתי הרבה והבנתי המון

אין מה להגיד פשוט אלוף עולם,
כל פוסט משדרג אותי בדיוק בנקודות החשובות

עידו – תודה רבה