תוכן עניינים:
וִידֵאוֹ: שדרוג Thrustmaster Warthog Slew I2C: 5 שלבים
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
זהו מדריך גס כיצד להתממשק עם פרוטוקול I2C המשמש בחיישן המצערת ThrustmasterWarthog. ניתן להשתמש בזה כדי לשדרג מהמיניסטרט הסטנדרטי חסר התועלת למדי למשהו טוב יותר, אך עדיין להשתמש בבקר ה- USB הסטנדרטי ביחידת המצערת. זה מבוסס על פוסט מקורי על:
forums.eagle.ru/showthread.php?t=200198
הבנה בסיסית אם פרוטוקול I2C מניח ברוב השלבים הבאים, להסבר מצוין עבור אל:
learn.sparkfun.com/tutorials/i2c
כל שאלה ספציפית, אל תהסס לשאול אותי, ואשתדל להוסיף על זה בעתיד עם מידע רלוונטי יותר. זה בהחלט לא שלם, אבל אמור להיות נקודת מוצא טובה.
מסופק קוד Arduino הדגמה כלשהו, אך אנא קח זאת רק כהפניה מכיוון שלא ניתן להשתמש ב- Arduino רגיל 5V ללא שינוי.
שלב 1: פרטי חיישן קיימים
חיישן ההנעה המיניסטי שמגיע עם מצערת Thrustmaster Wathog ידוע כאחת החולשות הגדולות ביותר עם מוצר מצוין אחרת. היו מספר ניסיונות של אנשים להחליף אותו במשהו טוב יותר לאורך השנים, אך רובם נתקלו בקשיים בהתממשקות עם פרוטוקול I2C הדיגיטלי המשמש אותו.
החיישן המדויק המשמש במצערת הווארטוג הוא N35P112 - EasyPoint, המשתמש בחיישן אפקט האולם AS5013 מתוצרת AMS.
טופס מידע:
ams.com/eng/Products/Magnetic-Position-Sens…
מעניין שהיחידה הייתה זמינה פעם כמודול פריצה של Sparkfun:
www.sparkfun.com/products/retired/10835
החיישן מיועד ליישומי ניווט בדברים כמו טלפונים ניידים, והוא זול במיוחד. לדעתי לא מקובל במשהו שעולה כמעט 500 $.
שלב 2: Pinout
החיישן מתחבר ל- PCB ביחידת המצערת הימנית באמצעות מחבר מיקרו 5 פינים.
Pinout הוא כדלקמן:
-
Vcc +3.3VDC (
מוסדר מקומית מ- 5V על ידי וסת לינארי בצד השני של הלוח, ממש מאחורי המחבר, אמור להיות טוב עד 20mA, אבל בשום אופן לא בדקתי את זה)
- I2C SDA
- I2C SCL
- GND
- כפתור 1 (רגיל גבוה, פנימי 5V פנימי)
שלב 3: תיאור פרוטוקול
החיישן פעל על כתובת I2C 0x41 - כל פקודות הכתיבה או הקריאה מתחילות עם כתובת זו.
כאשר המצערת מתחברת למחשב, ישנה מבוא של כ- 250ms באוטובוס I2C לכתובת 0x40, אני מניח שזה לגרסת חיישן אחרת או משהו דומה, אבל זה לא רלוונטי עבורנו.
הנתונים הנשלחים באוטובוס I2C בשימוש רגיל נמצאים למטה, יש לדמות זאת על ידי המיקרו -בקר שלנו כדי לדבר עם המצערת.
התקנה - נתונים אלה נשלחים פעם אחת, בערך 500 ms לאחר חיבור ה- USB, כדי להגדיר את החיישן המקורי לשימוש.
כתיבת מאסטר: 0x0F (פקד בקרה 1)
נתונים: 0x02 0b0000 0010 (יוזם איפוס רך)
מאסטר כתיבה: 0x0F (פקד בקרה 1)
מאסטר קריאה: 0xF1 0b1111 0001 (מתאפס ל- 11110000, lsb 1 מסמן כי נתונים תקפים מוכנים לקריאה. עלינו להשיב לפקודה זו בצורה נכונה כדי להיות מוכר כמכשיר עבדים תקף)
כתיבת מאסטר: 0x2E (פקד בקרה 2)
נתונים: 0x86 (זה רק קובע את כיוון המגנט בחיישן המקורי)
מאסטר כתיבה: 0x0F (פקד בקרה 1)
נתונים: 0x 80 0b1000 0000 (מכשיר את המכשיר למצב סרק (מדידה אוטומטית, לא במצב צריכת חשמל נמוכה))
לולאה: הדבר חוזר על עצמו בסביבות 100 הרץ כדי לקבל נתוני חיישנים.
מאסטר כתיבה: 0x10 (רשום X)
מאסטר קריאה: (העבד שולח נתוני X, ערך משלים של 8 סיביות)
מאסטר כתיבה: 0x11 (רשום Y)
מאסטר קריאה: (העבד שולח נתוני Y, ערך משלים של 8 סיביות)
חלק רלוונטי מהטמעת פרוטוקול ממנתח לוגיקה:
הגדרת כתיבה ל- [0x82] + ACK
0x0F + ACK
0x02 + ACK
הגדרת כתיבה ל- [0x82] + ACK
0x0F + ACK
התקנה נקראת עד [0x83] + ACK
0xF1 + NAK
הגדרת כתיבה ל- [0x82] + ACK
0x2E + ACK
0x86 + ACK
הגדרת כתיבה ל- [0x82] + ACK
0x0F + ACK
0x80 + ACK
הגדרת כתיבה ל- [0x82] + ACK
0x10 + ACK
התקנה נקראת עד [0x83] + ACK 0xFC + NAK
הגדרת כתיבה ל- [0x82] + ACK 0x11 + ACK
התקנה נקראת עד [0x83] + ACK 0xFF + NAK
שלב 4: קוד ארדואינו
ניתן להשתמש בקוד Arduino המצורף כדי לדמות את החיישן.
שימו לב: רוב לוחות ה- Arduino פועלים עם 5V, זה דורש לוח תואם או שונה של 3.3V כדי לעבוד כדי למנוע נזק לג'ויסטיק שלכם.
שלב 5: כיול
לאחר החיישן החדש שלך הותקן, המצערת תצטרך כיול.
כדי לכייל את המצערת שלך אתה תהיה הכלי לכיבוי המצערת. ניתן להוריד זאת ממספר מקורות כגון:
forums.eagle.ru/showthread.php?t=65901
אין להשתמש בכיול חלונות.
על מנת להפיק את המקסימום מ mod אתה צריך לשנות כמה ערכים בקובץ תצורת הכיול שלך.
לשנות את ה:
Standard_DZ_SX = 0x10;
Standard_DZ_SY = 0x10;
קווים ב- A10_calibration.txt אל:
Standard_DZ_SX = 0x01;
Standard_DZ_SY = 0x01;
זה ישתנה לאזור מת על הבקרה האחידה מ -10 ל -1, וייתן שליטה טובה בהרבה. אתה יכול לשחק עם ההגדרה הזו ואז לכייל מחדש ולראות מה אתה הכי אוהב.