Speed control of BLDC motor using H Infinity Controller in MATLAB
Introduction
We are going to explore how to implement an H Infinity controller for the speed control of a BLDC motor. The simulation model of the BLDC motor control consists of a controlled voltage source, a voltage source inverter, a BLDC motor, a gate driver based on Hall sensors, and measurements of the BLDC motor such as stator current, stator back EMF, speed, and electromagnetic torque.
Collecting Data for BLDC Motor Identification
To apply the H Infinity controller, we first need to find the transfer function model of the BLDC motor. Since we do not have the transfer function model directly from the simulation, we need to collect input and output data.
Simulation Setup: Provide an input to the controlled voltage source and collect the speed data of the BLDC motor.
Simulation Parameters: Set the initial voltage to 300V, and at the time of one second, change it to 500V. Simulate the model for two seconds.
Data Collection: After simulation, collect the input (control voltage) and output (motor speed) data available in the workspace.
Identifying the Transfer Function of the BLDC Motor
Import Data: Import the collected input and output data into the MATLAB System Identification Toolbox.
Sample Time Calculation: Calculate the sample time as the total simulation time divided by the number of samples.
Estimation: Use the toolbox to estimate the transfer function of the BLDC motor. For this example, set the number of poles to two and the number of zeros to one.
Designing the H Infinity Controller in MATLAB
Create the Plant: Using the identified transfer function and disturbance inputs, create the plant model in MATLAB.
H Infinity Controller Synthesis: Apply the H Infinity controller synthesis command to generate the controller for the plant. The controller is represented as a transfer function or state-space model.
Implementation: Use the obtained transfer function of the H Infinity controller in the Simulink model to control the speed of the BLDC motor.
Simulation and Results
Simulink Model: Incorporate the H Infinity controller into the Simulink model. Measure the actual speed, compare it with the reference speed, and process it through the H Infinity controller.
Simulation Execution: Run the simulation and observe the results.
Result Analysis:
Input Voltage Variation: Observe how the input voltage changes with respect to the reference speed command.
Speed Response: Initially, set the speed to 3000 RPM. The motor reaches this speed at 0.2 seconds without any overshoot. When the reference speed changes to 2000 RPM at one second, the motor reaches the new speed by 1.3 seconds.
Electromagnetic Torque and Current: Note the variations in electromagnetic torque, stator current, back EMF, and line-to-line voltage of the motor during the speed change.
Conclusion
After designing and implementing the H Infinity controller, we observed a smooth response where the controller tracks the reference speed command quickly without any overshoot or undershoot. This demonstrates the effectiveness of the H Infinity controller for BLDC motor speed control.
Comments