Handheld Stabilizing Gimbal

The diagram above shows the circuit schematic I used in the design shown in the image below and the video shown to the right. The use of a breadboard to establish common VCC and ground rails enabled a compact circuit implementation that performed the required functions. This design used 9g servo motors to control the movement of the mechanical arm and the platform, and used an MPU6050 to collect acceleration values in the XYZ directions relative to the component. By using an MPU6050 library found on Arduino, I was able to use I2C protocol to communicate data directly. Using trigonometry and the acceleration data, I could find the pitch, roll, and yaw angles of the device. Finally, by inverse mapping these angles onto the servos, we can maintain the orientation of the platform to always be flat.

Exploring Attitude & Sensor-Based Feedback Control
I chose to create a stabilizing gimbal for 3 main reasons:
- To further develop my C++ and Arduino programming skills while using basic electronic components to build a functional device.
- To explore control systems, with sensor-based feedback control serving as an accessible starting point for learning.
- To improve my SolidWorks skills by designing practical, 3D-printed components with robust mechanical integration.
Considering different limiting factors such as budget and my overall interest in feedback control loops I decided on creating a stabilizing gimbal
Places for Improvement
Overall the device worked as intended, where the code would properly map the accelerometer data onto the two servos. There was minimal input delay between the two components due to the simplicity of the code, allowing it to quickly react to angle changes. However, there are some room for improvements.
- The 9g servos cannot provide enough torque to balance heavy objects, such as a GoPro. This could be fixed by using higher torque servos, which would require a rework of the mechanical arm and platform.
- The Arduino Uno allowed to make the device easily, but proved to be bulky in hand. An Arduino Nano could be used instead due to its smaller footprint; it could be embedded into the grip easily, making the device lighter.
- The orientation that the parts were 3D printed made integrating the servo arm and components difficult due to printing layer thickness not creating smooth cuts for docking. Printing components vertically could fix this design flaw, although it requires additional supports during printing.