Академический Документы
Профессиональный Документы
Культура Документы
Prcticas de Laboratorio
Facultad de Ingeniera
S ISTEMAS DE C ONTROL
P RCTICAS DE L ABORATORIO
por
Pregrado en
Ingeniera Electrnica
Ingeniera Elctrica
Facultad de Ingeniera,
Universidad de San Carlos de Guatemala
Coordinador de rea:
Tutor del laboratorio del curso
de sistemas de control:
Asesorado por:
USAC
USAC
USAC
P REFACIO
Prefacio. . .
Escuela de Mecnica Elctrica
USAC, 18 de septiembre de 2014
III
NDICE GENERAL
1 Introduccin
1.1 Interaccin Mquina-Entorno y Sistemas fsico-ciberntico.
1.2 Un ejemplo futursta de un CPS. . . . . . . . . . . . . . .
1.3 Partes de un CPS. . . . . . . . . . . . . . . . . . . . . . .
1.4 Fases de un CPS. . . . . . . . . . . . . . . . . . . . . . .
1.4.1 Modelar . . . . . . . . . . . . . . . . . . . . . . .
1.4.2 Disear . . . . . . . . . . . . . . . . . . . . . . .
1.4.3 Anlisis . . . . . . . . . . . . . . . . . . . . . . .
1.5 Mecnica de Newton . . . . . . . . . . . . . . . . . . . .
1.6 Modelos Fsicos y Diagramas de Bloques . . . . . . . . . .
1.7 Manos a la obra . . . . . . . . . . . . . . . . . . . . . . .
1.7.1 Software a utilizar . . . . . . . . . . . . . . . . . .
1.7.2 Prctica 1. Familiarizndonos con LabVIEW . . . . .
1.7.3 Prctica 2. Del modelo fsico a diagramas de bloques
1.7.4 Un sistema RLC . . . . . . . . . . . . . . . . . . .
1.7.5 Prctica 3. Funciones de Transferencia. . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
. 1
. 1
. 2
. 2
. 2
. 2
. 2
. 3
. 3
. 3
. 3
. 3
. 15
. 24
. 24
2 Sistemas discretos.
2.1 Sistemas de numeracin . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Procesadores Embebidos . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1 FPGA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.2 DSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.3 PLC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.4 Microcontroladores . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Arquitecturas de Memoria . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.2 Non-Volatile Memory. . . . . . . . . . . . . . . . . . . . . . . . .
2.3.3 Flash Memory. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.4 Registros y Mapas de Memoria. . . . . . . . . . . . . . . . . . . .
2.4 Perifricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.1 Salidas y Entradas Digitales . . . . . . . . . . . . . . . . . . . . .
2.4.2 Temporizadores, Comparadores y PWM . . . . . . . . . . . . . . .
2.4.3 Interfaces. Seriales y Paralelas . . . . . . . . . . . . . . . . . . . .
2.4.4 Buses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.5 Interrupciones y Excepciones . . . . . . . . . . . . . . . . . . . .
2.4.6 Modelando Interrupciones. . . . . . . . . . . . . . . . . . . . . .
2.4.7 Interfaz ADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5 Tiva C. Arquitectura TM4C123GH6PM . . . . . . . . . . . . . . . . . . .
2.5.1 Registros y Mapas de Memoria. TM4C123GH6PM.. . . . . . . . . .
2.5.2 Reloj del Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.3 Salidas y Entradas de Propsito General. GPIOs. TM4C123GH6PM. .
2.5.4 Interrupciones. TM4C123GH6PM. . . . . . . . . . . . . . . . . . .
2.5.5 Timers. TM4C123GH6PM. . . . . . . . . . . . . . . . . . . . . . .
2.5.6 ADC. TM4C123GH6PM. . . . . . . . . . . . . . . . . . . . . . . .
2.5.7 UART, SPI. TM4C123GH6PM. . . . . . . . . . . . . . . . . . . . .
2.5.8 PWM. TM4C123GH6PM.. . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
37
37
38
38
38
38
38
38
38
38
38
38
38
38
38
38
38
38
38
38
38
40
42
47
49
49
49
49
49
NDICE GENERAL
VI
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
49
49
54
59
59
59
59
59
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
61
61
61
61
61
61
61
61
61
61
61
61
61
61
61
61
61
61
61
61
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
63
63
63
63
63
63
63
63
63
63
63
63
63
63
63
63
63
63
63
63
63
63
63
63
63
63
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
NDICE GENERAL
VII
A Actuadores Neumticos
65
67
C Lenguaje C
69
ndice de figuras
71
ndice de cuadros
73
Bibliografa
75
1
I NTRODUCCIN
Nuestra era es conocida como La era de la informacin y la razn de sto es que nosotros, los humanos1 ,
utilizamos computadoras 2 conectadas entre s por todo el planeta formando una gran red, con las cules
generamos, transmitimos y asimilamos informacin de uso personal, en cuestin de segundos. Las usamos
para escribir libros, estar conectado en las redes sociales 3 , o realizar transacciones financieras. Pero lo cierto es que todas esas actividades son posibles gracias a la gran mayora de computadoras menos visibles,
que las personales, que realizan el trabajo pesado de nuestras actividades diarias. stas se encuentran manipulando el motor de tu carro, digitalizando tu voz para que puedas transmitirla, comandando robots en
una fabrica, manipulando la informacin en la internet 4 para que llegue a su destino de manera segura y
confiable. Estas computadoras menos visibles se conocen como sistemas embebidos y muchas de ellas se
encargan de manipular el entorno fsico en el que se encuentran o controlar dispositivos que se encargan
de relacionarse con l, tal como la computadora de un automvil se encarga de manipular la bomba de inyeccin para dosificar el combustible de manera eficiente al motor. Los sistemas embebidos encargados de
controlar el entorno fsico y las tcnicas para hacerlo correctamente (mas bien una aproximacin de ello),
son el enfoque de ste laboratorio 5 . El objetivo no es comprender el fenmeno fsico, tampoco las ciencias
detrs de los micro controladores sino la manera de disear sistemas donde ambas partes interaccionen.
desde el modelo fsico del entorno hasta la interaccin final con el humano, por lo que trataremos solamente algunas generalidades.
6 El trmino ciberntico fue desarrollado por Norbert Wiener en 1948, un matemtico norteamericano que tuvo un gran impacto en el
1. I NTRODUCCIN
tecnologa.
La ciruga a corazn abierto frecuentemente requiere detener el corazn, realizar
la ciruga, y luego reiniciar el corazn. Dicha ciruga es extremadamente peligrosa
y conlleva muchos efectos secundarios. Un nmero de equipos de investigacin
han estado trabajando en una alternativa donde el cirujano puede operar en un
corazn latiendo en lugar de detenerlo. Existen dos ideas clave que hacen sto
posible. Primero, las instrumentos pueden ser robticamente controlados tal que
ellos que se muevan con el movimiento del corazn (Kremen, 2008). Un cirujano
puede entonces usar una herramienta y aplicar presin constante en un punto
del corazn mientras el corazn continua latiendo. Segundo, un sistema de video
estereoscopico puede presentar al cirujano una ilusin de video de un corazn detenido. Para el cirujano el corazn el corazn parece como si estuviera detenido,
mientras en realidad, el corazn continua latiendo. Para realizar dicho sistema
quirrgico se requiere un extensivo modelo del corazn, las herramientas, el hardware de computacin y el software. Requiere un cuidadoso diseo del software
que asegura precisin en el tiempo y seguridad ante comportamiento errtico
para manejo de mal funcionamiento. Y requiere de un detallado anlisis de los
modelos y los diseos para proveer una alta confianza.
1.4.1. M ODELAR
Modelar es ganar un entendimiento ms profundo mediante la imitacin. Los modelos reflejan propiedades
del sistema.
1.4.2. D ISEAR
El diseo, principalmente nos basaremos ac en el laboratorio, es la construccin estructurada de artefactos.
1.4.3. A NLISIS
Y por ltimo el anlisis es el proceso de ganar un entendimiento ms profundo mediante la diseccin del
sistema en sistemas ms pequeos. Cada sistema debe estar diseado para cumplir con ciertos requerimientos.
1. I NTRODUCCIN
las cules podemos apreciar en las figura 1.2 donde variaron de formas diferentes los parmetros a y b del
sistema de ecuaciones 1.1.
Como primer empezaremos por abrir LabVIEW. Nos aparecer una ventana como la que se muestra en la
figura 1.3, luego presionamos el botn con una flecha amarilla que muestra una etiqueta Create Project.
Luego aparecer una ventana en la cul podemos escoger que tipo de proyecto queremos realizar. Por el
momento escogeremos un proyecto en blanco. Seleccionamos la opcin Blank Project y luego le damos click
al botn Finish.
Despus de haber hecho el paso anterior, emerger una ventana donde se encuentra nuestro proyecto.
1. I NTRODUCCIN
Ahora necesitamos un entorno donde colocar nuestros diagramas, para generar dicho entorno. Nos dirigimos a la pestaa de Archivo, seleccionamos File>New Vi. Y aparecern dos ventanas que nos sern tiles en
el proceso de diseo de la aplicacin. Una de ellas es el Front Panel (la gris), es el lugar donde diagramaremos
la interfaz para el usuario, la otra (la blanca) es Block Diagram, es el lugar donde desarrollaremos la lgica
de nuestra aplicacin. Ahora vamos a la pestaa de archivo y seleccionamos File>Save As. Colocamos algn
nombre a ambos entornos y luego le damos guardar.
Las paletas son nuestra bodega de bloques en LabVIEW, en el Front Panel, nos dirigimos en la ventana
Controls, luego seleccionamos algn modelo, en nuestro caso ser Silver, escogemos el bloque XYGraph es
un objeto que nos sirve para desplegar dos entradas en un plano XY, ideal para graficar paramtricas.
Ahora solo es cuestin que busques los bloques adecuados para replicar el modelo que se mira en la figura
1.8. Para modificar los labels puedes usar doble click, para darle un nombre bonito a los elementos del
diagrama.
1. I NTRODUCCIN
Ahora pasamos al ambiente Block Diagram, como se puede ver aparecen representaciones de bloques de los
objetos que utilizamos en el Front Panel. Podramos decir que es el alma de nuestra aplicacin. LabVIEW
es un entorno basado en los diagramas de bloques. Actualmente nuestra aplicacin no hace absolutamente
nada. Si presionas el botn Run (Flecha blanca), veras que no hace nada, es hora de solucionar eso.
Nos dirigimos al cuadro Functions escogemos la pestaa Programming y damos click en While Loop, el cursor
cambiar de forma y con el click sostenido rodeamos todos los elementos que ya se encontraba, hasta formar
un cuadro, este ciclo es un tanto diferente a los que estamos acostumbrados en algunos lenguajes, ac los
diagramas de bloques se ejecuta al mismo tiempo todo lo que se encuentra dentro del mismo entorno. Al
rodear los elementos con el ciclo les asignamos un nuevo entorno. La i que podemos ver en la parte inferior
izquierda se trata de un bloque que se comporta como un contador que comienza y se incrementa en uno
cada iteracin. Podemos obtener el nmero de iteracin a la salida del bloque.
Dado que todo ac es un diagrama de bloques podemos podemos hacer operaciones aritmticas como una
suma o una multiplicacin. Lo nico que debemos de cuidar es el orden en que se conectan las entradas
con las salidas de un bloque a otro. Tal como se muestra en la figura 1.13. En este caso sumamos la salida de
Trim y la salida de X, para generar el pequeo desfase que se muestra en la ecuacin 1.1, y dar la sensacin
de movimiento que observbamos en el osciloscopio. Esa es la razn por la cual generamos una escala pequea en las propiedades del control Trim. La razon por la que dividimos Y, es por que andamos tratando con
frecuencias y necesitamos generar una seal de tiempo.
10
1. I NTRODUCCIN
Dado que el tiempo es una seal continua, lo ms que podemos obtener de ellas es una aproximacin a las
cules llamamos tiempo discreto. Por ejemplo el modelo de una onda senoidal en tiempo continuo esta dado
por la ecuacin
y = si n(2 f t )
(1.2)
donde t es una seal en tiempo continuo. La aproximacin que obtenemos en el tiempo discreto sera
y = si n(2 f nT )
(1.3)
donde n es el nmero de muestra, por lo que debe de ser un nmero entero y T es el tiempo entre una muestra
y otra, tomndolo como una constante.
Necesitamos generar N muestras para obtener la aproximacin, lo cual lo podemos lograr accediendo a Functions>Programming>For Loop, y al igual que con el While Loop, generamos una pequea caja pero esta vez
sin envolver nada, luego damos click secundario sobre la N y accedemos a Create>Constant, luego escribimos
un nmero en el nuevo bloque de tipo entero que aparece, en este caso 1000, esta variable es la condicin de
fin de ciclo, lo que acabamos de hacer ac es que la variable i propia del ciclo For llevar un conteo de 0 a 999,
en total 1000 muestras. Los ciclos ac en LabVIEW tienen un comportamiento parecido al de un bloque. Lo
que acabamos de hacer es que en cada iteracin del While principal generamos 1000 iteraciones dentro del
For.
11
Replicamos el diagrama dentro del For que se encuentra en la figura 1.16. Veamos que significa dicho diagrama. Cada iteracin del ciclo While su respectivo contador, que en este paso llamaremos i W , se incrementa en
uno. En cada iteracin del ciclo While, el ciclo For ya ha hecho mil iteraciones del diagrama que se encuentra dentro del l. En cada iteracin del ciclo While, el ciclo For recibe como parmetro a i W . Si colocamos
la salida de algn diagrama dentro del ciclo For en la orilla estamos generando como salida los 1000 datos
correspondientes a cada iteracin del ciclo, en otras palabras generamos un bloque cuya salida es un array
de 1000 datos donde van cambiando en cada iteracin del ciclo While dependiendo de la configuracin del
diagrama dentro del ciclo For. En este caso nuestra intencin es ir generando bloques de datos de 1000 en
1000. Para la primera iteracin del ciclo While, i W vale 0, y por tanto la salida del bloque For, es un vector de
0 a 999, para la segunda iteracin del ciclo While, la salida del bloque For es un vector de 1000 a 1999 y as
durante toda la ejecucin de la aplicacin.
12
1. I NTRODUCCIN
13
Ya tenemos la informacin necesaria para graficar pero necesitamos darle un formato que el bloque XYGraph
sea capaz de entenderla, y para este fin usaremos un cluster, un cluster es una estructura de elementos
de varios tipos. Con el ratn accedemos a Functions>Programming>Clusters,Class & Variants>Bundle, con
este bloque podemos mezclar dos entradas en una y as ingresarlo al bloque XYGraph. Solamente como una
aclaracin no en todos los casos podremos hacer sto debemos tener la certeza que tipo de dato reciben los
bloques y que tipo de salida devuelven.
14
1. I NTRODUCCIN
Ahora ya hemos finalizado casi con todo, solo falta un pequeo detalle, dar un pequeo delay entre una
iteracin y otra del ciclo While para obtener la frecuencia indicada. Para lograr el delay entre una iteracin
y otra, accedemos Functions>Programming>Timming arrastramos el reloj y le damos el valor del delay en
mili-segundos. Y con esto hemos finalizado nuestro generador de curvas de Lissajous. Ahora podemos darle
click al botn Run y experimentar con l. Puedes variar tanto la constante del tiempo, como la del ciclo For o
bien con la constante 2 para obtener resultados diferentes".
15
d 2
d 2r
+
r
(l
)
dt2
dt
d 2
dr d
mg sin() = m (l + r ) 2 + 2
dt
dt dt
kr F t + mg cos() = m
(1.4)
(1.5)
Recuerda los modelos son una caricatura de la realidad no la realidad misma solo nos sirven de gua, para
estimar el comportamiento de un sistema o fenmeno. Si buscas un tesoro el modelo sera el mapa, te orienta
pero no cavaras en l. Sin embargo no debemos subestimar la importancia de plantear un buen modelo, te
perderas sin el mapa.
16
1. I NTRODUCCIN
Como primer paso debes abrir LabVIEW, abrir el proyecto anterior y crear un nuevo Blank VI. Seleccionamos
la ventana de Block Diagram. Puedes cambiar entre el Front Panel y el Block Diagram presionando la
combinacin de teclas Ctrl+E.
17
Trazamos un recuadro tal como lo hicimos con el While Loop en la prctica anterior. Puedes ajustar el tamao
seleccionndolo y arrastrando las pequeas cajas azules que se encuentran en su permetro. La figura 1.23
muestra nuestro ciclo de Simulacin. Todo dentro del ciclo de simulacin correr de acuerdo al tiempo de
simulacin. Este ciclo es como LabVIEW designa que parte del diagrama define una simulacin.
18
1. I NTRODUCCIN
Ahora agregamos los controles para los parmetros iniciales para las ecuaciones diferenciales, los
cuales podemos cambiar. Presionamos Ctrl + E
para cambiar del Block Diagram al Front Panel. Tal
como lo hemos hecho anteriormente, damos click
derecho en un espacio vaco para que aparezca la
paleta de controles. Y accedemos a cualquiera de los
estilos o grupos, entramos Numeric>Numeric Control y arrastramos los controles tal como se muestra
en la figura 1.25. Veras que la etiqueta se encuentra
resaltada una vez puesta en el Front Panel. Escribe
en una de ellas theta inicial y en la otra r inicial.
Figura 1.25: Interfaz Grfica
19
Hay dos grupos de dos bloques enlazados. Un conjunto ser usado en la ecuacin diferencial para r y el otro
para . Las salidas de los bloques a la derecha representan las salidas de r y . Los cables entre los bloques
y las entradas de los bloques de la izquierda representan r y respectivamente. Ahora
representan r y ,
necesitamos dar las condiciones iniciales al sistema pero resulta un tanto incomodo ver los bloques de las
entradas del Front Panel ocupando mucho espacio. Podemos hacer que dichos bloques sean ms pequeos
y esto lo logramos dando click secundario en los bloques y seleccionando View as icon. De igual forma las
etiquetas Integrator 1, Integrator 2, ...que corresponden a los bloques de integracin son un tanto molestas,
podemos ocultarlas con click secundario sobre el bloque y luego accedemos a Visible Items >Label y al dar
click veremos como desaparecen las etiquetas. Repetimos el mismo proceso en caso queramos volverlas a
ver de regreso.
20
1. I NTRODUCCIN
21
En la figura 1.34 se muestra la forma en que ingresamos una frmula en la ventana Configure Formula. En
la parte de la izquierda podemos renombrar los parmetros para que sea ms cmodo ingresar nuestras
variables, as como evitar errores. Ingresamos en la parte blanca de la ventana la frmula que ser la salida
del bloque, en este caso r. Si la formula es compresible para LabVIEW, en otras palabras si la sintaxis es
correcta, veremos el recuadro a la par de la parte blanca de color verde de lo contraria se mostrar de color
gris.
Una vez que hemos ingresado la frmula adecuada para r, creamos las constantes tal como lo hicimos en la
Y conectamos tanto las constantes como
prctica anterior y creamos un nuevo bloque de Formula para .
las variables en el tiempo de manera que todo sea consistente a las ecuaciones del sistema. La figura 1.35
muestra el mismo diagrama que la figura 1.31, solamente que utilizando menos bloques. Siempre es una
buena idea revisar los diagramas y verificar que se encuentran correctamente conectados.
22
1. I NTRODUCCIN
Una vez diagramado correctamente nuestro sistema, nos dirigimos a la paleta Functions>Control Design &
Simulation>Simulation>Graph Utilities>SimTime WaveForm. Dicho bloque se encuentra compuesto de dos
bloques. La unin de ambos bloques nos permite generar dentro del Simulation Loop, teniendo como entrada un escalar, un conjunto de datos que se mostrarn contra el tiempo cuando corramos la simulacin. Lo
arrastramos a nuestro bucle y nos generar un WaveForm Chart en el Front Panel. Una vez que dicho bloque
se encuentre dentro del bucle, realizamos una copia solamente del Simulation Time Waveform. Conectamos la entrada de uno de los bloques Simulation Time Waveform a r y otro lo conectamos a . Damos
click secundario sobre el cable que conecta al Waveform Chart y lo eliminamos. Luego accedemos a Functions>Express>Signal Manipulation. Y arrastramos el bloque Merge Signals. Dicho bloque nos permite darle
un formato adecuado a los datos para que sean interpretados por el Waveform Chart. Conectamos las salidas de los Simulation Time Waveform a las entradas del Merge Signals y la salida del bloque Merge Signals al
Waveform Chart.
Presionamos Ctrl + E y entramos al Front Panel, ac cambiamos las condiciones iniciales del sistema. Veremos un grfico similar al que se muestra en la figura 1.37, damos click secundario en tu grfica y seleccionamos Chart History Length,
emerger una ventana como la que se muestra en la figura 1.38,
en el cuadro de texto escribimos el nmero 12000, ste nmero
sale de dividir el tiempo de simulacin (60 segundos ) entre el
time step o t , luego damos Ok. Chart History Length es el
nmero de ondas que el plano conservar en memoria. Si el
valor es muy pequeo el cuadro borrar los valores antiguos.
23
Luego damos click secundario nuevamente sobre el grfico y damos click en Properties, emerger una ventana como la que se muestra en la figura 1.39, nos dirigimos a la pestaa Display Format, escogemos para
configurar en la caja desplegable al eje X, y luego escogemos Relative Time. ste ser solamente el formato en
el que se mostrar la onda.
Luego damos doble-click en el tiempo que se muestra ms cercano a la esquina derecha. Lo cambiamos a
0 : 1 : 0, para que concuerde con los 60 segundos del tiempo de simulacin. Finalmente presionamos el botn
Run. LabVIEW tomar un momento para compilar el VI cuando lo corramos por primera vez. Puedes jugar
con los valores y veras el comportamiento de r y en funcin del tiempo.
G RFICAS EN X-Y
Ahora como ejercicio debes cambiar la forma de mostrar el comportamiento del sistema. En lugar de
mostrar el comportamiento de r y , debes mostrar el lugar geomtrico que describe el movimiento de
la masa al final del resorte. Para esto encontrars til el bloque Buffer XY Graph, lo podrs hallar a la par
del bloque Simulation Time Waveform. En la figura 1.41 se muestra el espacio geomtrico que describe el
movimiento de la masa.
24
1. I NTRODUCCIN
25
salida Y (s) y la entrada X (s) en sistemas LIT (Lineales en Invariantes en el tiempo) y es propia del sistema.
H (s) =
Y (S)
X (S)
(1.6)
Dado que una funcin de transferencia puede ser representada como la razn entre dos polinomios, comenzamos creando los polinomios. En LabVIEW los polinomios son representados por vectores que contienen a
los coeficientes del polinomio. Si queremos ingresar el polinomio s 3 + 2s 2 + 3s + 4 lo ingresamos de la forma
[4 3 2 1].
Creamos un nuevo Blank VI en nuestro proyecto y en el Front Panel accedemos a Controls>Modern>Array,Matrix & Cluster seleccionamos el objeto array y lo agregamos a nuestra interfaz.
Luego arrastramos un indicador numrico, hacia adentro del Array, el objeto Array debe verse ahora como la
figura 1.44.
Luego posicionamos el cursor en el borde de la derecha del arreglo (no en el borde del indicador) y estiramos
nuestro arreglo, como podrs ver crece el nmero de indicadores que posee dicho arreglo.
26
1. I NTRODUCCIN
Luego generamos una buena cantidad de copias de nuestro arreglo, ya que nos sern tiles durante el desarrollo de esta prctica.
Presionamos Ctrl+E para cambiar al ambiente Block Diagram, podemos ver que los arreglos aparecen con
un smbolo parecido al de un indicador simple, para mayor comodidad por la cantidad de bloques damos
click secundario en cada uno y damos click en View as icon. Una vez hecho esto damos click secundario
en un espacio en blanco y aparecer la paleta Functions y nos dirigimos a Mathematics>Polynomial donde
podremos encontrar bloques muy tiles a la hora de trabajar con polinomios y por tanto con funciones de
transferencia.
Ordenamos en el Front Panel los indicadores de manera de agrupar 3 de ellos tal como se muestra en la figura
1.48.
27
Damos click secundario en 2 de los indicadores que escogimos agrupar y damos click en Change to indicator.
Esto nos ser til para intercambiar entre indicador y control. Luego replicamos el diagrama de la figura
1.49. El bloque Poly Roots recibe un vector con los coeficientes del polinomio y devuelve otro vector que
contiene las races del polinomio. El bloque Create Poly genera un vector con los coeficientes normalizados
del polinomio y recibe como entrada las races del polinomio.
Ahora cambiamos al Front Panel y le damos valores al vector donde estn nuestros coeficientes (el que se
encuentra ms a la izquierda en el diagrama). Presionamos el botn de Run y aparecer en el primer Array
las races y en el segundo los coeficientes normalizados de dicho polinomio. En este caso ingresamos el polinomio P (s) = 2s 2 3s + 1. En LabVIEW la posicin 0 del Array corresponde al coeficiente de s 0 , la posicin 1
al coeficiente de s, la posicin 2 al coeficiente de s 2 y as la posicin n al coeficiente de s n .
Tambin podemos realizar operaciones entre polinomios, los bloques se encuentran diseados de tal manera que las entradas sean congruentes con las salidas, de nuestros cursos de matemticas sabemos que el
producto de dos polinomios da como resultado un polinomio. El bloque Multiply Polynomials recibe como
entrada dos Array correspondientes a los dos polinomios a multiplicar y devuelve un Array correspondiente
al resultado. El bloque Polynomial Evaluation recibe dos parmetros de entrada, el primero un Array con los
coeficientes del polinomio, y el segundo un valor numrico, devuelve un valor numrico resultado de valuar
el valor numrico de la entrada en el polinomio generado con los coeficientes.
28
1. I NTRODUCCIN
Replicamos el diagrama que se muestra en la figura 1.51 y luego cambiamos al Front Panel, una vez ac
podemos probar nuestro diagrama de bloques ingresando valores de entrada en los Array correspondientes
a los coeficientes de cada polinomio.
Ya que nos encontramos familiarizados con los polinomios, podemos generar en base a ellos funciones de
transferencia, con polos y ceros. Para este propsito nos ser til el grupo Rational Polynomial y el grupo
Model Construction perteneciente al grupo Control Design. Ambos se muestran en la figura 1.53.
29
Cambiamos al Front Panel nos dirigimos a Controls>Classic Graph>2D Picture. Arrastramos el bloque al rea
de la interfaz y regresamos la ventana de Block Diagram. Debe aparecer su representacin en diagrama de
bloque.
Replicamos el diagrama de la figura 1.55. El bloque CD Construct Transfer Function Model recibe como entrada el numerador y denominador de la funcin, y genera un Array de modelos de funciones de transferencia, conjunto de datos tiles para los bloques del mdulo Control Design & Simulation. Podemos escoger
en el men desplegable diferentes modos, MISO (multiple input-single output), SIMO, (single input-multiple
output), MIMO (multiple input-multiple output)y SISO (single input-single output). En este ejemplo usaremos est ltima ya que solamente estamos utilizando una sola funcin de transferencia. La salida del CD
Construct Transfer Function Model genera informacin que puede interpretar el bloque CD Draw Transfer
Function Equation y en base a esa informacin es capaz de generar informacin que interpreta el bloque 2D
Picture.
30
1. I NTRODUCCIN
Como podemos ver en el Front Panel LabVIEW es capaz de realizar operaciones con funciones de transferencia. Ac en el ejemplo sumamos dos funciones de transferencia.
F (s) =
1
s
s +1
+
=
s2 + 1 s2 + 1 s2 + 1
(1.7)
En Control Design podemos encontrar bloques tiles para analizar las funciones de transferencia. El grupo
perteneciente a control Design, Dynamic Characteristics, tiene bloques que nos permiten graficar polos y
ceros.
31
Modificamos el diagrama anterior para que podamos ver la funcin de transferencia en su representacin
grfica de polos y ceros en el plano complejo. En caso de no encontrar el bloque cuya entrada o salida es
adecuada para la salida o entrada de algn otro bloque. Podemos dar click secundario sobre el bloque al que
queremos conectar otro bloque, nos dirigimos a Create>Indicator en caso de ser una salida Create>Control
o Create>Constant en caso de ser una entrada.
Los diagramas de bloques se encuentran ntimamente ligados a las funciones de transferencia. El lgebra de
bloques es una til herramienta en sistemas donde existen diversos lazos de retro-alimentacin ya que se
puede volver un tanto complicado calcular la funcin de transferencia propia del sistema. Nos dirigimos a
Functions>Control Design & Simulation>Control Design>Model Interconection y veremos que en este grupo
encontraremos algunos bloques elementales en el lgebra de bloques, tal como la suma, multiplicacin, lazos
de Feedback, entre otros.
32
1. I NTRODUCCIN
Un ejemplo de una operacin sobre funciones de transferencia usando diagramas de bloque, es una simple
suma, la cul podemos ver representada en la figura 1.61
H1 (s) =
1
1+s 2
H2 (s) =
s
1+s 2
+
+
H(s)
Podemos replicar la suma de bloques en LabVIEW, replicamos el diagrama de la figura 1.62, boton de Search
en la paleta functions podra ser de utilidad. El bloque CD Parallel permite sumar dos bloques tal como se
muestra en el diagrama 1.61, en el men desplegable podemos escoger que tipo de suma podemos realizar, en
este ejemplo seleccionamos TF and TF (Transfer Function and Transfer Function). Construimos dos funciones
de transferencia en base a polinomios con el bloque CD Construct Transfer Function Model. Las conectamos
a las entradas del bloque CD Parallel y la salida la de este ltimo bloque la conectamos al bloque CD Transfer
Function Equation el cul permite mostrarnos el resultado. El Front Panel debera verse como se muestra la
figura 1.63.
33
En un sistema de control, los lazos cerrados son frecuentes, en la figura 1.64 se muestra el ms comn de ellos,
conocido como retro-alimentacin negativa. En este diagrama la salida es parte del diagrama. Este diagrama
G1
completo podemos sustituirlo por un solo bloque cuya funcin de transferencia sea 1G
. Como ejercicio
1 H1
queda demostrar la validez de dicho cambio.
+
G1
H1
Figura 1.64: Feedback
En el grupo Model Interconection podemos encontrar un bloque que nos facilita realizar diagramas con lazos
cerrados, basados en el lgebra de bloques. El bloque se llama CD Feedback. La figura 1.65 nos muestra el
diagrama 1.64, implementado en LabVIEW. La primera entrada del bloque corresponde a la funcin G 1 y la
segunda entrada corresponde a la funcin de retro-alimentacin H1 . La valor booleano representa el tipo de
retro-alimentacin, si la retro-alimentacin es negativa la entrada debe ser F al se, si la retro-alimentacin es
positiva debe ser Tr ue.
Podemos verificar en el Front Panel, como funciona nuestro diagrama, aunque de esta manera solo podemos
ver la representacin algebraica de la funcin de transferencia del sistema.
34
1. I NTRODUCCIN
Podemos realizar un anlisis de que significan dichas funciones en el dominio del tiempo, generalmente
podemos introducir una seal de entrada y analizar su salida. Generalmente hacemos ingresar un impulso
para ver la reaccin del sistema. En este ejemplo utilizaremos un pulso de determinada duracin, y los bloques que nos ayudan a este propsito los podemos encontrar en Control Design & Simulation>Control Design
>Time Response.
En esta prctica como funcin de entrada ingresaremos un pulso cuya duracin es de tres segundos. Arrastramos el bloque CD Step Response. Replicamos el diagrama de la figura 1.68. En este caso nos ser til las
opciones Create>Indicator y Create>Control del bloque CD Step Response.
35
Podemos ver como reaccionara un sistema en el Waveform Chart cuya funcin de transferencia se muestra
en el recuadro en blanco. Configuramos la funcin de entrada en los controles Time Range.
U N SISTEMA MS COMPLEJO
Como primera parte del ejercicio debes presentar la demostracin de la sustitucin de un diagrama de lazo
cerrado por un solo bloque con una funcin de transferencia
G1
.
1 G 1 H1
(1.8)
La figura 1.70 muestra un diagrama de bloques que debes replicar en LabVIEW. Adems debes simular la
respuesta del sistema a un impulso, tal como lo hicimos con la respuesta a un pulso (solamente utilizar el
bloque de impulso en lugar del bloque pulso). Las funciones de transferencia de cada bloque G 1 , G 2 , G 3 ,
G 4 , H1 , H2 y H3 deben de ingresarse mediante controles. A lo ms 2 polos por funcin y 2 ceros por funcin.
Sugerencia. Sustituir H2 por un bloque equivalente, cuya entrada sea la salida de G 4 . Sustituir los lazos cerrados
por bloques equivalentes.
H2
X (s)
G1
G2
+
+
G3
G4
H1
H3
Figura 1.70: Diagrama de bloques
Y (s)
2
S ISTEMAS DISCRETOS .
Un sistema discreto es aqul que opera en una secuencia de pasos discretos y se dice que tiene una
dinmica discreta. Algunos sistemas son discretos por naturaleza. Un ejemplo sera un sistema que lleva el
control de cuantas personas entran y salen de un parque de diversiones. Supongamos que tenemos sensores
para detectar la salida o la entrada de una persona la parque. Ambos sensores producen un evento cuando
una persona entra o sale. Un contador lleva control de cuantas personas se encuentran adentro del parque...
Continuar
(2.1)
Si reducimos nuestro conjunto de smbolos permitidos a dos elementos, y construimos un sistema de numeracin basado en este conjunto ser un sistema binario, y solamente con dos elementos podemos representar cualquier nmero que podemos representar con tres smbolos o diez smbolos. Dado que podemos
representar cualquier nmero natural con dos smbolos podemos hacer que dichos smbolos sean dos voltajes distintos, presencia o ausencia de corriente, entre otros. De esta manera es que las computadoras procesan la informacin, convirtiendo los nmeros a seales de voltaje o corriente. Para representar dichas seales
le asociamos un "1.a determinada seal o evento y un "0.a otra seal o evento. As nuestro conjunto se reduce
a S 2 = 0, 1, y a cada dgito o posicin se le conoce como bit. El problema de utilizar el sistema binario, el
1 Cuando trabajamos con distintos sistemas de numeracin usamos el subndice para indicar la base del sistema utilizado para escribir
37
38
2. S ISTEMAS DISCRETOS .
ms simple de todos, es que necesitamos mas posiciones para escribir los nmeros. Por ejemplo el nmero
309410 utiliza solamente cuatro posiciones en el sistema decimal pero su representacin en el sistema binario,
1100000101102 , requiere doce posiciones. Para lidiar con este problema se opt por un sistema de diecisis
smbolos conocido como hexadecimal, solamente para representacin en diagramas y uso de los humanos,
las computadoras siguen utilizando dos seales; dicho sistema es compatible con el sistema binario por decirlo de cierta manera, ya que diecisis es la cuarta potencia de dos, lo que significa, que cualquier combinacin
de cuatro bits pueden ser asociada a un smbolo del conjunto S 16 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B,C , D, E , F } y
cualquier elemento de S 16 se puede representar con un conjunto de cuatro bits, esto se conoce como una
biyeccin entre conjuntos, continuando con el ejemplo anterior el nmero 1100000101102 lo podemos seccionar en cuartetos y representarlos con un elemento de S 16 , 1100 0001 01102 = C 1616 . Cuando escribimos
cdigo de bajo nivel2 escribiremos 0xC 16 en lugar del utilizar el subndice 16.
2.2.4. M ICROCONTROLADORES
2.4. P ERIFRICOS
2.4.1. S ALIDAS Y E NTRADAS D IGITALES
2.4.2. T EMPORIZADORES , C OMPARADORES Y PWM
2.4.3. I NTERFACES . S ERIALES Y PARALELAS
2.4.4. B USES
2.4.5. I NTERRUPCIONES Y E XCEPCIONES
2.4.6. M ODELANDO I NTERRUPCIONES
2.4.7. I NTERFAZ ADC
soporta.
ICDI on-board.
Reset Switch
39
40
2. S ISTEMAS DISCRETOS .
41
En el TM4C123GH6PM los registros de propsito general abarcan desde R0 hasta R12, estos registros nos son
tiles para almacenar informacin o direcciones. El registro R13 se refiere como Stack Pointer (SP) y apunta a
la direccin de la cima de la pila, el registro R14 es conocido como Link Register (LR) y nos sirve para retornar
de las funciones y el registro R15 es conocido como Program Counter (PC) y apunta a la siguiente instruccin
almacenada en memoria. El ARM Architecture Procedure Call Standard, usa los registros R0, R1, R2, R3 para
pasar parmetros a una funcin en C. Y utiliza el registro R0 para retornar parmetros. Existen tres registros
de estado llamados Application Program Status Register (APSR), Interrupt Program Status Register (IPSR) y
Execution Program Status Register(EPSR). Estos registros puede ser accedidos individualmente o combinados como el registro Program Status Register (PSR). Los bits N, Z, V, C y Q nos dan informacin acerca de la
operacin anterior de la ALU.
Otros registros importantes. PRIMASK cuyo bit 0 es la mscara de interrupcin, si este bit es 1, la mayora
de interrupciones y excepciones no estn permitidas. Si el bit es 0 se encuentran permitidas. El bit 0 de el
registro FAULTMASK es mscara de falta. Si este bit es 1 todas las interrupciones y faltas no se encuentran
permitidas, si es 0 s lo estn. Las interrupciones no enmascarables no se encuentras afectadas por estos bits
de enmascaramieto. El registro BASEPRI define la prioridad de las software ejecutndose. Previene interrupciones con una prioridad igual o ms baja, pero permite las de prioridad ms alta. Por ejemplo si BASEPRI
es igual a 4, las interrupciones 0, 1, 2 y 3 pueden interrumpir, mientras niveles de interrupcin 4 o ms altas
sern pospuestas. Adems de los registros bsicos, se encuentran los registros propios para la configuracin
de los perifricos, una de las ventajas de este micro controlador es que trae muchos registros mapeados directamente a una direccin de memoria, lo que significa que podemos acceder a los registros de la misma
manera que accedemos a la memoria. En el lenguaje C utilizamos un puntero para acceder a una direccin
de memoria. Por ejemplo
data = ( * ( ( v o l a t i l e unsigned long * ) 0 x400043FC ) ) ;
nos permite acceder al registro GPIODATA del puerto A para obtener o configurar su valor, en este caso almacenamos su contenido en alguna variable llamada data. Para entender la instruccin anterior es necesario
seccionarla en partes. Si escribimos
data =(0x400043FC ) ;
asignamos a data la direccin de memoria pero no el valor que se encuentra en la direccin 0x400043FC.
Necesitamos decirle al compilador que se trata de una direccin de memoria. Entonces la volvemos un puntero
data =( * 0 x400043FC ) ;
42
2. S ISTEMAS DISCRETOS .
Esto intentar leer la direccin pero no sabr si leer 8, 16 o 32 bits por lo que el compilador marcar un error.
Para resolverlo necesitamos hacer un typecast, colocando un nuevo tipo enfrente del objeto que necesitamos
convertir y forzaremos al compilador leer 32 bits, as que agregamos (unsigned long *) frente a la direccin
de memoria. Pero dado que el compilador realiza una serie de simplificaciones antes de convertir de C a
cdigo de mquina, nos puede acarrear algn problema si no utilizamos el valor que actualmente tiene esta
direccin, sino una previa. Por lo que nuestra sentencia se modifica a
data = ( * ( ( v o l a t i l e unsigned long * ) 0 x400043FC ) ) ;
obligando as al compilador a acceder a la direccin cada vez que se lo indiquemos. Sera demasiado trabajo, leer la hoja de datos y escribir todas las direcciones del micro controlador que necesitamos, adems de
complicarnos demasiado la bsqueda de errores por eso agregamos la librera
#include " inc /tm4c123gh6pm"
la cul ya ha hecho este trabajo por nosotros, utilizando la directiva #define para realizar un reemplazo de
cadena y en lugar de llamar a la instruccin completa (*((volatile unsigned long *)0x400043FC)) podemos
llamar un nombre que haga referencia a lo que almacena dicho registro. Si agregamos la librera nuestro
ejemplo anterior se transforma a una instruccin ms amigable para nosotros, los humanos.
data=GPIO_PORTA_DATA_R ;
Precision Internal Oscillator (PIOSC). Es una fuente de reloj on-chip que usa el micro controlador
mientras y durante el POR (Power On Reset). No requiere el uso de ningn componente externo y
provee un reloj de 16MHz 1 %, a temperatura ambiente.
Main Oscillator (MOSC). El oscilador principal proporciona una frecuencia precisa de fuente de reloj
por uno de dos medios: uno fuente de reloj externa single-ended est conectado a la patilla de entrada
OSC0, o un cristal externo conectadas a travs de las patillas de entrada OSC0 y OSC1. Si el PLL est
siendo utilizado, el valor del cristal debe ser una de las frecuencias admitidas entre 5 MHz a 25 MHz
(inclusive). Si el PLL no est en uso, el cristal puede ser cualquiera de las frecuencias entre 4 MHz a 25
MHz. Tengamos en cuenta que el MOSC proporciona la fuente de reloj para el USB PLL y debe estar
conectado a un cristal o un oscilador. Este problema se encuentra resuelto en la TivaC Launchpad ya
que cuenta con un cristal de 16Mhz como fuente de reloj externa.
Low-Frequency Internal Oscillator (LFIOSC). El oscilador interno de baja frecuencia est destinado
a su uso durante modos de ahorro de energa, Deep Sleep Mode. La frecuencia puede tener grandes
variaciones.
Hibernation Module Clock Source. El mdulo Hibernacin tiene una velocidad de reloj de 32,768 kHz
y el oscilador est conectado al pin XOSC0. El oscilador de 32,768 kHz puede ser utilizado para el reloj
del sistema, eliminando as la necesidad de tener un oscilador adicional o de cristal. El fuente de reloj
del mdulo de hibernacin est destinado a dotar al sistema de un reloj de una fuente en tiempo y
puede tambin proporcionar una fuente precisa para el modo Deep-Sleep o el modo de Hibernacin
ahorro de energa.
43
44
2. S ISTEMAS DISCRETOS .
SYSDIV
0x0
0x1
0x2
0x3
0x4
0x5
0x6
0x7
0x8
0x9
0xA
0xB
0xC
0xD
0xE
0xF
Divisor
/1
/2
/3
/4
/5
/6
/7
/8
/9
/10
/11
/12
/13
/14
/15
/16
Frecuencia (BYPASS=0)
reserved
reserved
66.67 MHz
50 MHz
40 MHz
33.33 MHz
28.57 MHz
25 MHz
22.22 MHz
20 MHz
18.18 MHz
16.67 MHz
15.38 MHz
14.29 MHz
13.33 MHz
12.5 (default) MHz
Frecuencia (BYPASS=1)
Frecuencia de la fuente de reloj/1
Frecuencia de la fuente de reloj/2
Frecuencia de la fuente de reloj/3
Frecuencia de la fuente de reloj/4
Frecuencia de la fuente de reloj/5
Frecuencia de la fuente de reloj/6
Frecuencia de la fuente de reloj/7
Frecuencia de la fuente de reloj/8
Frecuencia de la fuente de reloj/9
Frecuencia de la fuente de reloj/10
Frecuencia de la fuente de reloj/11
Frecuencia de la fuente de reloj/12
Frecuencia de la fuente de reloj/13
Frecuencia de la fuente de reloj/14
Frecuencia de la fuente de reloj/15
Frecuencia de la fuente de reloj/16
TivaWare Parameter
SYSCTL_SYSDIV_1
SYSCTL_SYSDIV_2
SYSCTL_SYSDIV_3
SYSCTL_SYSDIV_4
SYSCTL_SYSDIV_5
SYSCTL_SYSDIV_6
SYSCTL_SYSDIV_7
SYSCTL_SYSDIV_8
SYSCTL_SYSDIV_9
SYSCTL_SYSDIV_10
SYSCTL_SYSDIV_11
SYSCTL_SYSDIV_12
SYSCTL_SYSDIV_13
SYSCTL_SYSDIV_14
SYSCTL_SYSDIV_15
SYSCTL_SYSDIV_16
Cuadro 2.1: Posibles Frecuencias del Reloj del sistema usando el campo SYSDIV
El campo SYSDIV2 en el registro RCC2 es 2 bits mas amplio que el campo SYSDIV en el registro RCC, tal
que divisores hasta de 64 son posibles, permitiendo un consumo ms bajo de energa. Cuando se utiliza el
PLL, la frecuencia del VCO de 400MHz es pre dividida por 2 antes de aplicar el divisor. El divisor es equivalente
al valor que posee SYSDIV2 ms 1. La tabla 2.2 muestran las configuraciones del reloj del sistema utilizando
el registro SYSDIV2.
SYSDIV2
0x00
0x01
0x02
0x03
0x04
...
0x3F
Divisor
/1
/2
/3
/4
/5
...
/64
Frecuencia (BYPASS2=0)
reserved
reserved
66.67 MHz
50 MHz
40 MHz
...
3.125 MHz
Frecuencia (BYPASS2=1)
Frecuencia de la fuente de reloj/3
Frecuencia de la fuente de reloj/2
Frecuencia de la fuente de reloj/3
Frecuencia de la fuente de reloj/4
Frecuencia de la fuente de reloj/5
...
Frecuencia de la fuente de reloj/64
TivaWare Parameter
SYSCTL_SYSDIV_1
SYSCTL_SYSDIV_2
SYSCTL_SYSDIV_3
SYSCTL_SYSDIV_4
SYSCTL_SYSDIV_5
...
SYSCTL_SYSDIV_64
Cuadro 2.2: Posibles frecuencias de reloj del sistema usando el campo SYSDIV2
Para permitir ms opciones para las frecuencias cuando se utiliza el PLL, se provee el bit DIV400 junto
con el bit SYSDIV2LSB. Cuando el bit DIV400 se encuentra en alto, el bit 22 se transforma en el bit menos
significativo, LSB (Least Significant Bit), para SYSDIV2 y el divisor es aplicado a los 400MHz. En esta situacin
el divisor es equivalente al valor del nmero formado en conjunto por SYSDIV2 y SYSDIV2LSB ms uno La
tabla 2.3 muestras las opciones cuando el bit DIV400 se encuentra alto. Si est en bajo el bit SYSDIV2LSB es
ignorado y el reloj del sistema es determinado por la tabla 2.2.
SYSDIV2LSB
reserved
0
1
0
1
0
1
0
1
...
0
1
Divisor
/2
/3
/4
/5
/6
/7
/8
/9
/10
...
/127
/128
45
Frecuencia(BYPASS2=0)
reserved
reserved
reserved
80 MHz
66.67 MHz
reserved
50 MHz
44.44 MHz
40 MHz
...
3.15 MHz
3.125 MHz
TivaWare Parameter
SYSCTL_SYSDIV_2_5
SYSCTL_SYSDIV_3
SYSCTL_SYSDIV_4
SYSCTL_SYSDIV_4_5
SYSCTL_SYSDIV_5
...
SYSCTL_SYSDIV_63_5
SYSCTL_SYSDIV_64
El oscilador principal soporta el uso de un numero selecto de cristales desde 4 hasta 25 MHz. El bit XTAL
en el registro RCC describe las opciones disponibles para el cristal y valores de programacin por defecto.
El PLL principal se encuentra por defecto deshabilitado durante el Power-On reset y es habilitado por
Software si es requerido. Se especifica por software el divisor de salida para configurar la frecuencia del reloj
del sistema y habilita el PLL principal para controlar la salida. El PLL opera a 400MHz, pero se encuentra
dividida por dos antes de aplicar el divisor de salida, hasta que el bit DIV400 en el registro RCC2 se encuentre
en alto. El campo XTAL en el registro RCC describe las opciones para el cristal. Si se utiliza el PLL se debe
utilizar un cristal con una frecuencia de por lo menos de 5MHz. Los valores correspondientes a frecuencias
menores se encuentran como reservadas al utilizar el PLL. La tabla 2.4 muestra las frecuencias disponibles y
sus valores correspondientes en el campo XTAL.
46
2. S ISTEMAS DISCRETOS .
Valor
0x00-0x05
0x06
0x07
0x08
0x09
0x0A
0x0B
0x0C
0x0D
0x0E
0x0F
0x10
0x11
0x12
0x13
0x14
0x15
0x16
0x17
0x18
0x19
0x1A
Frecuencia
reserved
4 MHz
4.096 MHz
4.9152 MHz
5 MHz (USB)
5.12 MHz
6 MHz (USB)
6.144 MHz
7.3728 MHz
8 MHz (USB)
8.192 MHz
10.0 MHz (USB)
12.0 MHz (USB)
12.288 MHz
13.56 MHz
14.31818 MHz
16 MHz (USB)
16.384 MHz
18.0 MHz (USB)
20.0 MHz (USB)
24.0 MHz (USB)
25.0 MHz (USB)
C ONFIGURACIN E I NICIALIZACIN
El PLL es configurado usando escrituras directas a los registros RCC y RCC2. Si el registro RCC2 esta siendo utilizado el bit USERCC2 debe ser puesto en alto y el registro RCC2 usado apropiadamente. Los pasos
requeridos para configurar correctamente reloj del sistema basado en el PLL son:
Bordeamos el PLL y el divisor del reloj del sistema poniendo en alto bit BYPASS y poniendo en bajo el
bit USESYS en el registro RCC, por tanto configurando el micro controlador para que corra una fuente
cruda de reloj y permitiendo para la nueva configuracin para ser validada antes de cambiar el reloj del
sistema al PLL.
Seleccionamos el valor del cristal en el campo XTAL, la fuente de oscilacin en el campo OSCSRC y
limpiamos el bit PWRDN en los registros RCC/RCC2. Configurando el campo cristal automticamente
traslada una configuracin de PLL vlida para el cristal apropiado y limpiando el bit PWRDN habilita y
alimenta el PLL y su salida.
Seleccionamos el divisor del sistema deseado en el registro RCC/RCC2 y configuramos el bit USESYS
en el registro RCC. El campo SYSDIV determina la frecuencia del sistema para el micro controlador.
Esperamos a que el PLL se enganche, el micro controlador levantar una bandera poniendo el bit PLLLRIS en alto en el registro RIS (Raw Interrupt Status). Para esto hacemos un proceso de polling a dicho
bit.
Habilitamos el PLL poniendo en bajo el bit de BYPASS en RCC/RCC2.
Nota: El registro RCC2 sobrescribe los campos equivalentes en el registro RCC, como se muestra en la tabla
2.5, cuando el bit USERCC2 se encuentra en alto, permitiendo as capacidades extendidas del registro RCC2
para ser usado mientras tambin provee los medios para ser compatible con las versiones anteriores para
componentes anteriores. Cada campo RCC2 que excede a un campo RCC es colocado en la misma posicin
del bit menos significativo, LSB. De cualquier manera los campos RCC2 son mas largos que los correspondientes al registro RCC.
47
Campo RCC
SYSDIV, bits[26:23]
PWRDN, bit[13]
BYPASS, bit[11]
OSCSRC, bits[5:4]
Alta flexibilidad para la multiplexacin en los pines permitiendo el uso de varias funciones.
Puertos A-G se acceden a travs del Bus Perifrico Avanzado (APB, Advanced Peripheral Bus).
Enmascaramiento por bit en ambas operaciones, leer y escribir, a travs de direcciones de memoria.
Capaz de alternar rpidamente, desde un ciclo de reloj para el Advanced High-Performance Bus, hasta
dos ciclos para un Advanced Peripheral Bus.
Se pueden utilizar para iniciar un muestreo en el mdulo de Conversin Analgico-Digital o para iniciar
una transferencia en el DMA.
Las seales en los GPIO poseen funciones alternativas de hardware. Todas las seales en los GPIO son tolerantes hasta 5V cuando son configuradas como entradas, a excepcin de los pines PD4, PD5, PB0 y PB1, las
cules se encuentran limitadas a 3.6V. Las funciones alternativas de hardware, digitales, se habilitan configurando apropiadamente el registro GPIOAFSEL(GPIO Alternate Function Select) y el registro GPIODEN(GPIO
Digital Enable), adems de configurar el campo PCMx en el registro GPIOPCTLGPIO Port Control. En la tabla
2.6 se puede apreciar las funciones alternativas en cada pin.
48
2. S ISTEMAS DISCRETOS .
49
50
2. S ISTEMAS DISCRETOS .
Nos dirigimos a File>New>CCS Project, emerger una ventana como la que se muestra en la figura 2.6. En
el campo Target seleccionamos Tiva TM4C1231H6PM. La conexin debe ser Stellaris In-Circuit Debug Interface. El compilador que usaremos ser T1 v5.15 y el proyecto debe tener el archivo main.c, que ser donde
escribiremos el esqueleto de nuestro programa. Le damos un nombre a nuestro proyecto. Y damos click en
Finish.
51
52
2. S ISTEMAS DISCRETOS .
Ahora debemos agregar la variable de compilacin, damos click en Build. Luego nos dirigimos a la pestaa
Variables. Damos click en el botn Add. Aparecer un dilogo llamado Define a New Build Variable. Escribimos TIVAWARE INSTALL en el cuadro de texto referente al nombre de la variable. Activamos el checkbox Apply
to all configurations. En Type seleccionamos Directory y en Value al igual que la vez anterior seleccionamos la
direccin donde se encuentra instalada la TivaWare. Damos click en OK. Nuestra variable debe aparecer en
la lista de variables de compilacin.
53
Necesitamos
agregar
el
librera
objeto
TivaWare
driverlib.lib.
Debe
ser
enlazada.
Damos click secundario en el proyecto y damos click en Add Files. Navegamos a
C:\TI\TivaWare_C_Series-1.1\driverlib\ccs\Debug\driverlib.lib, y le damos click en Open. Aparecer la
ventana File Operation. Escogemos la opcin Link to files. Luego seleccionamos el checkbox Create link
locations relative to y luego en el men desplegable escogemos nuestra variable TIVAWARE_INSTALL, sto
hace nuestros proyectos portables. El archivo ser relativo a la direccin de la variable TIVAWARE_INSTALL
quisiramos pasar a alguna otra persona nuestro proyecto si tiene la variable TIVAWARE_INSTALL el podr
trabajar con l en otra computadora. Si escogemos PROJECT_LOC obtendramos la direccin relativa a la del
proyecto, y se requerira que fuera instalado en el mismo nivel en la estructura del directorio. Otra ventaja
de utilizar este acercamiento es que si cambiamos a otra versin de la librera TivaWare_C_Series, lo nico
que se tiene que hacer es modificar la variable en el mismo directorio. Luego de haber completado los pasos
damos click en Ok.
Puedes ver que el smbolo para la librera muestra que el archivo fue enlazado.
54
2. S ISTEMAS DISCRETOS .
Damos click derecho en la carpeta del proyecto en el Project Explorer y seleccionamos Properties. Luego nos
dirigimos a Build->ARM Compiler ->Include Options, damos click en el signo + a la par de Add dir to #include
search path. Y agregamos la variable de compilacin que creamos anteriormente, colocamos el nombre de la
variable dentro de llaves y un signo $ al inicio de la sentencia, ${ TIVAWARE_INSTALL}.
# include
# include
# include
# include
# include
# include
7
8
El uso de los signos <>restringe la direccin de bsqueda solamente a la direccin especificada. Usando las
comillas , hace que el camino de bsqueda comience desde el directorio del proyecto. Para agregar libreras
como los 2 estndares, stdint.h y sdtdbool.h, debemos asegurarnos que estamos accediendo a los archivos
originales, y no alguno que hemos modificado.
La librera stdint.h nos da las definiciones del estndar ISO/IEC 9899:1999 o C99, para programacin en C.
La librera TivaWare se encuentra escrita en usando el estndar C99 y estndares Hngaros para llamar a las
variables. El estndar C99 para programacin en C, hace un mejor uso del hardware, incluyendo la IEE754
floating point unit.
La librera sdtdbool.h nos da las definiciones booleanas en el estndar C99.
La librera inc/hw_memmap.h posee macros definiendo el mapa de memoria de la Tiva C Series. Define direcciones base de los perifricos como GPIO_PORTF_BASE.
55
# define __Registers__
Esta directiva nos sirve para crear constantes tiles al compilador no al dispositivo, este tipo directivas no
se traducen al lenguaje de mquina, son para uso del compilador. En este ejemplo nos servir para cambiar
fcilmente entre dos cdigos distintos solamente comentando o no comentando este macro.
Luego escribimos la instruccin de compilador
1
2
# ifdef __Registers__
// Escribiremos ac a el c odigo que queremos que sea compilado cuando se encuentre
la instrucci on # define __Registers__
# endif
Esta directiva es realmente la que se encarga de decirle al compilador que cdigo utilizar al encontrarse
la palabra __Registers__3 como una constante de compilador.
Dentro las directivas escribimos el siguiente cdigo
1
2
3
Estas sern definiciones de funciones o procedimientos que veremos luego es necesario que las escribamos antes del programa principal para que el compilador sepa que existen las funciones que escribiremos
luego.
1
2
3
4
5
# ifdef __Registers__
void PortF_Init ( void ) ;
void Clock_Init ( void ) ;
void S y s T i c k _ D e la y _ m s ( u n s i g n e d long ) ;
# endif
Escribimos las variables que nos sern tiles durante la ejecucin del programa principal
1
Ac acabamos de definir una variable de tipo entero, sin signo, utilizando el estndar C99. Esta variable es
capaz de almacenar cualquier valor entero positivo que sea mayor o igual que cero y menor o igual que
doscientos cincuenta y cinco, le damos el valor inicial 2.
Luego escribimos la estructura que contendr al programa principal, el esqueleto de nuestro proyecto.
1
2
3
4
3 Debe quedar claro que __Registers__ no es una palabra reservada, pudimos haber puesto cualquier otra palabra y funcionara de igual
manera, solo es una buena prctica de programacin utilizar nombres que se adecuen a la situacin.
56
2. S ISTEMAS DISCRETOS .
# ifndef __Registers__
// Ac a conf igurarem os los GPIO utilizando la librer ia
# else
// Ac a conf igurarem os los GPIO utilizando los registros del dispositivo .
# endif
Con esta directiva le estamos diciendo al compilador si encuentra en sus variables la palabra __Registers__
ejecutar la primera parte del cdigo de lo contrario ejecutar la segunda. Por el momento haremos la parte
que se encuentra entre #else y #endif. Pero antes debemos configurar nuestro micro controlador. Agregamos
ms directivas, debajo del procedimiento main, colocamos una nueva directiva
1
2
3
4
5
6
7
8
9
return 0;
}
10
11
12
13
14
# ifdef __Registers__
/* Aqu i colocaremos las funciones PortF_Init , en la cu al con figurare mos el puerto
F,
Clock_Init , donde confi guraremo s el reloj del sistema y un delay al que
llamaremos SysTick_Delay_ms , el cu al utiliza el reloj del sistema para medir el
tiempo . */
# endif
Comenzamos por definir la funcin Clock_Init, la cul en esta prctica no recibe parmetros y no devuelve
valores. Por tanto la declaramos de la siguiente manera.
1
2
3
Dentro de este procedimiento comenzamos a seguir las instrucciones para configurar el reloj del sistema,
que se muestran en la seccin 2.5.2, estas instrucciones implementadas en cdigo se vern de las siguiente
manera.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
57
Como puedes darte cuenta hemos configurado los registros de una forma amigable, friendly, lo que significa
que no alteramos en el registro ms que los que campos que queremos configurar, para esto utilizamos los
smbolos: &= y |=. El primero de ellos nos sirve para poner los bits que necesitamos en bajo; este smbolo
realiza una operacin binaria AND entre el registro que se encuentra al lado izquierdo de este smbolo y
lo que se encuentra al lado derecho del smbolo. El segundo smbolo realiza la operacin binaria OR. Por
ejemplo en el momento de configurar el valor del cristal en el registro RCC, el campo del registro que lleva la
configuracin del cristal es el campo XTAL, entonces ponemos en bajo o en 0 el valor de dicho campo. En la
figura 2.13 se muestra la estructura del registro RCC.
Necesitamos hacer que el valor XTAL inicialmente sea 0, todos sus bits en bajo, dado que no conocemos el
valor actual de dicho campo, para luego configurar el valor que nosotros queremos, en este caso el valor que
corresponde a un cristal de 16Mhz. En la figura 2.13 se puede apreciar que los bits del 10 al 6 corresponden
por lo tanto si queremos que el valor de esta campo este en cero, hacemos un AND binario con un nmero
de 32 bits que sus bits del 10 al 6 sean cero y el resto unos (0xFFFFF83F o bien la negacin del nmero
0x000007C0), para solamente alterar el campo XTAL sin afectar a los dems. Luego hacemos un OR binario
de el registro con un nmero de 32 bits cuyo valor en el campo XTAL corresponde a la configuracin deseada
de nuestro cristal, 16Mhz y el resto de bits se encuentren en bajo para no alterar el comportamiento de los
dems campos. A esta forma de codificacin se le conoce como Friendly Coding o como Forma Amigable,
siempre que configuremos registros debemos de hacerlo de forma amigable ya que de esta manera evitamos
modificar accidentalmente configuraciones anteriores, al momento de realizar alguna otra configuracin.
Ac se puede ver la traduccin a cdigo del prrafo anterior.
2
/*
* main . c
*/
13
14
15
16
17
58
2. S ISTEMAS DISCRETOS .
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# else
Clock_Init () ; // Configuramos el PLL .
PortF_Init () ; // Configuramos el Puerto F .
for (;;) {
G P I O _ P O R T F _ D A T A _ R = ui8PinData ; // Utilizamos el registro G P I O _ P O R T F _ D A T A _ R para
enviar datos al puerto
S y s T i c k _ D e l a y _m s (300) ; // Esperamos 300 ms
G P I O _ P O R T F _ D A T A _ R =0;
S y s T i c k _ D e l a y _m s (300) ;
if ( ui8PinData ==8) { // Si el pin4 se encuentra en alto lo ponemos en bajo y
ui8PinData =2; // ponemos en en alto el pin2
}
//
61
else {
ui8PinData = ui8PinData *2; // Al
los bits de la variable .
}
62
63
64
65
66
}
# endif
67
68
return 0;
69
70
71
72
73
74
75
76
77
78
79
# ifdef __Registers__
void PortF_Init ( void ) {
v o l a t i l e uint32_t delay ;
SYSCT L_RCGC2_ R |=0 x00000020 ; // Damos reloj al perif erico
delay = SYSCTL _RCGC2_R ;
G P I O _ P O R T F _ D I R_ R |=0 x0000000E ; // Colocamos como salida el Pin1 , Pin2 , Pin3 .
G P I O _ P O R T F _ A F S E L _ R &=~(0 x0000000E ) ; // Desha bilitamo s la funcion alternativa
G P I O _ P O R T F _ P C T L _ R &=~(0 x0000FFF0 ) ; // Desh abilitam os las funciones de periferico
en los pines
80
81
82
83
84
85
86
87
88
59
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# endif
Tiva/Blinking_Led_2.c
3
E NLAZANDO EL M UNDO F SICO Y EL
M UNDO C IBERNTICO
3.1. G EOMETRA 3D
3.1.1. V ECTORES Y M ATRICES .
3.2. S ENSORES
3.2.1. C ALIBRACIN DE UN SENSOR .
3.2.2. E NCODERS .
3.2.3. G IROSCOPIO.
3.2.4. A CELERMETRO.
3.2.5. OTROS SENSORES TILES .
3.3. A CTUADORES
3.3.1. A CTUADORES N EUMTICOS .
Se dedica una seccin completa en los anexos a esta parte
61
4
D ISEO DE UN S ISTEMA
F SICO -C IBERNTICO
4.1. D INMICAS D ISCRETAS .
4.1.1. M QUINAS DE E STADOS F INITOS
4.1.2. M QUINAS E XTENDIDAS DE E STADOS F INITOS
63
A
A CTUADORES N EUMTICOS
65
B
PLC. P ROGRAMACIN EN E SCALERA
67
C
L ENGUAJE C
69
NDICE DE FIGURAS
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
1.11
1.12
1.13
1.14
1.15
1.16
1.17
1.18
1.19
1.20
1.21
1.22
1.23
1.24
1.25
1.26
1.27
1.28
1.29
1.30
1.31
1.32
1.33
1.34
1.35
1.36
1.37
1.38
1.39
1.40
1.41
1.42
1.43
1.44
1.45
1.46
1.47
1.48
1.49
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
71
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
11
12
13
14
15
16
16
17
17
18
18
18
19
19
19
20
20
20
21
21
22
22
22
23
23
24
24
25
25
25
26
26
26
27
72
NDICE DE FIGURAS
1.50
1.51
1.52
1.53
1.54
1.55
1.56
1.57
1.58
1.59
1.60
1.61
1.62
1.63
1.64
1.65
1.66
1.67
1.68
1.69
1.70
Races . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Valuando polinomios . . . . . . . . . . . . . . . . . . . . . .
Valuando polinomios . . . . . . . . . . . . . . . . . . . . . .
Rational Polynomial Group & Model Construction Group
2D Picture . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CD Models . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funciones de Transferencia . . . . . . . . . . . . . . . . . .
Dynamic Characteristics . . . . . . . . . . . . . . . . . . . .
Diagrama de Bloques . . . . . . . . . . . . . . . . . . . . . .
Polos y Ceros . . . . . . . . . . . . . . . . . . . . . . . . . . .
Model Interconection . . . . . . . . . . . . . . . . . . . . .
Diagrama de bloques de una suma . . . . . . . . . . . . . .
Suma de bloques en LabVIEW . . . . . . . . . . . . . . . .
Suma de bloques . . . . . . . . . . . . . . . . . . . . . . . .
Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CD Feedback . . . . . . . . . . . . . . . . . . . . . . . . . .
Lazo Cerrado . . . . . . . . . . . . . . . . . . . . . . . . . . .
Time Response . . . . . . . . . . . . . . . . . . . . . . . . .
Respuesta a un pulso . . . . . . . . . . . . . . . . . . . . . .
Respuesta a un pulso . . . . . . . . . . . . . . . . . . . . . .
Diagrama de bloques . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
27
27
28
28
29
29
30
30
31
31
31
32
32
32
33
33
33
34
34
35
35
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10
2.11
2.12
2.13
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
40
41
43
49
50
50
51
52
53
53
53
54
57
NDICE DE CUADROS
2.1
2.2
2.3
2.4
2.5
2.6
73
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
44
44
45
46
47
48
B IBLIOGRAFA
75