A Force Feedback Yoke based on 775 DC motors and an Arduino (SparkFun) Micro Pro microcontroller. Probably the most feature complete and low cost implementation anywhere!
This is a fork of Gagagu Arduino FFB Yoke 2.0 project. The goals of this fork was to lower total cost, add new features, achieve a smaller footprint, use cheaper and use more accurate AS5600 magnetic encoders and maximize pitch travel distance.
All build guides and documentation for the 3D printed parts, electronics and software are in the Wiki section!
- New CAD design with focus on easy printing and assembly.
- New PCB design
- Magnetic AS5600 encoders featuring 12 bit accuracy, saving cost, space and weight.
- Removed the planetary gear in roll (x) axis which introduces backlash (slop), friction and considerable weight increasing mass and inertia. Replaced with a 56T pulley, 12T motor drive. That gives a 4.7 gear ratio which is quite enough for roll forces and provides a more nimble, lively feel than the old design.
- Reduced footprint (400 x 275 x 100 mm).
- Pitch travel up to 165 mm with 800 mm belt on pitch (Y) axis.
- No 74HC165 mux in main PCB.
- Default centering Spring force (can be disabled) when non-FFB games are played.
- Configurable pitch travel range in the settings tool.
- Configurable max velocity setting to stop overspeed on unloaded (i.e hands off) yoke. When there are strong forces and not holding the yoke it can get a high speed that when slamming into a physical end stop may damage the yoke itself (or you). This configurable setting detects high velocity and brakes the motor until speed decreases. If hands are on yoke and kept in control, the FFB forces are in full unhindered effect.
- Yoke controller is remixed so that only 3 mm brass thread inserts is used. The mount bracket is updated for strength.
- Calibration method is completely revamped. It runs automatically on first start to find the endstops (IR sensors) at the extremes of the axis travel. It can also be manually started by a button at any time.
- The calibration data is stored in EEPROM and recalled on subsequent reboot. Data is read from EEPROM and as the encoder reads the absolute position directly, roll axis calibration can be fully restored instantly. The pitch axis, since the axis rotatates more than one revolution needs a reference and moves to the to the innermost IR sensor - and calibration is restored.
- Cable chain link. To prevent breakage of the cabling a chain link is used in the design. This will give all cables from the yoke handle and frame sensors a controlled bend characteristic with a big radius preventing acute bending and breakage.
- A nice looking 3D printed casing with plenty of cooling slots for ventilation is part of the design and fully integrated. The casing is split up into four parts plus the front and back panels which is split in two each, providing a fully printable design despite its large size. The parts are assembled with (printed) dowels and glued together.
The original yoke controller PCB and the main PCB from Gagaus's project can still be used, but @PeteDDD has graciously contributed new PCB designs of high quality that is now recommended.
A new settings tool written in Python and Qt6. It should also be cross platform compatible, e.g. Linux. untested ATM. The tool features a simplified and sleek experience and removes a lot of unnecessary settings. It features a new robust and fast serial protocol.
No 3D printed parts are the same from the Gagagu/jwryan4 project. Every part has been redesigned with focus on easy printing, strength, functionality and minimal footprint. The IR-based end-stop sensors are now integrated into the actual design in a way that need no careful positioning as before.
The firmware code is heavily modified and enhanced with new features and also updated for the new AS5600 encoders and a TCA9548 I2C mux. With as much optimizations as possible it was possioble to squeeze all the features into the Atmega32u4 28 KB Flash ROM of the Arduino Pro Micro with just about 0.8% space to spare. :)
The actual FFB effects are based on the FINO project and mostly identical to the original project. One addition is a configurable default centering Spring force in action when playing non-FFB games. For games that themselves handles standard FFB effects such as IL2 and DCS the yoke should work right out of the box.
Since MSFS and others do not have any FFB effects implemented we have to rely on external software to interpret telemetry data from the sim and create effects for that accordingly.
- XPForce which works for MSFS, Xplane, Flight Sim world, Prepar3D.
- FSForce Another tool for FSX, FSX-SE, P3D & FSW.
I am not affiliated with these softwares, nor is this in any way a comprehensive list, there may be other options. But these are the only ones I found at the time of writing. Let me know if you know of other programs and I will put them on this list. (Raise an Issue).
For easy assembly there is a number of options:
- A printable "bracket" that can be used to position the right rail correctly. The other parts will then be easy to postition relatively that rail or the edge of the board.
- Drill template (drawing) for the bottom board that can be printed in 1:1 scale and layed out on the board to easily position the components.
- The STEP file of the board with all (threaded) screw holes in the correct spots can be used to machine the board on a CNC router.
These method are described in the Wiki Build-Guide.
The design has some drawbacks that need to be taken in consideration.
- DC motors are not as efficent as brushless BLDC motors. They overheat sooner if pushed hard.
- There is more of a cogging sensation in the rotation of these motors than with BLDC (that can use anti-cogging algorithms in the motor drivers to counter the effect)
- The usage of planetary gears in the pitch axis introduces some minor backlash.
However, the motors (775 DC) and BTS7960 43A drivers are easy to find and come at a very low cost. BLDC motors and drivers are at the next level cost wise, and what we achieve with these components is pretty impressive! Just keep in mind the possible overheating problems and do not use strong forces sustained for a prolonged time as this can overheat the motors. I recommend using heatsinks on the motors and a fan controller that kicks in at about 40 centigrades. When you hear the fan power up, you know you are pushing it. That said, when flying normally with the aircraft properly trimmed this practically never occurs. Heatsinks, fan controllers and fans are all in the Parts List (see Wiki section).
I wish to thank @PeteDDD for invaluable help with professional level proof reading and for the new high quality PCBs.
If you want to use this project commercially please contact me.
Important
Use at your own risk. I am not responsible for any damage or injury to man or machine. Be careful when handling electric installations, electronics and mechanics. If handling electrical installation (230V) by yourself is not legal in your country or you feel unsure of your competence, take proffessional help!
The motors are quite strong and can cause serious injuries if not handled with great caution. The yoke handle can move very quickly when power is applied. Be aware of moving parts, belts and pulleys.



