RS422/RS485 Shield¶
ה-RS422/RS485 Shield מעניק ל-OpenMV Cam קישור טורי דיפרנציאלי למרחק רב המתאים לאפיקים תעשייתיים, עם הזנת כניסה רחבה, הגנה מפני נחשולים ו-ADC/I/O דיגיטלי.
ל-datasheet המלא, תמונות והזמנה ראו את עמוד המוצר של RS422/RS485 Shield.
עיקרי הדברים¶
RS-422 או RS-485 במהירות 10 Mb/s עם סיומת מובנית
כניסת 6-36 V, עמידה למתח הפוך
כניסת ADC של 0-5 V עם הגנת מתח-יתר של ±36 V
I/O דיגיטלי של 0-5 V להדקי סנכרון מצלמה, מוגן מפני קצר
Pinout¶
טבלת פינים¶
פין |
תפקיד |
|---|---|
P4 |
RS-422 / RS-485 TX → מניע את קו ה-out הדיפרנציאלי |
P5 |
RS-422 / RS-485 RX ← קולט את קו ה-in הדיפרנציאלי |
P6 |
קריאת AIN מוסטת-מתח (0–3.3 V על P6) |
P10 |
SYN — I/O דיגיטלי open-drain על בלוק ההדקים |
PWR in |
כניסת רוחב 6–36 V על בלוק ההדקים (עמידה למתח הפוך) |
AIN in |
כניסה אנלוגית על בלוק ההדקים |
VIN out |
5.4 V בזרם של עד 600 mA מהמייצב המובנה |
מסילת 3.3V |
מזין את האלקטרוניקה המובנית של ה-shield |
מסילת GND |
הארקה משותפת |
הערה
AIN מוגן מפני מתח-יתר עד ±36 V וברירת המחדל שלו היא כניסת מתח של 0–5 V, מוקטנת ל-0–3.3 V על P6. גשרו את שאנט מצב 4–20 mA בחזית ה-shield כדי להחליף את AIN לכניסת לולאת-זרם 4–20 mA.
הערה
SYN הוא קו דיגיטלי open-drain, מושך אל 3.3 V בצד המצלמה ואל 5 V בצד הדק ה-SYN. כברירת מחדל הוא כניסה — ה-shield מסיט את 0–5 V על SYN אל 0–3.3 V על P10. שנו את גשר ההלחמה המובנה כדי להפוך את P10 ליציאה, תוך הסטת 0–3.3 V על P10 אל 0–5 V על SYN.
הערה
כל אחד מ-P4, P5, P6 ו-P10 מחובר אל המצלמה כברירת מחדל דרך גשר הלחמה — פתחו את הגשר על כל פין שברצונכם להחזיר לשימוש בלתי-קשור. גשרו של P6 נמצא בצד האחורי של ה-shield; אלה של P4, P5 ו-P10 בצד הקדמי.
הערה
נגדי הסיומת המובנים מחוברים כברירת מחדל — פתחו את גשרי ההלחמה התואמים בצד האחורי כדי לנתקם. שניים מכסים את זוג RS-422 A/B ושניים מכסים את זוג RS-422 Y/Z (המשמש גם כסיומת RS-485 A/B), ארבעה גשרים בסך הכל.
אודות RS-422 ו-RS-485
שני התקנים שולחים נתונים טוריים כאות מאוזן (דיפרנציאלי) על זוגות שזורים לקישורים למרחק רב ועמידים לרעש:
RS-422 הוא דו-כיווני מלא (full-duplex) על ארבעה חוטים. מנע משדר על זוג TX ייעודי המסומן Y/Z, והעמית משדר חזרה על זוג RX נפרד המסומן A/B. משדר אחד ועד עשרה קולטים לכל זוג.
RS-485 הוא בדרך כלל חצי-דו-כיווני (half-duplex) על שני חוטים. השידור והקליטה חולקים זוג יחיד, הקרוי A/B במונחי RS-485 אך פיזית אותם קווי Y/Z על ה-shield הזה. עד שלושים ושני צמתים יכולים לחלוק את האפיק וכל אחד מהם יכול להניע אותו.
כיצד ה-shield תומך בשניהם
ה-shield נושא שני משדרי-קולטים מסוג THVD1426, כל אחד מסוגל לטפל בכל אחד מהתקנים:
המשדר-קולט הראשון מניע את זוג ה-Y/Z (המשמש גם כזוג RS-485 A/B). הוא היחיד שהמנע שלו מחובר, ולכן כל התעבורה היוצאת מהמצלמה יוצאת דרך זוג זה ללא תלות במצב.
המשדר-קולט השני מניע את זוג ה-A/B. המנע שלו מקובע — משדר-קולט זה הוא לקליטה בלבד וחשוב רק במצב RS-422 של ארבעה חוטים.
הקולטים של שני המשדרים-קולטים מאופשרים תמיד, ויציאות ה-RX שלהם מצורפות ב-AND על קו קליטה יחיד חזרה אל המצלמה:
במצב RS-485 של שני חוטים, רק המשדר-קולט הראשון פעיל. חווטו את האפיק אל Y/Z; צד ה-A/B נותר סרק ושער ה-AND פשוט מעביר את ה-RX של המשדר-קולט הראשון.
במצב RS-422 של ארבעה חוטים, העמית משדר אל המצלמה על זוג ה-A/B (נקלט על ידי המשדר-קולט השני) בעוד שהמצלמה משדרת על Y/Z (כאשר הקולט של המשדר-קולט הראשון מחזיר בהד את הנתונים היוצאים שלו). שער ה-AND משלב אותם — איזה זוג שרואה דופק נמוך (סיבית התחלה, נתונים) מגיע אל המצלמה.
תוויות בלוק ההדקים משקפות את המיפוי הכפול:
RS-422 (ארבעה חוטים) — TX out על Y/Z, RX in על A/B.
RS-485 (שני חוטים) — TX/RX חולקים את זוג ה-Y/Z (= A/B במינוח RS-485). השאירו את הדקי ה-A/B על ה-shield מנותקים.
שימוש¶
הערה
מספר ההתקן ההיקפי UART(3) למטה עוקב אחר מיפוי ה-STM32. במעבד אחר ייתכן שהאפיק המחווט לפינים אלה שונה — בדקו את המדריך של הלוח שלכם.
תקשרו עם עמית טורי דיפרנציאלי על P4 (TX) / P5 (RX):
from machine import UART
uart = UART(3, baudrate=115200)
uart.write("hello\n")
print(uart.read())
קראו את כניסת בלוק ההדקים AIN דרך הפין המוסט P6:
from machine import ADC
import time
ain = ADC("P6")
while True:
v = ain.read_u16() * 3.3 / 65535
print("AIN:", v * (5.0 / 3.3), "V")
time.sleep_ms(100)
הגיבו לקצה יורד על קו ה-SYN — למשל, כדי לסנכרן את המצלמה עם התקן אחר המושך את SYN למצב נמוך:
from machine import Pin
def on_sync(pin):
print("SYN falling edge")
syn = Pin("P10", Pin.IN)
syn.irq(on_sync, Pin.IRQ_FALLING)