informe control

17
1 PROYECTO DE CURSO SISTEMAS DE CONTROL DIGITAL 23419 2012 I Profesor PhD. RICARDO ALZATE NATHALY MURCIA SEPÚLVEDA Código: 2072078 SAUL ENRIQUE GONZALEZ AGUINAGA Código: 2072084 CARLOS MIGUEL AVENDAÑO Código: 2072101 OSCAR IVÁN TRASLADINO Código: 2072079

Upload: oscar-trasladino

Post on 01-Feb-2016

230 views

Category:

Documents


0 download

DESCRIPTION

lll

TRANSCRIPT

Page 1: informe control

1

PROYECTO DE CURSO

SISTEMAS DE CONTROL DIGITAL 234192012 I

ProfesorPhD. RICARDO ALZATE

NATHALY MURCIA SEPÚLVEDA Código: 2072078SAUL ENRIQUE GONZALEZ AGUINAGA Código: 2072084

CARLOS MIGUEL AVENDAÑO Código: 2072101OSCAR IVÁN TRASLADINO Código: 2072079

Escuela de Ingenierías Eléctrica, Electrónica y de TelecomunicacionesUNIVERSIDAD INDUSTRIAL DE SANTANDER

BUCARAMANGA, Septiembre 01 de 2012

Page 2: informe control

2

SENSOR DE VELOCIDAD PARA UN MOTOR DC

I. RESUMEN

Este proyecto consiste en el sensado de velocidad (RPM) de un motor DC por medio de un dispositivo digital programable que varía el ciclo de trabajo de acuerdo a una referencia (potenciómetro). Para esto se caracteriza el motor para eliminar sus zonas muertas y de saturación, haciéndolo trabajar en su región quasi-lineal. Así, se obtiene un modelo aproximado que posteriormente se valida comparando resultados obtenidos mediante simulación y de forma experimental. II. PALABRAS CLAVE

Dispositivo digital programable, motor de corriente continua, ciclo útil o de trabajo, Revoluciones por minuto (RPM).

III. INTRODUCCIÓN

El uso de microcontroladores para el desarrollo de este tipo de aplicaciones ha tomado fuerza gracias a la incorporación de lenguajes de alto nivel que facilitan ampliamente este tipo de implementaciones, además de los bajos costos de adquisición de estos dispositivos, distribución de software de desarrollo gratuito y amplia información en la Internet.

En este trabajo se pretende implementar un sistema que permita gobernar un motor de corriente continua DC a partir de una referencia, la cual va a producir un cambio de velocidad en el motor (RPM). Para lograr esto, dispondremos de un dispositivo digital programable que interpreta código de lenguaje C. En una etapa posterior, se deberá caracterizar el motor para eliminar sus zonas muertas y de saturación y de esta manera obtener la respuesta en su región quasi-lineal.

IV. OBJETIVOS

Diseñar e implementar un sistema de control digital de velocidad para un motor DC utilizando un microcontrolador.

Generar el modelo matemático que caracteriza al motor empleando la herramienta IDENT y validarlo a partir de las respuestas tipo escalón y rampa.

Elaborar de forma digital el proceso de realimentación y la generación de un error a partir de una diferencia entre la referencia y la salida del sistema, con el fin de observar su comportamiento en lazo cerrado.

Realizar las tres acciones básicas de un control PID de forma digital, para ser aplicadas al error y observar como se comporta la planta al momento de la variación de estas constantes.

V. CONTENIDO

Parte I. Diseño del circuito actuador mediante un dispositivo digital programable.

a. Selección del dispositivo digital programable.

Page 3: informe control

3

Se seleccionó el dispositivo programable Arduino uno [3], por ser una plataforma de hardware libre basada en una placa con un microcontrolador y un entorno de desarrollo diseñado para facilitar el uso de la electrónica en proyectos multidisciplinarios.

Figura 1. Arduino uno [3].

b. Etapa de generación del PWM.

La generación de la señal PWM (Modulación por ancho de pulso) se realizó mediante la programación de un código en lenguaje C interpretado por el dispositivo programable Arduino uno (anexo 1). El lenguaje de programación de Arduino hace que el PWM sea fácil de usar y para esto usa el comando analogWrite, al cual se debe ingresar un valor de ciclo útil entre 0 y 255.

Los datos obtenidos del conversor analógico-digital (ADC) de Arduino tienen una resolución de 10 bits, por lo que su rango de valores va de 0 a 1023, los cuales deben ser escalados a un valor de 0 a 255, para que el generador de PWM de Arduino lo interprete.

c. Etapa de aislamiento eléctrico.

Figura 1. Circuito esquemático del optoacoplador 4N33 [1]

Mediante esta etapa se pretendió aislar eléctricamente el controlador digital de la etapa de potencia, este proceso es empleado para proteger el microcontrolador de posibles corrientes de reversa generadas por el motor. Para llevar a cabo el objetivo de esta etapa se utilizó el circuito integrado

Page 4: informe control

4

4N33, el cual es un dispositivo optoacoplador, y presenta el circuito esquemático mostrado en la figura 1.

El arreglo circuital utilizado en la implementación de esta etapa fue el siguiente:

Figura 2. Arreglo circuital para funcionamiento del optoacoplador [1]

El esquema de la figura 2 muestra el arreglo circuital empleado para trabajar con el dispositivo optoacoplador 4N33, éste circuito presenta dos partes definidas como entrada y salida respectivamente. A la entrada se conecta la señal del PWM generada por el dispositivo digital programable, la cual mediante un acople óptico (led infrarrojo - fototransitor) es transmitida a la salida.

Debido al funcionamiento del fototransistor la señal de entrada se convierte en una señal de corriente, por lo que para nuestra aplicación es necesario utilizar una resistencia RL=100Ω para transformar ésta señal de corriente a una señal de tensión.

d. Etapa de potencia.

Debido a que el motor necesita una corriente de arranque de aproximadamente 700mA y un voltaje de alimentación de 24V, se empleará una etapa de potencia con un puente H [2] que proporcionará el voltaje y la corriente requerida para el funcionamiento del motor. Las características eléctricas de éste integrado se puede observar en la siguiente tabla:

Alimentación del integrado (Vcc1) 4.5 – 7 [V]Tensión de alimentación motor (Vcc2) Vcc1 – 36 [V]Rango de a tensión de salida -3 [V] a Vcc2 + 3 [V]Nivel de tensión en alto 2.3 – Vcc1Nivel de tensión en bajo 0.3 – 1.5 [V]Máximo pico de corriente 2 [A]Salida de corriente continua 1 [A]

Tabla 1. Características eléctricas del integrado L293 [2]

Page 5: informe control

5

La configuración de los pines del puente H es la siguiente:

Figura 3. Integrado L293 [2]

La señal PWM dada a partir de la etapa anterior de comparación corresponde a la entrada del enable del integrado (puerto 1,2EN); l

La entrada 1A siempre estará en alto y será de 5V aproximadamente otorgada por una fuente de continua y la entrada 2A siempre estará en bajo (0 V), con estas 2 entradas configuradas de esa manera se habilitará la salida al motor (puerto 1Y) para que éste gire en un solo sentido. La señal PMW dada a partir de la etapa anterior de comparación, se conecta a la entrada del habilitador del integrado (puerto 1,2EN). Esta entrada permite habilitar (Nivel alto) o deshabilitar (Nivel bajo) la fuente que se encarga de alimentar el motor (Vcc2); por lo que al modificar el ciclo de trabajo de la señal PWM que llega a éste pin, se está variando la cantidad de energía que llega al motor y por ende se varía su velocidad.

Figura 4. Salida del integrado L293 al variar los niveles lógicos de las entradas

Las tensiones que manejará el puente H serán: Vcc1=5V (pin 16) la que alimentara el chip Vcc2= 24V (pin 8) que será la misma aproximadamente la misma tensión que saldrá en la salida

1Y cuando sea habilitada por el habilitador. 5V en el nivel de alto de la entrada 1A (pin 2). Finalmente los pines 4 y 5 están cortocircuitados conectados a tierra, al igual que el pin 7 (2A)

por configuración.

PARTE II. Sensado de velocidad del motor.

a. Descripción del sistema de sensado.

Nuestro encoder consta de dos partes, claramente diferenciables, un disco metálico con 1 ranura y un sensor optoelectrónico. Para el sistema de registro de las revoluciones del motor, nuestro encoder

Page 6: informe control

6

utiliza el sensor optoelectrónico GP1A57HRJ00F [4]. Las principales características de este sensor se pueden observar en la siguiente tabla:

Alimentación 5VCorriente de alimentación 50mANivel de voltaje en alto 4.9VNivel de voltaje en bajo 0.1VFrecuencia máxima 2MHz

Tabla 2. Características del sensor óptico [4]

El funcionamiento de este sensor se basa en dos elementos independientes, un fotodiodo y un fototransistor. El fotodiodo emite una señal infrarroja de cierta intensidad hacia un objeto cercano (disco metálico). El fototransistor deja pasar cierta cantidad corriente por el colector, y este valor de corriente depende de la intensidad de la señal infrarroja que se refleje en el disco; siendo directa esta relación, es decir, entre más luz se refleje mayor corriente circula por el colector. Aunque la tensión de salida en el colector es inversa a la cantidad de corriente que circula por él, por esto cuando más se refleja la señal infrarroja menor es la tensión de salida en el colector. Teniendo en cuenta todo esto, se sabe que cuando el disco gira y bajo el sensor se ubica una ranura el nivel de tensión de salida es máximo, pero si en determinado momento bajo el sensor se ubica la superficie metálica el nivel de salida es mínimo.

El cálculo de la velocidad del motor en revoluciones por minuto (RPM) dentro del dispositivo digital programable se logra utilizando el módulo de interrupción por teclado (KBI) y la función milis( ) del Arduino. La función millis( ) muestra el tiempo que lleva en ejecución un programa dentro del Arduino; mientras que el módulo KBI ejecuta una función especial del programa cuando hay un flanco en el pin 2 de la tarjeta, y luego de esto continúa la ejecución del flujo normal del programa.

Para llevar a cavo el cálculo de las RPM del motor se debe conectar la salida del sensor al pin 2 (módulo KBI) del Arduino, y se crea una función que almacena el tiempo transcurrido entre dos flancos de subida de la señal de salida del sensor, utilizando la función millis( ). Además se creó una función que utiliza el tiempo calculado por la función anterior para calcular la velocidad del motor en RPM, considerando que la salida del sensor presenta un flanco de subida por cada vuelta del motor.

Para la visualización de los datos se utilizó el puerto serial del Arduino, y los datos se verificaron con el osciloscopio observando la frecuencia de la señal de salida del sensor, por tanto para determinar la velocidad del eje en r.p.m. se utiliza la siguiente fórmula:

Velr . p .m.=f∗60 [rpm]

Donde Velr.p.m. corresponde a la velocidad en r.p.m. del eje del motor y f es la frecuencia de la señal emitida por el sensor.

b. Ajuste del ciclo de trabajo para la eliminación de la zona muerta y la zona de saturación del motor.

Al hacer un análisis de la respuesta del sistema en lazo abierto cuando se varía el ciclo de trabajo de la señal de entrada desde 0 hasta 255 (0% hasta 100%), se obtiene la siguiente gráfica:

Page 7: informe control

7

Figura 5. Velocidad del motor Vs Ciclo útil

Al analizar los datos mostrados por la figura 5, podemos observar que el sistema en lazo abierto presenta una zona muerta y luego un comportamiento logarítmico con una clara zona de saturación. Para obtener un buen modelo del sistema y mejorar el costo computacional que podría requerir el control del mismo se debe obligar al sistema a que trabaje en una zona lineal. Para lograr lo anterior, se utilizó la figura 5 y mediante ésta se obtuvo un rango de valores de PWM en los cuales nuestra planta tiene el comportamiento deseado, los cuales se muestran en la siguiente tabla:

Ciclo útil Ciclo útil (%) Velocidad [RPM]Mínimo 11 (4.31%) 0Máximo 75 (29.41%) 3333

Tabla 3. Rango de valores de ciclo útil de la región quasi-lineal del sistema

Luego de obtener el rango de valores de ciclo útil dentro de los cuales nuestro motor presenta un comportamiento quasi-lineal, se procedió a modificar las líneas de código de Arduino en las cuales se genera el PWM, de tal forma que cuando la señal de entrada sea 0 V (valor del ADC en 0) se genere el ciclo de trabajo mínimo obtenido (4.31%), y cuando la señal de entrada sea 5V (valor del ADC en 1023) se genere el ciclo de trabajo máximo de la región quasi-lineal (29.41%).

c. Proceso de realimentación del sistema

En esta etapa se pretende cerrar el lazo del sistema y para esto se debe calcular el error, para ello se debe emplear la siguiente fórmula:

error=entrada−salida

La entrada de nuestro sistema es el valor digitalizado de la tensión del potenciómetro, y la salida corresponde a la velocidad en RPM a la que gira el motor. Debido a que la señal de entrada es número de 10 bits y a que la señal de salida es un valor en RPM, primero se debe obtener una ecuación que permita calcular la equivalencia de la velocidad en RPM a un número binario en el rango de 0 a 1023. Para hacer esto se obtiene el comportamiento del sistema al hacer variar la señal de referencia desde su valor mínimo (0) hasta su valor máximo (1023), y mediante la aplicación

Page 8: informe control

8

Microsoft Excel se determinó la ecuación lineal que modela dicho comportamiento, estos resultados se pueden observar en la siguiente figura:

0 200 400 600 800 1000 12000

500

1000

1500

2000

2500

3000

3500f(x) = 3.17760637748115 x + 361.225494048307R² = 0.973156510450206

Velocidad [RPM] vs Tensión de referencia digitalizada

Tensión de referencia digitalizada

Velocidad [RPM]

La ecuación obtenida mediante Excel debe ser despejada para obtener una expresión que permita obtener un número binario en el mismo rango de la entrada con base a la velocidad entregada por el sensor. La ecuación obtenida es la siguiente:

Sensor digitalizado= RPM−361.233.1773

Una vez obtenida esta expresión es posible obtener el error, y luego de esto se debe obtener una nueva expresión de salida en la cual se incorporen tanto el error como el valor binario de la señal de entrada, lo cual se hace con la siguiente expresión:

salida=señal deentradadigitalizada+error

PARTE III. Obtención del modelo aproximado del sistema.

a. Generación de la señalen seudo-aleatoria

El propósito de la señal seudo-aleatoria es obtener la respuesta del sistema para un amplio espectro de frecuencias. Para llevar a cabo esta etapa se generó una secuencia aleatoria de datos con un rango comprendido entre cero (0) y uno (1) y posteriormente se multiplicó por un factor de 1023 con el fin de crear una secuencia aleatoria de datos con valores comprendidos entre 0 y 1023.

La secuencia seudo-aleatoria que se generó es ingresada al sistema como entrada, para esto es necesario desactivar la lectura del ADC y remplazar la variable donde se almacenaba esta lectura por el valor de la señal aleatoria.

Page 9: informe control

9

b. Obtención del modelo aproximado mediante MATLAB

Al aplicar la señal seudo-aleatoria al sistema se obtuvieron una serie de datos representativos de éste, dichos datos de entrada y salida se ingresaron a la herramienta INDET en MATLAB® para de esta manera obtener un modelo aproximado para la función de transferencia del sistema que relaciona la velocidad del motor respecto al voltaje de referencia aplicado.

Para la selección del modelo aproximado más adecuado se obtuvieron varias funciones de transferencia a partir de varios conjuntos de datos y variando la cantidad de polos y ceros en ellas. Algunos de los modelos aproximados obtenidos pueden ser observados a continuación:

N° de polos

N° de Ceros

Función de transferencia G(s) Pertinencia del modelo obtenido (FIT)

2 1 G 1 ( s )= 15.34 s+0.1113

s2+4.771 s+0.0283281.06%

3 1 G 2 ( s )= 707.9 s+5.843

s3+48 s2+220.4 s+1.48581.10%

3 2G 3 (s )= 15.52 s2+0.8896 s+0.009769

s3+4.872 s2+0.2405 s+0.002488

82.16%

Tabla 4. Modelos aproximados del sistema.

Las aproximaciones encontradas poseen un porcentaje de pertinencia con los datos (FIT) muy cercano y por el valor de sus raíces se comprobó en cada caso su estabilidad así que se eligió la función de transferencia G3(s) debido a que su porcentaje de pertinencia fue el más alto.

PARTE IV. Validación del modelo obtenido.

El proceso de validación del modelo aproximado elegido en la etapa anterior consiste en la comparación de la respuesta a una excitación (tipo escalón y tipo rampa) a partir de simulaciones en MATLAB® y a partir de los resultados del prototipo experimental.

a. Excitación tipo escalón.

La Respuesta al escalón del sistema obtenida mediante MATLAB® se puede observar en la siguiente gráfica:

Page 10: informe control

10

Figura 6. Respuesta del sistema ante excitación de tipo escalón ( Matlab® ).

Para el caso de la respuesta del prototipo experimental se debió crear la función escalón mediante un código implementado en el dispositivo digital programable, esta función consistió en poner el valor de entrada en cero (0 V) durante varios ciclos para posteriormente cambiarlo a 1 V. La respuesta obtenida se puede observar a continuación:

Figura 7. Respuesta del sistema ante excitación de tipo escalón motor (prototipo experimental).

b. Excitación tipo rampa.

La Respuesta ante la rampa del sistema obtenida mediante MATLAB® se puede observar en la siguiente gráfica:

Page 11: informe control

11

Figura 8. Respuesta del sistema ante excitación de tipo rampa (Matlab®).

Para el caso de la respuesta del prototipo experimental se debió crear la función rampa mediante un código implementado en el dispositivo digital programable, esta función consistió en poner el valor de entrada en cero (0 V) e incrementarla en pasos de 19.5mV cada segundo hasta 5V. La respuesta obtenida se puede observar a continuación:

Figura 9. Respuesta del sistema ante excitación de tipo rampa motor (prototipo experimental).

PARTE V. Control PID sobre la respuesta del sistema.

El control PID se puede representar en la siguiente figura:

Page 12: informe control

12

Figura 10. Expresión general control PID[5]

Para la generación de un control proporcional, integral y derivativo del sistema de control en lazo cerrado se realizó en los siguientes pasos: - La parte Proporcional que determina la reacción del error actual.

- La parte integral que genera una corrección proporcional a la sumatoria del error.

- La parte derivativa que determina la reacción del tiempo en el que el error se produce.

La sumatoria de la parte proporcional, integral y derivativa constituye el cálculo del error entre un valor medido y el valor que se quiere obtener.

VI. OBSERVACIONES

Debido a fallos encontrados en el sensor óptico utilizado en la primera entrega, se debió remplazar el mismo por el sensor óptico GP1A57HRJ00F, con características similares al anterior y que se ajustó de igual forma a los requerimientos del sistema de sensado.

Se redujeron los agujeros del disco del sistema de sensado para disminuir la frecuencia de trabajo del sensor y evitar primero, que el sensor trabaje a una frecuencia máxima a la que fue diseñado y segundo, para reducir las variaciones de velocidad que se presentaron en la entrega anterior.

Se observa que debido al método empleado para la adquisición de datos, el error nunca se estabiliza en un valor fijo; ocasionando que la velocidad fluctue en rangos pequeños para un valor de tensión constante.

VII. CONCLUSIONES

Se observó al realizar la caracterización del motor que la región quasi-lineal se experimenta entre 4.31% y 29.41% del ciclo útil del sistema, excluyendo de esa manera un 79.41% del ciclo de trabajo correspondiente a la eliminación de las zonas muerta y de saturación del motor.

Se notó la relativa concordancia entre las respuestas obtenidas mediante simulación y los resultados del prototipo experimental al intentar validar el modelo encontrado por medio de la herramienta de identificación de MATLAB® con una entrada tipo escalón y una tipo rampa. Esta concordancia relativa es debido a que las formas de respuesta son algo similares en los dos escenarios (experimental y simulado) y para los dos tipos de entrada, pero no lo son los tiempos de respuesta de los mismos. Así que,

Page 13: informe control

13

es posible que esta herramienta de identificación de MATLAB® no sea la más adecuada para la modelación de este sistema.

Se observó que con un aumento en la constante de acción de control proporcional Kp se incrementa el tiempo en el que se estabiliza la velocidad del motor, debido a que se encuentra un valor pico mayor en el transitorio y se tarda en disminuir el error.

Se verifico que el sistema realimentado sin compensador el error se reduce, debido a que constantemente se están corrigiendo las diferencias entre la entrada y la salida. Además al agregar un controlador PID con constantes adecuadas la corrección del error se mejora aun más.

REFERENCIAS

[1] Agosto 2012. [Online]. Disponible en: www.fairchildsemi.com[2] Agosto 2012. [Online]. Disponible en: www.national.com[3] Agosto 2012. [Online]. Disponible en: www.arduino.cc[4] Agosto 2012. [Online]. Disponible en: www.sharp-world.com[5] Agosto 2012. [Online]. Disponible en: www.upc.edu “ sistemas digitales de control en tiempo discreto”