This project presents the design and implementation of a ball-balancing robot. The system is controlled by an FPGA instead of a conventional microcontroller, enabling faster processing and more precise control of the ball's motion.
This project focuses on building a ball-balancing platform controlled by a PID feedback system implemented on an FPGA. The objective was to keep a ball at a desired position by adjusting the tilt of a flat plate along two axes using stepper motors.
The system reads the ball’s position from the sensors and continuously calculates the control signals to correct any errors. The PID controller, written in SystemVerilog and using fixed-point arithmetic, was tuned to achieve smooth and stable motion with minimal overshoot.
The hardware consists of a VSDISPLAY touch screen mounted on the platform, reading the ball’s position on it, a TSC2046 touch screen controller that converts the touchscreen’s analog signals to digital data via the SPI protocol, the FPGA serving as the main control unit, and three NEMA17 stepper motors driven by TMC2208 motor drivers.
The completed system successfully maintains the ball near the target position and responds rapidly to external disturbances. This project demonstrates the capability of FPGA-based real-time control systems and provides a foundation for more advanced control applications.
