More to come soon.
A custom two-axis force-feedback flight stick designed around brushless motors, magnetic encoders, belt reductions, and embedded motor control.
I started this project to build a flight stick that could actively generate forces instead of relying only on springs. The goal was to create a compact two-axis gimbal that could sense the stick position and use brushless motors to generate controllable force feedback.
The system combines the mechanical gimbal, timing belt reductions, brushless motors, magnetic encoders, motor drivers, and a microcontroller into one integrated system.
The flight stick uses a two-axis gimbal with a separate brushless motor controlling each axis. Timing belts provide a reduction between the motors and the gimbal, allowing the motors to generate stronger forces at the handle while keeping the overall system compact.
I designed a twist-snap retainer to secure each gimbal bearing within the enclosure. Curved locking tabs pass through matching slots in the side wall and engage behind it when the retainer is rotated, preventing axial movement.
This design eliminated threaded inserts and fasteners, reducing hardware and simplifying assembly. It also keeps the inside of the enclosure compact and flush, giving the gimbal enough clearance to move without interfering with hardware on the side walls.
The control system is built around an ESP32, two SimpleFOC Mini motor drivers, and AS5600 magnetic encoders communicating over I2C. The ESP32 runs closed-loop field-oriented control (FOC) for both CubeMars GL60 brushless motors, allowing motor torque to be commanded directly instead of relying on simple voltage or speed control.
Encoder feedback is used to continuously track the angular position of each gimbal axis, while PID control is used to calculate the corrective torque needed to produce the desired force-feedback response. The FOC loop regulates the motor's current vector relative to the rotor position, which provides smooth and responsive torque across both directions of motion. This makes it possible to generate programmable centering forces, damping, and other force-feedback effects based on stick position and velocity.
The first prototype was mainly used to test the overall gimbal geometry and see if the motors would work for force feedback. It also helped me figure out where the design could be more compact and what needed to change mechanically. After testing it, I realized the handle was too short to be comfortable and the motors did not provide enough torque for strong feedback. This led me to add a belt and pulley reduction in the next iteration to increase torque and improve the overall feel of the stick.