Вы находитесь на странице: 1из 85

Sistemas de Control

Prcticas de Laboratorio

Facultad de Ingeniera

Escuela de Mecnica Elctrica

S ISTEMAS DE C ONTROL
P RCTICAS DE L ABORATORIO
por

Escuela de Mecnica Elctrica

Prcticas bsicas del laboratorio de sistemas de control adecuado para

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:

Ing. Byron Arrivillaga

USAC

Ing. Julio Solares,


Inga. Ingrid Rodrguez de Lokouta

USAC
USAC

La versin electrnica de este manual se encuentra disponible en http://labelectronica.weebly.com/

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

2.6 Manos a la obra . . . . . . . . . . . . . . . . . .


2.6.1 Prctica 0. Nuevo Proyecto . . . . . . . . .
2.6.2 Prctica 1. Blinking LED. . . . . . . . . . .
2.6.3 Prctica 2. Interrupciones y Excepciones. .
2.6.4 Prctica 3. Controlando el Tiempo.. . . . .
2.6.5 Prctica 4. Interfaz Anlogo Digital. . . . .
2.6.6 Prctica 5. Interfaces UART y SPI. . . . . .
2.6.7 Prctica 6. Modulacin por ancho de pulso.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

49
49
54
59
59
59
59
59

3 Enlazando el Mundo Fsico y el Mundo Ciberntico


3.1 Geometra 3D . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1 Vectores y Matrices. . . . . . . . . . . . . . . . . . .
3.2 Sensores . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 Calibracin de un sensor. . . . . . . . . . . . . . . .
3.2.2 Encoders. . . . . . . . . . . . . . . . . . . . . . . .
3.2.3 Giroscopio.. . . . . . . . . . . . . . . . . . . . . . .
3.2.4 Acelermetro. . . . . . . . . . . . . . . . . . . . . .
3.2.5 Otros sensores tiles. . . . . . . . . . . . . . . . . .
3.3 Actuadores . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1 Actuadores Neumticos. . . . . . . . . . . . . . . . .
3.3.2 Motores Stepper. . . . . . . . . . . . . . . . . . . . .
3.3.3 Servo Mecanismos. . . . . . . . . . . . . . . . . . .
3.3.4 Motores de Alterna. . . . . . . . . . . . . . . . . . .
3.3.5 Otros tipos de actuadores. . . . . . . . . . . . . . . .
3.4 Manos a la Obra. . . . . . . . . . . . . . . . . . . . . . . .
3.4.1 Prctica 1. Lectura y Calibracin de un Sensor.. . . . .
3.4.2 Prctica 2. Algoritmo DCM. Acelermetro y Giroscopio.
3.4.3 Prctica 3. Control de Motor Stepper. . . . . . . . . .
3.4.4 Prctica 4. Control de un Servo Motor. . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

61
61
61
61
61
61
61
61
61
61
61
61
61
61
61
61
61
61
61
61

4 Diseo de un Sistema Fsico-Ciberntico


4.1 Dinmicas Discretas. . . . . . . . . . . . . . . . . .
4.1.1 Mquinas de Estados Finitos. . . . . . . . . .
4.1.2 Mquinas Extendidas de Estados Finitos. . . .
4.2 Sistemas Hbridos. . . . . . . . . . . . . . . . . . .
4.2.1 Modelos discretos en los actuadores . . . . . .
4.2.2 Entradas Continuas . . . . . . . . . . . . . .
4.2.3 Refinamiento de Estados. . . . . . . . . . . .
4.2.4 Autmatas Temporizados . . . . . . . . . . .
4.2.5 Dinmicas de Orden Superior . . . . . . . . .
4.2.6 Control Supervisado.. . . . . . . . . . . . . .
4.3 Composicin de Mquinas de Estados . . . . . . . .
4.3.1 Concurrencia . . . . . . . . . . . . . . . . .
4.3.2 Jerarqua . . . . . . . . . . . . . . . . . . . .
4.4 Lazo Cerrado y Lazo Abierto . . . . . . . . . . . . .
4.4.1 Lazo Abierto . . . . . . . . . . . . . . . . . .
4.4.2 Lazo Cerrado. . . . . . . . . . . . . . . . . .
4.5 Control PID.. . . . . . . . . . . . . . . . . . . . . .
4.5.1 Prueba y Error . . . . . . . . . . . . . . . . .
4.5.2 Mtodo de Ziegler - Nichols . . . . . . . . . .
4.5.3 Mtodos Experimentales. . . . . . . . . . . .
4.6 Manos a la obra. . . . . . . . . . . . . . . . . . . .
4.6.1 Prctica 1. Semforo . . . . . . . . . . . . . .
4.6.2 Prctica 2. Ms Mquinas de estado . . . . . .
4.6.3 Prctica 3. Un servo mecanismo. PID analgico
4.6.4 Prctica 4. Control de velocidad. PID digital. . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

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

B PLC. Programacin en Escalera

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.

1.1. I NTERACCIN M QUINA -E NTORNO Y S ISTEMAS FSICO - CIBERNTICO.


Un sistema de interaccin mquina-entorno es un sistema donde mquinas diseadas para llevar control
de entidades o magnitudes fsicas. Las aplicaciones actuales necesitan de un control mas riguroso, por lo
que en los ltimos aos se ha desarrollado dicho control con computadoras, ya que stas resuelven en gran
manera la optimizacin en dichos sistemas. Cerca del ao 2006 Hellen Gill desarrolla un nuevo trmino,
sistemas fsico-cibernticos, o por sus siglas en ingls CPS (cyber-physical system), que engloba a dichos
sistemas. De hecho dicho trmino involucra ms que un sistema de control llevado a cabo con computadoras,
engloba desde redes y computadoras, modelos fsicos hasta la interaccin final con el humano que maneja
o tiene alguna especie de relacin con dicho sistema, podra resumirse como la interseccin de lo fsico y lo
ciberntico6 .

1.2. U N EJEMPLO FUTURSTA DE UN CPS.


El siguiente ejemplo7 nos da una mejor idea de una aplicacin del trmino CPS, en un futuro cercano
dicho ejemplo podr ser implementado, alargando as la esperanza de vida de los que tengan acceso a dicha
1 Seres supuestamente pensantes que habitan la tierra.
2 Dispositivos capaces de ejecutar millones de instrucciones por segundo.
3 Shannon debe estar retorcindose en su tumba al darle la categora de informacin a sto.
4 La enorme red de computadoras.
5 El estudiante debe estar consciente que las tcnicas y conceptos de este campo son muy extensas y engloban toda una ciencia. Van

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

desarrollo de la teora de los sistemas de control


7 Ejemplo tomado de Lee Seshia, Introduction to embedded systems

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.3. PARTES DE UN CPS.


An un pequeo sistema se compone de varias partes, entre las cules destacan:
Un sistema mecnico
Un sistema electromecnico
Un sistema elctrico.
Un sistema de control.
Un sistema de software.
Una red de comunicacin.
Una interfaz humano-mquina.

1.4. FASES DE UN CPS.


Al construir un CPS debemos realizarnos 3 preguntas.
1. Qu hace nuestro sistema?
2. Cmo lo hace nuestro sistema?
3. Por qu funciona o falla nuestro sistema?
Modelar, disear y analizar especifican respectivamente las preguntas.

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.5. M ECNICA DE N EWTON

1.5. M ECNICA DE N EWTON


1.6. M ODELOS F SICOS Y D IAGRAMAS DE B LOQUES
Los diagramas de bloques son indispensables en un sistema de control, nos ayudan en el modelo, diseo
y anlisis de un CPS. Son la representacin grfica del funcionamiento de un sistema. Los bloques pueden
representar desde una funcin de transferencia en un sistema elctrico hasta darnos una perspectiva global
de los procesos en todo el sistema.

1.7. M ANOS A LA OBRA


La mejor parte de la ingeniera es cuando saltamos de la teora a la prctica, pero sin dejarla abandonada
ya que nos ayuda a no perdernos, podramos decir que es un mapa, cuando buscas un tesoro no excavas en
el mapa pero te da cierta nocin de donde ests parado.

1.7.1. S OFTWARE A UTILIZAR


La primera parte de esta seccin es instalar el software necesario 8 para realizar los diagramas, firmware
y modelos durante el curso.
LabVIEW. Lastimosamente las alternativas libres an se encuentran en fase de desarrollo y no alcanzan
el potencial que se puede obtener con esta herramienta.
LabVIEW Control design and Simulation Module. Esta suite se adapta perfectamente a la parte de diagramas de bloques del curso.
Code Composer. IDE desarrollada por Texas Instruments, para la programacin de sus diversos productos, en este laboratorio estaremos usando la tarjeta de desarrollo TivaC de Texas Instruments. En
los apndices se encuentra un tutorial donde utilizamos eclipse y gcc para arm si lo que deseas es una
alternativa libre para Code Composer.
Python versin 2.7. Puedes descargar algn IDE o editor para facilitar el uso de este lenguaje. Eclipse
con el plugin PyDev es recomendable
PySerial, SciPy y Numpy para Python 2.7. Libreras tiles para el desarrollo de aplicaciones tcnicas y
cientficas.
GNUPlot. Una poderosa herramienta para realizar grficas.

1.7.2. P RCTICA 1. FAMILIARIZNDONOS CON L AB VIEW


El objetivo de esta prctica es aprender lo bsico de LabVIEW. LabVIEW es una plataforma de programacin grfica que ayuda a ingenieros desde pruebas hasta diseos. El mdulo de Control Design and Simulation es una til herramienta para el modelo matemtico de sistemas mediante bloques. Si tienes problemas
con esta prctica es aconsejable que veas los video-tutoriales que National Instruments, ofrece en su pgina.
C URVAS DE L ISSAJOUS
Para familiarizarnos con LabVIEW, el ejercicio consiste en realizar una aplicacin interactiva donde dibujaremos las curvas de Lissajous. La actividad es similar al clsico ejercicio de los cursos
Introduccin a las redes elctricas o Circuitos Elctricos, donde
se dibujan las curvas con un osciloscopio y dos generadores de
onda, se coloca el osciloscopio en XY, en cada canal del osciloscopio se conecta un generador de onda y se hace variar arbitrariamente la frecuencia de cada generador, las curvas aparecen en el osciloscopio; tal como se muestra en la figura 1.1. Para
las personas que nunca hicieron el experimento, las curvas de
Figura 1.1: Curvas de Lissajous en un osciloscopio
Lissajous son un sistema de ecuaciones paramtricas de la forma
x = A sin(at + ),
y = B sin(bt ).
(1.1)
8 El laboratorio de electrnica de la USAC, te puede brindar una copia del software si tu conexin de internet es muy lenta para descar-

garlo. Consultar a su tutor de auxiliar de laboratorio.

1. I NTRODUCCIN

Figura 1.2: Diferentes curvas de Lissajous

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.

Figura 1.3: Ventana de Inicio de LabVIEW

1.7. M ANOS A LA OBRA

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.

Figura 1.4: Ventana de Seleccin de Proyecto

Despus de haber hecho el paso anterior, emerger una ventana donde se encuentra nuestro proyecto.

Figura 1.5: Ventana de 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.

Figura 1.6: Entornos

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.

Figura 1.7: Front Panel

1.7. M ANOS A LA OBRA

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.

Figura 1.8: Osciloscopio y Generador

Figura 1.9: Mejorando la interfaz

Podemos modificar las caractersticas de


los controles, dando click secundario en
el control y luego damos click en Properties, aparecer una ventana con las
propiedades que podemos modificar del
objeto. Para el control XY Graph cambiamos la escala de cada eje de -1 a 1.. En el
control de Trim cambiamos igualmente
su escala, podemos ver que en la petaa
de Data Type, podemos cambiar el tipo
de variable que queremos manejar en el
control, la variable puede variar desde un
tipo char (nmero de 0 a 255 compuesto
de 8 bits) hasta un numero de precisin
nfinita". Para el control de Trim necesitamos pequeos cambios, por lo que
modificaremos la escala en la pestaa de
Scale, y la pondremos como valor mnimo -1 y como valor mximo a 1.

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.

Figura 1.10: Block Diagram

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.

Figura 1.11: While Loop

1.7. M ANOS A LA OBRA

Si das click al botn Run veras que an


no hace nada, an falta dar la condicin
de parada en el ciclo y si queremos que
nunca se detenga debemos agregar la
condicin al botn rojo que se puede
ver en la esquina inferior derecha. Ac
en LabVIEW incluso eso se comporta
como un bloque y debemos ingresarle
a la entrada de dicho bloque un valor
de False para que nunca se detenga. El
bloque de False lo podemos encontrar en
Functions>Programming>Boolean>False
Constant. Para conectar una salida a una
entrada en un bloque basta con arrastrar
el ratn con click sostenido desde la
salida hasta la entrada de los bloques,
para que funcione el cursor debe tener la
forma de un carrete de hilox. En realidad
el ciclo como lo tenemos ahora no es
ms que un ciclo Until ya que pregunta
Figura 1.12: Condiciones
cuando detenerse. Si lo que deseamos
es una condicin de cuando ejecutarse,
eso es un verdadero ciclo While, solo
posicionamos el ratn sobre el bloque de condicin y veras que el cursor cambia a una manita y al darle click
veras cambiar el circulo rojo en una flecha arqueada de color verde. As podemos cambiar de un ciclo Until
a un ciclo While. De la misma manera podemos cambiar el valor de la constante de True a False y viceversa.
Si presionas el botn Run veras que el ciclo se ejecuta indefinidamente, puedes detenerlo presionando el
botn Stop que detiene cualquier programa en ejecucin.

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.

Figura 1.13: Aritmtica con Bloques

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.

Figura 1.14: Aritmtica con Bloques

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.

Figura 1.15: For Loop

1.7. M ANOS A LA OBRA

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.

Figura 1.16: Arrays

12

1. I NTRODUCCIN

Si tomamos la salida del bloque


For, veras que el grosor del cable
para conectar con los bloques cambia de grosor esto nos indica que
la informacin a travs del cable
es un array. Una de las grandes
ventajas de LabVIEW que podemos
hacer operaciones aritmticas del
tipo Escalar-Vector, lo que significa
que a cada elemento del vector
se le aplica el operador con el
escalar de entrada, generando un
nuevo vector como salida. Como
lo que que queremos generar es
una onda senoidal, replicamos el
diagrama en la figura 1.17. Podemos encontrar el bloque de la
funcin sin accediendo a Functions>Mathematics>Elementary &
Special Functions>Trigonometric
Functions>sin. La salida de cada
diagrama es una senoidal donde
la primera presenta un pequeo
desfase acotado, variando en cada
iteracin, y se encuentra controlado por Trim en el Front Panel.

Figura 1.17: Arrays

1.7. M ANOS A LA OBRA

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.

Figura 1.18: Clusters

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".

Figura 1.19: Curvas de Lissajous

1.7. M ANOS A LA OBRA

15

1.7.3. P RCTICA 2. D EL MODELO FSICO A DIAGRAMAS DE BLOQUES


En esta prctica simularemos la respuesta de un sistema dinmico dado, basndonos en el modelo matemtico que describe su fsica, en este caso un conjunto de ecuaciones diferenciales.

D ANDO EL MODELO FSICO

La figura 1.20 muestra un pndulo de resorte. El resorte es


ideal, con una constante k, cuando no se encuentra bajo
la accin de ninguna fuerza tiene una longitud L, al estirar el resorte presenta una fuerza de pre-tensin F t . En un
extremo sujeta el centro de masa de un objeto de masa m.
Dicho sistema dinmico se puede modelar con las ecuaciones 1.4 y 1.5. r (t ) es el desplazamiento radial del resorte y vara con el tiempo. (t ) es el ngulo que muestra
el pndulo con respecto a la perpendicular y vara con el
tiempo. 1.4 y 1.5.


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)

En esta parte de la prctica debes deducir las ecuaciones


1.4 y 1.5. Debes presentar los diagramas de cuerpo libre y el proceso que usaste para llegar desde las leyes de
Figura 1.20: Pndulo de resorte
Newton hasta las ecuaciones que se presentaron ac. Para
poder tratar estas ecuaciones en una forma de diagramas
2
2
de bloques debes despejar dd t 2 y dd t r2 . Tambin debes presentar los despejes junto con las demostraciones. Si no
realizas los despejes te perders en el desarrollo de la prctica.
Nota: Si basas los planteamientos en el momento, recuerda que fuerza no es igual a masa por aceleracin, y
torca no es igual inercia por aceleracin angular. Fuerza es igual a la razn de cambio en el tiempo del momento, y torca es igual a la razn de cambio en el tiempo del momento angular. Te puedes percatar que la inercia en este sistema se encuentra variando con el tiempo. Tambin puede plantear solamente una ecuacin
vectorial en R3 tomando una base ortogonal.

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.

S IMULANDO EL MODELO CON DIAGRAMAS DE BLOQUES .


El sistema de ecuaciones que planteamos en la parte anterior, no tiene una solucin analtica, al menos
alguien no la ha encontrado an, pero no implica que no tenga una solucin. Calcularemos una solucin
numrica dadas sus condiciones iniciales. En esta parte de la prctica simularemos dicho sistema y prediremos la respuesta dinmica del sistema durante un minuto.

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.

Figura 1.21: Blank VI

Ahora necesitamos agregar un ciclo en los cuales nuestras


ecuaciones sern diagramadas, pero a diferencia del While
Loop de la prctica anterior, necesitamos que dicho entorno
tenga la capacidad de interpretar los bloques de tal manera
que pueda relacionarlos con un sistema de ecuaciones diferenciales, en este caso las que describen nuestro sistema fsico.
Damos click derecho en un espacio en blanco sobre la ventana
de Block Diagram para abrir el panel Functions, nuestra bodega
en la prctica anterior, y accedemos Control Design & Simulation>Simulation>Simulation Loop. Esta herramienta nos ser
sumamente til a la hora de realizar simulaciones, ya que tiene
la capacidad de encontrar soluciones numricas a sistemas de
ecuaciones diferenciales.

Figura 1.22: Control Design & Simulation Panel

1.7. M ANOS A LA OBRA

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.

Figura 1.23: Simulation Loop

Como siguiente paso necesitamos ajustar nuestros


parmetros de simulacin. Damos click secundario
en la esquina negra del ciclo de simulacin y seleccionamos Configure Simulation Parameters, la figura 1.24 muestra la ventana de Configuracin de los
parmetros. Ac nosotros podemos ajustar el tiempo de duracin de la simulacin, el mtodo para
la resolucin de la ecuacin diferencial, y tamao
de paso en el tiempo t . En esta prctica configuraremos el initial time como 0 y el tiempo final como 60 segundos. El ODE Solver lo configuraremos
para usar como mtodo numrico Runge-Kutta 3.
Finalmente entramos 0,005 como nuestro time step,
t . Mientras ms pequeo sea t ms precisos
sern nuestros resultados en la simulacin, todo
acorde al modelo, pero si es muy pequeo requerir
mayor tiempo de procesamiento. Una vez configurado nuestro entorno de simulacin damos click
en Ok. Los diferentes mtodos para resolucin de
ecuaciones diferenciales ordinarias arrojan resultados similares entre s pero los obtienen de diferente
forma. Algunos ofrecen un t fijo y otros usan variables. Es importante probar diferentes mtodos dado que algunos son incompatibles con ciertas ecuaciones. Runge-Kutta 1 (Euler) no funciona bien para
este sistema.

Figura 1.24: Simulation Parameters

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

Regresamos al Block Diagram y encontraremos los dos bloques


correspondientes a los controles del Front Panel que acabamos
de crear. En la paleta de funciones seleccionamos Control Design and Simulation>Simulation>Continuos Linear Systems tal
como se muestra en la figura 1.26. Arrastramos al Simulation
Loop un bloque integrador de este mdulo presionamos la
tecla Ctrl y arrastramos dicho bloque, nuestro cursor cambiar y aparecer sobre el un signo ms, y creamos 3 copias del
bloque integrador, es una forma ms eficiente de crear copias
que el tradicional Ctrl+C y Ctrl + V. Ahora conectamos la
entrada de nuestro bloque integrador a la salida del otro. Nuestro diagrama de bloques debe verse similar al de la figura 1.27.

Figura 1.27: Bloque integrador.

Figura 1.26: Continuos Linear Systems

1.7. M ANOS A LA OBRA

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.

Figura 1.28: View as Icon & Visible Items

Figura 1.29: Condiciones Iniciales

Ahora damos click secundario en algn bloque de


los que su entrada se encuentra conectada y seleccionamos Configuration. Seleccionamos como opcin para Parameter sources, en el campo desplegable Terminal. Damos click en OK para cerrar esta ventana. Repetimos este procedimiento para el
otro integrador cuya entrada se encuentra conectada. Esto genera una nueva entrada para el integrador que nos permite configurar los valores iniciales para ser controlados por el Block Diagram.

Ahora conectamos el bloque r inicial (el cul


creamos anteriormente en el Front Panel) a uno de
los integradores en la entrada de Initial Condition.
De igual forma repetimos el proceso con el bloque
theta inicial en el otro conjunto de bloques enlazados. Para modelar ecuaciones diferenciales de orden superior, solo necesitamos agregar ms bloques
integradores. Dado que este es un sistema de segundo orden, nosotros requerimos dos integradores.
Sistemas de orden N requeriran N bloques integradores.

Figura 1.30: Condiciones iniciales

20

1. I NTRODUCCIN

El siguiente paso consiste en escribir a r


y en trminos dependientes del tiempo; velocidad radial r, la velocidad tan el desplazamiento radial r ,
gencial ,
el desplazamiento angular ; y trminos constantes, la masa m = 1,815 kg, la
gravedad g = 9,81 sm2 , la fuerza de pretensin F t = 5,71 N que presenta el reN
.
sorte, la constante de Hooke k = 172,8 m
Y para esto tenemos dos opciones escribir toda la ecuacin. La primera consiste en utilizar diferentes bloques que
realizan diferentes operaciones con sus
respectivas entradas y salidas. As como
lo hicimos en la prctica anterior, la figura 1.31 muestra el diagrama completo del
sistema de ecuaciones. El crculo con signos mas, menos e igual resulta un bloque
Figura 1.31: Diagrama de bloques del sistema.
til cuando deseas aplicar varias sumas y
restas. Lo podemos encontrar en la paleta Functions accediendo a Control Design & Simulation >Simulation >Signal Arithmetic.

La segunda opcin consiste en generar grandes bloques que


hagan el trabajo de pequeos bloques juntos, dado que ac
la mayora de operaciones son aritmticas, LabVIEW presenta
una til herramienta, en la paleta Functions podemos encontrar un grupo llamado Express, el cul tiene diversos bloques
que nos ayuda a ahorrarnos el trabajo de hacer diagramas extensos para realizar el trabajo que hara un solo bloque. En este
caso escribir una ecuacin larga y complicada lo podemos reducir con el bloque Formula, al cual podemos acceder en Functions>Express>Arithmetic & Comparison. Al darle click aparecer una ventana como la que se muestra en la figura 1.33.

Figura 1.33: Configure Formula

Figura 1.32: Diagrama de bloques del sistema.

1.7. M ANOS A LA OBRA

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.

Figura 1.34: Formula

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.

Figura 1.35: Diagrama de bloques del sistema.

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.

Figura 1.36: Seales dentro del Simulation Loop

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.

Figura 1.37: Seales dentro del Front Panel

Figura 1.38: Chart History Length

1.7. M ANOS A LA OBRA

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.

Figura 1.39: Waveform Chart Properties

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.

Figura 1.40: Simulacin

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

Figura 1.41: Lugar Geomtrico

1.7.4. U N SISTEMA RLC


La figura 1.42 muestra un circuito RLC. Debes simular dicho sistema al igual que lo hicimos con el de la
figura 1.20. Las bobinas no se encuentran cargadas al igual que los capacitores. La interfaz grfica en el Front
Panel debe mostrar un control en el cul podamos variar la frecuencia de la seal de entrada. La seal que
debemos mostrar en el Waveform Chart debe de ser el voltaje de la fuente y el voltaje de a a b, Vab .

Figura 1.42: Circuito RLC

1.7.5. P RCTICA 3. F UNCIONES DE T RANSFERENCIA .


LabVIEW puede ser til para analizar sistemas descritos por una funcin de transferencia. Una funcin
de transferencia de un sistema H (s) se define como la razn entre las representaciones en frecuencia de la

1.7. M ANOS A LA OBRA

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.

Figura 1.43: Array

Figura 1.44: Arreglo de indicadores tipo Numrico

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.

Figura 1.45: Arreglo de tamao 3

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.

Figura 1.46: Arreglos de indicadores

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.

Figura 1.47: Polinomios

Ordenamos en el Front Panel los indicadores de manera de agrupar 3 de ellos tal como se muestra en la figura
1.48.

Figura 1.48: Front Panel

1.7. M ANOS A LA OBRA

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.

Figura 1.49: Races

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 .

Figura 1.50: Races

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.

Figura 1.51: Valuando polinomios

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.

Figura 1.52: Valuando polinomios

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.

Figura 1.53: Rational Polynomial Group & Model Construction Group

1.7. M ANOS A LA OBRA

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.

Figura 1.54: 2D Picture

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.

Figura 1.55: CD Models

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)

Figura 1.56: Funciones de Transferencia

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.

Figura 1.57: Dynamic Characteristics

1.7. M ANOS A LA OBRA

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.

Figura 1.58: Diagrama de Bloques

El Front Panel debe verse similar al de la figura 1.59.

Figura 1.59: Polos y Ceros

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.

Figura 1.60: Model Interconection

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)

Figura 1.61: Diagrama de bloques de una suma

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.

Figura 1.62: Suma de bloques en LabVIEW

Figura 1.63: Suma de bloques

1.7. M ANOS A LA OBRA

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.

Figura 1.65: CD Feedback

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.

Figura 1.66: Lazo Cerrado

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.

Figura 1.67: 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.

Figura 1.68: Respuesta a un pulso

1.7. M ANOS A LA OBRA

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.

Figura 1.69: Respuesta a un pulso

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. S ISTEMAS DE NUMERACIN


Dios hizo los nmeros naturales, el hombre ha hecho los dems. Leopold Kronecker (18231891), matemtico alemn.
Todos tenemos nocin de que es un nmero. Un nmero es una idea, que expresa cantidad en relacin a su
unidad. Los nmeros naturales son los ms simples, los usamos para contar, por ms simple que parezca esta
accin es muy poderosa ya que engloba a cualquier sistema discreto. Para comunicarnos y realizar abstracciones necesitamos representar los nmeros de determinada manera, y para eso utilizamos un sistema de
numeracin, que no es ms que un conjunto de reglas y smbolos para dar una representacin nica a cada
nmero. Conforme avanzamos en la historia logramos saltar de los sistemas de numeracin no posicionales,
tal como es el sistema de numeracin utilizado por los antiguos romanos, a los sistemas posicionales. Los sistemas posicionales utilizan un conjunto de b smbolos permitidos, la cantidad de smbolos b se conoce como
base del sistema y es la cantidad de cosas que podemos contar utilizando un solo elemento del conjunto para
representar dicha cantidad, y el valor de cada smbolo o dgito depende de su posicin relativa, la cul est
determinada por la base. Un ejemplo de ello es el sistema decimal, en donde cada posicin equivale a una potencia de diez. El conjunto de smbolos permitidos S 10 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} nos sirven para relacionar una
determinada cantidad de potencias de diez. Donde la potencia la determina la posicin en que se encuentra. Por ejemplo el nmero 165 representa 1 ciento de unidades ms seis decenas de unidades ms cinco
unidades. De igual forma podemos escribir dicho nmero utilizando solamente tres smbolos S 3 = {0, 1, 2}.
Donde la posicin indica una potencia de tres.
16510 = 2 34 + 0 33 + 0 32 + 1 31 + 0 30 = 200103 1

(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

dicho nmero. Si se omite el subndice se asume el sistema decimal.

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. P ROCESADORES E MBEBIDOS


2.2.1. FPGA
2.2.2. DSP
2.2.3. PLC
Un PLC (programmable logic controller) es un tipo de micro controlador para automatizacin industrial.
Hay una seccin en los anexos dedicada a este tipo de micro controladores.

2.2.4. M ICROCONTROLADORES

2.3. A RQUITECTURAS DE M EMORIA


2.3.1. RAM
2.3.2. N ON -V OLATILE M EMORY.
2.3.3. F LASH M EMORY.
2.3.4. R EGISTROS Y M APAS DE M EMORIA .
A RCHIVOS DE R EGISTROS

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

2.5. T IVA C. A RQUITECTURA TM4C123GH6PM


La tarjeta de desarrollo TivaC es una plataforma de bajo costo para micro controladores basados en el
ARM CortexTM-M4F. El diseo de la Tiva C resalta la interfaz USB 2.0 del micro controlador TM4C123GH6PMI,
mdulo de hibernacin y el mdulo de control movimiento por modulacin de ancho de pulso (MC PWM).
La Tiva C posee botones y un LED RGB para aplicaciones prcticas. Posee pin headers machos y hembra que
la hacen verstil para muchas aplicaciones. Una Tiva C Launchpad posee las siguientes caractersticas:
Micro controlador Tiva TM4C123GH6PM.
Motion Control PWM
conectores USB micro-A y micro-B para el dispositivos USB, almacenamiento, un LED OTG (on-the-go)
RGB para el usuario.
Dos switch para el usuario.
2 Instrucciones que ejercen un control directo sobre el hardware y estn condicionados por la estructura fsica de la computadora que lo

soporta.

2.5. T IVA C. A RQUITECTURA TM4C123GH6PM


I/O conectados a pin headers hembra y macho de 0.1 pulgadas (0.254 mm) .

ICDI on-board.

Reset Switch

Soporte por TivaWare, como libreras para USB y perifricos.

39

40

2. S ISTEMAS DISCRETOS .

Figura 2.1: Diagrama de bloques de alto nivel del micro controlador

2.5.1. R EGISTROS Y M APAS DE M EMORIA . TM4C123GH6PM.


Los registros son casillas de almacenamiento de alta velocidad dentro del micro controlador. En la arquitectura ARM los registros R0 al R7 son siempre los mismos en todos los CPU, y son de propsito general.

2.5. T IVA C. A RQUITECTURA TM4C123GH6PM

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.

Figura 2.2: Registros de Estado

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 ;

2.5.2. R ELOJ DEL S ISTEMA


Hay diversas fuentes de reloj para uso en el micro controlador:

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.

2.5. T IVA C. A RQUITECTURA TM4C123GH6PM

43

Figura 2.3: Main Clock

C ONFIGURACIN DEL R ELOJ


Los registros RCC (Run-Mode Clock Configuration) y RCC2 Run-Mode Clock Configuration 2 proveen control para el reloj del sistema. El registro RCC2 se provee para extender los campos que ofrecen configuraciones
adicionales sobre el registro RCC. Cuando se utiliza RCC2, los valores de los campos de RCC2 son usados por
la lgica del registro RCC. En particular, RCC2 provee un conjunto ms largo de opciones para configurar el
reloj. Estos registros controlan las siguientes funcionalidades del reloj:
Fuentes de reloj en Sleep-mode y Deep-mode.
Reloj del sistema proveniente del PLL o de otra fuente de reloj.
Habilitar y deshabilitar los osciladores y el PLL.
Divisores del reloj.
Seleccin del cristal.
Importante: Se escribe en el registro RCC antes de es escribir en el registro RCC2. Si es necesario escribir
despus en el registro RCC, debemos hacer acceso a algn otro registro despus de escribir en el RCC y antes
de escribir en el RCC2.

44

2. S ISTEMAS DISCRETOS .

U SANDO LOS CAMPOS SYSDIV Y SYSDIV2


En el registro RCC, el campo SYSDIV especifica que divisor es usado para generar el reloj del sistema ya
sea de la salida del PLL o la fuente del oscilador (dependiendo de como el bit BYPASS en este registro est
configurado). Cuando se este utilizando el PLL, la frecuencia del VCO de 400 MHz es pre dividida por 2 antes
de que el divisor sea aplicado. La tabla 2.1 muestran las configuraciones del reloj utilizando el registro SYSDIV.

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.

2.5. T IVA C. A RQUITECTURA TM4C123GH6PM


SYSDIV2
0x00
0x01
0x02
0x03
0x04
...
0x3F

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

Cuadro 2.3: Posibles frecuencias de reloj del sistema con DIV400=1

C ONFIGURACIN DEL C RISTAL PARA EL O SCILADOR P RINCIPAL (MOSC)

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.

C ONFIGURACIN DE LA FRECUENCIA DEL PLL PRINCIPAL

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)

Cuadro 2.4: Frecuencias del cristal disponibles sin utilizar el PLL

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.

2.5. T IVA C. A RQUITECTURA TM4C123GH6PM


Campo RCC2
SYSDIV2, bits[28:23]
PWRDN2, bit[13]
BYPASS2, bit[11]
OSCSRC2, bits[6:4]

47
Campo RCC
SYSDIV, bits[26:23]
PWRDN, bit[13]
BYPASS, bit[11]
OSCSRC, bits[5:4]

Cuadro 2.5: Campos equivalentes entre registros RCC/RCC2

2.5.3. S ALIDAS Y E NTRADAS DE P ROPSITO G ENERAL . GPIO S . TM4C123GH6PM.


El mdulo de GPIO se compone de 6 bloques fsico GPIO, cada uno correspondiente al puerto individual
GPIO Port A, GPIO Port B, GPIO Port C, GPIO Port D, GPIO Port E y GPIO Port F. El mdulo GPIO soporta hasta
43 pines de entradas y salidas programables, dependiendo de los perifricos usados.
El mdulo de GPIO presenta las siguientes caractersticas:

Hasta 43 pines programables de entradas y salidas.

Alta flexibilidad para la multiplexacin en los pines permitiendo el uso de varias funciones.

Tolera 5V configurado como entrada.

Puertos A-G se acceden a travs del Bus Perifrico Avanzado (APB, Advanced Peripheral Bus).

Control programable de interrupciones

Enmascaramiento de generacin de Interrupciones.


Disparadas por flanco, rising-edge, falling-edge o ambos.
Sensitivas al nivel, valores alto o bajo.

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 .

Cuadro 2.6: Funciones Alternativas

2.6. M ANOS A LA OBRA

49

2.5.4. I NTERRUPCIONES . TM4C123GH6PM.


2.5.5. T IMERS . TM4C123GH6PM.
2.5.6. ADC. TM4C123GH6PM.
2.5.7. UART, SPI. TM4C123GH6PM.
2.5.8. PWM. TM4C123GH6PM.

2.6. M ANOS A LA OBRA


Es hora de familiarizarnos con el micro controlador. Antes de empezar las prcticas de este mdulo debes
instalar Code Composer Studio y los drivers correspondientes a la TivaC, tambin debes instalar la librera
TivaWare. Para esto debes seguir las instrucciones del Laboratorio 1 del manual TM4C123G LaunchPad Workshop Workbook

2.6.1. P RCTICA 0. N UEVO P ROYECTO


Como primer paso debemos familiarizarnos con el IDE donde escribiremos el cdigo para el micro controlador. Code Composer Studio es un IDE desarrollado por Texas Instruments para sus productos basado en
eclipse. Esta prctica no debe entregarse pero debe de realizarse cada vez que creemos un proyecto nuevo.
Abrimos Code Composer Studio y le damos a un nombre a nuestro WorkSpace, el cul es un directorio que
contiene:
Preferencias y Configuraciones del IDE.
Los proyectos pueden estar ac o pueden estar enlazados de alguna otra parte.
Cuando se importa un proyecto se recomienda enlazar al WorkSpace.
Al borrar un proyecto desde el Project Explorer se borra solamente el enlace.

Figura 2.4: Project Explorer Panel

50

2. S ISTEMAS DISCRETOS .

El directorio del Proyecto contiene:


Configuracin de las herramientas y de compilacin para uso en el gestor de proyectos MAKE.
Los archivos pueden ser enlazados o residir en el directorio.
Al borrar un archivo en el Project Explorer se borra solamente el enlace.

Figura 2.5: Abstraccin del WorkSpace

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.

Figura 2.6: New CCS Project

2.6. M ANOS A LA OBRA

51

El asistente gener un archivo tm4c123gh6pm_startup_ccs.c en el projecto automticamente. Dicho archivo


lo veremos con mayor atencin ms adelante. Eclipse, la base de Code Composer Studio, usa dos tipos de
variables:
Path Variable Cuando agregamos un archivo, enlazado, a nuestro proyecto, puede especificarse relativo
a una direccin que se encuentra en una variable de este tipo.
Build Variable Utilizadas para elementos como la direccin de bsqueda para incluir archivos asociados con libreras.
Las variables pueden tener un alcance en el proyecto, PROJECT SCOPE( solamente funcionan para el proyecto), pueden tener un alcance en el WorkSpace, WORKSPACE SCOPE (funcionan para todos los proyectos en
el WorkSpace). Como siguiente paso necesitamos agregar una archivo como librera y luego agregar las direcciones de bsqueda para cabeceras. Damos click derecho en la carpeta del proyecto luego damos click en
Properties. Damos click en Resource para expandir el men y nos dirigimos a Linked Resources. Damos click
en el botn New. Le damos de nombre TIVAWARE_INSTALL y para la ubicacin damos click en Folder y buscamos la direccin donde se instalamos la TivaWare, debe ser similar a C:\ti\TivaWare_C_Series-2.1.0.12573 ,
dependiendo de la versin que instalaste anteriormente. Al terminar damos click en Ok. Debes ver la nueva
variable en la lista de variables.

Figura 2.7: Linked Resources

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.

Figura 2.8: Build Variables

2.6. M ANOS A LA OBRA

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.

Figura 2.9: File Operation

Puedes ver que el smbolo para la librera muestra que el archivo fue enlazado.

Figura 2.10: Smbolo para driverlib.lib

El proyecto debe verse tal como se muestra en la figura 2.11.

Figura 2.11: Proyecto

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}.

Figura 2.12: Include Options

2.6.2. P RCTICA 1. B LINKING LED.


En esta prctica haremos un programa que apague y encienda repetidamente uno de los LED que se
encuentran en nuestra tarjeta de desarrollo.
Como primer paso debemos crear un nuevo proyecto y configurar las variables tal como se hizo en la
prctica 0. Luego de haber creado el proyecto y configurado las variables, nos dirigimos al archivo main.c, el
cul ser el esqueleto de nuestro programa. El objetivo de esta prctica es familiarizarnos con el lenguaje C,
la librera que nos provee Texas Instruments y los registros del micro controlador.
Agregamos las libreras que usaremos en la prctica
1
2
3
4
5
6

# include
# include
# include
# include
# include
# include

< stdint .h >


< sdtdbool .h >
" inc / hw_memmap . h "
" inc / hw_types . h "
" driverlib / sysctl . h "
" driverlib / gpio . h "

7
8

# include " inc / tm4c123gh6pm "

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.

2.6. M ANOS A LA OBRA

55

La librera inc/hw_types.h define macros y tipos comunes.


La librera inc/sysctl.h tiene macros y definiciones para la API System Control del objeto DriverLib. Incluye
definiciones como SysCtlClockSet y SysCtlClockGet.
La librera inc/gpio.h tiene macros y definiciones para la API GPIO del objeto DriverLib. Incluye definiciones
como GPIOPinTypeGPIOInput y GPIOPinWrite.
La librera inc/tm4c123gh6pm.h define todos los registros como la direccin de memoria a la que se encuentra mapeados.
Luego escribimos la directiva
1

# 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

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 ) ;

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

uint8_t ui8PinData =2;

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

int main ( void ) {


// Escribimos ac a nuestro programa .
return 0;
}

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 .

Dentro de main escribimos otra directiva de compilador similar a la anterior,


1
2
3
4
5

# 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

int main ( void ) {


# 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

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

void Clock_Init ( void ) {


// Configurando el reloj a 80 Mhz .
}

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

void Clock_Init ( void ) {


SYSCTL_RCC_R |=
0 x00000800 ;
// Pone en alto el bit BYPASS
SYSCTL_RCC_R &= ~(0 x00400000 ) ;
// Pone en bajo los bits USESYS
SYSCTL_RCC_R &= ~(0 x000007C0 ) ;
// Limpiamos el campo XTAL para colocar el valor del cristal
SYSCTL_RCC_R |=
0 x00000540 ;
// Colocamos el valor del cristal a 16 Mhz .
SYSCTL_RCC2_R |= 0 xC0000000 ;
// Configuramos el PLL para usar 400 Mhz y aumentar nuestra resoluci on
SYSCTL_RCC2_R |= 0 x00000800 ;
// Pone en alto el bit BYPASS
SYSCTL_RCC2_R &=~(0 x00002000 ) ;
// Pone en bajo el bit PLLPWRDN para que el PLL empiece a funcionar
SYSCTL_RCC2_R &=~(0 x1FC00000 ) ;
// Limpia el campo SYSDIV2 y SYSDIV2LSB
SYSCTL_RCC2_R |= 0 x01000000 ;
// Indicamos el divisor en estos campos
while (( SYSCTL_RIS_R &0 x00000040 ) ==0)
{};
// Esperamos que el bit RIS de este registro se ponga en alto para indicar que
el PLL ya se encuentra enganchado
SYSCTL_RCC2_R &=~(0 x00000800 ) ;

2.6. M ANOS A LA OBRA

// Iniciamos el PLL poniendo en bajo el bit BYPASS

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.

Figura 2.13: 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

SYSCTL_RCC_R &= ~(0 x000007C0 ) ;


SYSCTL_RCC_R |= 0 x00000540 ;

SYSCTL_RCC_R = ( SYSCTL_RCC_R &~(0 x000007C0 ) ) +0 x00000540 ;

/*
* main . c
*/

Otra forma de hacerlo de una manera ms compacta es de la siguiente manera.

Luego de configurar el reloj. Al final nuestro cdigo debe verse as:


2
3
4
5
6
7
8
9
10
11
12

// Agregamos las cabeceras


# include < stdint .h >
# include < stdbool .h >
# include " inc / tm4c123gh6pm . h "
# include " inc / hw_memmap . h "
# include " inc / hw_types . h "
# include " driverlib / sysctl . h "
# include " driverlib / gpio . h "

13
14
15

16
17

// # define __Registers__ // Comentar o quitar comentario dependiendo de la modalidad en


la que trabajemos .

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

uint8_t ui8PinData =2;


# ifdef __Registers__
// Funciones utiles que crearemos para configurar reloj y perif ericos
void PortF_Init ( void ) ;
void Clock_Init ( void ) ;
void S y s T i c k _ D e l a y _m s ( uint32_t ) ;
# endif
int main ( void ) {
# ifndef __Registers__
S y s C t l C l o c k S e t ( S Y S C T L _ S Y S D I V _ 2 _ 5 | SYSCT L_USE_PL L | S Y S C T L _ X T A L _ 1 6 M H Z | SY SC TL _O S C_ MA IN ) ;
// Configuramos el reloj para funcionar a 80 Mhz utilizando un cristal de 16 Mhz .
SysCtlPeripheralEnable ( SYSCTL_PERIPH_GPIOF );
// Habilitamos el reloj en el puerto F
G P I O P i n T y p e G P I O O u t p u t ( GPIO_PORTF_BASE , GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 ) ;
// Configuramos Pin1 , Pin2 , Pin3 como salidas
G P I O P i n T y p e G P I O I n p u t ( GPIO_PORTF_BASE , GPIO_PIN_4 | GPIO_PIN_0 ) ; // Configuramos pin0 y
pin4 como entradas
G P I O P a d C o n f i g S e t ( GPIO_PORTF_BASE , GPIO_PIN_4 | GPIO_PIN_0 , GPIO_STRENGTH_2MA ,
GPIO_PIN_TYPE_STD_WPU );
// Configuramos las resistencias Pull - up en el pin4 y pin0
G P I O P i n W r i t e ( GPIO_PORTF_BASE , GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 , ui8PinData ) ; //
Escribimos el valor ui8PinData en el puerto F
// Enmascaramos los pin1 , pin2 , pin3 y mandamos el valor de ui8PinData al puerto F
for (;;) {
if ( G P I O P i n R e a d ( GPIO_PORTF_BASE , GPIO_PIN_4 ) !=0 x10 ) { // Verificamos si el pin4
se encuentra en alto
ui8PinData = ui8PinData *2; // Si se encuentra en alto hacemos un corrimiento
G P I O P i n W r i t e ( GPIO_PORTF_BASE , GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 , ui8PinData )
; // Mostramos en el puerto F el valor de ui8PinData
if ( ui8PinData ==8) { // Si se encuentra en alto el pin3 lo ponemos en bajo y
ui8PinData =1; // ponemos en bajo el pin1
}
S y s C t l D e l a y (4000000) ; // Esperamos 150 ms . 4000000 es el n umero de tr ios de
ciclos de reloj que esperamos .
}
}

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

multiplicar por 2 hacemos un corrimiento en

}
# 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

2.6. M ANOS A LA OBRA

G P I O _ P O R T F _ A D C C T L _ R &=~(0 x0000000E ) ; // Desha bilitamos funciones de ADC en los


pines
G P I O _ P O R T F _ D M A C T L _ R &=~(0 x0000000E ) ; // Desha bilitamos funciones de DMA en los
pines
G P I O _ P O R T F _ D R 2 R _ R |=0 x0000000E ;
// Hacemos que la salida soporte a lo m as 2 mA .
G P I O _ P O R T F _P U R _ R |=0 x0000000E ;
// Habilitamos las Pull Up
G P I O _ P O R T F _D E N _ R |=0 x0000000E ;
// Configuramos salidas digitales
G P I O _ P O R T F _ A M S E L _ R &=~(0 x00000001 ) ; // Desha bilitamo s modo anal ogico en los pines
G P I O _ P O R T F _ L O C K _ R =0 x4C4F434B ; // Permitimos cambios en el puerto F
G PI O_ PO R TF _C R_ R |=0 x1F ;
// Permitimos cambios en el puerto F

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

void Clock_Init ( void ) {


SYSCTL_RCC_R |=
0 x00000800 ; // Pone en alto el bit BYPASS
SYSCTL_RCC_R &= ~(0 x00400000 ) ; // Pone en bajo los bits USESYS
SYSCTL_RCC_R &= ~(0 x000007C0 ) ; // Limpiamos el campo XTAL para colocar el valor del
cristal
SYSCTL_RCC_R |=
0 x00000540 ; // Colocamos el valor del cristal a 16 Mhz .
SYSCTL_RCC2_R |= 0 xC0000000 ; // Configuramos el PLL para usar 400 Mhz y aumentar
nuestra resoluci on
SYSCTL_RCC2_R |= 0 x00000800 ; // Pone en alto el bit BYPASS
SYSCTL_RCC2_R &=~(0 x00002000 ) ; // Pone en bajo el bit PLLPWRDN para que el PLL
empiece a funcionar
SYSCTL_RCC2_R &=~(0 x1FC00000 ) ; // Limpia el campo SYSDIV2 y SYSDIV2LSB
SYSCTL_RCC2_R |= 0 x01000000 ; // Indicamos el divisor en estos campos
while (( SYSCTL_RIS_R &0 x00000040 ) ==0)
{};
// Esperamos que el bit RIS de este registro se ponga en alto para indicar
que el PLL ya se encuentra enganchado
SYSCTL_RCC2_R &=~(0 x00000800 ) ; // Iniciamos el PLL poniendo en bajo el bit BYPASS
}
void S y s T i c k _ D e la y _ m s ( uint32_t delay )
{
uint32_t i =0; // Declaramos la variable que alcazara el n umero de ms .
for ( i =0; i < delay ; i ++) { // Repetiremos este ciclo hasta alcanzar el n umero de ms
.
NVIC_ ST_CTRL_ R &= ~(0 x00000001 ) ; // Deshabil itamos el Timer del sistema durante
la configuracion
N V I C _ S T _ R E LO A D _ R = 80000 -1; // Agregamos a este registro el valor equivalente en
ciclos
// de reloj que toma llegar a 1 ms .
N V I C _ S T _ C U R R E N T _ R = 0; // Limpiamos el registro Current
NVIC_ ST_CTRL_ R |= 0 x00000005 ; // Activamos el Timer para funcionar con reloj del
sistema
while (( NVIC_ST _CTRL_R &0 x00010000 ) ==0) // Esperamos hasta que el bit Count sea 1
indicando que N V I C _ S T _ C U R R E N T _ R llego a 0
{};
}
}

117
118

# endif
Tiva/Blinking_Led_2.c

2.6.3. P RCTICA 2. I NTERRUPCIONES Y E XCEPCIONES .


2.6.4. P RCTICA 3. C ONTROLANDO EL T IEMPO.
2.6.5. P RCTICA 4. I NTERFAZ A NLOGO D IGITAL .
2.6.6. P RCTICA 5. I NTERFACES UART Y SPI.
2.6.7. P RCTICA 6. M ODULACIN POR ANCHO DE PULSO.

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

3.3.2. M OTORES S TEPPER .


3.3.3. S ERVO M ECANISMOS .
3.3.4. M OTORES DE A LTERNA .
3.3.5. OTROS TIPOS DE ACTUADORES .

3.4. M ANOS A LA O BRA .


3.4.1. P RCTICA 1. L ECTURA Y C ALIBRACIN DE UN S ENSOR .
3.4.2. P RCTICA 2. A LGORITMO DCM. A CELERMETRO Y G IROSCOPIO.
3.4.3. P RCTICA 3. C ONTROL DE M OTOR S TEPPER .
3.4.4. P RCTICA 4. C ONTROL DE UN S ERVO M OTOR .

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

4.2. S ISTEMAS H BRIDOS


4.2.1. M ODELOS DISCRETOS EN LOS ACTUADORES
4.2.2. E NTRADAS C ONTINUAS
4.2.3. R EFINAMIENTO DE E STADOS
4.2.4. AUTMATAS T EMPORIZADOS
4.2.5. D INMICAS DE O RDEN S UPERIOR
4.2.6. C ONTROL S UPERVISADO.

4.3. C OMPOSICIN DE M QUINAS DE E STADOS


4.3.1. C ONCURRENCIA
4.3.2. J ERARQUA

4.4. L AZO C ERRADO Y L AZO A BIERTO


4.4.1. L AZO A BIERTO
4.4.2. L AZO C ERRADO

4.5. C ONTROL PID.


4.5.1. P RUEBA Y E RROR
4.5.2. M TODO DE Z IEGLER - N ICHOLS
4.5.3. M TODOS E XPERIMENTALES .

4.6. M ANOS A LA OBRA .


4.6.1. P RCTICA 1. S EMFORO
4.6.2. P RCTICA 2. M S M QUINAS DE ESTADO
4.6.3. P RCTICA 3. U N SERVO MECANISMO. PID ANALGICO
4.6.4. P RCTICA 4. C ONTROL DE VELOCIDAD. PID DIGITAL .

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

Curvas de Lissajous en un osciloscopio


Diferentes curvas de Lissajous . . . . .
Ventana de Inicio de LabVIEW . . . . .
Ventana de Seleccin de Proyecto . . .
Ventana de Proyecto . . . . . . . . . . .
Entornos . . . . . . . . . . . . . . . . . .
Front Panel . . . . . . . . . . . . . . . . .
Osciloscopio y Generador . . . . . . . .
Mejorando la interfaz . . . . . . . . . . .
Block Diagram . . . . . . . . . . . . . . .
While Loop . . . . . . . . . . . . . . . . .
Condiciones . . . . . . . . . . . . . . . .
Aritmtica con Bloques . . . . . . . . .
Aritmtica con Bloques . . . . . . . . .
For Loop . . . . . . . . . . . . . . . . . .
Arrays . . . . . . . . . . . . . . . . . . . .
Arrays . . . . . . . . . . . . . . . . . . . .
Clusters . . . . . . . . . . . . . . . . . . .
Curvas de Lissajous . . . . . . . . . . . .
Pndulo de resorte . . . . . . . . . . . .
Blank VI . . . . . . . . . . . . . . . . . . .
Control Design & Simulation Panel . . .
Simulation Loop . . . . . . . . . . . . .
Simulation Parameters . . . . . . . . . .
Interfaz Grfica . . . . . . . . . . . . . .
Continuos Linear Systems . . . . . . .
Bloque integrador. . . . . . . . . . . . .
View as Icon & Visible Items . . . . . . .
Condiciones Iniciales . . . . . . . . . . .
Condiciones iniciales . . . . . . . . . . .
Diagrama de bloques del sistema. . . .
Diagrama de bloques del sistema. . . .
Configure Formula . . . . . . . . . . . .
Formula . . . . . . . . . . . . . . . . . .
Diagrama de bloques del sistema. . . .
Seales dentro del Simulation Loop . .
Seales dentro del Front Panel . . . . .
Chart History Length . . . . . . . . . . .
Waveform Chart Properties . . . . . . .
Simulacin . . . . . . . . . . . . . . . . .
Lugar Geomtrico . . . . . . . . . . . . .
Circuito RLC . . . . . . . . . . . . . . . .
Array . . . . . . . . . . . . . . . . . . . .
Arreglo de indicadores tipo Numrico .
Arreglo de tamao 3 . . . . . . . . . . .
Arreglos de indicadores . . . . . . . . .
Polinomios . . . . . . . . . . . . . . . . .
Front Panel . . . . . . . . . . . . . . . . .
Races . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

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

Diagrama de bloques de alto nivel del micro controlador


Registros de Estado . . . . . . . . . . . . . . . . . . . . . . .
Main Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Project Explorer Panel . . . . . . . . . . . . . . . . . . . . .
Abstraccin del WorkSpace . . . . . . . . . . . . . . . . . .
New CCS Project . . . . . . . . . . . . . . . . . . . . . . . .
Linked Resources . . . . . . . . . . . . . . . . . . . . . . . .
Build Variables . . . . . . . . . . . . . . . . . . . . . . . . . .
File Operation . . . . . . . . . . . . . . . . . . . . . . . . . .
Smbolo para driverlib.lib . . . . . . . . . . . . . . . . . . .
Proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Include Options . . . . . . . . . . . . . . . . . . . . . . . . .
Registro RCC . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

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

Posibles Frecuencias del Reloj del sistema usando el campo SYSDIV


Posibles frecuencias de reloj del sistema usando el campo SYSDIV2
Posibles frecuencias de reloj del sistema con DIV400=1 . . . . . . . .
Frecuencias del cristal disponibles sin utilizar el PLL . . . . . . . . .
Campos equivalentes entre registros RCC/RCC2 . . . . . . . . . . . .
Funciones Alternativas . . . . . . . . . . . . . . . . . . . . . . . . . . .

73

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

44
44
45
46
47
48

B IBLIOGRAFA

75

Вам также может понравиться