S-Curve Motion Controller
This project is a S-curve motion controller which implements a second-degree S-curve acceleration algorithm. The motion controller can be used to control various types of systems including motors, laser cutters, and other technologies. The algorithm's defining point features an exponentially increasing acceleration period, followed by a period of no acceleration or constant velocity, and finally an exponentially decreasing deceleration period. Compared to a trapezoidal motion algorithm that uses linearly increasing acceleration and deceleration, the S-curve motion controller has less of a jerk which results in smoother motion overall. This design is intended to accept positional inputs from the user which is run through the algorithm and then converted to pulses in a Pulse Width Modulation code block. The results from the PWM can be fed into various devices to reflect the desired motion. Both the algorithm and PWM will be created in C code and implemented on a PYNQ FPGA board and a motor will be used to test the finished product. Tests, information, and the results of the project will be displayed on a poster board during the conference in addition to demonstrations of the motion controller.