Kazalo:

Krmilni merilnik pospeška/žiroskopski krmilnik Xbox 360: 7 korakov
Krmilni merilnik pospeška/žiroskopski krmilnik Xbox 360: 7 korakov

Video: Krmilni merilnik pospeška/žiroskopski krmilnik Xbox 360: 7 korakov

Video: Krmilni merilnik pospeška/žiroskopski krmilnik Xbox 360: 7 korakov
Video: Как использовать гироскоп, акселерометр, магнитометр MPU-9250 для Arduino 2024, November
Anonim
Krmilni merilnik pospeška/žiroskopski krmilni modul Xbox 360 Mod
Krmilni merilnik pospeška/žiroskopski krmilni modul Xbox 360 Mod

Igral sem Assetto Corsa s krmilnikom Xbox 360. Žal je krmiljenje z analogno palico zelo težavno in nimam prostora za nastavitev kolesa. Poskušal sem razmišljati o načinih, kako bi lahko v krmilnik vtaknil boljši krmilni mehanizem, ko se mi je zdelo, da bi lahko celoten krmilnik uporabil kot volan.

Analogna palica ima dva potenciometra. Eden meri navpično gibanje, drugi pa vodoravno. Skozi vsakega vklopi 1,6 V in izmeri napetost, ki nastane pri brisalcu, da ugotovi, koliko se je palica premaknila. To pomeni, da je mogoče krmiljenje premikanja palice dovajati z določeno napetostjo na zatič brisalca. (več informacij tukaj:

Ta način uporablja Arduino za izračun kota iz odčitkov merilnika pospeška in ga pretvori v analogno premikanje palice prek DAC -a. Zato bi moral delovati s katero koli igro, ki za vhod uporablja analogno palico.

1. korak: Potrebovali boste:

Orodja:

  • Spajkalnik
  • Spajkanje
  • Spajkalni sesalec/pletenica
  • Odstranjevalec žice
  • Izvijač, morda Torx, odvisno od vijakov v krmilniku (moji so križni)
  • Lepilo (po možnosti ne preveč močno lepilo, da ga lahko kasneje razstavite)
  • USB -serijski adapter za programiranje Arduina

Materiali:

  • Krmilnik Xbox 360 (duh!)
  • Arduino Pro Mini (ali klon) (po možnosti 3.3V. Če uporabljate 5V različico, boste verjetno potrebovali povečevalni pretvornik napetosti)
  • Žiroskop/merilnik pospeška MPU-6050
  • DCP MCP4725 (dva, če želite upravljati obe osi)
  • Nekaj tanke žice
  • Okvir, tako da lahko pred spajkanjem preizkusite vse (neobvezno, vendar priporočljivo)

2. korak: Razstavite krmilnik

Odstranite krmilnik
Odstranite krmilnik
Odstranite krmilnik
Odstranite krmilnik
Odstranite krmilnik
Odstranite krmilnik

Odstraniti morate sedem vijakov. Šest jih je očitnih, sedmi pa za nalepko. Predvidevam, da odstranite garancijo, zato nadaljujte na lastno odgovornost. Mnogi vodniki pravijo, da potrebujete izvijač Torx, vendar so moji križni, zato preverite krmilnik.

Po tem previdno odstranite zadnji pokrov. Če odstranite sprednji del, se gumbi razlijejo in bodo verjetno šli po celotni sobi. Dvignite ga od spodaj. Nato odklopite dva motorja za vibracije. (tisti z majhno težo naj bo na levi, drugi z veliko težo pa na desni) Odstranite tiskano vezje in odstranite gumijaste pokrove na analognih palicah. Enostavno se umaknejo.

Naslednja stvar je, da odstranite levo analogno palico, da ne moti našega vnosa, vendar je levi sprožilni mehanizem na poti. Če ga želite odstraniti, morate tri zatiče odpakirati s potenciometra s sprednje strani plošče, nato mehanizem odstraniti s tiskanega vezja.

Nato odlepite 14 zatičev, ki držijo levo analogno palico. Nato izvlecite palico.

3. korak: sestavne dele prilepite na svoje mesto

Sestavite komponente na svoje mesto
Sestavite komponente na svoje mesto
Sestavite komponente na svoje mesto
Sestavite komponente na svoje mesto

Opazili boste, da je med zadnjo stranjo tiskane plošče in ohišjem precej prostora. To omogoča vstavljanje vse strojne opreme v ohišje, ne da bi pri tem odstranili karkoli.

To sem spoznal šele kasneje, vendar bi bil to pravi čas, da odlepite gumb za ponastavitev na Arduinu. Če tega ne storite, bo pritisnil na zadnjo stran ohišja in povzročil, da bo projekt prenehal delovati, če boste pri ponovnem sestavljanju preveč privili enega od vijakov.

Na zadnjo stran vsakega tiskanega vezja sem prilepil tanek kos kartice, da sem ga izoliral, nato pa lepil na tiskano vezje krmilnika. Nisem hotel uporabljati lepila, vendar si nisem mogel zamisliti boljšega načina.

Položaji na sliki so najboljša kombinacija, ki sem jo našel. Arduino je na levi, rob z gumbom za ponastavitev pa je poravnan s kosom plastike z desnega sprožilnega mehanizma, z drugo stranjo pod žico in z vogalom čim bližje belemu priključku. V ohišju je rahlo izboklina, vendar nisem našel boljšega mesta.

Merilnik pospeška je desno od žice. Morala bi biti čim bolj ravna in čim bolj ravna, sicer boste morda pozneje morali napisati kodo, da kompenzirate odmik. Upoštevajte, da je na zadnji strani ohišja nekaj štrlečih kosov plastike, ki se jim morate izogniti. Ugotovil sem, da lahko na štrleče koščke plastike naneseš nekaj lepljivega in barvitega, na primer šminko, nato pa zadnjo plat namestiš, da vidiš, kje pušča sledi.

DAC (i) so v spodnjem levem kotu. Tukaj je dovolj prostora za zlaganje dveh DAC -jev, enega na drugega, če želite nadzorovati obe osi. Ni vam jih treba lepiti. Ostali bodo tam, kjer so, samo s spajkanimi povezavami. Če med njimi vstavljate kartico, prerežite kartico tako, da bodo SCL, SDA, VCC in GND dostopni, ker boste do njih dostopali z obeh strani.

Če uporabljate dva DAC-ja, ne pozabite preklopiti mostička za naslov in onemogočiti izvlečne upore na enem od njih, kot je opisano tukaj: https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog -converter-hookup-guide

Korak: Spajkajte žice

Spajajte žice vklopljene
Spajajte žice vklopljene
Spajajte žice vklopljene
Spajajte žice vklopljene
Spajajte žice vklopljene
Spajajte žice vklopljene

Zdaj morate vse povezati. VCC, GND, SDA in SCL iz vseh naprav 2/3 je treba priključiti na VCC, GND, A4 in A5 na Arduinu. DAC so najtežji del. Če imate dva, jih morate povezati skupaj, medtem ko nekam zapustite, lahko priključite napajanje in linije na merilnik pospeška, hkrati pa ločite izhodne žice.

OUT pin na DAC -u je treba priključiti na pin na tiskanem vezju krmilnika, ki je bil prej za srednji vodoravni zatič potenciometra za analogno palico. To pomeni, da je tam, kjer je bila analogna palica, na vrhu vrsta treh zatičev. Povežite ga s sredino. Če imate drug DAC, ga na enak način povežite z navpičnim zatičem potenciometra (vrstica na levi). Ko zamenjate sprožilec, do zatičev ne boste mogli priti, zato morate žico napeljati na sprednjo stran plošče. Okrog območja analogne palice je okrogla plastična "stena", a na srečo je v njej priročna vrzel, skozi katero lahko napeljete žice. Prepričajte se, da žice ne ovirajo vijaka na sprednjem delu ohišja.

Moj prvotni načrt je bil napajanje Arduina s 5V iz kabla USB, priključenega na RAW pin, ko pa sem poskusil, ni delovalo. Arduino ni zagnal ničesar, Arduino in krmilnik pa sta se po nekaj sekundah izklopila. Vendar sem odkril, da obstaja stabilen izhod 3.3 V iz dveh zatičev na sprednji strani plošče v bližini črne zunanje vtičnice, verjetno za napajanje zunanjih naprav. Deluje tako z VCC kot RAW, vendar sem se odločil za VCC, ker je že prava napetost in ker mi omogoča spajkanje na žico VCC na DAC -ju, ki je že pri dnu plošče, in prihranim na žicah.

Zavedajte se, da iz ohišja štrli veliko plastičnih delov, ki jih morate zaobiti, če pa žice prilepite na svoje mesto, morate zanje skrbeti le enkrat.

Vse to je težko opisati z besedami, zato sem vključil slike in grob diagram.

5. korak: Programirajte Arduino

Zdaj morate programirati Arduino. To zahteva premikanje kabla USB na krmilniku, da lahko dostopate do serijskih zatičev na Arduinu. Priložil sem kodo, ki sem jo uporabil. Potrebuje knjižnico Adafruit MCP4725, ki jo najdete tukaj:

Koda vam omogoča, da enakomerno premikate celoten obseg gibanja analogne palice tako, da krmilnik premaknete za 90 stopinj v levo do 90 stopinj v desno in ga držite na sredini tako, da ga držite ravno.

Kot regulatorja dobi kot izračunavanja inverzne tangente osi X sile g, deljene z silo g osi Z. To pomeni, da deluje, če je krmilnik navpičen, raven ali ima vmesni kot. (več informacij tukaj:

Deluje na mojem krmilniku, vendar lahko drugi krmilniki zahtevajo različne napetosti, zaradi česar ni v skladu. Mislim, da je najboljši način za iskanje napetostnega območja s poskusi in napakami. Številne igre vam bodo pokazale drsnik za gibanje analogne palice, vendar je najbolj natančen način za določanje gibanja z jstestom v Linuxu. (https://wiki.archlinux.org/index.php/Gamepad#Joystick_API) Daje vam številko med -32, 767 in 32, 767 in ne grafiko, tako da natančno veste, kje je palica. Priključite krmilnik in vmesnik USB na serijski vmesnik Arduino, naložite jstest in preizkusite različne vrednosti DAC, dokler ne pridete do vrha in dna območja, ter si zabeležite vsako. Zame je bilo 1, 593 - 382.

Posebno zanimiva je vrstica 36:

dacvalue = (controllerangle + 2,5617859169446084418) / 0,0025942135867793503208 + 0,5;

Ni takoj očitno, kaj počne. Preprosto vzame kot krmilnika (merjen v radianih in med ~ 1,57 in ~ -1,57) in ga pretvori v vrednost med 1, 593 in 382 za DAC. Če imate drugačen obseg DAC, morate to vrstico spremeniti.

Vrstico lahko zapišemo tako:

dacvalue = (controllerangle +) / + 0,5;

Številke, ki jih morate spremeniti, so in so. je enako obsegu kota krmilnika (pi), deljenem s skupnim razponom vrednosti DAC. (vrh območja minus dno območja) To vas pripelje do spreminjanja napetosti, čeprav bodo rezultati zunaj želenega območja. Zato potrebuješ. je enako pomnoženo z dnom območja plus polovica območja gibanja regulatorja. (pi / 2) Če dodate polovico obsega gibanja, se prepričate, da ne gre za negativno število, in če dodate, pomnoženo z dnom obsega, zagotovite, da je sinhronizirano z želenim obsegom.

Pri pretvorbi decimalk v celo število se C ++ ne zaokroži. Namesto tega odreže decimalko, tako da 9,9 postane 9. Če dodate 0,5 na koncu, se prepričate, da gre vse, kar je več kot polovica, na naslednje celo število, zato se zaokroži.

Ko naložite program, se prepričajte, da deluje z jstestom.

6. korak: Ponovno sestavite krmilnik

Krmilnik znova sestavite na enak način, kot ste ga razstavili, minus leva analogna palica. Zdaj bi moralo delovati. Ugotavljam, da ni opazne zamude in je veliko bolje kot uporaba analogne palice. Ker uporablja merilnik pospeška, nanj vplivajo nenadni premiki, vendar se morate potruditi, da ga opazite.

7. korak: Možni izboljšavi

Obstaja nekaj izboljšav, ki bi jih bilo mogoče narediti. Tej vključujejo:

  • Uporaba manj okorne magnetne žice
  • Jedkanje vsega na eno tiskano vezje, ki je zasnovano tako, da se prilega ohišju krmilnika
  • Znova pritrdite levo analogno palico in noge povežite z analognimi vhodi na Arduinu, tako da jih lahko uporabite za nastavitev Arduina
  • Pridobivanje zadnjega dela ohišja za brezžični krmilnik in vstavljanje projekta v predal za baterije (to bi zahtevalo izrezovanje luknje za kabel USB)

Priporočena: