Sunteți pe pagina 1din 9

Control de velocidad de un motor DC mediante lógica borrosa

La utilización de lógica borrosa o difusa (“fuzzy”) para el control de procesos permite


abordar este tipo de problemas desde una perspectiva más "humana" ya que las reglas de la
lógica borrosa son enunciados fácilmente comprensibles por una persona ajena a la teoría del
control y su ajuste es más intuitivo que en el caso de controladores más "puros" como el
PID. A lo largo de este trabajo se abordará el control de velocidad de un sencillo motor DC
mediante lógica borrosa utilizando sólo un puñado de reglas.

Planteamiento del problema:

Se parte de un lazo de control estándar PID:

Elaboración del Código:

 Ecuaciones físicas del sistema


Primeramente se deben declarar las variables físicas del sistema, sabemos que los motores
tienen una representación o una comparación a través de un sistema eléctrico de esta
manera definimos las variables de dicho circuito.
Un actuador mecánico muy difundido es el motor de CC. Provee directamente movimiento
rotacional y, adecuadamente acondicionado, movimiento traslacional.
El circuito eléctrico de armadura y el diagrama mecánico rotacional, se muestran en la
figura:

Para el ejemplo se consideraron los siguientes parámetros:


 Momento de inercia del sistema
J = 4.228E-6 (kg.m^2/s^2)
 Coeficiente de roce
b = 4.5077E-6 (Nms)
 Constante de fuerza electromotriz
K=Ke=Kt= 0.0374 (Nm/Amp)
 Resistencia de armadura
R = 5 (Ohm)
 inductancia de armadura
L = 3.75E-6 H
Declarando las variables en Matlab

 Espacio de Estados
La descripción del sistema de estados en el dominio temporal puede obtenerse definiendo las
variables físicas velocidad de rotación (t) · q y corriente de armadura i(t), como variables de
estado, la tensión de armadura v(t) como entrada y la velocidad de rotación como salida:

Espacio de estados para el control de posición de motor DC en Matlab:

Ecuación de espacio estados por el comando SS:

Se discretiza el modelo de espacio de estados, es decir se convierte el modelo continuo a un


modelo discreto en el tiempo.

Con el modelo discreto es necesario usar variables auxiliares.

Para poder simular el motor es necesario crear vector de tiempo.


CONTROL FUZZY O CONTROL BORROSO

Para realizar el controlador se plantea como variable de entrada al mismo el error de la


velocidad de rotación (deseada - actual) en revoluciones por minuto (RPM) y como
variable de salida, el incremento (una especie de derivada) del ciclo de trabajo de la señal
PWM que alimenta al motor DC. Se definen unos sencillos conjuntos borrosos asociados a
cada una de estas variables:

 Definición de las Reglas

Mientras que las reglas de lógica borrosa que se van a utilizar son las siguientes:
SI(error ES error negativo) ENTONCES salida ES decrementar velocidad
SI(error ES sin error) ENTONCES salida ES mantener velocidad
SI(error ES error positivo) ENTONCES salida ES incrementar velocidad

Como puede apreciarse, las reglas son sencillas y fáciles de ajustar, de recordar y de mantener.
Además, el hecho de que la variable de salida sea un incremento en lugar de un valor
absoluto simplifica enormemente las reglas y los conjuntos.

Creando el controlador en lógica Difusa en Matlab; creando la estructura del sistema de


inferencia fuzzy.
 Diseño de las regiones de Pertenencia

o Variables de Entrada:

Posición: El comando “addvar” agrega variables al sistema de inferencia fuzzy.

Velocidad:

o Variable de Salida:

 Generación de la Matriz de Reglas

El comando “addrule” es comando de añadir la matriz de reglas al sistema de inferencia.


 Programando la etapa de simulación del motor en el tiempo
Almacenando los datos obtenidos de x en los valores de velocidad (vel_dat) y de posición
(pos_dat).

“Evalfis” Realiza el cálculo de inferencia del sistema; x es la ecuación del espacio de estados
que nos permite simular el sistema.

 Graficando las regiones de pertenencia


Graficando las regiones de pertenencia, Figure(2) y las salidas del controlador difuso,
Figure(3).

 Graficando las salidas del controlador


difuso
Respuesta al impulso del motor sin compensar:
Ejemplo 1:
Supongamos que queremos alcanzar una velocidad de 3000 RPM y que la velocidad actual
medida por el sensor de velocidad es de 2000 RPM, el error será, por tanto de 1000 RPM
(consigna - valor real). Lo primero que se hace es “borrosificar” o “fuzzyficar” esta lectura:

Para la expresión “(error ES error negativo)” se calcula el grado de pertenencia de 1000 RPM
al conjunto borroso “error negativo”, para la expresión “(error ES sin error)” se calcula el
grado de pertenencia de 1000 RPM al conjunto borroso “sin error” y para la expresión
“(error ES error positivo)” se calcula el grado de pertenencia de 1000 RPM al conjunto
borroso “error positivo”:

Como se puede ver:


μerror negativo(1000)=0
μsin error(1000)=0
μerror positivo(1000)=1
Por lo tanto, para la salida:
μdecrementar velocidad(ΔPWM)=0
μmantener velocidad(ΔPWM)=0
μincrementar velocidad(ΔPWM)=1
A continuación se calcula mediante el método de la media ponderada de centros, el valor de
la salida:

ΔPWM=0⋅Cdec. Velocidad+0⋅Cmant. Velocidad+1⋅Cinc. Velocidad0+0+1=Cinc. Velocidad=20

En este caso el resultado el directamente el centro del conjunto borroso “incrementar


velocidad”, que vale 20, con lo que incrementamos la velocidad.

Ejemplo 2:
Supongamos ahora que queremos alcanzar la misma velocidad de 3000 RPM y que la
velocidad actual medida por el sensor de velocidad es de 3050 RPM, el error será, por tanto
de -50 RPM (consigna - valor real). Lo primero que se hace de nuevo es “borrosificar” o
“fuzzyficar” esta lectura:

Se calculan los diferentes grados de pertenencia:


Como se puede ver:
μerror negativo(−50)=0.5
μsin error(−50)=0.5
μerror positivo(−50)=0
Por lo tanto, para la salida:
μdecrementar velocidad(ΔPWM)=0.5
μmantener velocidad(ΔPWM)=0.5
μincrementar velocidad(ΔPWM)=0

A continuación se calcula mediante el método de la media ponderada de centros, el valor de


la salida:

ΔPWM=0.5⋅Cdec. Velocidad+0.5⋅Cmant. Velocidad+0⋅Cinc. velocidad0.5+0.5+0=−10

Un valor de -10 en el incremento del PWM, disminuye dicho valor y, por tanto, hace que se
disminuya la velocidad del motor.

En condiciones ideales, con una entrada de error de 0 RPM tendríamos:

μerror negativo(0)=0
μsin error(0)=1
μerror positivo(0)=0
Por lo tanto, para la salida:
μdecrementar velocidad(ΔPWM)=0
μmantener velocidad(ΔPWM)=1
μincrementar velocidad(ΔPWM)=0

Y haciendo la “desborrosificación” o “defuzzyficación” nos sale:

ΔPWM=0⋅Cdec. Velocidad+1⋅Cmant. Velocidad+0⋅Cinc. Velocidad0+1+0=Cmant. Velocidad=0

Un incremento del valor PWM de 0, con lo que no cambiamos la velocidad del motor.

Para dotar al sistema de un comportamiento más estable, en los sistemas reales, suele
tomarse también como entrada la derivada de la velocidad angular y establecer reglas que
hagan variar el PWM en función de esta otra entrada. En este caso, por simplicidad, se ha
optado por utilizar como entrada sólo la velocidad angular.

S-ar putea să vă placă și