Innholdsfortegnelse:
- Trinn 1: Eksisterende sensordetaljer
- Trinn 2: Pinout
- Trinn 3: Protokollbeskrivelse
- Trinn 4: Arduino -kode
- Trinn 5: Kalibrering
Video: Thrustmaster Warthog Slew Sensor I2C -oppgradering: 5 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
Dette er en grov guide til hvordan du grensesnitt med I2C -protokollen som brukes på ThrustmasterWarthog gasspjeldssensor. Dette kan brukes til å oppgradere fra den ganske ubrukelige standardministikken til noe bedre, men bruker fremdeles den vanlige USB -kontrolleren i gassaggregatet. Dette er basert på et originalt innlegg om:
forums.eagle.ru/showthread.php?t=200198
En grunnleggende forståelse hvis I2C -protokollen antas for de fleste av følgende trinn, for en utmerket forklaring, gå til:
learn.sparkfun.com/tutorials/i2c
Eventuelle spesifikke spørsmål, spør meg gjerne, så skal jeg prøve å legge til dette vanskeligere i fremtiden med mer relevant informasjon. Dette er på ingen måte komplett, men bør være et godt utgangspunkt.
Noen demo Arduino -koder er gitt, men bare ta dette som en referanse, da en vanlig 5V Arduino ikke kan brukes uten endring.
Trinn 1: Eksisterende sensordetaljer
Ministick -sensoren som følger med Thrustmaster Wathog -gassen er kjent for å være en av de største svakhetene med et ellers utmerket produkt. Det har vært en rekke forsøk fra folk på å erstatte det med noe bedre gjennom årene, men de fleste har møtt vanskelighetene med å koble til den digitale I2C -protokollen som ble brukt av den.
Den eksakte sensoren som brukes i warthog -gasspjeldet er N35P112 - EasyPoint, som bruker AS5013 hall effect sensor IC laget av AMS.
Datablad:
ams.com/eng/Products/Magnetic-Position-Sens…
Interessant nok var enheten en gang tilgjengelig som en breakout -modul av Sparkfun:
www.sparkfun.com/products/retired/10835
Sensoren er ment for navigasjonsapplikasjoner i ting som mobiltelefoner, og er ekstremt billig. Etter min mening uakseptabelt i noe som koster nesten $ 500.
Trinn 2: Pinout
Sensoren kobles til kretskortet i høyre gasspjeld via mikro 5 -pinners kontakt.
Pinout er som følger:
-
Vcc +3.3VDC (
Lokalt regulert fra 5V av en lineær regulator på den andre siden av brettet, like bak kontakten, burde være bra til rundt 20mA, men jeg har på ingen måte testet dette)
- I2C SDA
- I2C SCL
- GND
- Knapp 1 (normalt høy, intern 5V pullup)
Trinn 3: Protokollbeskrivelse
Sensoren opererte på I2C -adressen 0x41 - alle skrive- eller lesekommandoer starter med denne adressen.
Når gassen er koblet til datamaskinen, er det en innledning på rundt 250 ms på I2C -bussen for å adressere 0x40, jeg antar at dette er for en annen sensorversjon eller noe lignende, men det er ikke relevant for oss.
Dataene som sendes på I2C -bussen ved normal bruk er nedenfor. Denne må simuleres av mikrokontrolleren vår for å snakke med gasspjeldet.
Oppsett - Disse dataene sendes en gang, rundt 500 ms etter at USB er tilkoblet, for å sette den originale sensoren i bruk.
Master Write: 0x0F (kontrollregister 1)
Data: 0x02 0b0000 0010 (starter en myk tilbakestilling)
Master Write: 0x0F (kontrollregister 1)
Master Read: 0xF1 0b1111 0001 (tilbakestilles til 11110000, lsb 1 betyr at gyldige data er klare til å bli lest. Vi må svare på denne kommandoen riktig for å bli gjenkjent som en gyldig slaveenhet)
Master Write: 0x2E (kontrollregister 2)
Data: 0x 86 (dette angir bare retningen til magneten i den originale sensoren)
Master Write: 0x0F (kontrollregister 1)
Data: 0x 80 0b1000 0000 (Setter enheten i hvilemodus (automatisk måling, ikke i lav effekt))
Sløyfe: Dette gjentas på rundt 100Hz for å få sensordata.
Master Skriv: 0x10 (X register)
Master Read: (slave sender X data, 2s komplement 8 bits verdi)
Master Skriv: 0x11 (Y register)
Master Read: (slave sender Y -data, 2s komplement 8 bits verdi)
Relevant del av protokolldump fra logisk analysator:
Oppsett Skriv til [0x82] + ACK
0x0F + ACK
0x02 + ACK
Oppsett Skriv til [0x82] + ACK
0x0F + ACK
Oppsett Les til [0x83] + ACK
0xF1 + NAK
Oppsett Skriv til [0x82] + ACK
0x2E + ACK
0x86 + ACK
Oppsett Skriv til [0x82] + ACK
0x0F + ACK
0x80 + ACK
Oppsett Skriv til [0x82] + ACK
0x10 + ACK
Oppsett Les til [0x83] + ACK 0xFC + NAK
Oppsett Skriv til [0x82] + ACK 0x11 + ACK
Oppsett Les til [0x83] + ACK 0xFF + NAK
Trinn 4: Arduino -kode
Den vedlagte Arduino -koden kan brukes til å simulere sensoren.
Vær oppmerksom på: De fleste Arduino -kortene er på 5V, dette trenger et 3.3V -kompatibelt eller modifisert brett for å fungere for å unngå skade på joysticken.
Trinn 5: Kalibrering
Når den nye sensoren er montert, må gassen kalibreres.
For å kalibrere gasspjeldet vil du bruke gasspjeldkalibreringsverktøyet. Dette kan lastes ned fra en rekke kilder, for eksempel:
forums.eagle.ru/showthread.php?t=65901
Ikke bruk Windows -kalibrering.
For å få mest mulig ut av en mod, må du endre noen få verdier i kalibreringskonfigurasjonsfilen.
Endre:
Standard_DZ_SX = 0x10;
Standard_DZ_SY = 0x10;
Linjer i A10_calibration.txt til:
Standard_DZ_SX = 0x01;
Standard_DZ_SY = 0x01;
Dette vil bytte til dødsone på slew -kontrollen fra 10 til 1, og gi mye bedre kontroll. Du kan leke med denne innstillingen og deretter kalibrere på nytt og se hva du liker best.
Anbefalt:
I2C / IIC LCD -skjerm - Bruk en SPI LCD til I2C LCD -skjermen Bruke SPI til IIC -modulen med Arduino: 5 trinn
I2C / IIC LCD -skjerm | Bruk en SPI LCD til I2C LCD -skjermen Bruke SPI til IIC -modulen med Arduino: Hei folkens siden en vanlig SPI LCD 1602 har for mange ledninger å koble til, så det er veldig vanskelig å koble den til arduino, men det er en modul tilgjengelig på markedet som kan konverter SPI -skjerm til IIC -skjerm, så da trenger du bare å koble til 4 ledninger
I2C / IIC LCD -skjerm - Konverter en SPI LCD til I2C LCD -skjermen: 5 trinn
I2C / IIC LCD -skjerm | Konverter en SPI LCD til I2C LCD -skjermen: bruk av spi lcd -skjerm trenger for mange tilkoblinger å gjøre, noe som er veldig vanskelig å gjøre, så jeg fant en modul som kan konvertere i2c lcd til spi lcd, så la oss komme i gang
Tegn LCD I2c -adapter (eksempel på I2c -tilkobling): 12 trinn (med bilder)
Character LCD I2c Adapter (I2c Connection Eksempel): Jeg gjør et tilkoblingsskjema for en tegnvisning i2c adapter. Sjekk oppdateringene på nettstedet mitt. Nå legger jeg til et system for kabelforbindelse for å bruke det originale biblioteket, ikke mitt forked.LiquidCrystal Arduino -bibliotek for karakter LCD -skjermer, gaffelprosjekt
Thrustmaster Warthog Joystick Addon: 5 trinn (med bilder)
Thrustmaster Warthog Joystick Addon: hei vær så snill mot meg .. dette er min første instruerbare. Jeg trengte noen flere knapper og akser på min " warthog " joystick, for å spille elite farlig. det er ikke morsomt å bytte mellom joystick og tastatur med en " rift " på han han
Arduino Nano og Visuino: Konverter akselerasjon til vinkel fra akselerometer og gyroskop MPU6050 I2C -sensor: 8 trinn (med bilder)
Arduino Nano og Visuino: Konverter akselerasjon til vinkel fra akselerometer og gyroskop MPU6050 I2C -sensor: For en stund siden la jeg ut en opplæring om hvordan du kan koble MPU9250 akselerometer, gyroskop og kompasssensor til Arduino Nano og programmere den med Visuino for å sende pakkedata og vise det på et omfang og visuelle instrumenter. Akselerometeret sender X, Y