UNIVERSIDAD DE OVIEDO Departamento de Ingeniería Eléctrica, Electrónica, de Computadores y Sistemas Guía de Prácticas ASIGNATURA: CENTRO: ESTUDIOS: CURSO: CARÁCTER: PROFESORADO: Informática Industrial y Comunicaciones Escuela Politécnica de Ingeniería de Gijón Grado en Ingeniería Electrónica y Automática 3º CUATRIMESTRE: 1 Obligatoria CRÉDITOS ECTS: 6 Ignacio Alvarez, José Mª Enguita PRACTICA 07: Control básico y E/S digital 1. Ejercicio a realizar. Se dispone de un computador conectado mediante E/S analógica a un sistema formado por: Un motor DC de 10V, con sensores para medida de la posición y velocidad angulares. Un potenciómetro para generar señal de consigna (referencia). Un computador de control, con entradas A/D, salida PWM, E/S digital, y display LCD. Se desea realizar sobre este sistema un control de posición, de forma que la posición angular del motor siga en todo momento a la consigna, con las siguientes especificaciones: a) Periodo de muestreo Tm=200 ms. b) Regulador a aplicar en función de selección por interruptor de entrada: o B4 activado, B5 desactivado: usar control todo/nada con U=±2V. o B4 y B5 activados: usar control proporcional con K=0.05 V/º o B4 desactivado: usar regulador R(z) U(z) 0.13 0.11 z 1 E(z) 1 0.43 z 1 o B0 activado: parar el motor. c) Se indicará en cada instante el sentido de giro del motor activando los bits de salida B6 (giro a derechas) o B7 (giro a izquierdas). 2. Para la realización de la práctica será necesario utilizar la librería SimuladorMotor, cuyos archivos e instrucciones de uso se encuentran en: http://isa.uniovi.es/~ialvarez/Curso/descargas/SimuladorMotorConESDigital.rar En este simulador, se dispone de: Un motor DC con entrada ±10VDC, y comportamiento según el modelo dinámico Ω(s) 12 rpm . Al motor se le puede aplicar un freno, que simula una carga G(s) U(s) 1 2.5s V que varía su comportamiento dinámico. La E/S simulada de un computador con: o Tres canales A/D de 10 bits, a los cuales se conectan los sensores de velocidad, posición y referencia. o Una salida PWM, mediante la cual se controla la tensión aplicada al motor a través de un amplificador. o Un display LCD de 2x20 caracteres. o Dos puertos de E/S digital de 8 bits: puerto 0 (salida) conectado a LEDs, puerto 1 (entrada) conectado a interruptores. Dos discos giratorios, que representan la posición angular del motor (superior derecha) y la posición de un potenciómetro de referencia de movimiento manual (inferior derecha). 3. Pasos en la realización del código (probar cada uno por separado): 2.a) Obtener del canal A/D 2 el valor en grados del potenciómetro de consigna (0V = 180º, y 10V= 180º), y escribir el valor en el display LCD cada 200 ms. 2.b) Pedir por teclado el valor de tensión u(t) a aplicar al motor (-10 a 10V), y generar la salida PWM necesaria para que se aplique dicha tensión. 2.c) Añadir al anterior la lectura cada 200 ms de la posición posición angular del motor (en º) y velocidad angular (en r.p.m.), y escribir los mismos en el display LCD. 2.d) Preparar variables necesarias y algoritmo para ejecución del lazo de control: Ecuaciones de control { yk } { ck } { ek } { uk } bi ai m, n Variable C Descripción float yk; Salida medida del sistema (posición) Consigna de posición deseada Error actual y anteriores (hasta retardo m) Acción de control actual y anteriores (hasta retardo n) float ck; float ek[m+1]; float uk[n+1]; float b[m+1]; float a[n+1]; Int n,m; Coefs. numerador de R(z): (b[0]=b0 , b[1]=b1, …, b[m]=bm) Coefs. denominador de R(z): (a[0]=1 , a[1]=a1 , …, a[n]=an) Retardo máximo numerador y denominador Algoritmo del lazo de control: Desplazar tablas de datos temporales si es necesario: uk, ek Leer canal analógico 1 y calcular yk. Leer canal analógico 2 y calcular ck . Obtener ek[0] = ck - yk Obtener uk[0] según el estado deseado de control: o Igual a 0 si bit 0 de entrada digital está a 1 o Igual al resultado de la ecuación de control en función del caso. Calcular duty necesario para uk[0] y generar señal PWM Esperar Tm y volver a repetir el bucle. 2.d) Realizar el control todo/nada. 2.e) Realizar el control proporcional. 2.f) Realizar el control con R(z) de forma genérica: U(z) b0 b1 .z 1 ... bm .z m E(z) 1 a1 .z 1 ... an .z n ek ck yk R(z) uk b0 .ek b1 .ek 1 ... bm .ek m (a1 .uk 1 ... an .uk n ) Valor Tm m b0 b1 n a1 Simulador 200 ms 1 0.12 V/º -0.11 V/º 1 -0.43 Resultados esperados ante escalón de referencia 90º Donde los sumatorios bi.ek-i y ai.uk-i se pueden realizar mediante una misma función ProductoEscalar().