Close

Update on FFB

A project log for Open FFBoard

A modular and open source force feedback interface and motor driver for DIY wheels and controllers

yannick-gigawipfYannick (Gigawipf) 06/09/2019 at 11:370 Comments

One main goal of this project is to make a force feedback wheel kit.
Therefore usb HID gamepad and PID must be supported.
Also a braking resistor to dissipate any generated power for quick movements was added with an anti backfeed circuit.

Reports are sent at 1khz which makes for a very smooth steering experience. (Torque resolution still only 7 bits which makes ffb a bit less smooth...)

Implementing a basic HID gamepad is relatively easy, making it FFB capable a whole other story. 
At least with the ST HAL library it is for example not possible to even send HID feature get requests.
This had to be patched in and the whole HID descriptor with PID is in the kilobyte range.

After many days of studying the 20 year old specification and sparse examples about PID basic FFB is now supported.
Strangely some programs and games seem to not send the "Actuators Enable" command after sending a reset but instead a stop. But some do send a more sensible "stop, reset, start" sequence.
Well... thats a story for another time.

The main part of the current log is that most games use constant force, friction and spring effects and these are currently implemented in a simple way and work for assetto corsa for example nicely.

The motor driver of the current prototype is still the powerstep01 but sadly two of them burned out after locking up. SPI commands can not be sent too quickly and the current resolution is limited to 7 bits. This might be fine in a slow robotic arm but not that great for FFB and any quicker applications that require precise torque.
Therefore the plan is to use a more capable motor drive solution. This will get more expensive but opens up some possibilities like the use of 3 phase servos and steppers with the same hardware and more accurate torque control and better heat dissipation when using external power mosfets.

Here is a short video demo with a FFB test and a scene of me trying to drift in assetto corsa without a shifter:


Additional analog axes and buttons can be added via the inputs. Up to 16 buttons and 6 additional analog inputs are present for shifters, pedals and other controls. Maybe even add a thrustmaster wheel with SPI buttons to the free SPI port?

Compared to the Thrustmaster TX this has of course still lower torque resolution and fewer base effects, but feels much sharper and very strong if you turn up the power. I would say it comes close and should be able to surpass the consumer wheels later maybe even for a lower price.

Next Steps: persistent user configuration, code cleanup, new motor driver.

Discussions