Idéer om växelspaks system till PC, (ratt&pedaler)!

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
anton
Inlägg: 396
Blev medlem: 9 november 2003, 13:12:31

Idéer om växelspaks system till PC, (ratt&pedaler)!

Inlägg av anton »

Hej!

Jag har köpt mig en ratt ( Microsoft Sidewinder Force feedback ) för att använda till lite bil simulatorer. Men den har enbart tiptronic(flappy pedal) växel. Så då har jag börjat fundera på hur jag ska kunna bygga en egen "växellåda" till den. Ska byta ratten mot en riktig rally ratt också. Men alltså, växellådan, några punkter som beskriver lite:

- Det ska vara en 6 växlad H-typ låda, alltså som då dom flesta vanliga bilarna.

- Den ska kopplas in över dom två växelströmbrytarna(tiptronics) som sitter på ratten redan, då behöver jag ju inte oroa mig över att dom inte ska länka med datorn, bara att löda kablar till växellådan där strömbrytarna sitter, om ni förstår.


En liten skiss bara på hur växellådan ska se ut för dom som inte förstår:

1 3 5
|_|_|_
| | | |
2 4 6 R

Och då är mitt problem, eftersom att datorn bara ska ta in två knappar, "växelupp/växelner" så måste jag ju ha nånting som kontrollerar att om jag har ettan, och sen lägger i tvåan, så ska den växla upp, och om jag sen lägger i trean, så ska den växla upp, men lägger jag sen i tvåan igen så ska den växla ner. För nästan alla spel kan ju inte ha en knapp för varje växel utan har en för upp och en för ner.. Det är bara backen som blir enkel för den kör man som konstant "växelner"..

Dock, om man gör såhär, så blir ju problemet att kommer man och åker på 5:an, bromsar in för en sväng, trycker i kopplingen och växlar ner till 3:an, så kommer ju datorn att fatta det som en nerväxling, inte två. Och då kommer spelet lägga i 4:an. Detta är dock något som man kan leva med antar jag, man får lära sig att växla ner växel för växel, dock lite jobbigt om man spinner runt och måste ner till ettan från sexan och ligger i ett race..

Jag kommer alltså att ha 7st strömbrytare vid varje växelläge, och ligger jag på växel 4:a ..så måste jag ha något som känner av att jag ligger på 4:an, och som gör om alla lägre växelbrytare till "växelner" och 5:an och 6:an till "växelupp"..

Går detta att lösa utan en uC? För jag har ingen erfarenhet av microprocessorer. Ska börja med det men det vore skönt om det gick att lösa utan!

Tror jag fick med allt, mycket blev det iallafall. Bara att fråga om något är oklart.

Tack för mig, mvh Anton Danielsson
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Det är definitivt enklast att lösa den med en µC och lite programmering. Men man kan även lösa det med logiska kretsar, det blir dock lite mer pilligt.
Användarvisningsbild
Fagge
Inlägg: 3930
Blev medlem: 27 maj 2003, 13:59:51
Ort: Blekinge

Inlägg av Fagge »

Efter 1min tankearbete, så säger hjärnan att du måste ha en µc för att lyckas lösa detta!.
Men det lär inte krävas många rader kod för att lösa detta, så med lite vilja & intresse så är svårighetsgraden på problemet mycket lågt!.
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Att skapa flera pulser om du t.ex. växlar direkt från 5:an till 3:an är väl inget större problem heller?

Inte med uC iaf :)
Användarvisningsbild
Zyxel615
EF Sponsor
Inlägg: 1839
Blev medlem: 9 november 2005, 21:20:43
Ort: Kiruna

Inlägg av Zyxel615 »

Jag skulle nog anta att man börjar med en viss växel i spelet. Sedan får lådan helt enkelt hålla koll på hur mycket du växlat upp/ner. Jag säger lycka till utan uC ;)

Men så farliga är de inte, det är bara att lära sig.

EDIT: attans... seg...
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Alltså... det finns ju en väg UTAN µC.

Om man nu tänkar att du har en upp/ner-räknare som kan räkna 1-6. När den har räknat till rätt växel (dekoder på såklart) stoppar den med att räkna.

Samtidig kopplar man en priority-encoder på växelbrytarna, detta ger då en binär ställning om vilken växel som är vald. Dessa 2 tal jämför man då i en sån krets som kan ge "A>B, A=B, A<B" och styr upp/ner-pulser med den.

Det blir en hel del kretsar, ca: 6-8 kretsar i CMOS/TTL logik mot 1 st t.ex. PIC16F612A på 18 pinnar. Båda lösningar bör (tycker jag) ha optokopplare utgång till växelknapper vilket är lika för båda lösningarna.

Jag vet ju vilken lösning jag hade vald.....
Användarvisningsbild
gunne
Inlägg: 2088
Blev medlem: 17 juni 2004, 15:00:31
Ort: sthlm
Kontakt:

Inlägg av gunne »

Problemet är väl att spaken inte vet villken växel som är i från början i spelet? Säg att du startar spelet och har spaken i femman. Spelet tror att du är i neutral (eller kanske ettan?) så när du då slänger i ettan på spaken växlas det i spelet ner fyra steg å du hamnar i backen.

Eller är jag ute å cyklar? Men om man ser till att ha spaken i rätt läge varje gång man startar ett race borde det funka.

Dock har ju alla riktiga rally- och F1-bilar idag "tiptronic"-lådor så det är ju mest realistiskt egentligen...
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Fixa en Saab-lösning! :) Dvs så att man bara kan ta ut nyckeln (översätt till "stänga av/på spelet eller styr-elektroniken") när ettans växel är i. (På Saab brukar det vara backen, men spel startas oftast med ettan.)
anton
Inlägg: 396
Blev medlem: 9 november 2003, 13:12:31

Inlägg av anton »

Okej, jag ger mig ;) jag får köra med en uC.

Då borde väl koden bli typ såhär, fast i riktigt språk då.

:::
->> X = goto/gå till kapitel X
-> X = utför uppgift X
Skannar efter nästa växling = Då skannar den av alla strömbrytare efter vilken som trycks härnäst
:::



- Växel 1 -> Skannar efter nästa växling
|->> Växel 1_2 -> Växla upp 1 ->> Växel2
|->> Växel 1_3 -> Växla upp 2 ->> Växel3
|->> Växel 1_4 -> Växla upp 3 ->> Växel4
|->> Växel 1_5 -> Växla upp 4 ->> Växel5
|->> Växel 1_6 -> Växla upp 5 ->> Växel6
|->> Växel 1_R -> Växla ner 2 ->> VäxelR

- Växel 2 -> Skannar efter nästa växling
|->> Växel 2_1 -> Växla ner 1 ->> Växel 1
|->> Växel 2_3 -> Växla upp 1 ->> Växel 3
|->> Växel 2_4 -> Växla upp 2 ->> Växel 4
|->> Växel 2_5 -> Växla upp 3 ->> Växel 5
|->> Växel 2_6 -> Växla upp 4 ->> Växel 6
|->> Växel 2_R -> Växla ner 3 ->> Växel R

- Växel 3 -> Skannar efter nästa växling
|->> Växel 3_1 -> Växla ner 2 ->> Växel 1
|->> Växel 3_2 -> Växla ner 1 ->> Växel 2
|->> Växel 3_4 -> Växla upp 1 ->> Växel 4
|->> Växel 3_5 -> Växla upp 2 ->> Växel 5
|->> Växel 3_6 -> Växla upp 3 ->> Växel 6
|->> Växel 3_R -> Växla ner 4 ->> Växel R

- Växel 4 -> Skannar efter nästa växling
|->> Växel 4_1 -> Växla ner 3 ->> Växel 1
|->> Växel 4_2 -> Växla ner 2 ->> Växel 2
|->> Växel 4_3 -> Växla ner 1 ->> Växel 3
|->> Växel 4_5 -> Växla upp 1 ->> Växel 5
|->> Växel 4_6 -> Växla upp 2 ->> Växel 6
|->> Växel 4_R -> Växla ner 5 ->> Växel 7

- Växel 5 -> Skannar efter nästa växling
|->> Växel 5_1 -> Växla ner 4 ->> Växel 1
|->> Växel 5_2 -> Växla ner 3 ->> Växel 2
|->> Växel 5_3 -> Växla ner 2 ->> Växel 3
|->> Växel 5_4 -> Växla ner 1 ->> Växel 4
|->> Växel 5_6 -> Växla upp 1 ->> Växel 6
|->> Växel 5_R -> Växla ner 6 ->> Växel R

- Växel 6 -> Skannar efter nästa växling
|->> Växel 6_1 -> Växla ner 5 ->> Växel 1
|->> Växel 6_2 -> Växla ner 4 ->> Växel 2
|->> Växel 6_3 -> Växla ner 3 ->> Växel 3
|->> Växel 6_4 -> Växla ner 2 ->> Växel 4
|->> Växel 6_5 -> Växla ner 1 ->> Växel 5
|->> Växel 6_R -> Växla ner 7 ->> Växel R

- Växel R -> Skannar efter nästa växling
|->> Växel R_1 -> Växla upp 2 ->> Växel 1
|->> Växel R_2 -> Växla upp 3 ->> Växel 2
|->> Växel R_3 -> Växla upp 4 ->> Växel 3
|->> Växel R_4 -> Växla upp 5 ->> Växel 4
|->> Växel R_5 -> Växla upp 6 ->> Växel 5
|->> Växel R_6 -> Växla upp 7 ->> Växel 6

:::

Ni undrar nog varför den växlar en gång för mycket mellan 1-2-3-4-5-6 och R. det är för att på dom flesta spel så ligger det friläge mellan, alltså R-N-1-2... Så då måste man ju växla förbi det. Därav den extra växlingen..

Och eftersom jag gör såhär med att inte växla på själva "Växeln" utan i underkatalogerna, så kan jag starta spelet, och kolla vilken växel jag ligger på, troligtvis ettan, då växlar jag bara upp till ettan med spaken så börjar den skanna på ettans växel efter nästa växling.. skulle jag börja av nån konstig anledning på tvåan så växlar jag bara dit så börjar den skanna där.

Synpunkter? Går det att lösa med mindre kod? Och hur mycket kodning blir detta i tex assambler eller vilket språk jag nu ska köra? Även tips på det.
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Det ser ut som du beskrivet en statusmaskin ungefär, och så kan man göra.

Men annars räcker det väl om du har två variabler "oldgear" och "newgear", och gör något sånt här:

Loopa hela tiden:
Om newgear > oldgear => växla upp och räkna upp oldgear
Annars Om newgear < oldgear => växla ner och räkna ner oldgear
Annars kolla alla switchar och sätt newgear = läget som spaken är i

Sen tillkommer lite detaljer för att initiera allt och skicka lagom långa pulser och lite annat finlir.
anton
Inlägg: 396
Blev medlem: 9 november 2003, 13:12:31

Inlägg av anton »

Hmm.. Jag förstår inte riktigt hur man ska göra variablerna och hur ska man läsa av? läsa av portarna?, vilka som är höga och låga precis som alltid? .. känns som att ditt är mer acancerat..fast smidigare bara man förstår. Förstår principen att om newgear är högre än oldgear så ska den växla upp och räkna upp oldgear numret men alltså, jag förstår inte hur den ska kunna känna av att den växlar mellan ettan och backen typ, då den måste växla en extra gång.. sen måste man väl göra så att den känner av HUR mycket större newgear är och anpassa växlingarna därefter!?

får ursäkta mina okunskaper inom området!
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Ge alla växlarna nummer, typ 0 = back, 1 = neutral, 2 = ettan osv

Varje gång oldgear är mindre än newgear räknas den upp med 1, så om du har bytt från trean till femman räknas den upp två gånger (4 till 5, sen 5 till 6 med min numrering). Varje gång den räknas upp med 1 så skickas ett "tryck" till datorn.

Du läser av porten med switcharna på, funderar ut vilken switch som är intryckt och sätter newgear till det tal som motsvarar den växel som du tydligen valt.
anton
Inlägg: 396
Blev medlem: 9 november 2003, 13:12:31

Inlägg av anton »

Dåså, då klarnade det lite. tackar, om vi nu övergår lite till hårdvara osv. Vilken uC ska jag köra? Jag har faktiskt några picar hemma, har ju somsagt tänkt börja men aldrig riktigt fått tummen ur, fastnade lite då jag skulle välja språk och programmerare!.

Dom picarna jag har är typ nån 16F628A och 877A. Skulle nån av dom fungera bra? Sen har jag kollat på Assambler, hur svårt är det att lära sig det? kommer det ta 1år innan jag kan bygga min växellåda om jag ska lära mig det först?

Mvh Anton Danielsson
danei
EF Sponsor
Inlägg: 27452
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

När du lägger i back eller högsta växeln så kan du ju växla ner resp upp en extra gång. För att synka om det har kommit fel. Det är ju inte negativt om det är rätt. och kan rätta till fel om man kommer ur synk.
anton
Inlägg: 396
Blev medlem: 9 november 2003, 13:12:31

Inlägg av anton »

danei: aa, det kan man ju!
Skriv svar