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 | 1 | 9 | Precio distribuidor |
Motor velocidad-estable DC | 1 | 10 | Precio Minorista |
C.I. HCF4047B | 1 | 4 | Precio Minorista |
C.I. 4N25 | 1 | 2 | Precio Minorista |
Regulador de voltaje | 1 | 2 | Precio Minorista |
Buffer HC041 | 1 | 4 | Precio Distribuidor |
Conmutador de ranura | 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 | 1 | 4 | Precio Minorista |
Resistencias de | 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., 1992GUÍ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 |