Este es otro bloque importante dentro del sistema, ya que es el encargado de tomar los valores del PID y convertirlos en diferentes valores de ancho de pulso con lo cual se realiza el control del motor.
Este bloque está conformado por un contador de módulo 255 el cual irá incrementándose hasta llegar a ser igual al valor de selección que es enviado del PID en ese instante se cambia el estado de la señal a cero hasta que el contador llegue a su valor máximo, cuando el valor del contador se desborda se pone la señal a uno nuevamente, con lo cual se obtiene una señal que varia el ancho de pulso en función del valor de comparación.
Desarrollo del programa.
ModPWM:
PROCESS (reloj)
–la variable vreloj1 será una secuencia lógica
VARIABLE vreloj1:std_logic;
BEGIN
–cuando el pulso sea positivo del reloj de 256KHz, el vreloj1 niega el –valor anterior lógico, y lo guarda en la señal sreloj1
IF (reloj'event and reloj= '1')THEN
vreloj1:=NOT vreloj1;
ELSE vreloj1:=vreloj1;
END IF;
sreloj1<=vreloj1;
END PROCESS;
PROCESS (sreloj1)
VARIABLE aux0:integer RANGE 0 TO 255;
BEGIN
–cuando el pulso sea positivo en la señal sreloj1, empezar un conteo que –se almacenara en la variable aux0, sera una cuenta de 0 hasta 255, este –valor de conteo se almacenara en la señal scuenta
IF (sreloj1'EVENT AND sreloj1= '1')THEN
aux0:=aux0 + 1;
ELSE aux0:=aux0;
END IF;
scuenta<=aux0;
END PROCESS ;
PROCESS (reloj)
VARIABLE vpwm:std_logic;
VARIABLE vsel:integer RANGE 0 TO 255;
BEGIN
–la señal sel del bloque del signo, se guarda en la variable vsel limitado –entre 0 a 255
vsel:=sel;
–cuando el pulso sea negativo o "0" del reloj de 256KHz, empieza la –comparación de scuenta a 0 y a la variable vsel, cuando scuenta es 0 la –variable vpwm asume el valor"0", cuando scuenta es igual a vsel asume –el valor "1", esta variable vpwm, se va a la salida sal
IF(reloj'event AND reloj = '0') THEN
IF(scuenta=0) THEN
vpwm:='0';
ELSE vpwm:=vpwm;
END IF;
IF(scuenta=vsel)THEN
vpwm:='1';
ELSE vpwm:=vpwm;
END IF;
END IF;
sal<=vpwm;
END PROCESS ;
6.4.6 Contador del tacómetro
Fig. 6.16: Bloque del contador del tacómetro
Con este bloque se realiza la realimentación del sistema, básicamente está conformado por un contador que recoge los pulsos enviados por el tacómetro y los acumula por un periodo de muestreo (200ms), cuando el valor ingresado por clear es cero el valor de la cuenta se pone a uno para empezar nuevamente, el valor de clear se pone a uno cada 200ms mas un ciclo de reloj del reloj principal, es decir un ciclo después de cada periodo de muestreo.
Desarrollo del programa.
tacometro:
process (t201ms,entradapulsos)
variable vcont : integer RANGE 0 TO 31;
bejín
–representan a un circuito antirebote
bx<= pulsos nand pulsos;
cx<= ax nand bx;
ax<= pulsos nand cx;
entradapulsos <= cx;
–cuando el pulso sea "1" del reloj a 201ms, la variable vcont, limitado –entre 0 a 31, se vuelve a 0
IF (t201ms = '1') THEN
vcont := 0;
–cuando los pulsos sean positivos del tacometro, la variable vcont –empiza a sumarse 1, la variable vcont se guarda en la señal retro
ELSIF (entradapulsos'EVENT AND entradapulsos = '1') THEN
vcont := vcont + 1;
ELSE
vcont := vcont;
END IF;
retro<=vcont;
END PROCESS;
6.5 Detalles del entorno de programación MAX+PLUSII, para el programa diseñado en el CPLD MAX 7000S EPM7128.
Una vez realizado el programa, en lenguaje VHDL, se procederá a los siguientes entornos del MAX+PLUSII.
6.5.1. Compilación.
Fig.6.17 Ventana de compilación del MAX+PLUSII para el programa diseñado.
Al realizar la compilación se genera el archivo *.scf, y el *.pof, que es para la simulación y el programador correspondientemente. También se genera un archivo *.rpt, el cuál detallará todo el proceso de la compilación
Se detalla lo más importante del texto, del archivo de reporte generado por la compilación:
Project Information c:max_p112original1.rpt
MAX+plus II Compiler Report File
Version 10.2 07/10/2002
Compiled: 12/09/2004 21:41:41
***** Project compilation was successful
ORIGINAL1
** DEVICE SUMMARY **
***** Logic for device 'original1' compiled without errors.
Device: EPM7128SLC84-6
Device Options:
Turbo Bit = ON
Security Bit = OFF
Enable JTAG Support = ON
User Code = ffff
MultiVolt I/O = OFF
Device-Specific Information: c:max_p112original1.rpt
original1
** RESOURCE USAGE **
Total dedicated input pins used:1/4 ( 25%)
Total I/O pins used:11/64 ( 17%)
Total logic cells used:103/128 ( 80%)
Total shareable expanders used:47/128 ( 36%)
Total Turbo logic cells used:103/128 ( 80%)
Total shareable expanders not available (n/a):9/128 ( 7%)
Average fan-in:10.70
Total fan-in:1103
Total input pins required:7
Total fast input logic cells required:0
Total output pins required:1
Total bidirectional pins required:0
Total reserved pins required:4
Total logic cells required:103
Total flipflops required:69
Total product terms required:320
Total logic cells lending parallel expanders:0
Total shareable expanders in database:45
Synthesized logic cells:9/ 128 ( 7%)
Memory Allocated
—————–
Peak memory allocated during compilation = 8,816K
6.5.2 Simulación.
Se procede a utilizar la aplicación del Waveform Editor y la aplicación del Simulator. Se utilizará estas dos aplicaciones, para realizar la simulación interactiva, para observar el resultado del programa diseñado.
Sea la primera simulación, se dará para la velocidad 0, hasta un tiempo límite de 205ms.
Fig.6.18 Ventana del WaveformEditor del MAX+PLUSII, para la primera simulación, velocidad 0.
Fig.6.19 Ampliación de la ventana del WaveformEditor del MAX+PLUSII, para la primera simulación, velocidad 0.
En la simulación se procedió a lo siguiente:
Setpoint[4..0]: "00001"
Reloj: 256KHz = Periodo de 3.9us.
Pulsos: 5 Hz = periodo de 200ms = total de 1 pulso durante 200ms.
Se obtiene de la simulación:
Sal: Periodo = 2ms; Ancho de pulso = 0.9 ms.
Esta simulación indica que esta a la mínima velocidad, o que el motor se está deteniendo.
Sea la segunda simulación, se dará para la velocidad 31, hasta un tiempo límite de 205ms.
Fig.6.20: Ventana del WaveformEditor del MAX+PLUSII, para la primera simulación, velocidad 31.
Fig.6.21: Ampliación de la ventana del WaveformEditor del MAX+PLUSII, para la primera simulación, velocidad 31.
En la simulación se procedió a lo siguiente:
Setpoint[4..0]: "11111"
Reloj: 256KHz = Periodo de 3.9us.
Pulsos: 160 Hz = periodo de 6.25ms = total de 32 pulsos durante 200ms.
Se obtiene de la simulación:
Sal: : Periodo = 2ms; Ancho de pulso = 0.05 ms.
Esta simulación indica que esta a la máxima velocidad.
6.5.3 Contenido de programación en el CPLD MAX7000S EPM7128
El contenido de programación en el CPLD MAX7000S EPM7128, se detallará en la aplicación del Floorplan Editor del MAX+PLUSII.
Fig.6.22. Ventana del Floorplan Editor del MAX+PLUSII.
En esta ventana del Floorplan Editor del MAX+PLUSII, se detalla las 8 LAB o 8 bloques de arreglo lógico, y cada LAB contiene 16 celdas, haciendo un total de 128 celdas. En cada ampliación de la ventana del Floorplan Editor del MAX+PLUSII, se muestra las celdas ocupadas por cada instrucción, ciclo, conteo, entrada, salida, variable, señal del programa.
Fig.6.23. Ampliación 1 de la ventana del Floorplan Editor del MAX+PLUSII.
Fig.6.24. Ampliación 2 de la ventana del Floorplan Editor del MAX+PLUSII.
Fig.6.25. Ampliación 3 de la ventana del Floorplan Editor del MAX+PLUSII.
Fig.6.26. Ampliación 4 de la ventana del Floorplan Editor del MAX+PLUSII.
6.5.4 Visualizador de jerarquía del programa diseñado.
Se utiliza está aplicación del MAX+PLUSII, para observar los archivos que conforma todo el programa compilado, así como sus ramas del programa, correspondientes a las librerías, así como sus respectivas funciones.
Fig.6.27 Ventana del visualizador de jerarquía del programa diseñado.
6.6 Análisis de consumo de potencia.
Sea la ecuación:
Asumimos:
Asumimos:
Asumimos
6.7 Análisis económico
Tabla 6.04: Costo de componentes.
Componente | Cantidad | Precio ( S/.) | Calidad de precio |
CPLD MAX7000S EPM7128 | 1 | 35 | Precio distribuidor |
Socket para el CPLD MAX7000S EPM7128 | 1 | 9 | Precio distribuidor |
Motor velocidad-estable DC magnético EG-520ED-3B | 1 | 10 | Precio Minorista |
C.I. HCF4047B | 1 | 4 | Precio Minorista |
C.I. 4N25 | 1 | 2 | Precio Minorista |
Regulador de voltaje LM7805 | 1 | 2 | Precio Minorista |
Buffer HC041 | 1 | 4 | Precio Distribuidor |
Conmutador de ranura óptico | 1 | 5 | Precio Minorista |
TIP 42, TIP 41 | 4 | 6 | Precio Minorista |
BC548 | 7 | 3.5 | Precio Minorista |
Dipswhitch 5 selecciones | 1 | 3.5 | Precio Minorista |
LED | 6 | 3 | Precio Minorista |
Resistencia multivueltas 5K( | 1 | 4 | Precio Minorista |
Resistencias de carbón | 25 | 5 | Precio Minorista |
Capacitores | 7 | 1.5 | Precio Minorista |
Placa doble cara | 1 | 6 | Precio Minorista |
Placa una cara | 1 | 2 | Precio Minorista |
Sub-total 1 | 105.5 |
Tabla 6.05: Costo de gastos diversos.
Gastos diversos | Cantidad | Costo (S/.) |
Quemada de placa | 2 | 16 |
Sub-total 2 | 16 |
Tabla 6.06: Costo Total
Sub-total 1 | S/. 105.5 |
Sub-total 2 | S/. 16 |
Total | S/. 121.5 |
CAPÍTULO VII
Conclusiones y bibliografía
7.1 Conclusiones y Recomendaciones.
Se logro implementar un modulo de sistema de control de velocidad, e implementar los circuitos de regulación de voltaje, reloj, selección, acoplamiento óptico, puente H, sensor de velocidad y del MAX 7000S.
El sistema de control de velocidad, cuenta con un controlador PD, y no con un controlador PID como debería ser teóricamente, debido a conflictos con el software MAX+PLUSII.
El sistema de control de velocidad, regula la velocidad pero no de la manera propuesta teóricamente, es decir 32 velocidades, existe una velocidad máxima y una velocidad mínima.
El CPLD MAX 7000S EPM7128 es de poca capacidad, para realizar completamente este proyecto, pues el sistema de control de velocidad le falta un visualizador de velocidad.
En el CPLD MAX 7000S EPM 7128 se puede realizar aplicaciones de pequeña capacidad, por ejemplo: se puede realizar un número determinado de decodificadores, divisores de frecuencia, no es adecuado para aplicaciones de mayor capacidad, comparado con las aplicaciones realizadas en los microcontroladores.
El FPGA FLEX 10K es recomendable para aplicaciones de normal a mayor capacidad, comparado con el CPLD MAX 7000S EPM 7128, la capacidad es mucho mayor. Pero no se podría lograr la implementación, salvo en el módulo educativo Altera, pues el Laboratorio de Control y Microelectrónica, carece de un quemador de FLEX 10K.
El software MAX+PLUS II Baseline, o versión educativa, tiene limitaciones, por ejemplo en la aplicación de Editor de Texto, no acepta números reales, solo números enteros, así como los componentes de la líbrería VHDL"93.
El Laboratorio de Control y Microelectrónica, debería contar con otros 2 módulos más, para el desarrollo normal de clases para los alumnos, así como para investigación de los tesistas, así como más literatura del lenguaje de programación en VHDL.
7.2 Referencias bibliográficas.
INGENIERIA DE CONTROL MODERNO, Segunda edición, Katsuhiko Ogata. Ed. Prentice Hall Hisponamericana S.A., 1993.
SISTEMAS DE CONTROL EN TIEMPO DISCRETO, Segunda edición, Katsuhiko Ogata. Ed. Prentice Hall Hisponamericana S.A., 1996.
VHDL, Lenguaje para síntesis y modelado de circuitos, Primera edición, Pardo Carpio y Boluda Grau. Ed. Alfaomega Grupo Editor S.A., 2000.
DISEÑO DIGITAL, PRINCIPIOS Y PRÁCTICAS, Primera edición, Jhon Wakerly. Ed. Prentice Hall Hisponamericana S.A., 1991.
INTRODUCCIÓN A LOS SISTEMAS DE COMUNICACIONES, Primera edición, Stremmler, Ed. Prentice Hall Hisponamericana S.A., 1992
GUÍA DEL MODULO ALTERA, Laboratorio de Control y Microelectrónica UNSA, Yanyachi R. y Yanyachi D, 2004.
GUÍA DE USO DEL MAX+PLUS II , Laboratorio de Control y Microelectrónica UNSA, Yanyachi R. y Yanyachi D, 2004.
MAX+PLUS II, A Perspective, Section 2, Altera Corporation, 1997.
Altera, Max 7000 Programmable Logic Device Family, Altera Corporation, 1997.
University Program Design Laboratory Package, Altera Corporation, 1997.
Autor:
Cesar
Página anterior | Volver al principio del trabajo | Página siguiente |