Open FFBoard

After the old powerstep based motor controller i improved the idea of an open source force feedback interface for direct drive wheels and other simulation interfaces with high torque demand in a modular way

OpenFFBoard consists of a simple STM32F407VG based usb interface with defined pins for SPI, buttons, leds, encoder input, CAN bus and more.

Take a look at the full development story on hackaday.io

Firmware and hardware design ressources are available on Github

A TMC4671 based motor driver which is also developed in this project as a reference can drive 2 phase steppers, 3 phase servos and DC motors at up to 60V DC and over 20A.
It has an active anti backfeed diode circuit for use with power supplies and a brake resistor mosfet included. It also features highly accurate current sense amplifiers and voltage sense dividers.
An onboard 5V DC converter can supply the hardware directly from the motor power supply.

The TMC4617 can also use external BISS-C and Magntek encoders by forwarding positions via SPI from the FFBoard since firmware 1.8. This causes a lot of additional load on the microcontroller so it is not ideal but it seems to work pretty well and reliably.

Additionally the ODrive and VESC via CAN and a PWM output with PPM, 0-50%-100% centered, pwm+dir and dual pwm (different pins per quadrant) are supported.

Hardware v1.2
Update: Servos
Presentation & Demo

Short video in action:

OpenFFBoard Assetto Corsa FFB Test raw from Gigawipf on Vimeo.


Open FFBoard Simplemotion V2 support

With having basic support for Granites Simplemotion V2 protocol users have more options of motor drivers again.

While the project is best uses with our custom designed TMC4671 based driver the Granite Ioni drivers were in the past used for Simucube V1 / OSW kits and also provide good quality force feedback with high compatibility.

The drivers use RS485 instead of CAN or SPI so it has to use the less reliable uart peripheral of the STM32 with new pins but it still works perfectly fine at 1kHz single with a single axis by using the fast cycle update. The regular protocol has a high overhead and does interfere slightly so it should be avoided at the moment and is only used for the setup and getting specific data from the driver.

Load cell amplifiers

In simracing pedals load cells are often used for the brake pedal.
They provide a realistic feeling and like a real hydraulic brake the signal increases with the force applied. A challenge in DIY setups with load cells is to amplify and shift the tiny signal from the load cell.
Depending on the type of load cell it is either a full wheatstone bridge creating a differential signal or in the case of 3 wire load cells just half of the wheatstone bridge which is basically just a resistor divider changing the ratio with the force applied to the strain element.

Using 3 wire load cells alone on a differential amplifier requires generating the other side as a reference voltage with a static divider. In some applications a 1k/1k divider can be enough but then an offset either positive or negative is to be expected.

Another solution is to use a variable divider as the reference. This is what i chose for the following module. It features an INA333 and a trimpot for the gain and also one for the offset to fine tune the loadcell depending on preloading and manufacturing variations.

The module can be purchased on Tindie and schematics are available on GitHub

Floppymusic Box 2.0

I was approached to provide a floppymusic setup for an upcoming show but the issue with my own setup is that it got so many changes over the last years and was never made to be stable that it would never survive shipping.

So i decided to make a new one an fix all the problems the old setup has. Most importantly the drives are now mounted with screws instead of velco and the power supply cables are much more reliable now.

Another important change is the addition of shift registers to enable each drive when playing a note and disable it when unused. This blinks the leds and reduces power consumption a lot when used with external stepper drivers

Tiny DD FFB wheel

While working on SinCos encoders i made a quick test setup from an AS5115 encoder chip and a 2204 drone motor.

Once that worked well i got the idea to use it as a steering wheel and it actually is pretty high fidelity.
About 1:8 to 1:10 scale and reacts insanely fast and precise. You feel the curbs and any movement. But if the torque gets cranked up too high the motor will definetly get very hot without cooling.

HP 5082-74xx 7-segment display revived (70s tech)

Recently i found some of these rare 5 digit 7-segment modules from the 70s.

Once found in calculators and watches these tiny GaAsP LED modules amaze with their tiny, crisp, deep red segments with a whole digit not even 3mm tall.

I have created a simple breadboard friendly interface board featuring current limiting resistors and 2 shift registers (one for anodes and one for cathodes) for simple interfacing with modern microcontrollers.

Design files are found on the hackaday.io project page.


Hybrid stepper motor controller

OHSC will be a hybrid stepper motor controller using foc techniques based on the modern powerstep01 driver and a powerful stm32f4 microcontroller.

The goal is to develop a stepper motor controller that can operate at stall conditions smoothly the same way expensive industrial servo motors can.
A high resolution rotary encoder with sub microstep resolution is used to provide feedback.

The development will also be documented on hackaday.io (https://hackaday.io/project/163904-ohsc-hybrid-stepper-motor-controller)

The initial idea came from researching direct drive steering wheels for racing simulators. Servo motors are often used by simracing enthusiasts as they provide accurate and strong force feedback but also come with a hefty price tag.
When sacrificing some smoothness a stepper motor can be bought for a fraction of the price but i had to realize that there are no cheap modern hybrid stepper drivers available at all that would be fit for the task.

Another use case of hybrid steppers can be in robotics and automation applications where projects like odrive already allow hobby 3-phase motors to be used. Sometimes a more powerful stepper might be the better or cheaper choice

The first goal is to design a driver able to create some smooth torque and a force feedback application based on usb hid/pid.
This will certainly please the simracing community and hobbyists looking to get into force feedback for cheap.

First tests of heavy load movement. Notice that no loud grinding and step skipping occurs.

The basic principle of the current prototype is a foc loop that permanently adjusts the current electrical position by sending bursts of step impulses in stepclock mode. This allows to prevent the motor from skipping full steps and always provide the maximum amount of torque.

DPS5005 Power Supply

Based on the popular DPS5005 Module i have created a 3D printed power supply (Thingiverse STL).

These modules can also be controlled via usb with modbus. A python example is available on my github.
This allows for automatic measurements and live readouts.

A 32V old kodak power supply is fitted in the bottom of the case. For the fan a standard DC-DC buck converter was used.

The temperature stays reasonably cool when used with a fan while running at over 100W . The limiting factor here is the power supply and the 5A limit of the module. These modules should not be used without a bit of thought about airflow as the switchig mosfets can get very hot in enclosed spaces.

Musical midi siren

I wondered why i have never seen anyone making music with a siren so i had to try it myself.
It was started when i browsed thingiverse and found a nice little siren model and i had all the parts i needed around.

The interface is based on an arduino micro as a midi interface to generate a ppm signal to use with hobby escs based on incoming notes.
If the esc and motor respond quickly enough and hold the speed well it can be used as a (probably terrible) instrument.
I was pretty surprised how well it actually workded and expected it to be much worse.
The speed is not really regulated other than by the calibrated esc and a fixed voltage source and the spin up and down time depends on the inertia of the rotor and how good the esc can brake.
Fast quadcopter escs and a strong motor are preferred for this.
Some escs offer closed loop speed controlling which would be even better.
I have used a cheap racerstar lite 20A esc running blheli and a spare 2204 multistar elite 2300kv motor.

Diatone 250 build

This is my first real quadcopter build.

It is based on the Diatone 250 frame, some Multistar elite 2204 2300kv motors and the naze32 flight controller.

DSCF3916

The Naze32 rev5 does not work with sbus without an additional inverter so i first tried to just use pwm.

Even without flying i noticed an annoying delay in the throttle response so i tried to use sbus anyways and bypassed the inverter in my x8r.

DSCF3917I will still have to change the flight controller later as i want to use s.port telemetry, which won’t work with the naze32 rev5.

To save a bit weight it should also be a good idea to clean the wiring and switch to the smaller frsky x4r receiver.

Pretty much finished now:DSCF3920Even with stock pids it hovers fine: