The system consists of a PM DC motor that is driven using a current driver. The current driver has a PI controller that allows for a given current reference to be tracked. A second controller was designed that governs the current driver to allow for either position or velocity reference tracking. The motor's angular position was measured using an optimal encoder.
To be able to have the system fully operational my team had to perform tasks that can be broken down into three main categories
The first phase was to perform system ID on the the motor so that we can understand its dynamics. From there we generated a Simulink model that allows us to eventually use to test our controller against before actual implementation. The Simulink model was compared against experimental data to verify our ability to predict the motor's behavior. After having a functional Simulink model we moved onto controller synthesis.
We designed two controllers. One controller for position control and another for velocity control. Both controllers were designed using loop shaping methods. Using the Simulink model, we ran the controller to verify the system behaves appropriately without violating system constraints. This model based design allowed for rapid synthesis and testing. We were generating and testing controller designs on the order of 5 minutes.
After settling on a controller design, we implemented the controller on the physical system. To do this, we used a NI myRIO and programmed it using LabVIEW running at 200 Hz. The controller gains were slightly tuned to the actual system to provide lower overshoot while maintaining the settling time.
The end result of the entire project yielded the following products:
A nonlinear Simulink model that accurately predicts all of the electrical and mechanical components
Two controllers for the DC motor, one for position and one for velocity
A labVIEW program that implements the controller and sensing schemes