The goal of this project was originally to create an open source motor driver focussed on racing simulation controls.
There are many different motor drivers but not many of them were really suited for the task AND hobby budget friendly.
It makes sense to focus this project on a simple open source force feedback interface as this is the part where the community lacks a good and open solution.
Therefore the main goal will be to develop a universal FFB controller (Open FFBoard).
While the first prototype (OHSC) did kind of accomplish this goal it was clear that for reliable use and high accuracy the powerstep01 was not suited. They sometimes locked up or died as they were not used as intended and only provided 7 bits of resolution. I realized there is no way to reach the goal of reliable and high fidelity torque control with this device and there is a reason servo drivers are expensive.
I was pointed to the Trinamic TMC4671 motion controller which would do everything needed directly in hardware and can be configured for steppers, 3 phase servos and DC motors simply via spi with the same hardware. The TMC4671 had as few issues in the first revision but will be fixed soon Trinamic promised me. Therefore i am confident that it should make things more robust and simpler on the software side if the task of controlling the motors is completely done by a separate chip.
Building an external 4 half bridge power stage is more complex and expensive but will allow for much better cooling and higher currents.
The goal remains to create a budget friendly kit but it is clear that the motor driver will get more expensive. (Think ~30$ parts OHSC -> ~50$ BOM cost TMC board + more work. We need 10 mosfets and drivers... etc.). From my calculations it should still be possible to make a kit like this below 100$ :)
The current idea for the project will split into two main parts:
An open source Force Feedback interface board with an STM32F411 for usb communication and control.
This will support different motor drivers and will be modular. You can use your own motor driver or control schemes by writing c++ classes for this controller. The main software parts will be the motor control part for encoder input or force output and the control interface which will be USB HID for most users but could also be changed into a class that outputs PPM values depending on the steering wheel position and receives force values back to pass to the motor interface.
For example a VESC or a commercial servo driver could be made compatible.
A reference motor driver based on the TMC4671. This will be the intended motor driver for a direct drive wheel but can also be used as a standalone motor driver or development board for arduinos and different purposes. The STM board will be optimized for this motor driver.
The next step is to test if the TMC4671 fits this goal and which motor drivers are a good alternative.
This will be interesting and i will keep you updated. The new boards are almost finished and i am waiting for Trinamic to release the chip soon.