Jump to content

Open Source Joystick FFB / DIY FFB Joystick


Recommended Posts

Hi

 

 

I am under the impression that one Axis connection must be flexible in "distance" can someone confirm this idea?

 

 

MetalGear_Honk

 

Later today i will make a movie for G940 gimbal in order to fully understand all its mechanics. Curently just arrived at work.

 

Anyway, there is a important difference between G940 and FFB2 when we are speaking about smooth movement. FFB2 is a lot more smooth due to its multiple reduction steps between motor and gimbal. G940 apply motor power directly on gimbal and for this reason you will feel in your hand how the motor goes from one pole to another ... like the small bounces in your hand..

Also due to lack of demultiplication and to avoid letting to much current on motors, G940 have a small "dead zone" while joystick is in neutral which does not ever permit the player to take the hands offf the stick. This does not apply to MSFFB2 at all.


Edited by Abburo

Romanian Community for DCS World

HW Specs: AMD 7900X, 64GB RAM, RTX 4090, HOTAS Virpil, MFG, CLS-E, custom

Link to comment
Share on other sites

  • Replies 419
  • Created
  • Last Reply

Top Posters In This Topic

I've been meaning to keep an eye on this project but had forgotten all about it. It sounds like you guys are making some headway! I do a little programming on arduino and CAD work for 3d printing, and I would love to lend a hand. The major roadblock for me was always my inability to read the directinput ffb data coming from the sim.

 

Arduino as the microcontroller and IDE for this project would be ideal for the DIY aspect of things. It's very affordable and has a low learning curve.

 

 

MetalGear Honk, you mentioned working on some code for an arduino. Do you have anything in *.ino format I could look at?

 

Once I have a functional ffb electronics testbed on an arduino, I'd love to work on the mechanical side of things for this project. Any gimbal/base/other designs I create to go along with this will of course remain free and open source. I've been busy with other things, but I keep a thread of my work at simhq.

 

Anyways, glad to hear you're making progress and I look forward to lots of arduino fbb trial and error! :D

Link to comment
Share on other sites

Hi

sorry but only the Hex file.

i don't like the Arduino IDE as it is a c derivat and i prever c++

so Atmel Studio is more to my liking.

 

but you can use one Arduino as ISP Programmer. and burn the Hex into another.

The threemost dangerous threads to Programmers:

  • Fresh air
  • Bright sun light
  • The horrifying screams of singingbirds

Link to comment
Share on other sites

hello !

have not a lot of time but : first step is ok!

 

The gimball disasembling was very easy , there are not so many parts( as you will see on the pictures) , only one type of screw exept for the metal part and motors wich are "johnson" brend, 38 mm diameter .

 

http://www.johnsonelectric.com/en/product-technology/motion/dc-motors/industry-dc-motors?series=low-voltage-dc-motors

 

 

The gear redction is quite simple as you will see we need to calculate the max torque/ gear radius to adapte our dc motor for the project , according to the warrthog stick at about 25 cm we should need about 300g/m max torque to get about 2kg at 25 cm ...only aproximations ... so powerfull motors or bigger gears .

 

Now the big interogation: my prosthetic who has a very expensive prosthetic scaner to make CAD apparel told me he was very pleased to scan all the pieces and put them in a 3D printable format but it has a limitation in size ( i think 10/10cm ) wich means not all the pieces may be scanned, but can be drawn perhaps.

 

sorry for the dust , hair but my venerrrable ff2 ...14 years old ;;)i had to explain to him that it was for science ;)

 

@metal gear if you need other pictures of the gimball let me now

 

I keep you inform of the next step.

 

 

http://imagizer.imageshack.us/v2/xq90/922/KuENny.jpg' alt='KuENny.jpg'> 8pUqi9.jpg exDglk.jpg IcW5Q5.jpg C9yxnx.jpg yWhD7s.jpg MlHvUY.jpg sIwEWw.jpg mwVdeQ.jpg b0Qn6R.jpg USoBef.jpg 6O2k5p.jpg i9MgVL.jpg 5uOf39.jpg 6XVFyz.jpg[/img]


Edited by jpdesvals
Link to comment
Share on other sites

Hi

That was exactly what I was missing.

Thanks a lot for the Part pictures.

the central shaft is the flexible part that I was expecting.

now I can easy build one with Ball-bearings.

Thanks again.

 

as for the firmware:

I am expanding some of the Basic functions for better testing.

1. I will switch from JTAG to ISP to get better compatibility to the pro micro.

2. I will integrate a ads1115 for higher resolution/ better positioning.

3. I plan to activate the buttons and axis to report back to the sim.

(I use the signals for bug searching)

 

MetalGear_Honk

The threemost dangerous threads to Programmers:

  • Fresh air
  • Bright sun light
  • The horrifying screams of singingbirds

Link to comment
Share on other sites

Hi ,

 

Good to know that it helped.

 

@metal gear honk 1) is it possible for you to make a little step by step tutorial for how to install your test firmware into arduino as i am a total newb?

2) about the motor driver l298n : whatever the type of dc motors ( exept for stepper ) as long as you have the power supply in range for the motors you don t have to setup anything on the pc ( PWM for exemple ) ?

Link to comment
Share on other sites

Hi

The easy part first. :-)

The l298n is wired to the atmega32u4(Arduino pro).

So it has nothing to with your PC. The MCUis giving the signals for Direction and Speed (PWM) only the external power forthe DC Motor is separately wired to the L298n. it can run 2Ampere for eachMotor so we have something to play with.

As for the step by step for burning theMCU.

I will see what I can do. But I am notvery good with such things.

MetalGear_Honk

The threemost dangerous threads to Programmers:

  • Fresh air
  • Bright sun light
  • The horrifying screams of singingbirds

Link to comment
Share on other sites

Yes!

Many H bridge motor controller available on the market for this project ! Everybody should get the maximum torque he deserve ;) good !

 

For the gear , shaft high torque geared dc motors or litteraly every thing you may need "servocity" is remarquable too if that may help other people .

 

Your code( pin mapping part) is written for the arduino pro witch has not exactly the same pin mapping as the arduino uno v3 ... Pb : pwm port for exemple are pb3 , pb2, pb1 repectively pin 11,10, 9...and from what i understand we must wright in the code what pins are related to what function musn t we ?

 

1) Could you please change your code to comply with the arduino uno or have i to buy an arduino pro ?

 

2) can you realese if possible the .HEX with X and Y axis implemented so we can try it in the sim ?

 

Voila , many asking i know anyway thx a lot for your codding work Metal Gear cause after hours of research on the web i have not be able to find an existing firmware to make arduino recognised as a basic 2 axis USB force feedback device ...

Link to comment
Share on other sites

Hi

For using a different Arduino, or otherHardware:

The Arduino Uno uses a different MCU(ATMEGA328P) which has no USB functionality. To communicate with the PC it usesa second MCU (ATmega16U2)

The Arduino Pro Micro (ATmega32u4)

For a quick Explanation about Atmel MCU's:

AT= Atmel

mega= MCU Family

32/ 16 internal Memory for programming

U = USB Capable

Rest = Special stuff not of interest forthe Moment.

We Need a USB capable for obvious reason. Sothe UNO is out of question.

And the UNO's Communications MCU is not assessablefor reprogramming

(Or not recommended) and it has not enoughMemory to hold the code for FFB.

So, we could build the Communication MCUto hold the PID/HID. And use the ATmega238P to hold the functionality. It willbe a lot of work just to get the communication between these two MCU running. Notto talk about sending Forces all the way from Direct Input (PC) tothe Motors.

In short it may be possible to Change thecode to fit into a UNO, but it is too much work to make it happen. And I stillhave a lot of work to get the MICRO to a working Status.

For Getting a working HEX:

As I said a few Posts earlier a am workingon a "Functional" Version for everybody to test. :-)

At least with the internal ADC as I am stillwaiting for my new ASD1115

Speaking of functions is Button Supportneeded for your tests?

MetalGear_Honk

The threemost dangerous threads to Programmers:

  • Fresh air
  • Bright sun light
  • The horrifying screams of singingbirds

Link to comment
Share on other sites

ok ,

 

-So let s go for an arduino pro

 

-Run Xloader to install your firmware .HEX file

 

-wiring as you explain and test !

 

no need for button for the test , only forces effect are my concern.

 

However :As you said "We Need a USB capable for obvious reason. Sothe UNO is out of question.

And the UNO's Communications MCU is not assessablefor reprogramming

(Or not recommended) and it has not enoughMemory to hold the code for FFB. "

 

1) in this tutorial you must have already look :https://www.youtube.com/watch?v=v7A_fFHfN_c&t=5s

 

The arduino uno is pluged in USB and able to hold code ifor all the force feedback effects on one AXIS with every car game and obviously flight sim.

 

Wouldn t be possible to edit or modiffy Mmos.exe sofware(windows inteface )and the FFB2014.HEX file to had ( with your knowledge ) one axis , i mean in these software everything is already possible to setup and worrking so why not use it as base for your work ?

 

I can send you the Mmos.exe and the FFB2014.hex file as well .

 

There must be many things i am missing .

 

JP


Edited by jpdesvals
Link to comment
Share on other sites

ReHi

For the Xloader. At first it looks like a greattool. But as I have no bootloader implemented it would brick you pro micro.

Better to go with a UNO as ISP programmer

Or any other ISP Programmer.

forthe open ffbWeel:

It has only one Axis as you stated. Thereforonly capable of two directions.

A Joystick has two Axis and is capableof 254 Directions.

The PID states that force and Directionare send in one command set of three Signals. For Basic use. Force effect,Force Strength and force direction.

(That is strongly simplified for moreInformation please read the HID and PID device class documents)

Another side note different effects on OSWsimply add up the force that is applied. On the stick it is possible to geteffects in different directions. Constant force 128 (180°pull from High G) andrising Saw 63 (90° from bullet impacts) these are not stacked but using differentMotors to drive.

Reducing the angle between the two effectswill produce some overlay but will not mask them entirely.

I am not the best Software developeraround so feel free to correct me.

Another note: I have to correct myselfform earlier the L298N can Support 5A so we have a lot more power to play with.

MetalGear_Honk

The threemost dangerous threads to Programmers:

  • Fresh air
  • Bright sun light
  • The horrifying screams of singingbirds

Link to comment
Share on other sites

Hi all

i hope someone is still interested:

here is another Version.

this time with working Axis and Motor Control.

 

I am not finished with the Moter PWM Control. it feels slugish at small forces.

but i think it is good enough for some more testing.

 

For the Mechanics:

I am working on a Gimball design but that will take some more time to get it right.

 

 

JOYSTICK_Test.zip

The threemost dangerous threads to Programmers:

  • Fresh air
  • Bright sun light
  • The horrifying screams of singingbirds

Link to comment
Share on other sites

Hi all

i hope someone is still interested:

here is another Version.

this time with working Axis and Motor Control.

 

I am not finished with the Moter PWM Control. it feels slugish at small forces.

but i think it is good enough for some more testing.

 

For the Mechanics:

I am working on a Gimball design but that will take some more time to get it right.

 

 

JOYSTICK_Test.zip

 

One of the things that makes MSFFII such a good stick compared to others is that it does not use PWM (like cheap cnc machines use), it uses a real dc servomechanism in the form of an H-bridge circuit regulating variable current to DC motors... smooth variable l/r power output (like high end cnc machines use). It's also possible to slightly modify the original Ms circuit/power supply to generate 400% the torque, which if applied to bigger motors/better mechanicals it's a huge leap in power in without sacrificing it's many built in finesse.

 

http://www.simprojects.nl/ms_siderwinder_ff2_hack.htm

 

For power transmission, gears are really a compromise for this as they have backlash subject to wear, precision tolerances for incorporating, they create unwanted 'cogging' effects as you can feel the teeth meshing and is really done to make manufacture simple and the base compact at the expense of performance so if you're rolling your own, not something desirable to emulate.

 

A better method for power transmission is 'shaft winding', where you drill a cross-hole in the output shaft of the motor and feed a steel cable through it and wrap a few wingdings around it, that go to a pulley/bellcrank hooked to the stick's axis. It allows 100% smooth transmission of power, and extremely easy to achieve the 'gear' ratios desired. Roland van Roy (same guy who came up with the hack above, who's site is bar none prerequisite reading on the subject in general) has an example of this in his yoke: http://www.simprojects.nl/forcefeedback_yoke_ii.htm

 

I've been watching this for a while with interest and have almost commented several times but ultimately deleted them cause I'm not sure if it's helpful but I'm not sure exactly what this thread is trying to solve. For a DIY FF setup honestly the easy part is making the hardware, which is pretty well known stuff. Interfacing with a sim however is a completely different animal, and is something putting it mild will be hard to beat MS/sim dev's collective efforts at so anyone interested in really using FF might as well perform the hack vs reinventing a wheel that might not work as well.

 

http://www.simprojects.nl/diy_force_feedback_interfacing.htm -basic interfacing explanations

 

I sort of do this for a living (work with motion platforms and this company supplies professional control loading hardware too but spend a lot of time picking my boss's brains as well) having dabbled with this since 2008 myself. I also came up with a way to interface with sims and came up with a functional scheme (including an electromechanical loop error circuit to turn digital>mechanical) based chiefly on airspeed data. This needs to be extracted in real time from a sim/game (sometimes a feat in itself) to run through the circuit. It's easy enough to generate variable centering force based on airspeed as well as incorporate offsets like trim (though each different game/sim needs its own extraction program) but that's where the 'free' lunch ends. Every. Single. Event. beyond that needs to be manually generated from a library of carefully sculpted sine wave 'effects' to replicate things like like stall shakes, landing bumps, fluttering control surface, turbulence effects, machine gum bumps etc. Not only does a library need to be scripted (and variable versions of certain effects), but each one of those events has to be programmed to be triggered from a variable inside the sim which is a much more complicated parameter extraction/generation program. Each sim will require it's own version, and also that they're tuned for each plane and each effect ad nauseum.

 

I deemed the effort to be well into the zone of diminishing returns... spent a lot of time wondering 'if I could' vs 'if I should' and determined while DIY interfacing si entirely possible it was not worth the effort unless it was being made for a single high fidelity simulator for study or training level that didn't have built in FF signals to work with already.

 

So... in the end it's still more advantageous to hack an MSFFII which has done the hard stuff at the dev logic level already and generates high resolution output that only lacks power, which luckily is the easier part to solve. Mod circuit/ps and make better mechanicals with bigger motors and you will have something already able to work pretty well with nearly everything as well as having supplementary support programs to get it to work with games/sims that don't immediately support it...

 

...it's possible I'm totally missing something here too, and I hope my advice is not taken as disparagement.

Link to comment
Share on other sites

Hi

OK so first:

CNC use Steppers not PWM (Pulse wide Modulation). even the cheapest 3d Printer use Steppers.

second:

The sidewinder uses PWM it is directed from the Controller to the "Enable" pin of the H-Bridge. (that way it looks like a true DAC (Digital to Analog conversation) on the Motor side. that is exactly what I am using here.

for the gears:

Using step down gears reduces the backlash and play that is feeld at the grip.

The Shaft winding systems produce to much Force that can not countered by the Operator (you will not be able to move the stick against the Motor)

that is great for motion Platforms but not for a FFB Stick.

The same goes for linear Actuators and worm drive.

 

so much for the Mech parts.

if I got something wrong please feel free to correct me.

 

For the software:

the main intension was/is to replace the good Sidewinder-mainboard.

so a SF Hack is not a way to go. :-)

I am full aware of the difficulties for developing something like this.

but interfacing with the SIM is not part of the Stick. it is done in the USB driver. as it is part in the USB-PID (Universal-Serial-Bus-Physical-Interface-Device).

that makes the Stick as it is Working already a simple Plug and Play :-)

that part is already done by me. so as USB is part of the Windows Kernel the Stick can be used an all machines without additional drivers/software.

for getting Force informations from the SIM:

most all sims/modules that I have tested provide Directing / support FFB.

 

So knowing that all, I can assume that we already have a working Version of a Diy-FFB Stick. as it is already working with DCS and other Sims.

not completed but Working.

 

the biggest and by far most complicated missing part is getting the forces to feel right. that is what makes the Sidewinder so unique.

 

again i am not the best Software developer in the World (but almost :-D )

so if someone can correct me I am more than happy in getting help.

 

 

 

MetalGear_Honk

The threemost dangerous threads to Programmers:

  • Fresh air
  • Bright sun light
  • The horrifying screams of singingbirds

Link to comment
Share on other sites

Hello MetalGear_Honk !

 

More interested than ever , just waiting to the Arduino pro mini , the l 298 motor controler and all the stuff to test , thx for the firmware update !!

 

I will report asap but this may take some time for me to recieve everything in New-Caledonia !

 

Conerning the FF2 gimball scan to make a 3 d printable format : some pieces are just a little bit to big to be scan by the guy i know , waiting for another solution .

 

I 'll keep you inform !

Link to comment
Share on other sites

  • 3 weeks later...
  • 1 month later...

SO The is it possible to use the PWM signal from the MSFF2 to control a amplifier/ motor driver board. then using the Hall sensors, potentiometers, or exact encoders to monitor the motors position?

 

 

 

Hi

OK so first:

CNC use Steppers not PWM (Pulse wide Modulation). even the cheapest 3d Printer use Steppers.

second:

The sidewinder uses PWM it is directed from the Controller to the "Enable" pin of the H-Bridge. (that way it looks like a true DAC (Digital to Analog conversation) on the Motor side. that is exactly what I am using here.

for the gears:

Using step down gears reduces the backlash and play that is feeld at the grip.

The Shaft winding systems produce to much Force that can not countered by the Operator (you will not be able to move the stick against the Motor)

that is great for motion Platforms but not for a FFB Stick.

The same goes for linear Actuators and worm drive.

 

so much for the Mech parts.

if I got something wrong please feel free to correct me.

 

For the software:

the main intension was/is to replace the good Sidewinder-mainboard.

so a SF Hack is not a way to go. :-)

I am full aware of the difficulties for developing something like this.

but interfacing with the SIM is not part of the Stick. it is done in the USB driver. as it is part in the USB-PID (Universal-Serial-Bus-Physical-Interface-Device).

that makes the Stick as it is Working already a simple Plug and Play :-)

that part is already done by me. so as USB is part of the Windows Kernel the Stick can be used an all machines without additional drivers/software.

for getting Force informations from the SIM:

most all sims/modules that I have tested provide Directing / support FFB.

 

So knowing that all, I can assume that we already have a working Version of a Diy-FFB Stick. as it is already working with DCS and other Sims.

not completed but Working.

 

the biggest and by far most complicated missing part is getting the forces to feel right. that is what makes the Sidewinder so unique.

 

again i am not the best Software developer in the World (but almost :-D )

so if someone can correct me I am more than happy in getting help.

 

 

 

MetalGear_Honk

https://www.shapeways.com/shops/a-10c-warthog-supplies

https://forum.dcs.world/topic/133818-deadmans-cockpit-base-plans/#comment-133824

CNCs and Laser engravers are great but they can't do squat with out a precise set of plans.

Link to comment
Share on other sites

Hi

Yes it should be possible to get the PWM Signals and the direction signals from the MSFFB2 Board.

I am not sure about the Sensors/ Pots in most Sticks it is possible to use Halls to replace the pots. I have never checked that on the FFB2.

 

as for news on this project I haven’t had much time over the summer. so I am still working on the Hardware part.

I have a working set of Motors running to get the Power settings better.

but not much to show at the moment.

 

not sure if someone else got any further at the Hardware side?

 

MetalGear_Honk

The threemost dangerous threads to Programmers:

  • Fresh air
  • Bright sun light
  • The horrifying screams of singingbirds

Link to comment
Share on other sites

I was pretty busy too, but for sure I am intending to build the hardware as per your recommendation above.

 

Regarding the MSFFB2, it does not have pots but some encoders. Do you think I might build a hybrid joystick and combine a MSFFB2 with a Virpil joystick for its accuracy and precision? (ignore the hardware adaption as this will be something to be assessed... I am considering here only electronic adaptions)

 

Anyway... my goal is to be able to build a FFB mechanism around any of best joystick on market Virpil/VKB/Warthog. I can print 3D parts to achieve this as well.

Romanian Community for DCS World

HW Specs: AMD 7900X, 64GB RAM, RTX 4090, HOTAS Virpil, MFG, CLS-E, custom

Link to comment
Share on other sites

Regarding the MSFFB2, it does not have pots but some encoders.

 

There's one FFB2 "dissected" in some Russian forum and the guy say that use potentiometer.

 

As the labels near the connector for X and Y axes in Forcefeedback2 PCB suggest:

 

dsc07879w.jpg

http://bbs.hitechcreations.com/smf/index.php?topic=313997.0

 

Probable pot rated for 10M cycles - maybe Panasonic.

 

Other FF2B disassembled, but the forum require loguin to see pictures.

 

https://riseofflight.com/forum/topic/29129-ms-sidewinder-ff2-tech-info-pots-review-comparison/

Link to comment
Share on other sites

Cannot quickly found on google how they are built but I remember back in time the description were referring to contactless X and Y, while Z it is indeed a normal pot.

Anyway, not relevant for this discussion here... still I would really like to found a way to use that force feedback on a better precision joystick.

Romanian Community for DCS World

HW Specs: AMD 7900X, 64GB RAM, RTX 4090, HOTAS Virpil, MFG, CLS-E, custom

Link to comment
Share on other sites

Problem with that "mix" is, VKB/VirPil mechanics are not projected considering use of gears and motors necessary in ForceFeedback ... but if overcome this mechanical detail are the fact that their sensors work in digital mode (binary code, not voltage variation like pot), VirPil with 4 wires interface and VKB with 3 wires, but with proprietary code only compatible with their Njoy32 controller. Probable same for VirPil sensor (iGMR based).

 

But need use MSFFB2 controller board for use FFB API, and necessarily run X, Y axis through this board - or don't have FFB at all - then can't use VKB/VirPil sensors as MS board is not compatible with them.

 

Need keep MS original pot (or whatever is) or replace with contactless sensor that work in analog mode (eg. MLX90333), what that guy who mix 2 MSFFB2 circuits and Warthog grip say that in practice don't result in noticeable improvement, only more work.

 

End up not using any of VKB/Virpil good features, their CAM gimbals mechanics, as need modify this gimbals removing springs, CAM and adapt gears and motors in place, what probable result in worse operation than in MS FFB2 gimbal (projected for this), nor using their electronics/sensor, at least in joystick main axes.

Link to comment
Share on other sites

Hi

In the Pictures that jpdesvals provided in this thread (Thanks again for that)the Picture where all Parts are spread out nicely There Are clearly twoPots.one the right side.

For the rest i Think Sokol is right. not much improvement in changing the Pots.

 

http://imagizer.imageshack.us/v2/xq90/922/USoBef.jpg' alt='USoBef.jpg'>

 

 

MetalGear_Honk

The threemost dangerous threads to Programmers:

  • Fresh air
  • Bright sun light
  • The horrifying screams of singingbirds

Link to comment
Share on other sites

FWIW.

 

I was thinking maybe use RC Servos with feedback from the built in pot, fairly cheap and already manufactured. That would mean having at least 2 or 3 (90 or 120deg or more) ADC's or mux input??


Edited by FragBum
<typo>

Control is an illusion which usually shatters at the least expected moment.

Gazelle Mini-gun version is endorphins with rotors. See above.

 

Currently rolling with a Asus Z390 Prime, 9600K, 32GB RAM, SSD, 2080Ti and Windows 10Pro, Rift CV1. bu0836x and Scratch Built Pedals, Collective and Cyclic.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...