สารบัญ:
วีดีโอ: Thrustmaster Warthog Slew Sensor อัพเกรด I2C: 5 ขั้นตอน
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
นี่คือคำแนะนำคร่าวๆ เกี่ยวกับวิธีการเชื่อมต่อกับโปรโตคอล I2C ที่ใช้กับเซ็นเซอร์ตรวจจับปีกผีเสื้อ ThrustmasterWarthog สามารถใช้เพื่ออัพเกรดจาก ministick มาตรฐานที่ค่อนข้างไร้ประโยชน์ไปเป็นสิ่งที่ดีกว่า แต่ยังคงใช้คอนโทรลเลอร์ USB มาตรฐานในหน่วยเค้น สิ่งนี้อ้างอิงจากโพสต์ต้นฉบับเมื่อ:
forums.eagle.ru/showthread.php?t=200198
ความเข้าใจพื้นฐานหากใช้โปรโตคอล I2C สำหรับขั้นตอนส่วนใหญ่ต่อไปนี้ สำหรับคำอธิบายที่ยอดเยี่ยม ให้ไปที่:
learn.sparkfun.com/tutorials/i2c
คำถามเฉพาะใด ๆ โปรดถามฉันและฉันจะพยายามเพิ่มข้อมูลที่ยากขึ้นนี้ในอนาคตด้วยข้อมูลที่เกี่ยวข้องมากขึ้น นี่ยังไม่สมบูรณ์ แต่ควรเป็นจุดเริ่มต้นที่ดี
มีโค้ดสาธิต Arduino บางตัวให้ แต่โปรดใช้สิ่งนี้เป็นข้อมูลอ้างอิงเท่านั้นเนื่องจาก Arduino 5V ปกติไม่สามารถใช้งานได้โดยไม่ต้องดัดแปลง
ขั้นตอนที่ 1: รายละเอียดเซนเซอร์ที่มีอยู่
ministick slew sensor ที่มาพร้อมกับ Thrustmaster Wathog throttleis ที่รู้จักกันดีว่าเป็นหนึ่งในจุดอ่อนที่ใหญ่ที่สุดด้วยผลิตภัณฑ์ที่ยอดเยี่ยมอย่างอื่น มีคนพยายามหลายครั้งที่จะแทนที่มันด้วยสิ่งที่ดีกว่าในช่วงหลายปีที่ผ่านมา แต่ส่วนใหญ่ต้องเผชิญกับความยากลำบากในการเชื่อมต่อกับโปรโตคอล I2C ดิจิทัลที่ใช้โดยโปรโตคอลนี้
เซ็นเซอร์ที่แน่นอนที่ใช้ในคันเร่ง Warthog คือ N35P112 - EasyPoint ซึ่งใช้ IC เซ็นเซอร์เอฟเฟกต์ฮอลล์ 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 โดยตัวควบคุมเชิงเส้นที่อีกด้านหนึ่งของบอร์ด ด้านหลังตัวเชื่อมต่อ ควรจะดีถึง arround 20mA แต่ฉันไม่มีทางทดสอบสิ่งนี้)
- I2C SDA
- I2C SCL
- GND
- ปุ่ม 1 (ปกติสูง 5V pullup ภายใน)
ขั้นตอนที่ 3: คำอธิบายโปรโตคอล
เซ็นเซอร์ทำงานบนที่อยู่ I2C 0x41 - คำสั่งเขียนหรืออ่านทั้งหมดเริ่มต้นด้วยที่อยู่นี้
เมื่อเค้นเชื่อมต่อกับคอมพิวเตอร์ มีคำนำประมาณ 250 มิลลิวินาทีบนบัส I2C เพื่อระบุตำแหน่ง 0x40 ฉันคิดว่านี่เป็นรุ่นเซ็นเซอร์อื่นหรือสิ่งที่คล้ายกัน แต่ไม่เกี่ยวข้องกับเรา
ข้อมูลที่ส่งบนบัส I2C ในการใช้งานปกติอยู่ด้านล่าง ไมโครคอนโทรลเลอร์ของเราต้องจำลองข้อมูลนี้เพื่อพูดคุยกับคันเร่ง
ตั้งค่า - ข้อมูลนี้จะถูกส่งครั้งเดียว ประมาณ 500ms หลังจากเชื่อมต่อ USB เพื่อตั้งค่าเซ็นเซอร์เดิมสำหรับการใช้งาน
เขียนหลัก: 0x0F (ลงทะเบียนควบคุม 1)
ข้อมูล: 0x02 0b0000 0010 (เริ่มซอฟต์รีเซ็ต)
เขียนหลัก: 0x0F (ลงทะเบียนควบคุม 1)
Master Read: 0xF1 0b1111 0001 (รีเซ็ตเป็น 11110000, lsb 1 หมายถึงข้อมูลที่ถูกต้องพร้อมที่จะอ่าน เราต้องตอบกลับคำสั่งนี้อย่างถูกต้องเพื่อให้รู้จักเป็นอุปกรณ์สเลฟที่ถูกต้อง)
เขียนหลัก: 0x2E (ลงทะเบียนควบคุม 2)
ข้อมูล: 0x 86 (นี่เป็นเพียงการกำหนดทิศทางของแม่เหล็กในเซ็นเซอร์เดิม)
เขียนหลัก: 0x0F (ลงทะเบียนควบคุม 1)
ข้อมูล: 0x 80 0b1000 0000 (ตั้งค่าอุปกรณ์เป็นโหมดว่าง (การวัดอัตโนมัติ ไม่อยู่ในโหมดพลังงานต่ำ))
วนซ้ำ: ทำซ้ำที่ประมาณ 100Hz เพื่อรับข้อมูลเซ็นเซอร์
เขียนหลัก: 0x10 (ลงทะเบียน X)
Master Read: (สเลฟส่งข้อมูล X, 2 ค่าเสริม 8 บิต)
เขียนหลัก: 0x11 (ลงทะเบียน Y)
Master Read: (สเลฟส่งข้อมูล Y, 2 ค่าเสริม 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 ที่แนบมาสามารถใช้จำลองเซ็นเซอร์ได้
โปรดทราบ: บอร์ด Arduino ส่วนใหญ่ใช้ไฟ 5V ซึ่งต้องใช้บอร์ดที่เข้ากันได้หรือดัดแปลง 3.3V เพื่อหลีกเลี่ยงความเสียหายต่อจอยสติ๊กของคุณ
ขั้นตอนที่ 5: การปรับเทียบ
เมื่อเซ็นเซอร์ใหม่ของคุณได้รับการติดตั้งแล้ว เค้นจะต้องสอบเทียบ
ในการปรับเทียบคันเร่ง คุณจะต้องใช้เครื่องมือสอบเทียบคันเร่ง สามารถดาวน์โหลดได้จากแหล่งต่าง ๆ เช่น:
forums.eagle.ru/showthread.php?t=65901
อย่าใช้การปรับเทียบหน้าต่าง
เพื่อให้ได้ประโยชน์สูงสุดจากม็อด คุณต้องเปลี่ยนค่าสองสามค่าในไฟล์การกำหนดค่าการปรับเทียบของคุณ
เปลี่ยน:
Standard_DZ_SX = 0x10;
มาตรฐาน_DZ_SY = 0x10;
บรรทัดใน A10_calibration.txt ถึง:
Standard_DZ_SX = 0x01;
มาตรฐาน_DZ_SY = 0x01;
สิ่งนี้จะเปลี่ยนเป็นโซนตายในการควบคุมการสังหารจาก 10 เป็น 1 และให้การควบคุมที่ดีขึ้นมาก คุณสามารถเล่นกับการตั้งค่านี้แล้วปรับเทียบใหม่และดูสิ่งที่คุณชอบมากที่สุด