Sticky Notes

This blog is officially closed. Do check out the new blog at http://www.utmrobocon.com

Thursday, June 9, 2011

Fuzzy Logic Controller for Motor Speed Control

Basic Setup
Motor speed control is the most important thing in navigation aside good feedback sensors. Here, the fuzzy logic controller is discussed to control the speed of motor.

Basic setup for this controller is a Vexta Brushless motor and a rotary encoder with 500 pulse per revolution. The controller output is actually the pulse width modulation duty cycle for the brushless motor.

The block diagram for the whole system is a position controller, fed into a fuzzy logic controller as speed control and then fed into an integrator before feeding into the vexta motor PWM.

Fuzzy Logic Controller 
To design this fuzzy logic controller, two inputs are needed; the error of speed and the derivative of error of speed. Then rules is developed to decide on the amount of "acceleration" to be fed into the integrator.

A 5 X 5 matrix rule is used to decide on amount of integration. These are few examples:

* IF desired speed to much more than actual speed, AND IF acceleration is zero, THEN integrate more positive value.
* IF desired speed is much less than actual speed, AND IF acceleration is negative, THEN integrate with less negative value.
* IF desired speed is equal to actual speed, AND IF acceleration is zero, THEN integrate with zero value.

A complete list of rules is setup and the typical fuzzy logic controller is designed. Some basic block are the fuzzifier, implication, inferencing, and defuzzifier.

Result
The fuzzy logic controller was successfully implemented to control the speed of a vexta motor. The motion profile is depicted in the diagram below.

Figure 1: Data logged using PIC and MATLAB via RS232 connection.

Recommendations
* The controller will give the desired speed but the acceleration and deceleration profile is not really smooth. Better controller is needed to have a straight ramped acceleration and deceleration profile.
* This controller will give minor pole near the imaginary axis (seen from the oscillation at speed steady state value). This might also caused by quantization error from the encoder. Better filter is required to filter out this noise.

No comments:

Related Posts Plugin for WordPress, Blogger...