Jump to content

Open Source Joystick FFB / DIY FFB Joystick


Recommended Posts

If the gear ratios need to be increased so we can use a higher RPM, so be it, pulleys and belts are cheap. If I have to put up with a tiny amount of cogging that'll be damped somewhat by the backlash in the belts anyway, that's ok. I'm not saying you can't burn money if you want to, but consider the rest of us in your design. Because ultimately accepting some very minor flaws to get decent force feedback is far more reasonable than not having any force feedback because a very small number of people are happy to throw large sums of money chasing diminishing returns. Excessive amounts of money are what make it a non starter long before any minor inconveniences, so please consider the what is achievable to us with less money to spend in your design.

 

https://www.xsimulator.net/community/threads/diy-ffb-steering-wheel-mmosffb-in-progress.7769/

If these guys can build better than commercial racing wheels with $35 motors there shouldn't be any reason why we can't do similar.

 

 

Interesting thread, but there are some reasons why the motors they use are unlikely to be up to this task. A FF steering wheel is a different animal that has 900-1080deg of travel, which makes motor selection much more forgiving. Using a 24:1 gear ratio, comparing total motor revolutions vs device travel the increased range of motion means it's roughly 19 to 23 times(!) less affected by magnetic cogging than a joystick application where your total travel is 30deg.

 

24:1 ratio @ +/-15deg = +/- 1 motor revolution

24:1 ratio @ +/-540deg = +/-22.5 motor revolutions

24:1 ratio @ +/-450deg = +/-18.75 motor revolutions

 

They ultimately settled on 12:1 ratio for that setup which would double negative cogging effects cited above but a 12" wheel is like a 6" stick in terms of moment arm. Conveniently for this conversation doubling the power to match a 12" stick would happen at 24:1 so the numbers stand in direct comparison. The thread was appreciated though and led me to Cousin Of Open Sim Wheel so now I'm eyeballing nice (used) big brushed dc motors with skewed armatures for a DD wheel. https://www.xsimulator.net/community/threads/cousin-of-osw-open-sim-wheel.10915/

 

Even with expensive motors gear ratios can not be continually increased without running into penalties but I concede the exact numbers are not 100% certain. Those tradeoffs are likely why MS capped it at 24:1 instead of say 48:1 with motors half the power, but cost/complexity may have influenced this too.

 

With how good it works in practice, my guess is 24:1 is where the lines converged on the chart after experienced engineers applied calculus to optimize torque multiplication vs the penalties of the motor/system inertia. For this reason, I maintain this is a sensible place to start from. There are two advantages of higher ratios though, reduced motor cogging effects and increased torque. Designing around 24:1 runs the least risk of running into complications though.

 

Either way, FF sticks are sensitive to motor performance because the low rotation/limited range of motion poses challenges to the goal of smooth output with high torque, making suitable motors harder to find (generally more expensive) than less demanding use cases.

Link to comment
Share on other sites

  • 3 weeks later...
  • Replies 419
  • Created
  • Last Reply

Top Posters In This Topic

Hi guys !

 

Just for information , for those who can afford that there is a new product on the market , ready to plug the warthog or the manngust , powerfull and swiiss made.. ..so certainly not cost effective but when you take account of the time we spend flying on our computer that could be a investment .

 

https://www.brunner-innovation.swiss/product/cls-e-joystick/

 

For the DIY project i maintain that as there is already an arduino code for a single axe racing wheel working "apparently very well" , taking two arduino micro and assign one axe on each of them separatly and you get your force feedback joystick (Ok the electronic parts i mean )

 

 

I can tell you that because i have got two sidewinder ffb 2 and 1 force feedback wheel and i can assign each axe on two of theses device and i have force feedback on each devices ..

 

whrighting a code from scratch is a brave quest , why just use what is already existing and modifiy some of the code ( reduction of the potentiometer maximum course from 360 to 45 for exemple ) .

 

hope not to offend anybody but these are just some thoughts.

Link to comment
Share on other sites

I've read up on the CSL-E joystick, but like a bunch of other high-end force feedback devices, it doesn't use the DirectInput force feedback API, instead opting to use a special plugin with Prepar3D/X-Plane/MSFS. Unless a similar plugin is written for DCS, it won't work.

Link to comment
Share on other sites

Very nice hardware from Brummer... if I were in the market for plug-n-play or at least some leapfrog components to jumpstart making the stick I really want it would be a great option. 5Nm force in such a compact device is impressive! 3ph ac motors are way out of my league but definitely the way to go if you're going all-in and more importantly have interfacing to support it. Since I'm building a stick to replicate aircraft I've flown/have interest in flying, this rules out gimbals with x/y on the same (geometric) plane. Many if not most aircraft are coupled shorter in roll than in pitch by a few inches, which also complicates gimbals design because it either req the mechanism to take a lot of space (to route pushrods/cables) or one of the motors has to 'go for a ride' like the design settled on in this thread, which is the same design conclusion I came to in 2008 when I was first working on this (the sailplane sim it was being made for was already dated by then so I mothballed my project but its successor just released, Condor2).

 

This leaves me fabricating all the hardware, and since I'm on a very tight budget and also really don't want to reinvent the wheel, as I have mentioned before I am all about hacking MSFFII for practicality reasons. It has a decent ready-to-use interface and also there are known upgrade paths to achieve high quality FF, plus Condor2 devs have that stick and have tuned performances to it nicely so reinventing that wheel (which I have already done before) is well into the zone of diminishing returns.

 

The motors I settled on are not 'cheap' in the general sense even though they really are in relative terms (compared to other brands), but being popular means they can be found as surplus for a lot less money if you know what you're looking for. For the MSFF hack though, unfortunately the more commonly found 24v versions of those motors will not work, the terminal resistance is far too low so it will force the PWM into a 100% duty cycle at full current, so for the 14000 series motors they req different voltages at different sizes (there are 7 sizes in that series, my focus is mostly on 14204; good size/power) to achieve the proper resistance for the MSFFII circuit.

 

The 48v version of 14204 has terminal resistance is just about 4ohm, which is very close to ideal when calculating the voltage drop at full current (2.8a x 4ohm = 11.2v, where 12v is ideal). It's a 26oz/in motor (stalled torque), which at 24:1 ratio yields a mechanism with ~4.4Nm, very close in strength to the Brummer units which are 5Nm and will come out around the same size (or also work in the CAD design in this thread).

 

To this end I'm in talks with a motor manufacturer in China that claims to have perfect clones of those motors, down to the skewed armatures and identical performance but an order of magnitude less expensive than the Pittmans. Not sure how long it will take to get my hands on some to evaluate, but if they work for this it will provide a very reasonable pathway to functionality and it might make sense to do some group buys in the future for anyone that wants to follow.

 

Doing my homework on belts has led me to GT3 (successor to GT2), which is the current iteration of Gates's modified version of HTD rounded tooth pattern I was excited about in my last post. At 9mm width I don't think the 2mm pitch version are strong enough for this torque, but the 3mm pitch version is 4x stronger so likely the proper one but I'm going to get samples of both to evaluate the tactile implications as well as stretch/wear testing. If they feel like a zipper I'm going back to shaft-winding technique, either with wire rope or Spectra/Dyneema which is a lot less stretchy than steel and no more bleeding fingers!

 

@aburro, I wouldn't kill my Warthog yet if I were you but the answer to your question is no, you would need 2 arduino/steering wheel units, once for each axis but I have no idea how flight sims would react with that if at all. This gives me an idea to test my G29 as the 'rudder' in Condor2 though, which has FF commands presumably DirectInput API like the x/y, and I suppose might as well test in on the x/y too... if anything interesting comes of it I'll edit this post.

Link to comment
Share on other sites

I would like a fab joystick throttle and pedals that use hall sensors. But in the mean time I would like to add fab to my pft puma along with dampeners that I have plans that have peen tested for the collective and trim pedals the cyclic is still under development.

BlackeyCole 20years usaf

XP-11. Dcs 2.5OB

Acer predator laptop/ i7 7720, 2.4ghz, 32 gb ddr4 ram, 500gb ssd,1tb hdd,nvidia 1080 8gb vram

 

 

New FlightSim Blog at https://blackeysblog.wordpress.com. Go visit it and leave me feedback and or comments so I can make it better. A new post every Friday.

Link to comment
Share on other sites

Hi

for using two Arduinos:

 

we had this discusion twice already

 

FFB x/y is send as one set like :30% Force in direction 230°

a steerig weel needs only : 30% Force Positive

 

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 Thadiun,

 

I like your concept about building a solid solution based on the FFB electronics, however I would like to build a full scale control column with higher torque.

 

Would it be possible to connect even bigger motors with higher gear ratio to to the FFB2 electronics with some modding? I am still dreaming about 50Nm :)

[sIGPIC][/sIGPIC]



KG13 Control Grip Building

Control Stick and Rudder Design



 

i7 8700K, Asus Z370-E, 1080 Ti, 32Gb RAM, EVO960 500Gb, Oculus CV1

Link to comment
Share on other sites

Hi Thadiun,

 

I like your concept about building a solid solution based on the FFB electronics, however I would like to build a full scale control column with higher torque.

 

Would it be possible to connect even bigger motors with higher gear ratio to to the FFB2 electronics with some modding? I am still dreaming about 50Nm :)

 

 

I'm building a full scale column with mine ...but for a sailplane cockpit (I'm sisu1a on the Condor forum) which in this case is 30cm in pitch/25 in roll, a good bit shorter than what you probably want plus my grip will be really light. The modified MSFF circuit will be running 2.8A vs the stock output of 0.7A; so @24v this is ~70w. While it might be possible to go crazy with the gear ratio, 24:1 is already two reductions (4:1+6:1). Going much beyond that may run into inertia problems but conveniently the way MSFFII circuit is designed it is based on stick position vs motor position, so it would be pretty straight forward test to since motor position is inconsequential.

 

The most powerful motors in the Pittman 14000 range that could be run at full torque with this exact need to be ~70w. The 14206 is 75w (36.5 oz/in, and the 48v version has the proper resistance) so I'll use that as a reference for the thinking. At 24:1, this yields ~5.75Nm. If you wanted to experiment with higher ratios though, a systematic way would be to plan for 24:1 but run that through a third reduction to see what you can get away with to see if you can get it up to the torque you want. If it works without unintended side effects... score ...but share the magic numbers!

 

For reference, by my estimates (lacking motor specs, I'm comparing to the closest motor from Pittman which is probably optimistic), the stock MSFF is <0.4Nm

 

There are also mods where people brute force two MSFFII's together, which would get you over 11Nm all things being equal. Man, I thought I wanted high forces... the glider I fly (SZD-59 Acro) ailerons really load up at higher speeds -set in concrete above 90kts, though most sailplanes have much lighter stick forces. I can see how warbird controls would req the crazy torque you want though.. mechanical linkages, big birds, high speeds, long levers etc. I was initially going for really high forces (and a full blown roll-your-own solution), but have scaled back my ambitions because perfect became the enemy of good :p

 

A luck would have it, I'm already waiting to hear back from Roland van Roy (the electrical engineer who cooked up that particular MSFFII mod) to see about running higher current with the same parts and asked if it's possible to run more current through it or possibly to beef it up further. It might just be a matter of bumping up the amp ratings of the MOSFETs and Shottkeys which are the most likely candidates to let the magic smoke out.

Link to comment
Share on other sites

With this Pittman motor that would mean a crazy around 1:200 gear ratio to land at 50Nm with a resulted output speed of 14RPM :P It doesn`t look good.

I would need a much larger motor to achieve this high torque, but then the FFB2 control board is the bottleneck.

 

I am a glider pilot in RL and I love Condor as well. Flying gliders in condor doesn`t require a very high torque indeed. But I would like to build a stick which can be cranked up for higher loads to fly warbirds as well.

[sIGPIC][/sIGPIC]



KG13 Control Grip Building

Control Stick and Rudder Design



 

i7 8700K, Asus Z370-E, 1080 Ti, 32Gb RAM, EVO960 500Gb, Oculus CV1

Link to comment
Share on other sites

Hi! I am new to the forum and joined it specifically for partispating in this project.

 

I think seperating the input and output boards and combining them using usb hub is the best option.

since even a kid can make an input device but its way harder for making ff device.

 

since usb hid ff device needs to have atleast one axis input,lets make a simple circuit that has one potentiometer as input and >3 axis force feedback output.

 

lets do this in arduino to make it simple.

 

for the rest of the inputs,people can combine it with seperate input device of their choice be it diy or mass produced(as described in diagram)

 

Atleast we have all reached a general consous that the device needs to be atmega32u4 based.

 

I suggest we concentrating on building a device that output pwm signal for following

-2 for joystick

-1 for rudder

-2 for each throttle(since majority of aircrafts are dual engine in dcs)

-3 for chair tilts etc

 

so 7 in total.

 

Are we ok with that?

https://imgur.com/a/Hu3G4

jxEiwzv.png


Edited by Raj
link didn't work
Link to comment
Share on other sites

Hi

I am not sure that I understand what you are trying to archive.

By using an USB-Hub:

do you want to use two device classes INSIDE the controller?

That is possible but not very easy as the 32u4 is to slow to host one FFB and one HID device.

 

If you are planning in using two separate MCU than only the first part is of interest as a normal Joystick device is easy to do and has nothing to do with a FFB device.

 

The second part about axis is also not clear to me.

Do you want to mount Motors on all axis?

1. Direct input only supports 2 axis per PID / HID Device.

2. DCS has no support for Throttle FFB.

3. I am not sure if Pedal FFB is implemented in DCS (or any sim for that matter)

 

now for some info’s:

 

the Test Device (Big Block) that I have uploaded supports:

 

2 FFB axis 16bit (x/y Stick)

6 additional axis 16bit (Rudder, Throttle, ...)

32 Buttons 1bit

2 Hat switches 8directions

 

that is also the maximum supported number of Functions for Windows Devices.

DCS is able to address more Axis/Buttons but I think we should keep it compatible

 

Greetings

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

I am not sure that I understand what you are trying to archive.

By using an USB-Hub:

do you want to use two device classes INSIDE the controller?

That is possible but not very easy as the 32u4 is to slow to host one FFB and one HID device.

 

If you are planning in using two separate MCU than only the first part is of interest as a normal Joystick device is easy to do and has nothing to do with a FFB device.

 

The second part about axis is also not clear to me.

Do you want to mount Motors on all axis?

1. Direct input only supports 2 axis per PID / HID Device.

2. DCS has no support for Throttle FFB.

3. I am not sure if Pedal FFB is implemented in DCS (or any sim for that matter)

 

now for some info’s:

 

the Test Device (Big Block) that I have uploaded supports:

 

2 FFB axis 16bit (x/y Stick)

6 additional axis 16bit (Rudder, Throttle, ...)

32 Buttons 1bit

2 Hat switches 8directions

 

that is also the maximum supported number of Functions for Windows Devices.

DCS is able to address more Axis/Buttons but I think we should keep it compatible

 

Greetings

MetalGear_Honk

 

 

Oh, what I meant to say was, it would be miles easier to implement 2 separate USB device or 2 separate microcontrollers handing different tasks but both connected to same hub just like Razer death stalker keyboard.

 

The keyboard is controlled by a microcontroller different than that controlling the screen and macros button... But both share the same use hub

 

My suggestion is, let's make a USB module solely dedicated to outputting force feedback data

 

And yeah, all axis of because autopilot changed throttle position for you, this will take the system support not only dcs but airliner Sims... To bad that windows will not support it, according to you... Since windows can output 2 axis only.


Edited by Raj
Link to comment
Share on other sites

Hi

I have updated the FFB Software.

For better testing it is now able to use X and Y Axis

and the 32 Buttons.

for the axis I have uses 4 Daisy chained Shift Registers

PORTB4 = load = Pro Micro pin 8

PORTB5 = Data1 = Pro Micro pin 9

PORTE6 = clock = Pro Micro pin 7

 

for the Axis I use the internal ADC on

ADC7 = X Axis = Pro Micro pin A0

ADC6 = Y Axis = Pro Micro pin A1

 

I will change that to an 16bit ADC as soon as I get a new one.

(Kids and Microcontroller don't mix well)

 

[ATTACH]181475[/ATTACH]

 

If someone is Interested change of Hardware inputs can all be done in the "GetNextReport" Function

Changing the ADC can be done in the "einLesen" function

 

I haven’t changed the PWM or direction Pins. So these will work as in previous Versions.

 

 

Another note:

It is NOT possible to program the FFB Device using the Arduino IDE.

The code generated is to slow.

And I am Still not sure if the ATMega32U4 can handle the Calculations needed for sinus Effects.

 

So if someone has a good way for Calculating Angles and sin Values with only Integers I am more than happy to integrate that in the source code.

 

Greetings

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

I have updated the FFB Software.

For better testing it is now able to use X and Y Axis

and the 32 Buttons.

for the axis I have uses 4 Daisy chained Shift Registers

PORTB4 = load = Pro Micro pin 8

PORTB5 = Data1 = Pro Micro pin 9

PORTE6 = clock = Pro Micro pin 7

 

for the Axis I use the internal ADC on

ADC7 = X Axis = Pro Micro pin A0

ADC6 = Y Axis = Pro Micro pin A1

 

I will change that to an 16bit ADC as soon as I get a new one.

(Kids and Microcontroller don't mix well)

 

[ATTACH]181475[/ATTACH]

 

If someone is Interested change of Hardware inputs can all be done in the "GetNextReport" Function

Changing the ADC can be done in the "einLesen" function

 

I haven’t changed the PWM or direction Pins. So these will work as in previous Versions.

 

 

Another note:

It is NOT possible to program the FFB Device using the Arduino IDE.

The code generated is to slow.

And I am Still not sure if the ATMega32U4 can handle the Calculations needed for sinus Effects.

 

So if someone has a good way for Calculating Angles and sin Values with only Integers I am more than happy to integrate that in the source code.

 

Greetings

MetalGear_Honk

For trigonometry calculations,Maybe switch to arm based stuff?

Or lookup table inside of external memory like sd card or seconds device handing calculation and communicating over i2c/spit/usart

Link to comment
Share on other sites

Not to distract you, but did you see this cyclic build (https://forums.eagle.ru/showthread.php?t=188055)? It handles force trim mechanically, much the same way as the Huey.

 

-Erik

Thanks, that looks awesome, but I will have to dig through it, because from the video, I didn't understand all of it. xD

Definitely interesting, though. :)

Not "DIY", but...

 

bw_P0ih8_Mo_JAf_ZPzh_X3_RTVm03i_T7_Ttn_GKso4_ZUIk58_ZU.jpg

 

That's a very interesting approach, very curious how that would feel.

I do fear though that there might be some "noise" in the joystick movement, since it's lacking dampening.

But that Hall-sensor equivalent of omitting moving parts is a cool idea.

Can't really tell though if they concept would work better or worse than a "traditional" motor-based gimbal.

Link to comment
Share on other sites

Hi

I have updated the FFB Software.

For better testing it is now able to use X and Y Axis

and the 32 Buttons.

for the axis I have uses 4 Daisy chained Shift Registers

PORTB4 = load = Pro Micro pin 8

PORTB5 = Data1 = Pro Micro pin 9

PORTE6 = clock = Pro Micro pin 7

 

for the Axis I use the internal ADC on

ADC7 = X Axis = Pro Micro pin A0

ADC6 = Y Axis = Pro Micro pin A1

 

I will change that to an 16bit ADC as soon as I get a new one.

(Kids and Microcontroller don't mix well)

 

[ATTACH]181475[/ATTACH]

 

If someone is Interested change of Hardware inputs can all be done in the "GetNextReport" Function

Changing the ADC can be done in the "einLesen" function

 

I haven’t changed the PWM or direction Pins. So these will work as in previous Versions.

 

 

Another note:

It is NOT possible to program the FFB Device using the Arduino IDE.

The code generated is to slow.

And I am Still not sure if the ATMega32U4 can handle the Calculations needed for sinus Effects.

 

So if someone has a good way for Calculating Angles and sin Values with only Integers I am more than happy to integrate that in the source code.

 

Greetings

MetalGear_Honk

Attachment link didn't work

Link to comment
Share on other sites

ReHi

works for me.

maybe you are not allowed to download atachments? (new User?)

or you have a add Blocker installed?

 

here i Uploaded it again

JOYSTICK_Test.zip

 

MetalGear_Honk

JOYSTICK_Test.zip


Edited by 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

And I am Still not sure if the ATMega32U4 can handle the Calculations needed for sinus Effects.

 

So if someone has a good way for Calculating Angles and sin Values with only Integers I am more than happy to integrate that in the source code.

 

You can try this... it is based on http://www.mclimatiano.com/faster-sine-approximation-using-quadratic-curve/

 

Since you said only with Integers I had to scale the input and output, there are notes in the code. They could be rescaled to different ranges if you want. I also looked at some extensions for accuracy using different rounding, but this is the simplest version and is pretty close. The SinShortLP is a rough approximation, while the SinShortHP is a better approximation; not quite exact but close. See the link for more info.

 

All the notes about casting are because it is sensitive to the word extensions on multiplies and it uses right shifts for division, so you have to be careful with the typing.

 

Sorry, I did it in C# but you should be able to port it quite easily.

SinIntegerApproximation.txt

Link to comment
Share on other sites

Hi

Thanks for the Formular. i will look into it as soon as i get back to my Test Lab.

 

now that we are making some progress:

has somebody else build a test setup?

 

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

MetalGear_Honk do you have any plans to open source your Force Feedback code?

 

I'd be glad to work on it to transfer the code for Arduino platform, so it can be easily adapted for non-electronics enthusiasts? I still have flashbacks of Atmega programming and dozens of wasted AVRs during beginning of my electronics adventure, and Arduino has huge advantage - it can be plugged and programmed with just an USB cable.

 

I have some designs for rudder pedals and joystick gimbals, but adapting them for force feedback is another chunk of work.

 

As software is about 100x more difficult than hardware, I'd work on it only when having working software prototype. No hardware first - right now I'm stuck with another project's almost 1000 USD hardware and no working software in near future. That's incredibly frustrating and I don't want to repeat this error.

 

Best,

Avat

Link to comment
Share on other sites

Hi

Thanks for the Formular. i will look into it as soon as i get back to my Test Lab.

 

now that we are making some progress:

has somebody else build a test setup?

 

MetalGear_Honk

 

 

You're welcome.

 

 

I wasn't completely happy providing it without really describing why it works. As well, my conversion to int was a little clumsy, so I did some more digging.

 

 

Unfortunately the original derivation was at

http://www.devmaster.net/forums/showthread.php?t=5784 but is no longer available. It is based loosely on a Taylor series I think; there is an explanation of an alternative method at http://www.coranac.com/2009/07/sines/ which makes reference to it.

 

 

I did, however find a different implementation already done in fixed point at http://www.console-dev.de/2009/07/06/sine-approximation-with-fixed-point-math/ It was only the low precision version, and had some redunant conversions, so I cleaned it up and it's attached.

 

 

F32SinHP.txt

Link to comment
Share on other sites

  • 4 weeks later...
has somebody else build a test setup?

 

I'm certainly keen to but have no idea where to start. Being a software guy I'm sure I have expertise that could well be appreciated but not being much of a hardware guy I'm struggling to even get off the ground.

 

I've bought several small motors and a number of potentiometers along with a few Arduino's and Teenceys and things. While I've been able to program the PCB's and basically get them doing as I intended I just couldn't find a way to actually assemble the test rig itself so never really got very far.

 

Since then I've moved into a small apartment and no longer have access to a workshop but if you're able to point me to a guide or something I may well be able to order parts online then head to a maker space or something. Basically I'm really keen to get stuck into things but am struggling to get off the ground.

 

Any directions would be most appreciated (: (:


Edited by Slartibartfast
Link to comment
Share on other sites

  • Recently Browsing   0 members

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