Sunteți pe pagina 1din 140

Implementacin Hardware de un Sistema de Control

Digital para un Sistema de Pndulo Invertido









AUTOR: J oan Marc Berga Cabello
DIRECTORES: Enrique Cant Navarro, Abdelali El Aroudi

FECHA: Marzo / 2012



Control de un Sistema de Pndulo Invertido

2

ndice general
1. MEMORIA ....................................................................................................................... 5
1.1 Objeto del Proyecto ................................................................................................... 6
1.2 Alcance del Proyecto ................................................................................................ 6
1.3 Antecedentes .............................................................................................................. 6
1.4 Definiciones y abreviaturas ..................................................................................... 7
1.5 Descripcin de la planta ........................................................................................... 8
1.6 Modelado de la planta ............................................................................................... 9
1.6.1.1 Obtencin de las ecuaciones diferenciales: El conjunto carro-pendulo ....... 9
1.6.1.2 Obtencin de las ecuaciones diferenciales: El motor de CC ....................... 12
1.6.2 Transformacin al plano s: Obtencin de la funcin de transferencia de la
planta H(s) ..................................................................................................................... 13
1.6.3.1 Transformacin al plano z: Obtencin de la funcin de transferencia de la
planta H(z). .................................................................................................................... 16
1.6.3.2 Transformacin al plano z: La transformada z modificada .......................... 19
1.6.4.1 Representacin en el espacio de estados en tiempo continuo ................... 21
1.6.4.2 Representacin en el espacio de estados en tiempo discreto .................... 23
1.7 Diseo de sistemas de control .............................................................................. 25
1.7.1 Control mediante el LGR .................................................................................... 25
1.7.1.1 Estabilizacin de la planta ........................................................................... 27
1.7.1.2 Introduciendo especificaciones: Contornos y error en estado
estacionario ............................................................................................................... 28
1.7.1.3 Ejemplo de controlador................................................................................ 32
1.7.1.4 Simulaciones de la planta-controlador con retardos de transporte. ........ 38
1.7.2 Control en el espacio de estados: mtodo de ubicacin de polos. ................ 44
1.7.2.1 Controlabilidad y observabilidad ................................................................. 45
1.7.2.2 Obtencin de la matriz de ganancia de realimentacin de estado K ...... 48
1.8 El hardware ............................................................................................................... 50
1.8.1 Sistema electrnico ............................................................................................ 51
1.8.1.1.1 Eligiendo el microcontrolador .................................................................. 51
1.8.1.1.2 La familia dsPIC30F ................................................................................. 54
1.8.1.1.3 El dsPIC30F4011 ...................................................................................... 56
1.8.1.1.3.1 El QEI .................................................................................................. 56
1.8.1.1.3.2 El mdulo PWM ................................................................................. 63
Control de un Sistema de Pndulo Invertido

3

1.8.1.2 El motor de DC ............................................................................................. 71
1.8.1.3 El codificador incremental ........................................................................... 72
1.8.1.4 La placa de circuito impreso ....................................................................... 74
1.8.2 Sistema mecnico: El conjunto pndulo-carro-soporte ................................... 78
1.9 El software ................................................................................................................ 81
1.9.1 Entorno de programacin y consideraciones previas ...................................... 81
1.9.2 Configurando los perifricos: el QEI.................................................................. 82
1.9.3 Configurando los perifricos: el mdulo PWM ................................................. 83
1.9.4 Subrutinas relativas al clculo de la posicin del pndulo .............................. 85
1.9.5 Programa principal .............................................................................................. 88
1.10 Resultados .............................................................................................................. 91
1.11 Bibliografa .............................................................................................................. 92
2. ANEXOS ....................................................................................................................... 93
2.1 Ficheros de MATLAB .............................................................................................. 94
2.2 Cdigo fuente ........................................................................................................... 98
2.3 Levantamiento del pndulo ................................................................................. 101
2.4 Manual de prcticas .............................................................................................. 108
2.4.1 Consideraciones previas .................................................................................. 108
2.4.2 Creando un proyecto en MPLAB ..................................................................... 109
2.4.3 Breve descripcin del sistema ......................................................................... 109
2.4.4 Ejercicios propuestos: Estudio previo ............................................................. 112
2.4.5 Ejercicios propuestos: Implementacin de controladores en la maqueta.... 113
3. PLANOS ..................................................................................................................... 115
3.1 Carro: C1 ................................................................................................................. 116
3.2 Piezas 1: P4,.., P9 ................................................................................................... 117
3.3 Piezas 2: C2............................................................................................................. 118
3.4 Piezas 3: C3............................................................................................................. 119
3.5 Soporte: P16 ........................................................................................................... 120
3.6 Maqueta: Conjunto ................................................................................................ 121
3.7 Esquema elctrico ................................................................................................. 122
3.8 Aspecto de las mascaras de C.I .......................................................................... 123
4. PRESUPUESTO......................................................................................................... 125
4.1 Mediciones .............................................................................................................. 126
4.1.1 Captulo 1: Componentes electrnicos ........................................................... 126
Control de un Sistema de Pndulo Invertido

4

4.1.2 Captulo 2: Cables y conectores. ..................................................................... 129
4.1.3 Captulo3: Elementos mecnicos de la maqueta. .......................................... 131
4.1.4 Captulo 4: Placas de circuito impreso. ........................................................... 133
4.2 Presupuesto ............................................................................................................ 134
4.2.1 Captulo 1: Componentes electrnicos ........................................................... 134
4.2.2 Captulo 2: Cables y conectores. ..................................................................... 136
4.2.3 Captulo 3: Elementos mecnicos de la maqueta. ......................................... 137
4.2.4 Captulo 4: Placas de circuito impreso. ........................................................... 139
4.3 Resumen del presupuesto ................................................................................... 140





































1. MEMORIA


















Control de un Sistema de Pndulo Invertido

6

1.1 Obj eto del Proyecto

El objetivo de este proyecto, es realizar una maqueta de pndulo
invertido preparada para experimentar con algoritmos de control en tiempo
discreto. Se realizar tambin, el estudio de la planta y se aplicar un sistema
regulador entorno a la posicin de equilibrio superior del pndulo.

1.2 Alcance del Proyecto

Para la resolucin de este reto se pueden emplear diversos algoritmos
de control, ms o menos sofisticados, con variedad de respuestas o
prestaciones. Este proyecto presentar estudios y realizacin de algoritmos de
control mediante mtodos clsicos y modernos. En concreto se usar el
mtodo del lugar geomtrico de las races y el mtodo de ubicacin de polos.
Estos se complementaran mediante el empleo de herramientas de MATLAB
para obtener y simular los controladores. Finalmente se implementar en la
maqueta un sistema regulador mediante el mtodo del lugar geomtrico de las
races, entorno de la posicin de equilibrio superior.

1.3 Antecedentes

Este proyecto es conocido en el mundo del control y abarca diversas
aplicaciones, desde el control de posicin de un propulsor primario espacial,
hasta el equilibrio de maquinaria y robots, como el patn elctrico (tipo Segway).
No obstante, el objetivo de este proyecto no es la aplicacin comercial, sino el
estudio de algoritmos de control.

En nuestro caso, se ha optado por una planta cuyo pndulo puede
realizar movimientos en el plano X y en el plano Y. No obstante, existen
diversas variantes del experimento, como el mismo pero con 3 grados de
libertad, el pndulo de Furuta, varios pndulos acoplados uno encima del
otro,..etc.

Al construir esta maqueta, dejo abierto el camino para el estudio de todo
tipo de algoritmos y facilito el estudio a quin pudiera aprovechar el prototipo
para fines parecidos.







Control de un Sistema de Pndulo Invertido

7

1.4 Defi niciones y abrevi aturas

RISC: (Reduced Instruction Set Computer) Arquitectura de los
microcontroladores caracterizados por un juego de instrucciones sencillo, y alta
velocidad de ejecucin de estas.

Planta en equilibrio: Segn [1] y cito textualmente: Un sistema de control est
en equilibrio si, en ausencia de cualquier perturbacin o entrada, la salida
permanece en el mismo estado.

Estabilidad absoluta: Para referirme a ella usar el trmino estabilidad a lo
largo del proyecto. Segn [1] y cito textualmente: Un sistema de control lineal e
invariante con el tiempo es estable si la salida termina por regresar a su estado
de equilibrio cuando el sistema est sujeto a una condicin inicial.
DSP: (Procesador Digital de Seales) Es un sistema basado en un procesador
o microprocesador que posee un juego de instrucciones, un hardware y un
software optimizados para aplicaciones que requieran operaciones numricas a
muy alta velocidad. Debido a esto es especialmente til para el procesado y
representacin de seales en tiempo real.
MCU: Abreviacin de microcontrolador.

PWM: (Modulacin por ancho de pulsos) Es una tcnica en la que se modifica
el ciclo de trabajo de una seal peridica, para controlar la cantidad de energa
que se enva a una carga.

ICD2: (MPLAB

ICD 2 In-Circuit Debugger) Debugger y programador para


microcontroladores y DSPs de Microchip.

PICkit 2 : Debugger y programador para microcontroladores y DSPs de
Microchip, de bajo coste.

ZOH: (zero-order hold) Retenedor que construye una seal en tiempo continuo
a partir de una sea discreta, manteniendo constante el valor de cada muestra.

OrCAD: Grupo de programas de Cadence, entre los cuales se encuentran
programas para el diseo y simulacin de placas de circuito impreso.

cpr: (cuentas por revolucin o pulsos por revolucin) Hace referencia a los
pulsos que ocurren en una corona de un encoder, por revolucin. Se ha de
tener en cuenta que cada pulso genera dos flancos.


Control de un Sistema de Pndulo Invertido

8

1.5 Descri pcin de la planta

Para realizar un control sobre algn sistema se requiere conocer bien la
planta. Segn el problema y el resultado deseado podremos ser ms o menos
restrictivos a la hora de modelar la planta y difcilmente hallaremos un anlisis
que incorpore todas las caractersticas del mundo real al que nos enfrentamos.
Tras la experimentacin, veremos una relacin clara entre el modelo empleado
para la planta junto con el control realizado y la respuesta real.

Esta planta se compone por un carro, que se mueve libremente dentro
de un segmento en el plano x. Sujeto a este, est una barra (pndulo) con una
articulacin rotacional. Nuestra entrada es la fuerza que se aplica al carro
horizontalmente y la salida que deseamos controlar es el ngulo del pndulo. Si
aplicamos una condicin inicial al pndulo, la barra alcanza la posicin de
equilibrio inferior (definida como 180) en rgimen permanente. Podemos
imaginar con una respuesta de segundo orden. Es por lo tanto una posicin
estable del pndulo. No obstante, buscamos elevar el pndulo hasta la posicin
de equilibrio superior (0), que es una posicin de equilibrio inestable, puesto
que en aplicar al sistema una condicin inicial no vuelve a su posicin de
reposo inicial. Como actuador usaremos un motor de cc, unido al carro con un
sistema engranaje-correa.
















Por lo tanto tratamos con un sistema inestable, y como mas adelante
observaremos, un sistema no lineal. Tanto los estudios que se presentan en
este proyecto mediante las tcnicas clsicas, como las modernas trataran con
un sistema regulador monovariable. En ambos casos se trabajar con sistemas
discretos.


Control de un Sistema de Pndulo Invertido

9

1.6 Modelado de l a planta

En este apartado se realizarn estudios referentes al modelado de la
planta, para su posterior uso en la obtencin y simulacin de controladores.

En los apartados 1.6.1.1 y 1.6.1.2 se obtendrn las ecuaciones
diferenciales descriptoras del sistema. En el apartado 1.6.2 se obtendr la
funcin de transferencia de la planta (). En los apartados 1.6.3.1 y 1.6.3.2 se
discretizar la funcin () a () y (, ) respectivamente. Esta ltima
incluye el efecto del retardo en la ejecucin del programa del controlador.
Finalmente en los apartados 1.6.4.1 y 1.6.4.2 se obtendrn las ecuaciones del
sistema continuo y discreto en el espacio de estados.


1.6.1.1 Obtencin de las ecuaciones diferenciales: El conjunto carro-
pendulo

Primeramente obtendremos las ecuaciones que describen el
comportamiento de la planta en lazo abierto, sin el controlador ni el motor. Para
modelar la planta existen diversos mtodos. Se ha optado por incluir el mtodo
expuesto en [1] (p.68-70), dada su elegancia y simplicidad:






















Figura 6-1. Diagrama de cuerpo libre de la planta
Control de un Sistema de Pndulo Invertido

10

Sea el ngulo de la barra respecto de la lnea vertical. Sean adems
las coordenadas (, ) del centro de gravedad de la barra del pndulo (

).
De este modo,

= + sin

= cos

Para obtener las ecuaciones de movimiento para el sistema, considrese el
diagrama de cuerpo libre que aparece en la Figura 6-1 (b). El movimiento
rotacional de la barra del pndulo alrededor de su centro de gravedad se
describe mediante

= sin cos
(6.1)
donde , es el momento de inercia de la barra alrededor de su centro de
gravedad.

El movimiento horizontal del centro de gravead de la barra del pndulo
se obtiene mediante

2
( + sin) =
(6.2)
El movimiento vertical del centro de gravedad de la barra del pndulo es

2
( cos ) =
(6.3)
El movimiento horizontal del carro se describe mediante

2
=
(6.4)
Como se debe mantener el pndulo invertido en posicin vertical, se
puede suponer que () y

() son pequeos, de forma que sin 0, cos = 1


y

2
= 0 . Entonces, las Ecuaciones (6.1) a (6.3) se linealizan del modo
siguiente:

=
(6.5)
Control de un Sistema de Pndulo Invertido

11


+

=
(6.6)
0 =
(6.7)
A partir de las Ecuaciones (6.4) a (6.7), se obtiene

( +) +

=
(6.8)

=
= +



o bien
( +
2
)

+ =
(6.9)
Eliminando la inercia respecto del centro de gravedad del pndulo,
simplificaremos considerablemente las ecuaciones de estado, tanto como la
funcin de transferencia del sistema. Si esto fuera un problema a la hora de
aplicar el controlador, podemos concentrar la masa en el extremo superior del
pndulo, aadiendo una bola. Estas son las ecuaciones resultantes:

( +) +

=
(6.10)

+ =
(6.11)










Control de un Sistema de Pndulo Invertido

12


1.6.1.2 Obtencin de las ecuaciones diferenciales: El motor de CC

El motor elegido como actuador para la planta es un motor de CC de
imanes permanentes, y se controla actuando sobre la tensin de armadura.
Debemos encontrar la ecuacin que describa la relacin entre la tensin de
armadura y la fuerza que aplica el motor al carro. La Figura 6-2 describe el
comportamiento de la malla del rotor del motor.









La ecuacin diferencial del motor de la Figura 6-2 es

= +

+
(6.12)
Para hallar la fuerza, primero debemos encontrar la ecuacin que
describa el par motor en funcin de la velocidad del motor y de la tensin de
armadura aplicada. Teniendo en cuenta que la excitacin de flujo es constante
(dado a los imanes permanentes), tenemos

= ;
(6.13)
=

, =
(6.14)
=

=
(6.15)

Figura 6-2. Circuito equivalente del motor DC
Control de un Sistema de Pndulo Invertido

13

Si tomamos en consideracin solo los efectos en estado estacionario, puesto
que los polos del motor son mucho ms rpidos que los de la planta del
conjunto carro-pndulo, podemos eliminar la derivada de (6.12). Si juntamos la
ecuacin resultante con (6.13) y (6.15) tenemos

=

;
(6.16)
Con el par motor y el radio del eje de este, podemos calcular la fuerza que se
aplica sobre el carro. Aprovechemos el radio para convertir la velocidad angular
a lineal
=

2

(6.17)

1.6.2 Transformacin al plano s: Obtencin de la funcin de transferencia
de la planta H(s)

Una vez obtenidas las ecuaciones que describen el comportamiento del
motor y del pndulo observando los parmetros deseados, ya hay lo necesario
para obtener la funcin de transferencia que relacione la diferencia de ngulo
con la tensin aplicada al motor. Retomando las ecuaciones del sistema (6.10)
y (6.17) obtenidas previamente y eliminando la variable se obtiene

( + ) +

2

(6.18)
Al transformar (6.11) y (6.18) al dominio s, considerando condiciones iniciales
nulas se obtiene
( +)
2
() +
2
() =

()

2

2
()
(6.19)

2
() +
2
() = ()
(6.20)
Control de un Sistema de Pndulo Invertido

14

Ordenando (6.19) por variables y reformulando (6.20) para sustituirla en (6.19)
y eliminar (), tenemos

( +)
2
+

2

2
() +
2
() =

()
(6.21)
() =
()
2

2
()

2
=

2

2
()
(6.22)
Sustituyendo (6.22) en (6.21)

( +)
2
+

2

2


2

2
() +
2
() =

()

Operando

( +) ( + )
2
+

2

2
+
2
() =

()

3


2

2

2
+ ( + ) +

2

2
() =

()

Finalmente, la funcin de transferencia () queda:

() =
()
()
=

3
+

2

2

2
( +)

2

;
(6.23)
A simple inspeccin, se puede observar la caracterstica inestable de la
planta. El smbolo negativo de la ganancia, es debido al sentido elegido en el
diagrama de solido libre del ngulo del pndulo . Observar que si la tensin
Control de un Sistema de Pndulo Invertido

15

aplicada es positiva, la fuerza del motor (segn el sentido impuesto de ) acta
hacia la derecha y el pndulo girara en sentido anti horario ( negativo).
Para una mayor comprensin de los elementos de la planta se adjunta
la funcin de transferencia del pndulo sin el motor:

() =
()
()
=

1

+

+



(6.24)
La Figura 6-3 muestra el LGR de la funcin de transferencia (6.24).










En esta figura, se puede observar la dinmica del pndulo. De estar la planta
en lazo abierto, en aplicar una perturbacin se obtendra una respuesta
exponencial inestable. De aplicar una realimentacin proporcional y tomando el
sentido del ngulo contrario al establecido, se obtendran oscilaciones no
amortiguadas (Figura 6-4).





Figura 6-3. LGR de la planta compuesta por el pndulo

Control de un Sistema de Pndulo Invertido

16












1.6.3.1 Transformacin al plano z: Obtencin de la funcin de
transferencia de la planta H(z).

Dado que nuestro controlador es discreto, se debe trabajar en el dominio
z. Para hallar la funcin de transferencia () que relacione el ngulo del
pndulo con la tensin aplicada al motor, se transformar la funcin () al
plano z
() =
()
()
=

3
+

2

2

2
( +)

2

;
(6.23)
Para simplificar el clculo, se sustituyen las variables por los valores de la
planta que se pretende controlar, en la ecuacin (6.23).

K=0.14 (V*s)/rad
Ra=10
r=0.005 m
l=0.25 m
M=0.0742 Kg
m=0.0238 Kg
g=9.81 Kg/(m*s
2
)

Figura 6-4. LGR de la planta sin el motor (invirtiendo la
realimentacin


Control de un Sistema de Pndulo Invertido

17

Sustituyendo valores, se obtiene

() =
2.8
0.01855
3
+ 19.6
2
0.9614 769.1


=
150.94
( + 6.27)( 6.27)( + 1056.62)
;
(6.25)
Se observan el par de polos provenientes del pndulo y la influencia del motor
mediante un polo y un zero. Se ha eliminado el polo del motor = 1056.62 ,
ya que es mucho ms rpido que los dems elementos de la planta

()
150.94

2
(6.27
2
)
;
(6.26)
Para discretizar la planta se debe elegir el tiempo de muestreo . La
eleccin de este depender del control deseado, no obstante se tiene que
poder entender lo que ocurre en la planta y por lo tanto, una primera
aproximacin es hacer x veces ms grande que el polo ms lento de la planta.
De ser muy grande, podra haber problemas al reconstruir las seales
observadas. Por el contrario de ser muy pequeo, se podra necesitar una
ganancia muy elevada en la realimentacin. Tambin se debe de tener en
cuenta en consideracin de interferencias y errores de cuantificacin de
parmetros.

En cualquier caso, de momento se ha elegido = 20 , es decir
aproximadamente 32 veces ms rpido que el polo ms lento de la planta
( = 6.27). No obstante, en el ejercicio de encontrar el controlador adecuado
mediante ensayo, se podra retomar esta consideracin y hallar un tiempo de
muestreo ms idneo.

Todo sistema discretizado consta de al menos un muestreador y un
retenedor. El muestreador representa el hecho de que nuestro controlador no
interpreta la informacin de forma continua y el retenedor cumple la funcin de
convertir la seal de control discreta a tiempo continuo. En nuestro caso, se ha
considerado un retenedor de orden cero, cuya funcin es la de sostener el
ultimo valor durante segundos.

() =
1

;
Control de un Sistema de Pndulo Invertido

18

Como se puede observar, su respuesta impulsional es el resultado de restar
una funcin escaln unitario desplazada segundos hacia la derecha a otra
funcin escaln unitario.
Llegados a este punto, ya se tiene todo lo necesario para transformar la
planta () a trminos que incluyan la accin de un controlador discreto. La
planta en lazo abierto es

()() = (1

)
150.94
( + 6.26)( 6.27)

(6.27)
Transformando () al dominio z, se obtiene

=

(1

) = (1
1
)
() = [()()] = (1
1
)
150.94
( + 6.26)( 6.27)

(6.28)
Se desarrolla el trmino en corchetes de (6.28) en fracciones parciales

150.94
( + 6.26)( 6.27)
=
12.05
+ 6.26

12.05
6.27


y se transforma al dominio z mediante tablas


150.94
( + 6.26)( 6.27)
=
12.05
1
6.26

1

12.05
1
6.27

1

=
12.05
1
0.1252

1

12.05
1
0.1254

1

(6.29)



Control de un Sistema de Pndulo Invertido

19

Sustituyendo (6.29) en (6.28) se tiene

() = (1
1
)
12.05
1
0.125

1

12.05
1
0.125

1

=
3.027 + 3.027

2
2.016 + 1

(6.30)
1.6.3.2 Transformacin al plano z: La transformada z modificada

La transformada z modificada, es un mtodo alternativo para la
transformacin del plano s al plano z descrito en [2] (p.691-696). Este mtodo
tiene la peculiaridad de aadir un retardo ficticio puro o retardo de transporte de
valor (1 ) segundos, donde es el periodo de muestreo y toma valores
entre 0 y 1. Esto nos permite introducir al modelo de la planta, el tiempo que
tarda el programa del controlador en ejecutarse, y ver cmo influye el tiempo de
instruccin en el control de la planta.

La transformada z modificada se aplica con la siguiente frmula:

(, ) =
1

()

()

Si se aade al sistema un retenedor de orden cero, se tiene

(, ) =
1
()
1

()

simplificando

(, ) =
1
(1 z
1
)
()

()
(6.31)

Control de un Sistema de Pndulo Invertido

20

A continuacin, se retoma la funcin de transferencia ():

()
150.94

2
(6.27
2
)


(6.26)
Sustituyendo (6.26) en (6.31), se tiene

(, ) =
1
(1 z
1
)
150.94
( + 6.26)( 6.27)

()

=
1
(1 z
1
) lim
6.26
( + 6.26)
150.94
( + 6.26)( 6.27)



+
1
(1 z
1
) lim
6.27
( 6.27)
150.94
( + 6.26)( 6.27)



=
1
(1 z
1
)
150.94
12.53
e
6.26mT
z
z e
6.26T

150.94
12.53
e
6.27mT
z
z e
6.27T


Considerando = 20 (vase apartado 1.6.3.1)

=
1
(1 z
1
)
12.05e
0.125m
z
z
0.125

12.05e
0.125m
z
z
0.125

(6.32)
Se observa que si m = 0, por lo tanto se tiene un retardo de valor T s, la funcin
obtenida mediante la transformada z modificada es igual a la obtenida
mediante la transformacin z, ms un retardo de T s o
1
.


() = lim
0
(, ) = (1
1
)
12.05
1
0.125

1

12.05
1
0.125

1

Control de un Sistema de Pndulo Invertido

21

1.6.4.1 Representacin en el espacio de estados en tiempo continuo

A continuacin, se retoman las ecuaciones diferenciales que describen
el comportamiento de la planta compuesta por el pndulo y el motor:

( +) +

=
(6.10)

+ =
(6.11)
=

2

(6.17)
Aislando las derivadas segundas de (6.10) y (6.11)

=
( +)



Substituyendo en estas la variable (6.17), se tiene

=
( + )

+

2

2
;
(6.33)
=


(6.34)



Control de un Sistema de Pndulo Invertido

22

Sean las variables de estado x
1
, x
2
, x
3
y
4
siguientes:

x
1
=
x
2
=


x
3
= x
x
4
= x

Sea la entrada del sistema

=

se obtiene

1
=
2

2
=
( + )


1
+

2

2

4

3
=
4

4
=


4


2

2

4
+



Con esto, se puede hacer la siguiente representacin del sistema en el espacio
de estados:

= +
(6.35)
donde

=

4
, =

0 1 0 0
( +)

0 0

2

2
0 0 0 1

0 0

2

, =





Control de un Sistema de Pndulo Invertido

23

1.6.4.2 Representacin en el espacio de estados en tiempo discreto

A continuacin se discretizar la ecuacin (6.35) a (6.36):

( + 1) = ()() +()()
(6.36)
donde

() =

1
()

2
()

3
()

4
()
, () =

=
1
[( )
1
], () =

0


siendo
1
la transformada inversa de Laplace. Las formulas para calcular
() y () han sido extradas de [2] (p.312-315). En ellas, se considera que
se introduce en la planta un retenedor de orden cero.
Para facilitar la obtencin de (6.36), se sustituirn en (6.35) los valores
de la planta que se usaran en este proyecto

K=0.14 (V*s)/rad
Ra=10
r=0.005 m
l=0.25 m
M=0.0742 Kg
m=0.0238 Kg
g=9.81 Kg/(m*s
2
)

dando lugar a

0 1 0 0
51.82 0 0 4226.41
0 0 0 1
3.15 0 0 1056.6

_
1

4
+
0
150.94
0
37.73

(6.37)
Control de un Sistema de Pndulo Invertido

24

Dado que con una matriz de cuarto orden hacer los clculos a mano
resulta laborioso y fcilmente nos podemos equivocar, se ha usado MATLAB
para la resolucin de estos. Para ello, se pueden usar las siguientes funciones:

Considerando = 20 (vase el apartado 1.6.3.1), se obtiene

(0.02) =

1.0081 0.0201 0 0.0764


0.7981 1.0081 0 4.0294
0.0001 0 1 0.0009
0.0030 0.0001 0 0.0002


(6.38)
(0.02) =
0.0027
0.1439
0.0007
0.0357

(6.39)










= ( ) : Calcula la matriz exponencial

(matriz de
transicin de estados).

[, ] = 2(, , ); : Calcula las matrices () i (). Por defecto usa un
ZOH, pero podra usar otros retenedores.


Control de un Sistema de Pndulo Invertido

25

1.7 Diseo de sistemas de control

1.7.1 Control mediante el LGR

En este apartado, se encontrar un controlador que cumpla unas
caractersticas deseadas, mediante el mtodo del lugar geomtrico de las
races propuesto por W. R. Evans.

Se parte de la funcin de transferencia de la planta discreta, que se
obtuvo en la seccin 1.6. En ella se consideran las siguientes aproximaciones:

-Linealizacin entorno a la posicin 0 del pndulo.
-Eliminacin de la inercia del pndulo.
-No se consideran fricciones.
-Efectos del motor de cc en estado estacionario.
-Eliminacin de un polo del motor de cc, cuyo valor es: = 1056.62.
(Para un anlisis ms detallado de las aproximaciones vase la seccin 1.6)

Se retoma la funcin de transferencia (), para ms comodidad

() =
3.027 + 3.027

2
2.016 + 1
;
(7.1)
Si consideramos esta planta para el LGR, obtendremos un LGR de una planta
con realimentacin positiva. Esto es debido, como ya se habl antes, al sentido
establecido en el modelado del ngulo del pndulo (positivo o negativo entorno
de 0). Si se quiere controlar el pndulo, se debe trabajar en un LGR con
realimentacin negativa. Entonces, de ahora en adelante se considerara ()
como (). A la hora de implementar el sistema regulador en la realidad, se
tendr que definir la posicin angular del pndulo teniendo esto en
consideracin.

El sistema ha disear pretende mantener el pndulo en la posicin 0,
por lo tanto la consigna es 0 y el sistema que se quiere realizar es un sistema
regulador. El controladorr se ubicara en la trayectoria directa, como se puede
ver en la Figura 7-1.

Control de un Sistema de Pndulo Invertido

26










Mediante la funcin de MATLAB rootlocus se ha obtenido la grfica del
LGR de ():
























Figura 7-2. LGR de H(z)


Figura 7-1. Sistema regulador y planta



(kT)

T
Controlador
digital
ZOH Planta
u(kT) (kT)
H(z)
Gc(z)
Control de un Sistema de Pndulo Invertido

27

1.7.1.1 Estabilizacin de la planta

Antes de buscar unas especificaciones concretas para la respuesta
deseada, se debe encontrar una solucin para estabilizar la planta. Para ello se
ha seguido el siguiente mtodo. Si se cancela el cero en el origen, se tienen
polos complejos conjugados cerca del eje imaginario (aumentando la ganancia
del compensador). Con ello, el sistema sigue siendo inestable, pero se est
ms cerca de estabilizar el sistema.





















En la Figura 7-3 se observa que no llegamos al lmite de la estabilidad, como
se deseaba. No obstante, con el siguiente paso se llevar la planta a la
estabilidad.













Figura 7-3. Compensacin con integrador puro

Control de un Sistema de Pndulo Invertido

28

Finalmente, se introduce un cero en el semiplano izquierdo, arrastrando
los polos complejos conjugados hacia este.























Se puede observar como se ha estabilizado la planta, con un controlador
basado en un polo en el origen y un cero en el semiplano izquierdo del LGR.

1.7.1.2 Introduciendo especificaciones: Contornos y error en estado
estacionario

Ahora que ya se tiene la planta estabilizada, se deben establecer unos
contornos que garanticen el buen funcionamiento de la planta. A partir de estos,
se har el ejercicio de encontrar un controlador que de unas caractersticas
concretas.

En cuanto a los contornos, se sabe que el modelo obtenido es vlido
para variaciones de la posicin del pndulo cercanas a la posicin 0. Teniendo
en cuenta esto, se debera minimizar la sobre-elongacin y el error generado
por las perturbaciones en estado estacionario. En cuanto al tiempo de

Figura 7-4. Planta estabilizada



Control de un Sistema de Pndulo Invertido

29

establecimiento, se pueden jugar con varios valores, siempre que la posicin
del carro no exceda los lmites de la maqueta. Esto ltimo se deber controlar
mediante el ensayo en la planta y posterior correccin del controlador.

Pngase un sobre-pico inferior al 15% y un tiempo de establecimiento
inferior a los 4 s. Utilizando la notacin polar y la frmula de Euler, se tiene

= + =

, =
1

=
2
+
2


En base a esta, se aplica la frmula del tiempo de establecimiento para una
funcin de segundo orden

=
4
ln


Entonces

4 => ln 1
(7.2)
Por lo tanto, nos sirve todo el crculo unitario alrededor del origen del LGR.
Para un sobre-pico inferior al 16%, se tiene

=


1
2
=> 0.5
(7.3)
Se ha de tener en cuenta, que esta frmula solo es aplicable en el caso en que
la planta en lazo abierto, disponga solamente de dos polos. En la mayora de
plantas, se deber simular el controlador hasta minimizar el sobre-pico a un
valor establecido.

La relacin entre el factor de amortiguamiento relativo y los polos en el
LGR para una planta discreta, se expresa mediante la siguiente frmula:

=
ln
ln
2
+
2


La siguiente grfica sobrepone una rejilla con valores de , con la planta
compensada mediante un polo en el origen y un zero en = 0.8. Se ha
remarcado el contorno 0.5. Este lmite, al ser ms restrictivo, incluye
tambin el contorno de 4 . Se ha elegido el valor del polo de forma
Control de un Sistema de Pndulo Invertido

30

simblica, para representar una posible solucin que entrara en los lmites
establecidos.
























Hasta ahora se ha hablado de sobre-elongacin, del factor de
amortiguamiento relativo y del tiempo de establecimiento. Estos valores, se
relacionan con el rgimen transitorio de la planta y proceden de evaluar la
ecuacin caracterstica de la planta en realimentacin.

En la construccin de un sistema regulador, para esta planta de pndulo
invertido, interesa minimizar las perturbaciones ocasionadas en el camino que
discurre entre el actuador y la planta de pndulo invertido a controlar. Tanto las
perturbaciones como la entrada de referencia tendrn las mismas
caractersticas transitorias, puesto que comparten la ecuacin caracterstica del
sistema. Por lo tanto, las caractersticas transitorias evaluadas hasta ahora se
aplican tambin a las perturbaciones.

A la hora de calcular el error en estado estacionario. Se debera
modificar la Figura 7-1 a un diagrama que separe el actuador de la planta a

Figura 7-5. Contorno de 0.5

Control de un Sistema de Pndulo Invertido

31

controlar. Si se llama a la planta (sin el actuador) y

al controlador junto
con el actuador, se tiene

=

1 +

+

1 +



donde N es la perturbacin y R la entrada del sistema. Entonces el error es

=

1 +



1 +


(7.4)
Aplicando el TVF para sistemas discretos a (7.4), se obtiene el error en estado
estacionario

() = lim
1
(1
1
)

1 +



1 +



En nuestro sistema, se cumple que la entrada de referencia es nula, por lo
tanto

() = lim
1
(1
1
)

1 +



(7.5)
Para minimizar este error, sin modificar la ruta del compensador, se debe hacer



Para ello, se podra aumentar la ganancia del controlador o introducir un polo
cerca de lmite de la estabilidad z=1 (compensador de retraso de fase).
Tambin, se podran introducir polos en el lmite de la estabilidad, aumentando
el tipo del sistema.








Control de un Sistema de Pndulo Invertido

32

1.7.1.3 Ejemplo de controlador

En este apartado, se encontrar un ejemplo en concreto dentro del
marco establecido por los apartados 1.7.1.1 y 1.7.1.2. Pngase, por ejemplo,
un factor de amortiguamiento relativo de 0.6 y un tiempo de establecimiento
de 0.4 s. Se har que

para = 1, sea 10 veces ms grande mediante


un compensador de retardo.

=
4

=> =
4
0.6 0.4
16.67 rad/s

=
1
2
=>
1,2
= 0.79 0.216

Nuestro controlador tendr una funcin de transferencia como el siguiente
modelo:

1
() =
( )
1

(7.7)
Reordenando la funcin de la planta (7.1), se tiene

() =
3.027 + 3.027

2
2.016 + 1
=
3.027( 1)
( 0.88)( 1.13)


Entonces, la ecuacin caracterstica es

1 +() = 1 +
1
()() = 1 +
3.027( )
( 0.88)( 1.13)
= 0
(7.8)
Para que se cumpla la ecuacin caracterstica, se tienen que cumplir las
condiciones de mdulo i argumento.

Condicin de argumento:

arg( ) arg( 0.88) arg( 1.13)

|
=0.790.216
= 180

(7.9)
Control de un Sistema de Pndulo Invertido

33


arg( ) 180 tg
1

0.216
0.09
180 tg
1

0.216
0.34

=0.790.216
= 180

arg( ) 260.19 = 180 => arg( ) = 80.19

1

0.216
0.79
= 80.19 => 0.753


Condicin de mdulo:

3.027

| 0.753|
|( 0.88)|( 1.13)|

=0.790.216
= 1
(7.9)
=

|( 0.88)|( 1.13)|
3.027| 0.753|

=0.790.216
= 0.142

Con esto, nuestro controlador queda definido

1
() =
0.142( 0.753)
1

(7.10)
Si se evala la ganancia que introduce este controlador en estado
estacionario, suponiendo una entrada escaln unitario, se tiene

|
1
()| = | lim
1
0.142( 0.753) | = 0.035

(Se ha eliminado el polo en = 1, puesto que este se compensa con el cero en
= 1 del actuador). Con el fin de incrementar esta ganancia en un factor 10, se
introduce una pareja cero-polo cercana al lmite de la estabilidad = 1,

2
() =
0.142( 0.753)
1




donde se debe de cumplir

lim
1


= 10


Control de un Sistema de Pndulo Invertido

34

Para ello, se ha elegido = 0.9 y b=0.99





Se debe estudiar si la adicin de este controlador modifica demasiado la
dinmica de la planta y, de ser as, suavizar la diferencia entre los valores de la
pareja cero-polo. Finalmente, se tiene

2
() =
0.142( 0.753)( 0.9)
( 1)( 99)

(7.11)
A continuacin, veamos los resultados obtenidos de la simulacin. Para
simular el sistema, se ha empleado la herramienta sisotool de MATLAB:

Controlador de primer orden
1
()
























Figura 7-6. LGR de
1
()

Control de un Sistema de Pndulo Invertido

35

















En la Figura 7-6, se puede observar como la localizacin de los polos es
bastante cercana a la calculada. Se tiene

1,2
= 0.793 0.218

y la localizacin terica era

1,2
= 0.79 0.216

Tambin, se puede observar mediante la rejilla, como el factor de
amortiguamiento relativo es 0.6. En cuanto al tiempo de establecimiento,
parece que se acerca a su diseo terico: Ts 0.4.

Controlador de segundo orden
2
()

Como antes se habl, el compensador de retardo minimiza el error en
estado estacionario (en este caso con un factor 10). No obstante, se debe
observar si modifica la dinmica de la planta sustancialmente o no.








Figura 7-7. Respuesta a () de
1
()



Control de un Sistema de Pndulo Invertido

36

























Como se observa, se tiene un LGR parecido al de la Figura 7-6. Ahora los
polos son

1,2
= 0.84 0.273

y

0.4

Aumentando la ganancia, se reubican los polos en la trayectoria de = 0.6,

2
() =
. ( 0.753)( 0.9)
( 1)( 0.99)
;
(7.12)




Figura 7-8. LGR de
2
()

Control de un Sistema de Pndulo Invertido

37
























a la vez que aumenta la frecuencia natural, haciendo la respuesta un poco ms
rpida




















Figura 7-9. LGR de
2
()


Figura 7-10. Respuesta a () de
2
()

Control de un Sistema de Pndulo Invertido

38

En el apartado anterior, se coment que al incrementar la ganancia del
controlador en estado estacionario (para una entrada ()) se reduce el error
frente a las perturbaciones. Como se puede observar, con esto se reduce
tambin el error frente a la entrada de referencia.

Finalmente, se aaden las dos graficas de las respuestas de los dos
controladores



















1.7.1.4 Simulaciones de la planta-controlador con retardos de transporte.

En este apartado se hace uso de la transformada z modificada para
simular un retardo de transporte de valor (1 ) (donde es el tiempo de
muestreo), con los controladores obtenidos en el apartado anterior. Este
retardo representa el tiempo que tarda el programa en ejecutarse. Los
resultados sern de utilidad, a la hora de elegir el tiempo de instruccin del
controlador.











Figura 7-11. Respuestas a () de
1
() y
2
()


Figura 7-12. Transformada z modificada (Extrado de [2])

Control de un Sistema de Pndulo Invertido

39

Retomemos la ecuacin de la planta con retardo de transporte, obtenida
en el apartado 1.6.3.2.

(, ) =
1
(1 z
1
)
12.05e
0.125m
z
z
0.125

12.05e
0.125m
z
z
0.125
;
(7.13)
A continuacin, veamos las simulaciones de los controladores de primer y
segundo orden, para distintos retardos de transporte:

Controlador de primer orden
1
()

= 1 => tiempo de retardo= 0 s, polos dominantes:
1,2
= 0.793 0.218































Figura 7-13. Simulacin de
1
()

con tiempo de retardo nulo

Control de un Sistema de Pndulo Invertido

40

= 0.9 =>tiempo de retardo=2 ms, polos dominantes:
1,2
= 0.790 0.226



















= 0.8 =>tiempo de retardo=4 ms, polos dominantes:
1,2
= 0.788 0.235



























Figura 7-14. Simulacin de
1
()

con tiempo de retardo de 2 ms

Figura 7-15. Simulacin de
1
()

con tiempo de retardo de 4 ms

Control de un Sistema de Pndulo Invertido

41

= 0.5 =>tiempo de retardo=10 ms, polos dominantes:
1,2
= 0.783 0.266

















Como conclusin, siendo

el tiempo de retardo y usando mi propio criterio


establezco:

Para

2

es despreciable
Para 2 <

modifica ligeramente los polos del sistema.


Para

> 4 tenemos que considerar

en el diseo del controlador.



En cualquier caso, siempre que

no supere el tiempo de muestreo
(20 ms), y no se aumente la ganancia mucho ms de lo previsto, no se tiene el
peligro de llevar a la planta a la inestabilidad. No obstante de ser

mayor
que 4 ms, no se puede despreciar este factor con facilidad.

















Figura 7-16. Simulacin de
1
()

con tiempo de retardo de 10 ms

Control de un Sistema de Pndulo Invertido

42

Controlador de segundo orden
2
()

= 1 =>tiempo de retardo=0 s, polos dominantes:
1,2
= 0.696 0.279















= 0.9 =>tiempo de retardo=2 ms, polos dominantes:
1,2
= 0.685 0.297





























Figura 7-17. Simulacin de
2
()

con tiempo de retardo nulo

Figura 7-18. Simulacin de
2
()

con tiempo de retardo de 2 ms

Control de un Sistema de Pndulo Invertido

43

= 0.85 =>tiempo de retardo=3 ms, polos dominantes:
1,2
= 0.678 0.308















= 0.5 =>tiempo de retardo=10 ms, polos dominantes:
1,2
= 0.658 0.429
















Haciendo memoria, en el apartado anterior, se aument la ganancia
moviendo los polos dominantes un poco ms a la izquierda del LGR, para
compensar la adicin de un polo y un cero y reubicar los polos en la trayectoria
0.6. Al hacer esto, los polos deseados se encuentran en una posicin ms
sensible a

, como se puede observar en las simulaciones. Por eso, se debe


de ser un poco ms restrictivos con las consideraciones de

. En este caso,
establezco bajo mi criterio:








Figura 7-19. Simulacin de
2
()

con tiempo de retardo de 3 ms

Figura 7-20. Simulacin de
2
()

con tiempo de retardo de 10 ms

Control de un Sistema de Pndulo Invertido

44

Para

< 2

es despreciable
Para 2

< 3

modifica ligeramente los polos del sistema.


Para

3 tenemos que considerar

en el diseo del controlador.



1.7.2 Control en el espacio de estados: mtodo de ubicacin de polos.

En esta seccin, se presentar el diseo de un sistema regulador para
una planta de pndulo invertido mediante el mtodo de ubicacin de polos.
Este mtodo consiste en realimentar todas las variables de estado para mover
los polos del sistema, en lazo cerrado, a una posicin deseada. El problema, es
parecido al que se trataba en el mtodo del LGR, pero con un enfoque mayor.
En este caso, se tratan con todos los polos de la planta, en lugar de solo tener
en cuenta los dominantes. Adems se controlarn todas las variables de
estado.












Con la ubicacin de polos, se modificar la dinmica de todas las
variables de estado. Dada la siguiente configuracin, para un sistema regulador
mediante la tcnica de ubicacin de polos, de elegir una localizacin de los
polos estable para el sistema, se lograr que todas las variables tiendan a 0
cuando el tiempo tiende a infinito. Debido a la complejidad de los clculos con
matrices de 4 orden, en este captulo se realizaran los clculos mediante
herramientas de MATLAB.

En la seccin 1.6 se obtuvieron las ecuaciones en el espacio de estado.
En ellas se consideraban las siguientes aproximaciones:

-Linealizacin entorno a la posicin 0 del pndulo.
-Eliminacin de la inercia del pndulo.
-No se consideran fricciones.
-Efectos del motor de cc en estado estacionario.
(Para un anlisis ms detallado de las aproximaciones vase la seccin 1.6)

Figura 7-21. Sistema de control con realimentacin de estado
Control de un Sistema de Pndulo Invertido

45

A continuacin, se retoman las matrices que describen el sistema en el espacio
de estados:

=

1.0081 0.0201 0 0.0764


0.7981 1.0081 0 4.0294
0.0001 0 1 0.0009
0.0030 0.0001 0 0.0002


(7.14)
=
0.0027
0.1439
0.0007
0.0357

(7.15)
y el modelo en tiempo discreto es

( + 1) = () +()
(7.16)
donde (), es un escalar (tensin de armadura aplicada al motor), el tiempo
de muestreo es 20 ms (vase el apartado 1.6.3.1) y las variables de estado son

1
=

2
=

3
=

4
=


1.7.2.1 Controlabilidad y observabilidad

Un primer paso para realizar un sistema mediante realimentacin de
estado, es analizar las condiciones de observabilidad y controlabilidad. Si el
sistema es de estado completamente controlable, se cumple que se pueden
transferir los polos del sistema a cualquier posicin deseada.

Para un sistema de orden , se cumple la condicin de controlabilidad si
la matriz de controlabilidad de es del mismo rango que variables de
estado posea el sistema (rango ). La matriz de controlabilidad se construye de
la siguiente forma:

= [
1
]
Control de un Sistema de Pndulo Invertido

46

donde es el orden del sistema. En nuestro caso

= [
2

3
]

Mediante la funcin ctrb de MATLAB, usando (7.14) y (7.15), se obtiene la
matriz de controlabilidad

=

0.0027 0.0029 0.0030 0.0031


0.1439 0.0033 0.0056 0.0080
0.0007 0.0007 0.0007 0.0007
0.0357 0 0 0


(7.19)
Para evaluar el rango, se ha usado () y se ha obtenido = 4. Por lo
tanto, el sistema es de estado completamente controlable.

Evaluemos ahora la observabilidad del sistema. La observabilidad es
una condicin que ha de cumplir el sistema para poder reconstruir variables de
estado no medibles a partir de variables de estado que s lo son. En nuestro
caso, se tendran que poder estimar las variables , y

a partir de la variable
, para poder controlar el sistema. Ya que, como se avanza, la maqueta solo
medir la posicin angular del pndulo .


















Para construir la matriz de observabilidad, se debe de especificar la salida del
sistema


Figura 7-22. Sistema de control con realimentacin de estado observado

Control de un Sistema de Pndulo Invertido

47

() = () +()
(7.20)
Puesto que la salida es la variable de estado
1
= , se tiene

= [1 0 0 0]
= 0

Para un sistema de orden , se cumple la condicin de observabilidad si
la matriz de observabilidad de es del mismo rango que variables de
estado posea el sistema (rango ). La matriz de observabilidad se construye de
la siguiente forma:

=

= [

(
1
)

]

donde es el orden del sistema y la notacin

indica la matriz traspuesta (de


en este caso). En nuestro caso

= [

(
2
) (
3
)]

Finalmente, mediante la funcin obsv de MATLAB, se obtiene la matriz de
observabilidad

=

1 0 0 0
1.0080 0.0200 0 0.0764
1.0319 0.0404 0 0.1578
1.0721 0.0614 0 0.2417


(7.21)
Para evaluar el rango, se ha usado () obteniendo = 3. Por lo
tanto, el sistema es parcialmente observable y no se pueden medir las
variables , y

, como se deseaba. No obstante, aunque no se pueda llevar a


la prctica este sistema en la maqueta, se presentar el diseo de un sistema
regulador mediante realimentacin de estado como material didctico o para
una futura ampliacin de la maqueta.


Control de un Sistema de Pndulo Invertido

48

1.7.2.2 Obtencin de la matriz de ganancia de realimentacin de
estado K

El sistema regulador mediante realimentacin de estado sigue el
diagrama de la Figura 7-21, donde la seal de control () es

() = ();

Entonces, resolver el sistema es encontrar la matriz de ganancia de
realimentacin de estado , para unos polos del sistema deseados. Para
encontrar la matriz , se ha usado la frmula de Ackermann

= [0 0 0 1][
1
]
1
()

donde

() =

+
1

1
+ +
1
+



siendo el valor de los polos deseados

z =
1
, z =
2
, , z =
n


y la ecuacin caracterstica del sistema

| + | = (
1
)(
2
) (

)
=

+
1

1
+
2

2
++
1
+

= 0

Una tcnica para elegir los polos de la planta, es considerar dos de ellos
dominantes y alejar los dems lo suficiente para que no afecten demasiado. Si
se alejan mucho, la matriz de ganancia de realimentacin podra tomar valores
demasiado grandes (posible saturacin), conviene simular los valores y
ensayar en la planta hasta encontrar unos idneos. Mediante el ensayo, se han
elegido los siguientes polos para el sistema:

1,2,3,4
= = [0.97 + 0.05j 0.97 0.05j 0.9 0.85]


Para obtener la matriz , se ha usado la funcin acker de MATLAB. Se ha
obtenido

= [16.8 2.7 4.54 30.94]


Control de un Sistema de Pndulo Invertido

49

Finalmente, la seal de control es

= = 16.8 + 2.7

+4.54 +30.94
(7.22)
(Se ha de tener en cuenta el sentido tomado en el modelado de la planta, de
las variables de estado. Para ms informacin, vase el captulo 1.6)




































Figura 7-23. Respuesta a una condicin inicial de (0)=1


Control de un Sistema de Pndulo Invertido

50

1.8 El hardware

En este apartado se detallar el diseo de la maqueta. El grueso del
diseo reside bsicamente en el sistema electrnico, compuesto por el
controlador, el actuador y el sensor de la variable de salida.

En el apartado 1.8.1 se trataran temas de eleccin de componentes,
descripciones de estos y la forma en que interactan en la planta. El segundo
apartado del captulo (el apartado 1.8.2) describe la construccin de la maqueta
de la planta a controlar: el conjunto pndulo-carro y su soporte. Este apartado,
revisa el proceso de construccin de la maqueta, sin incidir mucho en temas de
diseo. No obstante, hace hincapi en la importancia de ser rigurosos en la
construccin de esta.

Al construir la maqueta se tuvieron en cuenta los requisitos siguientes:

- La maqueta debe de estar preparada para implementar en ella
controladores discretos con cierta facilidad.
- Debe de ser reducida y transportable.

Teniendo en cuenta estas premisas, se propuso hacer uso de un
microcontrolador como ncleo del sistema electrnico, dando lugar a un
esquema parecido al de la Figura 8-1.












Figura 8-1. Diagrama del sistema electrnico

Control de un Sistema de Pndulo Invertido

51

1.8.1 Sistema electrnico
1.8.1.1.1 Eligiendo el microcontrolador

Se ha decidido elegir un controlador PIC por las siguientes razones:
- En el DEEEA se disponen de programadores que permiten programar
una gran cantidad de modelos.
- Su programacin es relativamente sencilla y muy usada. Su fabricante
nos ofrece muchos recursos (cdigos de ejemplo, libreras, resolucin de
dudas) ,
- Su coste es reducido, es un producto que se puede adquirir con facilidad.
El alumno que lo desee podra adquirir un programador a bajo coste.
- Nos ofrece un abanico de posibilidades ms que suficientes para realizar
un sistema que nos permita experimentar controladores para el pndulo
invertido.

Una vez decida la marca, veamos que familias podemos usar:





















Dado que el programador del que dispone el DEEEA, el ICD2, abarca casi
todos los dispositivos menos algunos de los ms nuevos (los realizados
despus de Septiembre del 2010), no resulta una gran restriccin. Se ha
considerado oportuno usar un microcontrolador de 16 bits, puesto que la
cantidad de valores que leer el sensor de posicin angular ser al menos

Figura 8-2. Familias de microcontroladores de Microchip
Control de un Sistema de Pndulo Invertido

52

superior a 360 posibles valores (un error en la lectura de medio grado no sera
adecuado para realizar un control cerca del ngulo 0).

Se ha decidido programar en C en lugar de en ensamblador. Esto se
debe a que, una vez hecho el programa para realizar el control del pndulo, el
alumno podr introducir algoritmos de forma sencilla sin verse obligado a
aprender la estructura del microcontrolador. Tambin podr entender el cdigo
ms fcilmente y si se requiere se podra ampliar/mejorar con ms facilidad. De
esta forma tambin se podra aprovechar para otros microcontroladores
distintos al elegido.

Trabajar con registros de 16 bits ser ms cmodo y ms rpido que
usar microcontroladores de 8 bits, no obstante, no significa que no sea posible
usar un microcontrolador de 8 bits para controlar el pndulo. Para esto ltimo,
se aade, que el coste entre un microcontrolador y otro varia muy poco y
puesto que no se pretende fabricar este proyecto en grandes cantidades, mas
bien su uso est orientado a un entorno didctico reducido, se ha optado por
dar buenas prestaciones al producto ms que abaratar pequeos costes. Como
se ver a continuacin, la familia de 16 bits ofrece ms que suficientes
prestaciones para plantearse usar un microcontrolador de 32 bits.


Buscando dentro de la gama de PIC de 16 bits, se encuentran familias
optimizadas para el control de motores en los dsPIC (vase Figura 8-3).





















Figura 8-3. Familias optimizadas para el control de motores

Control de un Sistema de Pndulo Invertido

53

A elegir entre las dos familias de dsPIC se tienen los dsPIC de gama alta
(dsPIC33F/E) y los dsPIC sencillos. La familia de los dsPIC33F/E, da ms
velocidad de operacin, ms conversores AD, ms perifricos y soporta mejor
la temperatura. No obstante, se tiene ms que suficiente con lo que ofrece la
familia dsPIC30F.





















Dentro de esta, se ha elegido el dsPIC30F4011, ya que es uno de los
microcontroladores de la familia dsPIC30F orientado al control de motores.
Cualquiera otra eleccin, dentro de los mencionados en la Figura 8-5, seria
correcta. Se ha elegido el dsPIC30F4011 en concreto, por su disponibilidad.















Figura 8-4. Familias dsPIC30F y dsPIC33F/E de Microchip


Figura 8-5. Microcontroladores de la familia dsPIC30F orientados al control de motores

Control de un Sistema de Pndulo Invertido

54

1.8.1.1.2 La familia dsPIC30F

Sin entrar demasiado en la arquitectura, a continuacin se exponen
algunas de sus caractersticas ms relevantes:
-Arquitectura Harvard modificada.
-Memoria de datos dividida en dos bloques, llamados X y Y, con
unidades generadoras de direccin (AGU) independientes. Normalmente
se usa el bloque X (MCU), pero determinadas instrucciones del DSP
acceden simultneamente a ellos para realizar operaciones complejas
como MAC (multiplicar-acumular).
-Operaciones hasta 30 MIPS.
-16 registros de trabajo (W) de 16-bit.
-Instrucciones optimizadas parar compiladores de C con modos de
direccionamiento flexibles.
-Unidad divisora que opera con nmeros fraccionales con signo de
16/16-bit (punto fijo Q15) o nmeros enteros de 32/16-bit o 16/16-bit .
-Modulo DSP. El cual consta de:
-Un multiplicador a alta velocidad de 17-bit x 17-bit que puede entregar
nmeros enteros de 32-bit o fraccionales con el formato Q31 (punto fijo).
-Un registro de desplazamiento
-Un sumador/restador de 40-bits, con dos registros acumuladores y
lgica de redondeo y saturacin.









Control de un Sistema de Pndulo Invertido

55











































Figura 8-6. Estructura del dsPIC30F4011

Control de un Sistema de Pndulo Invertido

56

1.8.1.1.3 El dsPIC30F4011

Hasta ahora se han visto algunas de las caractersticas generales del
dsPIC30F4011, mediante los apartados Eligiendo el microcontrolador y La
familia dsPIC30F, que no se mencionaran en este apartado. En lugar de ello,
se har hincapi en los perifricos caractersticos para el control de motores
que este posee, los cuales, sern de gran ayuda para realizar el proyecto. Se
detallaran sus modos de funcionamiento tanto como su configuracin, que mas
adelante nos ser til para la descripcin del cdigo.
Estos son: el mdulo de control para motores mediante PWM, para ms
comodidad, llammosle mdulo PWM, y el modulo de interfaz para el
codificador de cuadratura, al que llamaremos QEI (Quadrature encoder
interface).
La funcin del microcontrolador en este proyecto, es realizar un lazo de
control en la planta. Obteniendo la variacin angular del pndulo y aplicando un
algoritmo, acta sobre el motor mediante PWM. Es decir, configurando
adecuadamente estos dos mdulos se tiene un gran porcentaje del trabajo
hecho mediante hardware. Realizando estas acciones por hardware:
-Se hace ms sencillo el cdigo, tanto para su realizacin, como para su
interpretacin y depuracin de errores.
-Se elimina la necesidad de aadir componentes externos al
microcontrolador, haciendo el diseo ms compacto, abaratando costes
de fabricacin y aumentando la fiabilidad del sistema.
Dicho esto veamos cmo funcionan estos mdulos.

1.8.1.1.3.1 El QEI

Antes de empezar con la explicacin, se avanza que el codificador
elegido ser un encoder incremental, con ndice. Para ms informacin
referirse al apartado 1.8.1.3. Al final del apartado, mediante las Figuras 8-8 a 8-
11, se incluye informacin del fabricante referente a los registros y bits
empleados en la descripcin del QEI que se vern a continuacin.
El QEI dispone de 3 pin de entrada, QEA, QEB e INDX. Estos introducen
respectivamente, la informacin de dos canales de un encoder y su ndice, si
dispone de ello. Mediante un contador de 16 bit, el registro llamado POSCNT
(position counter) da la cuenta de los flancos de los pulsos que se generan en
el encoder (canales A y B), sumando flancos o restndolos segn la secuencia
de las seales de los canales A y B (que estn desfasadas 90 grados). El
Control de un Sistema de Pndulo Invertido

57

sentido de giro incremental o decremental es arbitrario (se debe configurar).
Adems, la lgica del QEI genera un bit de lectura en el registro QEICON,
llamado UPDN, que nos dice si el motor gira hacia un lugar u otro (si est
sumando o restando pulsos).
















Modos de funcionamiento
Usando los canales A y B y dependiendo de la resolucin que se quiera
usar, se tienen dos formas de contar flancos
Modo x2 (QEIM
2,1,0
=100 o 101)
En este modo se cuentan flancos solo teniendo en cuenta los flancos de
subida y bajada de la seal A. La seal B solo es usada para determinar el
sentido de giro, que a la vez determina si se incrementa o decrementa
POSCNT a cada flanco generado por la seal A.



Figura 8-7. Diagrama del QEI

Control de un Sistema de Pndulo Invertido

58

Modo x4 (QEIM
2,1,0
=110 o 111)
En contrapartida, el modo x4 tiene en cuenta las dos seales para contar
flancos. Se usa la secuencia generada por estas para determinar el sentido de
giro y si POSCNT se incrementa o decrementa igual que en el modo x2. Por lo
tanto, se tiene el doble de precisin.
Dentro de estos dos modos de contar flancos, se tienen dos formas de
resetear el contador POSCNT:
Mediante la deteccin del ndice (QEIM
2,1,0
=100 o 110)
En este modo se usa el pin de entrada INDX, que genera un pulso por
revolucin, para resetear al registro POSCNT. Se deben de especificar los
estados de los canales A y B en los que ocurre el pulso de INDX. Esto se hace
con los bits IMV
1,0
del registro DFLTCON, que corresponden respectivamente al
canal A (IMV0) y B (IMV1). En el modo x2, IMV1 selecciona el canal cuyo
flanco coincide con el ndice (0=canal A, 1=canal B) y IMV0 selecciona el
estado de este canal (es decir flanco de subida o de bajada) que coincide con
el ndice. Se tiene un bit POSRES del registro QEICON que habilita o no el
reset del contador mediante el ndice. Si vale 1, POSCNT es reseteado en cada
pulso del ndice, si vale 0 POSCNT continua incrementndose hasta llegar al
mximo del contador (overflow) o decrementandose mas que el valor inicial
(underflow).Este bit debe ser desactivado mediante software.
Coincidiendo POSCNT con MAXCNT(QEIM
2,1,0
=101 o 111)
En este modo, POSCNT es reseteado cuando su valor coincide con el
del registro MAXCNT.

Filtros digitales programables
Para reducir el ruido de las seales de entrada (QEA,QEB y INDX), se
pueden configurar unos filtros que consisten en comparadores con histresis
Trigger Schmitt y un retardo de 3 ciclos de reloj (basados en el tiempo de
ejecucin de una instruccin bsica del microcontrolador, Tcy) en los que se
verifica que el valor de entrada no ha variado. Para activar los filtros hay que
poner a 1 el bit QEOUT del registro DFLTCON. Se puede variar el periodo de
estos 3 ciclos mediante un prescaler que se configura con los bits QECK
2,1,0
del
registro DFLTCON.

Se ha de tener en cuenta que aadir un retardo en la medicin de los
pulsos mediante los filtros digitales puede modificar la planta.

Control de un Sistema de Pndulo Invertido

59

Interrupciones
Las interrupciones que puede generar el QEI son las siguientes:

-Interrupcin por desbordamiento superior o inferior del position counter
(rollover/underflow).
-Deteccin del ndice correcto o, por otro lugar, activacin del position
counter error.

Nota: Se han omitido interrupciones generadas por el uso del QEI como
timer/counter (no se han tenido en cuenta configuraciones del QEI para usos
no relacionados con la interfaz para el encoder).



















Control de un Sistema de Pndulo Invertido

60





























Figura 8-8. Registros del QEI


Control de un Sistema de Pndulo Invertido

61



Figura 8-9. Registro QEICON bits 15 a 3

Control de un Sistema de Pndulo Invertido

62













Figura 8-10. Registro QEICON bits 2 a 0


Figura 8-11. Registro DFLTCON

Control de un Sistema de Pndulo Invertido

63

1.8.1.1.3.2 El mdulo PWM

Antes de empezar con la descripcin del mdulo PWM, tngase en
cuenta que al final de este apartado, mediante las Figuras 8-14 a 8-17, se
incluye informacin del fabricante referente a los registros y bits empleados en
este.
El mdulo PWM est diseado para realizar diversos PWM
sincronizados que permiten realizar tareas como:
-Control de Motores de induccin
-Control de Motores de reluctancia conmutada
-Control de motores DC sin escobillas
-Sistema de alimentacin ininterrumpida (UPS)


Consta de 6 pines y 3 generadores de PWM. Estos pines se ordenan segn el
generador de PWM que le corresponda en parejas de la forma:
PWM1H/PWM1L,,PWM3H/PWM3L. Cada pareja puede dar seales
complementarias o idnticas.
A continuacin se exponen los distintos modos de funcionamiento.
Primero se hablar de las configuraciones distintas que manejan el contador
PTMR. Este registro, es la base de tiempo de la seal PWM. Una vez
configurado este para generar un periodo en la seal de salida, se ver cmo
generar el ciclo de trabajo segn la configuracin elegida para la base de
tiempo.
Base de tiempo del mdulo PWM
El mdulo PWM se basa en un contador que cuenta Tcy (tiempo
equivalente a una instruccin simple del MCU) llamado PTMR. Comparando su
valor con el de otros registros se generan los pulsos. Respecto a la forma de
contar Tcy, se tienen cuatro formas configurables, mediante los bits PTMOD
0,1

del registro PTCON:
Free-running mode (PTMOD
0,1
=00)
Este modo incrementa el registro/contador de 15 bits PTMR (antes
mencionado), hasta alcanzar el valor que ubicamos en el registro PTPER (de
15 bit). Esto ocurre siempre que el bit PTEN del registro PTCON se mantenga
activo. Una vez PTMR alcanza el valor de PTPER, se resetea PTMR y se
dispara una interrupcin. Luego PTMR sigue contando.

Control de un Sistema de Pndulo Invertido

64

Single-shot mode (PTMOD
0,1
=01)
Este modo es idntico al anterior con la diferencia de que, una vez
PTMR alcanza el valor de PTPER el bit PTEN pasa automticamente a valer 0,
desactivando la base de tiempo.
En los modos free-running mode y single-shot mode se debe usar la
siguiente frmula para calcular el periodo:
=
( + 1)



Continuous up/down count mode (PTMOD
0,1
=10)
En este modo, se incrementa PTMR hasta alcanzar PTPER y luego
PTMR es decrementado hasta llegar a 0. Adems, tenemos un bit, el PTDIR,
que como indica su nombre, indica si el contador est incrementando o
decrementando. En cuanto a la interrupcin, ocurre cuando el valor de PTMR
es 0 y el contador empieza a contar incrementando.
Double update mode (PTMOD
0,1
=11)
Este modo es idntico al anterior, salvo que ocurre una interrupcin
adicional cuando PTMR alcanza el valor de PTPER.
En los modos continuous up/down count mode y double update mode se
debe usar la siguiente frmula para calcular el periodo:
=
2( + 0.75)











Control de un Sistema de Pndulo Invertido

65













Generacin del ciclo de trabajo
Por un lado se tiene la forma de funcionar de la base de tiempo, la cual
entre otras cosas genera un periodo. Ligada a esta, est la forma de generar el
ciclo de trabajo. Para ello, se pueden configurar dos formas:
Edge-Aligned PWM (Figura 8-13, parte izquierda)
Este modo se activa con el free-running mode y el single-shot mode. La
salida del PWM se vuelve activa cuando PTMR vale 0 y se vuelve inactiva
cuando PTMR coincide con el valor deseado de ciclo de trabajo (registros
PDC
1,2,3
, segn la pareja de salidas correspondientes). Si el ciclo de trabajo
vale 0, no se generaran pulsos en la salida del PWM.
Center-Aligned PWM (Figura 8-13, parte derecha)
Este modo se activa con el continuous up/down count mode y double
update mode. La salida del PWM se vuelve activa cuando PTMR alcanza el
valor de PDCx y se encuentra decrementando PTMR (es decir PTDIR vale 1).
Si PTMR alcanza el valor de PDCx y se encuentra incrementando, la salida se
vuelve inactiva. Si el DC vale 0, no se generaran pulsos en la salida del PWM.




Figura 8-12. Diagrama del mdulo PWM

Control de un Sistema de Pndulo Invertido

66











Otra caracterstica y registros
En esta seccin, se aaden caractersticas adicionales y registros de
inters para la configuracin del mdulo PWM que no han sido detalladas en
los modos de funcionamiento antes mencionados.
Actualizacin de los registros PTPER y PDCx
Los registros PTPER y PDCx, referentes al periodo y al ciclo de trabajo,
son almacenados en dos registros para evitar problemas en la carga de valores.
Uno de ellos es accesible al programador y actualiza el otro (no accesible)
cuando se cumple cierta condicin. En los modos free-running y single-shot
PTPER y PDCx se actualizan cuando PTMR se vuelve 0 tras alcanzar el
antiguo valor de PTMR. En el modo continuous up/down count y double update,
PTPER y PDCx se actualizan cuando PTMR vale 0.
Prescaler y postscaler
El mdulo PWM consta de un prescaler, que nos puede servir para
disminuir la frecuencia de la base de tiempo (PTMR). Se configura mediante los
bits PTCKPS
1,0
en el registro PTCON. Tambin, tenemos un postscaler, que
reduce la frecuencia a la que se genera la demanda de interrupciones. Se
configura con los cuatro bits PTOPS
3:0
del registro PTCON.
Modo complementario
Al principio del apartado 1.8.1.1.3.2 (El mdulo PWM), se hablaba de
que las salidas del mdulo PWM podan dar seales complementarias o
idnticas en sus respectivas tres parejas de pines. Para ello se deben
configurar los bits PTMODx del registro PWMCON1. De estar activos,


Figura 8-13. Modos de funcionamiento del mdulo PWM
Control de un Sistema de Pndulo Invertido

67

configuran las salidas PWMxH/PWMxL con seales complementarias. Por el
contrario, generan seales iguales en cada pareja de pines asociada a cada
generador PWM. Adems, para el modo complementario, se pueden configurar
generadores de tiempo muerto.
Habilitar pines de salida
Se pueden habilitar o deshabilitar los pines de salida para el mdulo
PWM mediante los bits PENxH y PENxL del registro PWMCON1. De estar
activos, habilitan el bit respectivo para el mdulo PWM, de lo contrario se tratan
las salidas como salidas de propsito general.
Estado pines de salida tras reset
El bit PWMPIN controla el estado de las salidas tras un reset del MCU.
Si esta a nivel alto (configuracin por defecto), tras un reset las salidas son
deshabilitadas (triestado) y configuradas como pines de propsito general. De
lo contrario son configuradas como salida del PWM y restan a nivel bajo.
Configuracin de la polaridad de los pines de salida
Los bits HPOL y LPOL del registro FPORBOR configuran la polaridad
del valor alto para los pines denominados H (PWMxH) y para los pines
denominados L (PWMxL).













Control de un Sistema de Pndulo Invertido

68





























Figura 8-14. Registros del mdulo PWM

Control de un Sistema de Pndulo Invertido

69



















Figura 8-15. Registro PTCON


Figura 8-16. Registro PWMCON1

Control de un Sistema de Pndulo Invertido

70





Figura 8-17. Registro PWMCON2

Control de un Sistema de Pndulo Invertido

71

1.8.1.2 El motor de DC

El motor elegido para el sistema es un motor de DC de imanes
permanentes. El c4557-60003. Algunas de sus caractersticas son las
siguientes:









Para poder controlar los dos sentidos de giro, se usar el driver L293DNE. De
las configuraciones que se observan en la Figura 8-19, se usar la
configuracin bidireccional que permite la operacin de giro en los dos sentidos.
El L293DNE administra hasta 1 A por canal. Usando dos parejas de dos
drivers en paralelo respectivamente se obtendrn hasta 2 A en cada sentido.
Los diodos internos del L293DNE limitan la corriente a 600m A por canal, para
eliminar esta limitacin, se usarn cuatro diodos externos segn la
configuracin de la Figura 8-19. Los diodos elegidos son los SBY27-50-E3 de 2
A de corriente nominal y picos de hasta 50 A.








max voltage: 24V
medium voltage: 15V
max current: 1.6A
no load current: 0.1A
no load speed: 3540 rpm
starting voltage 3V
resistance 11.6 ohms
volts at 1000 rev: 6.4V
inertia 50 (gm.cm2 )
moment on the shaft 6.08 N*cm/A
max moment 9.4 N*cm

Figura 8-19. Configuraciones del L293DNE

Figura 8-18. Caractersticas del motor de DC

Control de un Sistema de Pndulo Invertido

72

Para controlar el driver, se necesitan tres pines del microcontrolador. Se
usarn las salidas respectivas del mdulo PWM y un bit de algn puerto de uso
general del MCU, como el PUERTO B.

1.8.1.3 El codificador incremental

En este proyecto, el codificador incremental cumple la funcin de
obtener la posicin angular del pndulo de la planta. Concretando un poco, se
ha elegido un codificador incremental o codificador relativo, rotatorio, de dos
canales e ndice. El cual, est compuesto por dos coronas provistas con
ventanas que restringen o dejan pasar la luz de un LED, para ser captadas por
fotodiodos. Al girar el eje del motor, que est unido a las coronas, se generan 2
seales en cuadratura como las de la Figura 8-20 (CH.A y CH.B).










Observando los flancos de subida y bajada de estas, se tienen dos secuencias
distintas segn si se gira hacia la derecha o la izquierda. Teniendo en cuenta
las seales de la Figura 8-20, girando el eje del motor se generaran las
secuencias:
(CH. A CH. B) = 10 11 01 00 10
(CH. A CH. B) = 10 00 01 11 10



Figura 8-20. Seales en cuadratura del encoder


Control de un Sistema de Pndulo Invertido

73

El codificador incremental debe cumplir el requisito de tener una
resolucin que permita hacer un control entorno del ngulo 0. Si el pndulo se
alejara demasiado de este, no se podra trabajar con las ecuaciones
diferenciales de la planta linealizadas. De ser as, no serviran los controladores
establecidos en este proyecto para regular la planta. No obstante, los
parmetros del controlador experimental concreto, como la sobre-elongacin
de la respuesta, el error en estado estacionario o el tiempo de muestreo,
tambin condicionan la influencia del error de cuantificacin del encoder.
Para despreciar estos efectos, se ha elegido un codificador incremental
con la mayor resolucin dentro del presupuesto deseado. Puesto que, un
encoder con ms precisin da ms libertad en el estudio de controladores. No
obstante, esto no significa que un codificador incremental menos preciso no
pueda servir para realizar el control con unas buenas prestaciones.
Teniendo en cuenta la disponibilidad, la resolucin, el dimetro del eje
del motor elegido,, se ha elegido el HEDS-5540 A06. El cual genera 2000
flancos por revolucin (500 ventanas por corona x 2 coronas x 2 flancos por
ventana). Entonces, se tiene

=
360
2000
= 0,18 /

Como se ha comentado, el encoder dispone de un tercer canal de salida
llamado ndice (CH.1 en la Figura 8-20). Este, ha sido construido para entregar
un pulso una vez por revolucin y se usara como referencia para detectar la
posicin superior de equilibrio (el 0). Se debe tener una especial atencin a la
hora de detectar la posicin 0, ya que, un error significativo en esto, llevara el
sistema a la inestabilidad.








Figura 8-21. Resistencias de pull-up aadidas a la salida del encoder, segn
especificaciones del datasheet


Control de un Sistema de Pndulo Invertido

74

1.8.1.4 La placa de circuito impreso

Hasta ahora se han presentado decisiones tomadas en cuanto a la
eleccin de los componentes electrnicos de la planta, y otros aspectos afines.
Con esto la realizacin de la placa de circuito impreso queda ms o menos
definida. No obstante, a continuacin se dan unas pinceladas del proceso de
toma de decisiones de diseo para la elaboracin de la PCB, los elementos
usados y la organizacin en la placa de estos. Para el diseo de esta, se ha
usado el grupo de programas OrCAD 9.2 de Cadence.





















Figura 8-22. Esquema elctrico de la PCB. (Para ms detalle referirse al
documento Planos)


Control de un Sistema de Pndulo Invertido

75

En la Figura 8-22 se puede observar el esquemtico final que determina
los elementos usados y las conexiones de las pistas entre ellos. Si se
fragmenta este en bloques, se tiene, la circuitera cercana al microcontrolador,
el driver para el motor y los conectores. El primer bloque, consta de los
elementos tpicos de una placa que incluye un microcontrolador de Microchip:
el conjunto oscilador-condensadores, el circuito de reset mediante el pulsador
SW1 y R2, y un led indicador de la puesta en marcha (alimentacin del
microcontrolador on). En cuanto a los conectores se han usado 5 que son los
siguientes:
-Conector para el programador ICD2 (RJ 11)
-Conector para el programador Pickit2 (CON5)
-Conector para el codificador incremental (J 1)
-Conector para el Motor (J 3)
-Conector para la alimentacin MCU/Motor (J 2)

Finalmente, en el ltimo bloque correspondiente al driver para el motor, se
puede ver como se usan dos parejas de drivers para cada entrada y salida del
L293DNE en paralelo, para ampliar la corriente mxima que este puede
entregar a 2 A. Los pines de habilitacin, tambin se controlan mediante un
solo pin del MCU, ya que no es necesario hacerlo por separado. A continuacin,
veamos el esquema fsico real y observemos el trazado de las pistas y la
ubicacin de los componentes entre otras cosas.














Figura 8-23. Aspecto del diseo de la PCB

Control de un Sistema de Pndulo Invertido

76

Primeramente se ha definido el ancho de las pistas general, sern de 0.8
mm. Con un grueso de pistas de 35 m y un incremento de temperatura
admisible de 10 K, resulta adecuado aproximar la corriente mxima segn la
siguiente frmula, donde es el ancho de la pista. Siendo = 0.8, se tiene

= 3
2
3
2,58 A 0F
1

Dado que como mximo se entregaran 2 A al motor de DC, este valor de ancho
se considera apropiado para la fabricacin y es adecuado para el
funcionamiento del circuito.
En cuanto a la ubicacin de los componentes y al trazado de las pistas,
volviendo a la explicacin del esquemtico, se har referencia al bloque de
MCU y circuitera cercana y al bloque del driver para el motor. Es comn dividir
los bloques referentes al control y los mdulos de potencia. Entonces,
empezando por la izquierda de la Figura 8-24, se tiene el bloque del MCU y a la
derecha de este, el bloque del driver para el motor. Una zona conectada a
masa envuelve las dos caras e intenta aislar estos dos bloques. Esta zona,
tambin hace de disipador del L293DNE, ya que, como indica en su hoja de
caractersticas, es conveniente unir las patas internas de este (las de masa) a
una pista ancha para disipar bien el calor.














1
Frmula extrada de TECNOLOGIA DE CIRCUITS IMPRESOS de Eduard Selma i Bargallo, 5
a
edicin,
p.7.35.

Figura 8-24. Organizacin de la PCB

Control de un Sistema de Pndulo Invertido

77






























Figura 8-26. Acabado de la PCB: Cara BOTTOM

Figura 8-25. Acabado de la PCB: Cara TOP

Control de un Sistema de Pndulo Invertido

78

1.8.2 Sistema mecnico: El conjunto pndulo-carro-soporte

Este apartado es una breve descripcin que complementa los planos de
la parte mecnica de la maqueta. Para ms comodidad, a partir de ahora se
usar SM para hacer referencia al conjunto pndulo-carro-soporte. Siendo este
la porcin de la planta que no incluye ninguno de los elementos mencionados
en el apartado 1.8.1 sistema electrnico.
En este apartado se hablar del diseo y se har una especial mencin
a la construccin del SM, el cual puede parecer trivial pero acarrea muchos
problemas de no realizarse adecuadamente. De no ser as, nos encontraremos
con una planta distinta a la modelada y nuestros controladores podran no
satisfacer los requisitos deseados para la respuesta. Pequeas desviaciones
en la construccin del SM, pueden modificar drsticamente el control de la
planta. Se ha de tener en cuenta que se disponen de herramientas para la
construccin del SM limitadas, y que se pretende hacer un diseo sencillo,
reproducible con cierta facilidad y duradero en la medida de lo posible.
El sistema elegido soporta el carro mediante una barra de seccin
circular que atraviesa este transversalmente. Paralela a esta, el carro
incorpora en su cara inferior una barra de seccin cuadrada que se deslizar
por dos barras ubicadas en el soporte y de seccin cuadrada tambin. Este
mecanismo nos da el movimiento en el plano x de la planta.
Se debe intentar minimizar la friccin del carro al desplazarse, para ello
el carro se ha ideado hueco (de perfil cuadrado), de forma que se apoya sobre
dos puntos en la barra transversal circular. En los agujeros que dan paso a la
barra, como se puede ver en la Figura 8-27, se ha aadido un tejido que
minimiza la friccin entre la barra y el carro. Se aade tambin, que la barra
transversal es de superficie pulida y debe engrasarse a menudo.









Figura 8-27. Perfil del carro.

Control de un Sistema de Pndulo Invertido

79

Para soportar la barra y el conjunto motor-correa-polea, se usan ngulos
que han sido agujereados con tal fin. Todo el SM est sujeto a una madera de
contrachapado. Se han minimizado las dimensiones de esta, en la mesura de
lo posible, para cumplir con los requisitos de diseo establecidos al principio del
captulo 1.8. Para incluir el pndulo en el carro, una barra de seccin circular
atraviesa este paralelamente y a 90 de la barra circular, que serva de soporte
para el movimiento en el plano x. Esta barra se apoya mediante dos puntos
igual que la barra de soporte. En un extremo se une al pndulo y en otro ir el
codificador incremental (vase la Figura 8-28).
En la realizacin de la maqueta, se observa que es complicado hacer
que las dos barras antes mencionadas estn perpendiculares en el eje z
(giradas a 90). En la construccin, se debe intentar minimizar esta desviacin.









Otro punto importante a tener en cuenta es la nivelacin de la planta, ya que, el
sistema es muy sensible a un error en la desviacin de la posicin del pndulo
0. El MCU obtiene la localizacin de esta posicin mediante el ndice del
sensor incremental. Es decir, tiene una posicin del carro fijada y a partir de
esta se introduce el valor de desviacin de esta a la posicin 0. Para encontrar
la desviacin se realiza un ensayo con un controlador sobre la planta y se
aproxima la desviacin hasta que el error de esta resulta lo suficientemente
pequeo para despreciarse, tomando como referencia ese experimento. Como
resultado, calibrar la desviacin de la posicin 0 por software resulta un
proceso laborioso, debido a la sensibilidad de la planta ante esta.




Figura 8-28. Planta del carro.

Control de un Sistema de Pndulo Invertido

80










Para facilitar este proceso, se han incluido patas roscadas en la base de
la maqueta. De esta forma, usando un nivelador y mediante el ensayo con un
controlador, se puede re-calibrar la desviacin a la posicin 0, sin tener que
recurrir al proceso de sucesivas modificaciones en el parmetro de desviacin
de la posicin 0 del programa.















Figura 8-29. Perfil del soporte.


Figura 8-30. Maqueta.

Control de un Sistema de Pndulo Invertido

81

1.9 El software
1.9.1 Entorno de programacin y consideraciones previas

Primeramente, se har una mencin al entorno de programacin. Se ha
usado el programa MPLAB de Microchip y se ha instalado el paquete C30 para
programar en C (microcontroladores de las familias PIC24 y dsPIC). Para
realizar el proyecto en MPLAB, se deben incluir los ficheros: p30f4011.gld y
libp30F4011-coff.a que son el archivo para el linker y la librera del
dsPIC30F4011 respectivamente.
Para la comprensin de este apartado, son indispensables los apartados
referentes al MCU 1.8.1.1. Como se habl en estos, el MCU cumple la funcin
de establecer un lazo de realimentacin, dando lugar a un sistema regulador
como el de la Figura 9-1.












Para controlar el driver L293DNE, se requera de un pin de habilitacin
que se dej a la eleccin de algn puerto del MCU de uso general. Para ello, se
ha elegido el primer pin del puerto B (RB0).
En el programa se ha hecho uso de los archivos de cabecera qei.h y
pwm.h de Microchip, para el uso de los perifricos. La mayora de sus
funciones, son rutinas sencillas que escriben y leen registros de los perifricos.
Se ha considerado oportuno hacer uso de ellas por dar al programa un carcter

Figura 9-1. Esquema del hardware


Control de un Sistema de Pndulo Invertido

82

oficial, ya que estas se pueden descargar de la pagina de Microchip y estn
documentadas (vase el documento [6]).
Visto esto, ya se puede empezar con la descripcin del programa.

1.9.2 Configurando los perifricos: el QEI

El encoder elegido, el HEDS-5540 A06, dispone de dos canales e ndice.
Para aprovechar los dos canales, se debe configurar el QEI en el modo x4.
Para hacer uso del ndice, se debe de configurar el reset de POSCNT por
ndice.






Para configurar el QEI se deben inicializar los registros QEICON y
DFLTCON. Observando la Figura 9-2, la variable 1 hace referencia a
QEICON y la variable 2 a DFLTCON. 1 se ha inicializado mediante
mscaras, incluidas en qei.h (la rutina OpenQEI() tambin procede de qei.h). A
continuacin, se describe la inicializacin del QEI mediante estas:




Anlogamente, a continuacin se describe la inicializacin de 2:




unsigned int qeic1;
unsigned int qeic2;

qeic1=( QEI_INDEX_RESET_ENABLE& QEI_INPUTS_NOSWAP& QEI_MODE_x4_PULSE);
qeic2=( MATCH_INDEX_PHASEA_LOW& MATCH_INDEX_PHASEB_LOW&
POS_CNT_ERR_INT_DISABLE& QEI_QE_CLK_DIVIDE_1_1& QEI_QE_OUT_ENABLE);
OpenQEI(qeic1,qeic2);
QEI_INDEX_RESET_ENABLE (QEICON
2
=1 ): Se habilita el reset de POSCNT por indice
QEI_INPUTS_NOSWAP (QEICON
7
=0 ): De valer 1, se intercambia el canal A por el B. Es decir, este bit
controla el sentido de cuenta de POSCNT.
QEI_MODE_x4_PULSE (QEICON
10-8
=110) : Se selecciona el modo x4 con reset de POSCNT por indice.
MATCH_INDEX_PHASEA_LOW& MATCH_INDEX_PHASEB_LOW
(QEICON
10,9
=00): Estado del canal A y B cuando ocurre el pulso del ndice.
POS_CNT_ERR_INT_DISABLE (DFLTCON
8
=1): Se deshabilitan las interrupciones del QEI
QEI_QE_CLK_DIVIDE_1_1 (DFLTCON
6-4
=000): Se selecciona el divisor de reloj para el filtro del QEi
QEI_QE_OUT_ENABLE (DFLTCON
7
=1) : Se habilitan filtros de ruido para las entradas del QEI
Figura 9-2. Extracto del cdigo fuente, referente a la configuracin del QEI

Figura 9-3. Mascaras para configurar el registro QEICON

Figura 9-4. Mascaras para configurar el registro DFLTCON

Control de un Sistema de Pndulo Invertido

83

1.9.3 Configurando los perifricos: el mdulo PWM

Para controlar el motor, se usarn dos generadores de PWM con
posibles valores de DC distintos usando los pines PWM1L y PWM2L, cuyos
registros de DC son PDC1 y PDC2 respectivamente. Se trabajar en el modo
free-running. Como se habl en el captulo 1.8.11, su base de tiempo se basa
en un sistema que incrementa el registro PTMR hasta alcanzar el valor de
PTPER, luego PTMR se resetea y vuelve a empezar.









(La rutina OpenMCPWM() y las mascaras de
1,2,3
proceden del archivo
pwm.h).
Primeramente, de debe calcular el periodo de los pulsos del PWM. Se ha
elegido un periodo, cuyo valor es 100 veces inferior al tiempo de muestreo de
la planta = 20 . Para encontrar el valor que se debe escribir en PTPER,
se ha usado la siguiente frmula, extrada de [5]:

=
( + 1)



Se aade que, el tiempo de instruccin es de = 50 (el MCU operar a
20 MIPS). Entonces


= 4000
unsigned int period;
unsigned int sptime;
unsigned int config1;
unsigned int config2;
unsigned int config3;
period=4000;
sptime=0x0;
config1=(PWM_EN&PWM_OP_SCALE1&PWM_IPCLK_SCALE1&PWM_MOD_FREE);
config2=(PWM_PDIS3H&PWM_PDIS2H&PWM_PDIS1H&PWM_PDIS3L&PWM_PEN2L&PWM_PEN1L);
config3=( PWM_UEN);
OpenMCPWM(period,sptime,config1,config2,config3);
Figura 9-5. Extracto del cdigo fuente, referente a la configuracin del mdulo PWM.


Control de un Sistema de Pndulo Invertido

84

Para inicializar el mdulo PWM, aparte de introducir el periodo, se debe
configurar los registros PTCON, PWMCON1 y PWMCON2. Estos corresponden
a las variables
1,2,3
respectivamente. A continuacin, se exponen las
mascaras usadas para configurar estos registros. La variable 1, inicializa
el registro PTCON:





La variable 2, inicializa el registro PWMCON1:








La variable 3 configura el registro PWMCON2:




La variable , es relativa a una funcin del mdulo PWM que no se usar.
No obstante, se debe inicializar para poder usar la funcin OpenMCPWM().



PWM_EN (PTCON
15
=1): Habilitamos la base de tiempo del mdulo PWM.
PWM_OP_SCALE1 (PTCON
7-4
=0000): Damos un valor al postscaler de PTMR de 1:1.
PWM_IPCLK_SCALE1 (PTCON
3,
2=00): Damos un valor al prescaler de PTMR de 1:1.
PWM_MOD_FREE (PTCON
1,2
=00): Seleccionamos el modo free-running
PWM_PDIS3H
&PWM_PDIS2H
&PWM_PDIS1H
&PWM_PDIS3L
&PWM_PEN2L
&PWM_PEN1L
(PWMCON
1-7
=0x03) Se habilitan o deshabilitan los bits para el mdulo
PWM. En nuestro caso, solo se habilitan PWM1L y
PWM2L.
PWM_UEN (PWMCON2
0
=0): Se habilita la actualizacin de valores en los registros de
ciclo de trabajo y periodo (PDCx y PTPER).
Figura 9-6. Mascaras para configurar el registro PTCON
Figura 9-7. Mascaras para configurar el registro PWMCON1

Figura 9-8. Mascaras para configurar el registro PWMCON1

Control de un Sistema de Pndulo Invertido

85

1.9.4 Subrutinas relativas al clculo de la posicin del pndulo

Estas son dos: pend_position y pos0ready.
La primera de ellas, tiene como objetivo devolver la posicin angular del
pndulo, siendo 0 la posicin de equilibrio superior. En condiciones inciales del
programa, se tiene que POSCNT=0. Por lo tanto, si se empieza a girar el
pndulo hacia una direccin, POSCNT se incrementar o decrementar. De
estar decrementando, el registro POSCNT desbordar pasando de 0x0000 a
0xFFFF. Cuando ocurra el ndice y se corrija la desviacin a la posicin de
equilibrio superior, se tendr una situacin parecida. De pasar el programa por
ndice POSCNT volver a valer 0, pudiendo desbordar y pasar a valer 0xFFFF,
con lo que la correccin de ngulo no valdra. Para solucionar esto, la subrutina
pend_position(), aparte de traducir el valor de las cuentas en POSCNT por el
valor del ngulo desplazado en el pndulo, tambin hace una distincin de si
POSCNT es mayor que 0xF000. Es imposible que el pndulo, girando en el
sentido positivo alcance el valor 0xF000 (para ello, tendra que dar tres vueltas
sin que ocurriera el pulso de ndice).
Una vez distinguido el caso de desbordamiento inferior del registro
POSCNT, se pasa a convertir el valor de POSCNT a un valor negativo de la
siguiente forma:

= ( 0 1)

Se puede observar que, de valer POSCNT 0xFFFF, su valor en grados sera de
-1 cuenta*resolucin encoder.
J untando todo esto, ya se puede escribir la funcin pend_postion:








double pend_position (double dindx)
{
double g;
if(POSCNT>0xF000)
{
g=((((double)POSCNT-0x10000)*0.18)+dindx);
}
else
{
g=(((double)POSCNT*0.18)+dindx);
}
return(g);
Figura 9-9. Funcin pend_postion
Control de un Sistema de Pndulo Invertido

86

La variable , es el valor del desplazamiento entre el ndice y la posicin
de equilibrio superior. Se conoce que, en nuestro pndulo, el pulso ndice
ocurre en el cuadrante superior izquierdo. Si se eleva el pndulo en sentido
horario des de la posicin inferior a la superior, POSCNT incrementa
positivamente (as se ha establecido en la inicializacin del QEI). Cuando
POSCNT llegue a ndice, su valor ser reseteado y entonces, al sumarle el
valor dindx se habr desplazado la posicin 0 a la posicin de equilibrio
superior.











Ahora se hablar de pos0ready. Esta subrutina detecta cuando el
pndulo llega a la posicin de equilibrio superior. Como se comentaba en la
explicacin de la subrutina pend_position, el usuario debe elevar el pndulo en
sentido horario hasta alcanzar la posicin de equilibrio superior. En su camino,
el QEI recibir el pulso del ndice (cuadrante superior izquierdo) y POSCNT se
resetear. Por lo tanto, se tiene un escenario en el que POSCNT pasar 2
veces a valer 0. J ugando con esto, se ha hecho un cdigo que detecta la
transicin por 3 estados del pndulo.






Figura 9-10. Sentido establecido del ngulo del pndulo en relacin con el encoder

Control de un Sistema de Pndulo Invertido

87





























Figura 9-11. Diagrama de la funcin pos0ready


POSCNT=0
Giramos el pndulo
en sentido horario
POSCNT!=0?
Giramos el pndulo
en sentido horario
POSCNT=0?
Giramos el pndulo
en sentido horario
(POSCNT+dindx)=0?
Pos 0
No
Si
No
Si (ocurre indx)
No
Si
Control de un Sistema de Pndulo Invertido

88

Veamos el cdigo de pos0ready:














Se ha aadido un margen en la localizacin de las posiciones, para evitar
errores.

1.9.5 Programa principal

El programa principal sigue el siguiente diagrama de estados:











void pos0ready (double dindx)
{
double pos;
pos=pend_position(0.0);
while((pos<5.0)&&(pos>-5.0))
{
pos=pend_position(0.0);
}
while((pos<-0.18)||(pos>0.18)) //salimos del "0" inicial
{
pos=pend_position(0.0);
}
pos=pend_position(dindx); //encontramos el indice
while((pos<-0.18)||(pos==0.0))
{
pos=pend_position(dindx);
} //
encontramos la pos 0
}
Figura 9-12. Funcin pos0ready
Control de un Sistema de Pndulo Invertido

89




































Figura 9-13. Diagrama del programa principal


Inicio
Inicializaciones
pos0ready
pend_position
U=Algoritmo de control
U>Valor Max
U= Valor Max

U<Valor Max
U=-Valor Max
U positiva?
PWM + PWM-
Guardamos valores
para el algoritmo de
control
Bucle de espera
Si
Si
Si
No
No
No
Control de un Sistema de Pndulo Invertido

90

Para aplicar el ciclo de trabajo, se ha usado una subrutina de pwm.h



A continuacin, se aade un trozo del cdigo del programa principal, referente
a la modificacin del ciclo de trabajo:








Donde es el resultado del algoritmo de control y representa la seal de
control del sistema. Si es positiva, se aplica este resultado al ciclo de trabajo
de uno de los dos generadores de PWM y se deja el otro a 0. De ser
negativa, se convierte a valor absoluto. Obsrvese que, de valer = 0
su valor sera -1 o 1 en valor absoluto. Finalmente se aplica el DC, invirtiendo el
orden de los generadores de PWM para invertir el sentido de giro del motor.
Para aplicar el bucle de espera, se ha usado una subrutina de la librera
libp30F4011-coff.a,



donde el parmetro , es el nmero de ciclos de reloj que deben
transcurrir para el retardo deseado. Haciendo memoria, nuestro ciclo de reloj es
de 50 . Por lo tanto, para tener un retardo de 1 , se debe introducir a la
subrutina el valor 20 000 (para 20 , 400 000).

void SetDCMCPWM (unsigned int numero_registro_DC,
unsigned int valor_DC,0);
if(U>0)
{
SetDCMCPWM(1,0,0);
SetDCMCPWM(2,(U),0);
}
else
{
SetDCMCPWM(1,((0xFFFF-U)+1),0); //convertimos U a unsigned int
SetDCMCPWM(2,0,0);
}
void __delay32(unsigned long cycles)
Figura 9-14.
Figura 9-15.

Figura 9-16.


Control de un Sistema de Pndulo Invertido

91

1.10 Resultados

Se ha comprobado el correcto funcionamiento del programa, mediante el
modo debug del programador. Se observa que la planta responde, acorde con
el diseo en el LGR. Si se aplica un controlador proporcional, la planta
reacciona de forma inestable. Se observa, que en aumentar la ganancia nos
acercamos al eje de la estabilidad. Si se aplica un integrador puro, se obtienen
oscilaciones (los polos estn en el radio = 1). De introducir un cero en el
semiplano izquierdo no demasiado alejado del eje = 1, junto con el integrador
puro, se consigue estabilizar la planta sin sobre-picos demasiado elevados.
Tambin se ha podido observar cmo, de alejar demasiado el pndulo de la
posicin de equilibrio superior, la respuesta cambia drsticamente y el pndulo
se vuelve inestable con facilidad. A pesar de verse una relacin clara entre el
modelo establecido en la planta, junto con los controladores diseados, se
observa que los parmetros de la planta, como los polos o parmetros del
motor distan un poco de la realidad. Por eso, se debe reajustar la ganancia y
los valores del controlador un poco para obtener el resultado deseado. Por
desgracia, no se puede graficar la respuesta real de la planta para obtener una
relacin ms clara con el diseo realizado. Esta prestacin se podra tener en
cuenta, en una futura ampliacin de la maqueta.















Figura 10-1. LGR de la planta con compensador

Control de un Sistema de Pndulo Invertido

92

1.11 Bi bli ografa

[1] Katsuhiko Ogata. Ingeniera de control moderna. 5 Edicin 2010.
[2] Katushiko Ogata. Sistemas de Control en Tiempo Discreto. 2 Edicin
2002.
[3] Microchip. 16-bit MCU and DSC Programmers Reference Manual.
[4] Microchip. dsPIC30F Family Reference Manual.
[5] Microchip. dsPIC30F4011/4012 Data Sheet.
[6] Microchip. dsPIC Language Tools Libraries.
[7] Microchip. MPLAB C30 C COMPILER USERS GUIDE.





















2. ANEXOS



























Control de un Sistema de Pndulo Invertido

94

2.1 Fi cheros de MATLAB

Este apartado, recoge los ficheros usados en el clculo y simulacin de
los controladores expuestos en el captulo 1.7.

Control mediante el mtodo del LGR























%IPClassic.m
%Control de una planta de pndulo invertido
%mediante el mtodo del LGR de Evans
%-------------------------------------
%simulacion de controladores de 1 y 2 orden
%evaluacin mediante la herramienta sisotool
clc
clear all
%------------variables-----------------------------------
PI = 4*atan(1);
g=9.81;
M=0.0742; %masa del carro
m=0.0238; %masa del pndulo
l=0.25; %mitad de la longitud del pndulo
Km=0.14; %constante del motor (V*s)/rad
r=0.005; %radio del eje del motor
Ra=10; %resistencia de armadura del motor
Ts=0.02; %tiempo de muestreo
%---------H(s)=O(s)/Va(s)------------------------

num=[-(Km)/(Ra*r) 0];
den=[M*l (l*(Km^2))/(Ra*(r^2)) -(M+m)*g -(g*(Km^2))/(Ra*(r^2))];
H=tf(num,den);
[z,p,k]=tf2zp(num,den) %inormacion de H(s)

%eliminamos el polo mas lento de la planta S=-1056 y simplificamos:
z=[0];
p=[6.2701 ; -6.2581];
k=-150.94339;
[num,den]=zp2tf(z,p,k);
Hsim=tf(num,den);
%discretizamos Hsim(s)
Hdisc=c2d(Hsim,0.02);

%funcion de transferencia del compensador C(z)
zc=[0.753];
pc=[1];
kc=0.142;
[nc,dc]=zp2tf(zc,pc,kc);
C=tf(nc,dc,0.02);
Control de un Sistema de Pndulo Invertido

95










La transformada z modificada: Simulacin de la adicin de un retraso de
transporte
















%Compensador de retardo de fase Cr(z)
zc=[0.9];
pc=[0.99];
kc=1.66;
[nc,dc]=zp2tf(zc,pc,kc);
Cr=tf(nc,dc,0.02);
%planta con realimentacin unitaria
P=feedback(-Hdisc*C,1);
%step(P)
%evaluamos la planta con la herramienta sisotool
sisotool(-Hdisc*C*Cr)

%IPzmod.m
%Control de una planta de pndulo invertido
%mediante el mtodo del LGR de Evans
%-------------------------------------
%simulacion de la adicion de un tiempo de retardo
% (1-m)T a la planta
clc
clear all
%------------variables-----------------------------------
PI = 4*atan(1);
g=9.81;
M=0.0742; %masa del carro
m=0.0238; %masa del pndulo
l=0.25; %mitad de la longitud del pndulo
Km=0.14; %constante motor (V*s)/rad
r=0.005; %radio del eje del motor
Ra=10; %resistencia de armadura del motor
Ts=0.02; %tiempo de muestreo
rett=0.85; %(1-m)Ts , donde m=rett es el retardo
%de transporte aadido

Control de un Sistema de Pndulo Invertido

96




























%---------H(s)=O(s)/Va(s)------------------------
num=[-(Km)/(Ra*r) 0];
den=[M*l (l*(Km^2))/(Ra*(r^2)) -(M+m)*g -(g*(Km^2))/(Ra*(r^2))];
H=tf(num,den);
%eliminamos el polo mas lento de la planta S=-1056 y simplificamos
z=[0];
p=[6.2701 ; -6.2581];
k=-150.94339;
[num,den]=zp2tf(z,p,k);
Hsim=tf(num,den);
%Transformada z modificada de la planta hsim(s)
num=[1,0];
s=tf(num,1);
Ps=minreal(Hsim/s); %debido al retenedor ZOH(s)=(1-exp(-Ts))/s
[num,den] = TFDATA(Ps);
[r,p,k]=residue(num{1,1},den{1,1});
%planta (suma de fracciones parciales)
na=[r(2,1)*exp(p(2,1)*rett*Ts) 0];
da=[1 -exp(p(2,1)*Ts)];
A=tf(na,da,Ts);
nb=[r(1,1)*exp(p(1,1)*rett*Ts) 0];
db=[1 -exp(p(1,1)*Ts)];
B=tf(nb,db,Ts);
%z^-1(1-z^-1) donde (1-z-1) corresponde a (1-exp(-Ts)) y z^-1 es debido
%al retardo ficticio
nd=[1 -1];
dd=[1 0 0];
D=tf(nd,dd,Ts);
P=(A+B)*D; %planta Hsim(s) a z modificada
PL=minreal(P); %simplificamos la planta
[z,p,k] = zpkdata(P);
Psim=minreal(ZPK(z{1,1},p{1,1},-k,Ts)); %presentamos la planta y invertimos la
realim
%compensador de segundo orden C(z)
zc=[0.753;0.9];
pc=[1;0.99];
kc=0.236;
[nc,dc]=zp2tf(zc,pc,kc);
C=tf(nc,dc,0.02);
PC=Psim*C;
%evaluamos la planta con la herramienta sisotool
sisotool(PC)

Control de un Sistema de Pndulo Invertido

97

Control en el espacio de estados: mtodo de ubicacin de polos

























%IPSSdisc.m
%Control de una planta de pndulo invertido
%mediante el mtodo de ubicacin de polos
%-------------------------------------
% Observabilidad y controlabilidad
% Matriz de ganancia de realimentacin
% Simulacin de la respuesta a CI
clc
clear all
%------------variables de la planta--------------------------------
PI = 4*atan(1);
g=9.81;
M=0.0742; %masa del carro
m=0.0238; %masa del pndulo
l=0.25; %mitad de la longitud del pndulo
Km=0.14; %constante del motor (V*s)/rad
r=0.005; %radio del eje del motor
Ra=10; %resistencia de armadura del motor
Ts=0.02 %tiempo de muestreo
%-------------Matrices A,B,C y D--------------------------
A=[0 1 0 0;((m+M)*g)/(M*l) 0 0 (Km^2)/(Ra*M*l*(r^2));0 0 0 1;-(m*g)/M 0 0 -
(Km^2)/(Ra*M*(r^2))];
B=[0;-Km/(M*l*Ra*r);0;Km/(M*Ra*r)];
C=[1 0 0 0];
D=[0];
%-------------Matrices G y H------------------------------
[G,H]=c2d(A,B,Ts);
%-------------Controlabilidad y observabilidad------------
CO=CTRB(G,H); %matriz de controlabilidad [B AB A^2B ...]
rank(CO)
OB=OBSV(G,C); %matriz de observabilidad [C; CA; CA^2 ...]
rank(OB)

%calculo de la matriz de ganancias de realimentacion de estado K
%usando la formula de Ackermann

J=[0.97+0.05*j 0.97-0.05*j 0.9 0.85];%polos deseados del sistema
K=acker(G,H,J);

%------------simulacion de la respuesta a CI--------------------
sys=ss(G-H*K,eye(4),eye(4),eye(4),Ts);
t=0:Ts:4;
initial((sys),[1;0;0;0],t);
Control de un Sistema de Pndulo Invertido

98

2.2 Cdigo fuente

El siguiente cdigo, es el cdigo del programa en el que se ha aplicado
un algoritmo de primer orden:
























/*PFC: control de una planta de pndulo invertido
Para realizar el control se sensa la posicin angular del pndulo
y se actua mediante PWM con un motor de DC
Autor: Joan Berga Cabello
2012
*/
#include <pwm.h>
#include <qei.h>
#include <stdio.h>

#define FCY 20000000UL
#define delay_ms ((unsigned long)(FCY/1000UL))

/* configuracion fuses */

_FOSC(CSW_FSCM_OFF & XT_PLL8); //20 MIPS con cristal de 10MHz fail-safe clock monitor off
_FWDT(WDT_OFF) //wdt off
_FBORPOR(PBOR_OFF & MCLR_EN); //BOR off i funcion MCLR habilitada
_FGS(CODE_PROT_OFF); //codigo no protegido


/* Configuracion: QEI, modulo PWM y puertos */
void ini (void)
{
unsigned int period;
unsigned int sptime;
unsigned int config1;
unsigned int config2;
unsigned int config3;
unsigned int qeic1;
unsigned int qeic2;
// configuracion puertos
ADPCFG=0x0FFF; //Puerto B digital
TRISB=0xFFFE; // Puerto B salida

Control de un Sistema de Pndulo Invertido

99




























//configuracion modulo PWM
asm("BCLR PORTB,#0x0"); //Disable motor driver
DisableIntMCPWM;
SetDCMCPWM(1,0,0);
SetDCMCPWM(2,0,0);
period=4000; // period=PTPER, pres 1:1 , P=TCY*(PTPER+1)/pres
sptime=0x0; //special event trigger off
config1=(PWM_EN&PWM_OP_SCALE1&PWM_IPCLK_SCALE1&PWM_MOD_FREE);
config2=(PWM_PDIS3H&PWM_PDIS2H&PWM_PDIS1H&PWM_PDIS3L&PWM_PEN2L&PWM_PEN1L);
config3=( PWM_UEN);
OpenMCPWM(period,sptime,config1,config2,config3);
//configuracion QEI
DisableIntQEI;
qeic1=(QEI_INDEX_RESET_ENABLE& QEI_INPUTS_NOSWAP& QEI_MODE_x4_PULSE);
qeic2=(MATCH_INDEX_PHASEA_LOW&MATCH_INDEX_PHASEB_LOW&POS_CNT_ERR_INT_DISABLE&
QEI_QE_CLK_DIVIDE_1_1&QEI_QE_OUT_ENABLE);
OpenQEI(qeic1,qeic2);
}

/*Rutina de calculo de la posicin angular del pndulo
----------------------------------------------------------------------------------
POSCNT es el registro donde se almacenan los pulsos del encoder
En t=0, POSCNT=0, entonces si decrementamos pulsos el registro desborda a 0xFFFF.
1 pulso =0.18 grados,1 rev =2000 pulsos*/
double pend_position (double dindx)
{
double g;
if(POSCNT>0xF000)
{
g=((((double)POSCNT-0x10000)*0.18)+dindx);
}
else
{
g=(((double)POSCNT*0.18)+dindx);
}
return(g);
}

Control de un Sistema de Pndulo Invertido

100




























/* Rutina de espera hasta que el pndulo encuentra la pos superior de equilibrio
------------------------------------------------------------------------------------
En t=0(pendulo pos equilibrio inferior) POSCNT=0=>grados=-dindx. */
void pos0ready (double dindx)
{
double pos;
pos=pend_position(0.0);
while((pos<5.0)&&(pos>-5.0))
{
pos=pend_position(0.0);
}
while((pos<-0.18)||(pos>0.18)) //salimos del "0" inicial
{
pos=pend_position(0.0);
}
pos=pend_position(dindx); //encontramos el indice
while((pos<-0.18)||(pos==0.0))
{
pos=pend_position(dindx);
} // encontramos la pos 0
}
int main (void){

double grados=0.0; //posicin angular del pndulo
double dindx=-9.37; //desfase en grados de la posicion del indice respecto de la pos 0

///////////variables del controlador////////////////////////
int U=0; //seal de control
double grados1=0.0;
double K=4000.0;
double A=0.0;
double A1=0.0;
/////////////////////////////////////////////////////////////

ini();
pos0ready(dindx);
asm("BSET PORTB,#0x0"); //BSET/BCLR enable/disable motor driver
while(1)
{
grados=pend_position(dindx);
///////////////algoritmo de control////////////////////////////////////
A=(grados-(0.8*grados1)+A1);
U=(int)(K*A);
//////////////limitamos la seal de control/////////////////////////////
if(U>8191) U=8191;
if(U<-8191) U=-8191;
Control de un Sistema de Pndulo Invertido

101














2.3 Levantamiento del pndulo

El cdigo que se incluye a continuacin, es una modificacin del cdigo
fuente (apartado 2.2) donde, en lugar de elevar el usuario el pndulo hasta la
posicin de equilibrio superior y a partir de esta ser ejecutado el algoritmo de
equilibrio, el pndulo es elevado mediante programa (algoritmo de
levantamiento) y igualmente, luego se ejecuta el algoritmo de equilibrio de este.
Este cdigo no ha sido explicado en la Memoria, dado que ha sido
obtenido mediante ensayo en la planta y no des del punto de vista de la
ingeniera de control (como lo fue el algoritmo de levantamiento del pndulo).
No obstante, esta carencia es compensada con los comentarios al cdigo que
incluye, los cuales han sido puestos con el fin de solventar cualquier duda que
pudiera tener el lector.





//////////////////activamos el PWM segun sentido de giro////////////////
if(U>0)
{
SetDCMCPWM(1,0,0);
SetDCMCPWM(2,(U),0);
}
else
{
SetDCMCPWM(1,((0xFFFF-U)+1),0); //convertimos U a unsigned int
SetDCMCPWM(2,0,0);

}
////////////////Guardamos los valores Z del controlador/////////////////
grados1=grados;
A1=A;
/////////////////// Retardo ///////////////////////////////////////////
__delay32(delay_ms*20);
}
}
Control de un Sistema de Pndulo Invertido

102
















/*PFC: Control de una planta de pndulo invertido.
"Elevacion del pndulo y equilibrio de este"
Autor; Joan Berga Cabello
2012
--------------------------------------------------------------------------------
La entrada del sistema es la variacion angular del pendulo, sensada con el QEI
La salida, es la tension de armadura del motor (controlada por PWM)

Se eleva el pendulo hasta la posicion de equilibrio superior (mediante 1)
y luego se mantiene en esta mediante 2.

1-Algoritmo de elevacion:
Exitando el motor con una seal cuadrada de periodo creciente se eleva el
pendulo hasta la posicion de equilibrio superior.

2-Algoritmo de equilibrio:
Se aplica un algoritmo basado en el LGR de Evans.
*/

#include <pwm.h>
#include <qei.h>
#include <stdio.h>

#define FCY 20000000UL
#define delay_ms ((unsigned long)(FCY/1000UL))

/* configuracion fuses */

_FOSC(CSW_FSCM_OFF & XT_PLL8); //20 MIPS con cristal de 10MHz fail-safe clock monitor off
_FWDT(WDT_OFF) //wdt off
_FBORPOR(PBOR_OFF & MCLR_EN); //BOR off i funcion MCLR habilitada
_FGS(CODE_PROT_OFF); //codigo no protegido

//variables de la interrupcion de T1
unsigned int tic=0; //Se incrementa cada ms
unsigned int sw=0; //Interruptor que conmuta la seal de salida
unsigned int Ui=3500; //Seal de salida (tension armadura)
unsigned int limt=300; //Mitad del periodo de la seal
unsigned int cycles=0; //Indice de limit

Control de un Sistema de Pndulo Invertido

103

/* Interrupcion generada por el T1,cuyo objetivo es levantar el pendulo exitando el
motor con una seal cuadrada de periodo creciente.
-----------------------------------------------------------------------------------
La seal que exitar el motor alterna valores negativos y positivos constantes.
Se observa que de augmentar el periodo de esta seal con un valor de incremento especifico,
el pendulo se eleva hasta alcanzar una posicion cercana a la de equilibrio superior.
Finalmente mediante un augmento de la tension de armadura se logra llevar al pendulo
a esta posicion.
----------------------------------------------------------------------------------*/
void __attribute__((__interrupt__)) _T1Interrupt(void)
{
asm("BCLR IFS0, #3"); //Limpiamos T1IF
tic++;
if(tic==limt) //limit es la mitad del periodo de la seal cuadrada
{ // aplicada al motor. Empieza en 0.3 s y crece
tic=0;
if(cycles==28) //Damos el "ultimo empujon" al pndulo para elevarse
{ //augmentando la tension de armadura y limitando el
Ui=4200; //periodo de este.
limt=460;
}
else //Augmentamos el periodo de la seal cuadrada. El pndulo sube.
{
limt=limt+20;
}
cycles++; /Contamos semiciclos (mitad periodo de la seal)
if(sw==0) //Activamos el motor por PWM alternando valores de
{ //tension de armadura positivos y negativos.
SetDCMCPWM(1,0,0);
SetDCMCPWM(2,Ui,0);
sw=1;
}
else
{

SetDCMCPWM(1,Ui,0);
SetDCMCPWM(2,0,0);
sw=0;
}
}
}
Control de un Sistema de Pndulo Invertido

104

/*Inicializacion de timer 1 para ser usado por interrupcion*/
void iniT1 (void)
{
T1CON=0; //TON=0, el timer esta inactivo
TMR1=0;
PR1=20000; //20000*50ns= 1ms
asm("BSET IPC0,#14"); //T1IP0,1,2=1; prioridad 7 a la int de T1
asm("BSET IPC0,#13"); //(la mas alta)
asm("BSET IPC0,#12");
asm("BCLR IFS0,#3"); //T1IF=0, borramos posible demanda de int
asm("BSET IEC0,#3"); //T1IE=1, habilitamos la interrupcion;
T1CON=0x8000; //TMR1 on y prescaler 1:1
}
/* Configuraciones: QEI, modulo PWM y puertos */
void ini (void)
{
unsigned int period;
unsigned int sptime;
unsigned int config1;
unsigned int config2;
unsigned int config3;
unsigned int qeic1;
unsigned int qeic2;
// configuracion puertos
ADPCFG=0x0FFF; //Puerto B digital
TRISB=0xFFFE; // Puerto B salida
//configuracion modulo PWM
asm("BCLR PORTB,#0x0"); //Disable motor driver
DisableIntMCPWM;
SetDCMCPWM(1,0,0);
SetDCMCPWM(2,0,0);
period=4000; // period=PTPER, pres 1:1 , P=TCY*(PTPER+1)/pres
sptime=0x0; //special event trigger off
config1=(PWM_EN&PWM_OP_SCALE1&PWM_IPCLK_SCALE1&PWM_MOD_FREE);
config2=(PWM_PDIS3H&PWM_PDIS2H&PWM_PDIS1H&PWM_PDIS3L&PWM_PEN2L&PWM_PEN1L);
config3=( PWM_UEN);
OpenMCPWM(period,sptime,config1,config2,config3);
//configuracion QEI
DisableIntQEI;
qeic1=(QEI_INDEX_RESET_ENABLE& QEI_INPUTS_NOSWAP& QEI_MODE_x4_PULSE);
qeic2=(MATCH_INDEX_PHASEA_LOW&MATCH_INDEX_PHASEB_LOW&POS_CNT_ERR_INT_DISABLE&
QEI_QE_CLK_DIVIDE_1_1&QEI_QE_OUT_ENABLE);
OpenQEI(qeic1,qeic2);
}
Control de un Sistema de Pndulo Invertido

105


/*Rutina de calculo de la posicin angular del pndulo
----------------------------------------------------------------------------------
POSCNT es el registro donde se almacenan los pulsos del encoder
En t=0, POSCNT=0, entonces si decrementamos pulsos el registro desborda a 0xFFFF.
1 pulso =0.18 grados,1 rev =2000 pulsos
--------------------------------------------------------------------------------*/
double pend_position (double dindx)
{
double g;
if(POSCNT>0xF000)
{
g=((((double)POSCNT-0x10000)*0.18)+dindx);
}
else
{
g=(((double)POSCNT*0.18)+dindx);
}
return(g);
}

/* Rutina de detecion de indice + posicion 180 grados
------------------------------------------------------------------------------------
Esta rutina se espera hasta que el usuario mueva el pendulo, cercionandose
de que se detecte el indice y esperando a que el pendulo este en la posicion
de equilibrio inferior, 180 grados. El usuario debe de dar una vuelta completa
empezando por 180 grados y volviendo a esta posicion.
--------------------------------------------------------------------------------- */
void pos180ready (double dindx)
{
double pos;
pos=pend_position(0.0);
while((pos<5.0)&&(pos>-5.0))
{
pos=pend_position(0.0);
}
while((pos<-0.18)||(pos>0.18)) //Salimos del "0" inicial
{
pos=pend_position(0.0);
}
pos=pend_position(dindx); //Encontramos el indice
while(pos<175)
{
pos=pend_position(dindx);
} //Detectamos los "180" grados
}
Control de un Sistema de Pndulo Invertido

106

int main (void){

double grados=0.0; //Posicin angular del pndulo
double dindx=-10.5; //Desfase en grados de la posicion del indice respecto de la pos 0

///////////variables del controlador////////////////////////
int U=0; //Seal de control
double grados1=0.0;
double K=3500.0;
double A=0.0;
double A1=0.0;
/////////////////////////////////////////////////////////////

ini();
pos180ready(dindx); //El usuario gira el pendulo, detectamos indice y esperamos pos 180
__delay32(40000000UL); //Esperamos 2 s (precaucion usuario)
asm("BSET PORTB,#0x0"); //Habilitamos el driver del motor
grados=pend_position(dindx);
////////////////////ALGORITMO DE ELEVACION DEL PENDULO/////////////////
//(vease la interrupcion de T1)
iniT1();
//Esperamos a estar a 1 grado de la posicion de equilibrio superior
while((grados<-1.0)|(grados>1.0))
{
grados=pend_position(dindx);
}
asm("BCLR IEC0,#3"); //T1IE=0; Deshabilitamos la interrupcion
SetDCMCPWM(2,0,0); //Paramos el motor
SetDCMCPWM(1,0,0);
asm("BCLR IFS0,#3"); //T1IF=0; borramos posible demanda de int
T1CON=0x0000; //Detenemos T1
grados=pend_position(dindx);
while((grados<-0.5)|(grados>0.5)) //Esperamos a que el pendulo por su propia inercia
{ //se acerque 1/2 grado a su posicion de eq superior
grados=pend_position(dindx);
}
Control de un Sistema de Pndulo Invertido

107


////////////////////ALGORITMO DE ELQUILIBRIO DEL PENDULO/////////////////
while(1)
{
grados=pend_position(dindx);
///////////////algoritmo de control////////////////////////////////////
A=(grados-(0.8*grados1)+A1);
U=(int)(K*A);
//////////////limitamos la seal de control/////////////////////////////
if(U>8191) U=8191;
if(U<-8191) U=-8191;
//////////////////activamos el PWM segun sentido de giro////////////////
if(U>0)
{
SetDCMCPWM(1,0,0);
SetDCMCPWM(2,(U),0);
}
else
{
SetDCMCPWM(1,((0xFFFF-U)+1),0); //convertimos U a unsigned int
SetDCMCPWM(2,0,0);
}
////////////////Guardamos los valores Z del controlador/////////////////
grados1=grados;
A1=A;
/////////////////// Retardo ///////////////////////////////////////////
__delay32(delay_ms*20);
}
}
Control de un Sistema de Pndulo Invertido

108

2.4 Manual de prcti cas

2.4.1 Consideraciones previas

El apartado 2.4, es una propuesta de manual de prcticas mediante el
uso de la maqueta descrita en este proyecto. En el apartado 2.4.4 y 2.4.5 se
proponen ejercicios, para que el alumno vea la relacin entre el modelo de la
planta y la realidad y disee controladores mediante la tcnica del lugar
geomtrico de las races. Se supone que el alumno posee conocimientos en
temas de control y programacin en C. De no tener demasiados conocimientos
en programacin C, mediante la ayuda de un profesor y usando el cdigo
fuente aadido en el apartado 2.2, el alumno no debera tener dificultades para
implementar los algoritmos a ser aplicados en la planta.
Para el buen uso de la maqueta, se deben tener en cuenta las
siguientes consideraciones:
1. Si la maqueta est fija a la superficie de trabajo, el alumno no deber
re-calibrar la desviacin de la localizacin del 0 respecto al pulso
ndice, cada vez que se mueva la maqueta. De no ser as, para
calibrar la maqueta, en una primera aproximacin se debera usar un
nivel. Luego, mediante el uso de algn controlador estable, se
ejecuta el cdigo y se observa si el pndulo se desva hacia alguna
direccin. De ser as, se deber modificar la variable dindx, hasta que
el error de localizacin de la posicin sea lo suficientemente pequeo
para no tener una respuesta que actu de forma no simtrica. Por
ejemplo, equilibrando un lado del pndulo y inestabilizando el otro.

2. Puesto que en el modelado de la planta no se han tenido
consideraciones de fricciones, se deben lubricar las zonas por donde
se desplaza el carro con cierta frecuencia.

3. Dado que la planta es de carcter inestable, se debe tener cuidado a
la hora de tratar con ella. En el diseo de la maqueta, no se ha
incluido ningn sistema para evitar que el pndulo colisione con sus
extremos. Por lo tanto, en situaciones de emergencia, debe pararse
el sistema mediante MPLAB o haciendo uso del botn de reset en la
placa de C.I.


Control de un Sistema de Pndulo Invertido

109

2.4.2 Creando un proyecto en MPLAB

Para crear un proyecto en MPLAB, se deben seguir los siguientes pasos:
1. Una vez abierto MPLAB, seleccionamos Project =>Project Wizard.
2. Seleccionamos el dsPIC30F4011.
3. Seleccionamos Microchip C30 Toolsuite.
4. Damos un nombre al proyecto, cuyo archivo tendr la extensin .mcp. A
continuacin, aceptamos hasta cerrar la pantalla del Project Wizard.
5. Debemos cerciorarnos de que en la pestaa View, tenemos
seleccionado Project y Output.
6. En la ventana del proyecto, cuyo cabezal es el nombre del proyecto mas
la extensin .mcw, debemos aadir los siguientes archivos:

libp30F4011-coff.a: Debera estar en: C:\Program Files\Microchip
\MPLAB C30\lib. Debemos ir al apartado, de la ventana proyecto: Library
Files =>botn derecho=>Add files y aadimos la ruta.

P30f4011.gld: Debera estar en: C:\Program Files\Microchip\MPLAB
C30\support\gld. Debemos ir al apartado, de la ventana proyecto: Library
Files =>botn derecho=>Add files y aadimos la ruta.
7. Nos dirigimos a la pestaa File => New. Aqu debemos escribir el
cdigo y guardarlo con la extensin .c. Una vez escrito el cdigo, o de
tener un fichero .c, nos dirigimos a la ventana proyecto y aadimos el
cdigo fuente en el apartado Source Files.
8. Finalmente, si queremos programar el PIC o usar el modo debug del
programador, debemos aadir este en las pestaas: Programmer=>
Select Programmer o Debugger=>Select Tool, respectivamente.
9. Ya tenemos el proyecto listo, para transferirlo al PIC, simularlo o
simplemente depurar errores!

2.4.3 Breve descripcin del sistema

El objetivo de este problema, es lograr estabilizar la planta de pndulo
invertido consiguiendo una respuesta a perturbaciones deseada. Veamos el
esquema del sistema regulador



Control de un Sistema de Pndulo Invertido

110










Las ecuaciones diferenciales que describen el comportamiento de la planta
(Carro-Pndulo en la Figura 1) en tiempo continuo, son las siguientes:

( +) +

=
(1)

+ =
(2)
Como se puede observar, el sistema descrito es de tipo SISO. El actuador, es
un motor de DC controlado por tensin de armadura (mediante PWM). La
ecuacin diferencial en tiempo continuo, que relaciona la tensin de armadura
con la fuerza aplicada en el carro es la siguiente:

=

2

(3)






Figura 1. Diagrama del sistema
Control de un Sistema de Pndulo Invertido

111

Las variables usadas en (1), (2) y (3) sn las siguientes:








La ecuaciones (1) y (2), fueron deducidas del diagrama de cuerpo libre de la
Figura 2. Adems, fueron linealizadas entorno a la posicin de equilibrio
superior 0.










(Se consideraron los sentidos de y que aparecen en la Figura 2, como
sentidos positivos)





Figura 2. Diagrama de cuerpo libre de la planta

M masa del carro (Kg)
m masa del pndulo (Kg)
l mitad de la longitud del pndulo (m)
u fuerza aplicada al carro (N)
K constante del motor ((V*s)/rad)
Ra resistencia de armadura del motor ()
r radio del eje del motor (m)
g gravedad terrestre (Kg/(m*s
2
))
x desplazamiento del carro (m)
Va tensin de armadura (V)
posicin angular del pndulo ()
Control de un Sistema de Pndulo Invertido

112

2.4.4 Ejercicios propuestos: Estudio previo

1. Usando las ecuaciones diferenciales de la planta (1) y (2), obtener la
funcin de transferencia de la planta

() (se consideran C.I nulas),


donde

() =
()
()


2. Obtener la grfica del lugar geomtrico de las races (LGR) de

().
Como podramos estabilizar esta?

3. Usando las ecuaciones diferenciales (1), (2) y (3) obtener la funcin de
transferencia G
PM
(s), y obtener la grfica del LGR, siendo

() =
()
()


Como podramos estabilizar la planta

()? (se debe eliminar el polo


ms lento de la planta)

4. Discretizar la funcin de transferencia

() a

(), introduciendo en
la planta un muestreador y un retenedor de orden zero. Para ello, aplicar
los valores reales de las variables de la maqueta:






Considerar el tiempo de muestreo = 20 .




K=0.14 (V*s)/rad
Ra=10
r=0.005 m
l=0.25 m
M=0.0742 Kg
m=0.0238 Kg
g=9.81 Kg/(m*s
2
)


Control de un Sistema de Pndulo Invertido

113









5. Obtener el LGR de G
PM
(z). Encontrar un controlador de primer orden
que logre estabilizar la planta.

6. Obtener contornos en el LGR que establezcan:

4
0.5

(usar sisotool)
Finalmente encontrar un controlador que est dentro de los contornos
establecidos. Obtener la respuesta a CI de la planta con el controlador.
7. Modificar el controlador diseado, para que pueda ser usado en el
microcontrolador. Considrese que el mdulo PWM entrega 1 V por un
valor de DC de 534. Utilizar el mtodo de programacin estndar (vase
[2] p.124). Realizar un diagrama de bloques del controlador.

2.4.5 Ejercicios propuestos: Implementacin de controladores en la
maqueta.

1. Alimentar la maqueta a 15V para el mdulo PWM y 5 V para el
microcontrolador y otros perifricos. Introducir en la planta un
controlador proporcional. En aumentar la constante proporcional, que
observamos? (comparar con el LGR de la planta realimentada).

2. Introducir en la planta un controlador basado en un integrador puro. En
aumentar la constante proporcional, que observamos? (comparar con el
LGR de la planta con el controlador ).


Figura 3. Sistema regulador discreto. (en nuestro sistema H(z) es G
PM
(z))




(kT)

T
Controlador
digital
ZOH Planta
u(kT) (kT)
H(z)
Gc(z)
Control de un Sistema de Pndulo Invertido

114

3. Introducir en la planta un controlador basado en un integrador puro y un
cero en = 0.8 . J ugar con la constante de proporcionalidad hasta
encontrar un controlador que estabilice la planta ( 4000). Comparar
el resultado obtenido con el estudio previo, es la respuesta un resultado
esperado?

4. Implementar el controlador obtenido en el estudio previo y comprar la
respuesta con la respuesta deseada. J ugar con los valores del
controlador y tomar conclusiones.


































3. PLANOS


























Control de un Sistema de Pndulo Invertido

123

3.8 Aspecto de l as mascaras de C.I

Situacin de los componentes











Mascara de la cara de componentes













Control de un Sistema de Pndulo Invertido

124

Mascara de la cara de soldadura












































4. PRESUPUESTO



























Control de un Sistema de Pndulo Invertido

126

4.1 Medi ciones
4.1.1 Captulo 1: Componentes electrnicos

N Ud. Descripcin Subtotal TOTAL

1.1

U

MICROCONTROLADOR dsPIC30F4011







MICROCONTROLADOR MODELO dsPIC30F4011,
ENCAPSULADO DIP40.



1


1

1.2

U

CRISTAL CUARZO 10 MHz


CRISTAL DE CUARZO DE 10 MHz
1
1

1.3

U

L293DNE


CUATRO DRIVERS DE MEDIO PUENTE H,
ENCAPSULADO DIP16
1
1

1.4

U

CONDENSADOR 10 F


CONDENSADOR ELECTROLTICO 10 F
1
1

1.5

U

CONDENSADOR 22 pF


CONDENSADOR CERMICO 22 pF
2
2

1.6

U

CONDENSADOR 100 nF






CONDENSADOR POLIESTER 100 nF
1



1

1.7

U

RESISTENCIA 10 k

RESISTENCIA DE 10 k, W.
1
1




Control de un Sistema de Pndulo Invertido

127

N Ud. Descripcin Subtotal TOTAL

1.8

U

RESISTENCIA 100

RESISTENCIA DE 100 , W.
3
3

1.9

U

RESISTENCIA 2,7 k

RESISTENCIA DE 2,7 k, W.
3
3

1.10

U

RESISTENCIA 560

RESISTENCIA DE 560 , W. 1
1

1.11

U

DIODO SBYV27-50-E3

DIODO RECTIFICADOR DE RECUPERACIN
ULTRA RAPIDA, CORRIENTE NOMINAL DE 2 A
Y PICOS DE HASTA 50 A.
4
4

1.12

U

LED PILOTO

DIODO EMISOR DE LUZ DE 5 mm COLOR ROJO
1
1

1.13

U

HEDS-5540 A06

CODIFICADOR INCREMENTAL EN
CUADRATURA DE 2 CANALES Y INDICE, 500
CPR (HASTA 2000 FLANCOS POR VUELTA),
DIAMETRO DEL EJE DE in.
1
1

1.14

U

MOTOR DC DE IMANES PERMANENTES

MXIMA TENSIN DE ARMADURA 24 V,
TENSIN MEDIA 15 V, CORRIENTE MXIMA
1.6 A, VELOCIDAD SIN CARGA 3540 RPM,
RESISTENCIA DE ARMADURA 11.6 , INERCIA
50 gm*cm
2
, K=0.14 (V*s)/rad 1
1

1.15

U

ZCALO DIP40

ZCALO DIP40, PINES TORNEADOS
1
1

Control de un Sistema de Pndulo Invertido

128

N Ud. Descripcin Subtotal TOTAL

1.16

U

ZCALO DIP16

ZCALO DIP16 , PINES TORNEADOS
1
1

1.17

U

PULSADOR

PULSADOR PARA PCB (THT) , 4 PINES
1
1

1.18

U

INTERRUPTOR DESLIZANTE

INTERRUPTOR DESLIZANTE, 2 POSICIONES- 3
PINES, PARA PCB (THT)
1
1


Control de un Sistema de Pndulo Invertido

129

4.1.2 Captulo 2: Cables y conectores.

N Ud. Descripcin Subtotal TOTAL

2.1

U

CONECTOR PICKIT2

CONECTOR MACHO, DESCUBIERTO, PARA PCB
(THT), 5 PINES
1
1

2.2

U

CONECTOR ICD2

CONECTOR HEMBRA RJ11 PARA PCB (THT)
1
1

2.3

U

CONECTOR REGLETA PCB

CONECTOR HEMBRA DE TIPO REGLETA PARA
PCB (THT)
3
3

2.4

U

CONECTOR MACHO 5 PINES

CONECTOR MACHO DE 5 PINES DE TIPO
CABLE A PLACA, PARA MONTAJE EN PCB
(THT),
1
1

2.5

U

CARCASA HEMBRA 5 PINES

CARCASA DE CONECTOR HEMBRA DE 5 PINES,
QUE ACEPTA TERMINALES PARA CRIMPAR


1
1

2.6

U

TERMINAL CRIMPAR CARCASA HEMBRA

TERMINAL PARA CRIMPAR PARA CARCASA
HEMBRA
5
5

2.7

M

CABLE TELEFNICO 8 VIAS 28 AWG

CABLE MODULAR DE 8 VIAS, CALIBRE 28
AWG

1
1

Control de un Sistema de Pndulo Invertido

130

N Ud. Descripcin Subtotal TOTAL

2.8

U

CONECTOR HEDS-5540 A06

CONJUNTO CONECTOR-CABLE PARA HEDS-
5540 A06, 5 PINES.
1
1


























Control de un Sistema de Pndulo Invertido

131

4.1.3 Captulo3: Elementos mecnicos de la maqueta.

N Ud. Descripcin Subtotal TOTAL

3.1

U

BARRA MAC AC SUP LIS 12X400mm

BARRA MACIZA DE ACERO, SUPERFICIE LISA,
DE 12X400mm
1
1

3.2

U

MELANINA BLANCA 80X40X10mm

TABLERO DE MELANINA BLANCA DE
80X40X10 mm.
1
1

3.3

U

CANTO PREENCOLADO BLANCO LISO

CANTO PREENCOLADO DE COLOR BLANCO
LISO PARA MADERA AGLOMERADA DE
5000X10 mm
1
1

3.4

U

TUBO,CUAD,AL,40X40X1000X2mm

TUBO CUADRADO HUECO DE ALUMINIO DE
40X40X1000X2 mm
1
1

3.5

U

TUBO.CIL,AL,6X1X1000mm

TUBO CILINDINDRICO HUECO DE ALUMINIO
DE 6X1X100 mm
1
1

3.6

U

ESCUADRA SILLA 80X40X30X2mm

ESCUADRA DE SILLA, DE ACERO
GALVANIZADO DE 80X40X30X2 mm
4
4

3.7

U

TORNILLO NIVELADOR M10

TORNILLO NIVELADOR DE M10
1
1


Control de un Sistema de Pndulo Invertido

132

N Ud. Descripcin Subtotal TOTAL

3.8

U

MANGUITO PARA ATORNILLAR M10

MANGUITO PARA INTRODUCIR UN TORNILLO
EN MADERA DE M10
1
1

3.9

U

TORNILLO TIRAFONDO 3X15mm

TORNILLO TIRAFONDO PARA MADERA DE
3X15 mm
12
12

3.10

U

TORNILLO ROSCA CIL, 3X10mm

TORNILLO DE ROSCA CILINDRICA DE 3X10 mm
4
4

3.11

U

ARANDELA 28X10X3mm


ARANDELA DE 28X10X3 mm.
6
6
















Control de un Sistema de Pndulo Invertido

133

4.1.4 Captulo 4: Placas de circuito impreso.

N Ud. Descripcin Subtotal TOTAL

4.1

U

PLACA CIRCUITO IMPRESO

PLACA PARA FABRICACION DE PCB DE DOBLE
CARA,FOTORESINA POSITIVA, FR4, DE
160X100X1.6 mm
1
1

4.2

U

TORNILLOS PCB

TORNILLO SEPARADOR DE ACERO PARA PCB
DE M3X20 mm.
4
4

4.3

U

TUERCA HEX,M3

TUERCA HEXAGONAL DE M3
6
6














Control de un Sistema de Pndulo Invertido

134

4.2 Presupuesto
4.2.1 Captulo 1: Componentes electrnicos
N Ud. Descripcin Cantidad Precio() TOTAL()

1.1

U

MICROCONTROLADOR dsPIC30F4011


1


6,010

6,010
MICROCONTROLADOR MODELO dsPIC30F4011,
ENCAPSULADO DIP40.



1.2

U

CRISTAL CUARZO 10 MHz

1 0,623 0,623
CRISTAL DE CUARZO DE 10 MHz



1.3

U

L293DNE

1 3,080 3,080
CUATRO DRIVERS DE MEDIO PUENTE H,
ENCAPSULADO DIP16


1.4

U

CONDENSADOR 10 F

1 0,292 0,292
CONDENSADOR ELECTROLTICO 10 F



1.5

U

CONDENSADOR 22 pF

2 0,318 0,636
CONDENSADOR CERMICO 22 pF


1.6

U

CONDENSADOR 100 nF 1 0,230 0,230
CONDENSADOR POLIESTER 100 nF


1.7

U

RESISTENCIA 10 k 1 0,027 0,027
RESISTENCIA DE 10 k, W.


1.8

U

RESISTENCIA 100 3 0,029 0,087
RESISTENCIA DE 100 , W.


1.9

U

RESISTENCIA 2,7 k 3 0,019 0,057
RESISTENCIA DE 2,7 k, W.


1.10

U

RESISTENCIA 560 1 0,029 0,029
RESISTENCIA DE 560 , W.
Control de un Sistema de Pndulo Invertido

135


N Ud. Descripcin Cantidad Precio() TOTAL()

1.11

U

DIODO SBYV27-50-E3 4 0,486 1,944
DIODO RECTIFICADOR DE RECUPERACIN
ULTRA RAPIDA, CORRIENTE NOMINAL DE 2 A
Y PICOS DE HASTA 50 A.


1.12

U

LED PILOTO

1

0,123 0,123
DIODO EMISOR DE LUZ DE 5 mm COLOR ROJO


1.13

U

HEDS-5540 A06 1 51,420 51,420
CODIFICADOR INCREMENTAL EN
CUADRATURA DE 2 CANALES Y INDICE, 500
CPR (HASTA 2000 FLANCOS POR VUELTA),
DIAMETRO DEL EJE DE in.


1.14

U

MOTOR DE DC DE IMANES PERMANENTES 1 7 7
MXIMA TENSIN DE ARMADURA 24 V,
TENSIN MEDIA 15 V, CORRIENTE MXIMA
1.6 A, VELOCIDAD SIN CARGA 3540 RPM,
RESISTENCIA DE ARMADURA 11.6 , INERCIA
50 gm*cm
2
, K=0.14 (V*s)/rad


1.15

U

ZCALO DIP40 1 0,430 0,430
ZCALO DIP40, PINES TORNEADOS


1.16

U

ZCALO DIP16 1 0,408 0,480
ZCALO DIP16 , PINES TORNEADOS


1.17

U

PULSADOR 1 0,460 0,460
PULSADOR PARA PCB (THT) , 4 PINES


1.18

U

INTERRUPTOR DESLIZANTE 1 0,770 0,770
INTERRUPTOR DESLIZANTE, 2 POSICIONES- 3
PINES, PARA PCB (THT)


TOTAL CAPTULO 1 73,7

Control de un Sistema de Pndulo Invertido

136

4.2.2 Captulo 2: Cables y conectores.

N Ud. Descripcin Cantidad Precio() TOTAL()

2.1

U

CONECTOR PICKIT2 1 0,603 0,603
CONECTOR MACHO, DESCUBIERTO, PARA PCB
(THT), 5 PINES


2.2

U

CONECTOR ICD2 1 0,630 0,630
CONECTOR HEMBRA RJ11 PARA PCB (THT)


2.3

U

CONECTOR REGLETA 2 PINES PCB 3 0,310 0,930
CONECTOR HEMBRA DE TIPO REGLETA, DE 2
PINES PARA PCB (THT)


2.4

U

CONECTOR MACHO 5 PINES PCB 1 0,665 0,665
CONECTOR MACHO DE 5 PINES DE TIPO
CABLE A PLACA, PARA MONTAJE EN PCB
(THT),


2.5

U

CARCASA HEMBRA 5 PINES 1 0,403 0,403
CARCASA DE CONECTOR HEMBRA DE 5
PINES, QUE ACEPTA TERMINALES PARA
CRIMPAR




2.6

U

TERMINAL CRIMPAR CARCASA HEMBRA 5 0,094 0,470
TERMINAL PARA CRIMPAR PARA CARCASA
HEMBRA


2.7

M

CABLE TELEFNICO 8 VIAS 28 AWG 1 0,630 0,630
CABLE MODULAR DE 8 VIAS, CALIBRE 28
AWG



2.8

U

CONECTOR HEDS-5540 A06 1 5,860 5,860
CONJUNTO CONECTOR-CABLE PARA HEDS-
5540 A06, 5 PINES.


TOTAL CAPTULO 2 10,20
Control de un Sistema de Pndulo Invertido

137

4.2.3 Captulo 3: Elementos mecnicos de la maqueta.

N Ud. Descripcin Cantidad Precio() TOTAL()

3.1

U

BARRA MAC AC SUP LIS 12X400mm 1 4,020 4,020
BARRA MACIZA DE ACERO, SUPERFICIE LISA,
DE 12X400mm


3.2

U

MELANINA BLANCA 80X40X10mm 1 3,950 3,950
TABLERO DE MELANINA BLANCA DE
80X40X10 mm.


3.3

U

CANTO PREENCOLADO BLANCO LISO 1 3,950 3,950
CANTO PREENCOLADO DE COLOR BLANCO
LISO PARA MADERA AGLOMERADA DE
5000X10 mm


3.4

U

TUBO,CUAD,AL,40X40X1000X2mm 1 17,500 17,500
TUBO CUADRADO HUECO DE ALUMINIO DE
40X40X1000X2 mm


3.5

U

TUBO.CIL,AL,6X1X1000mm 1 2,350 2,350
TUBO CILINDINDRICO HUECO DE ALUMINIO
DE 6X1X100 mm


3.6

U

ESCUADRA SILLA 80X40X30X2mm 4 0,800 3,200
ESCUADRA DE SILLA, DE ACERO
GALVANIZADO DE 80X40X30X2 mm


3.7

U

TORNILLO NIVELADOR M10,4U 1 2,990 2,990
TORNILLO NIVELADOR DE M10 ,4 UNIDADES


3.8

U

MANGUITO PARA ATORNILLAR M10, 4U 1 2,850 2,850
MANGUITOS PARA INTRODUCIR UN
TORNILLO EN MADERA DE M10, 4 UNIDADES



Control de un Sistema de Pndulo Invertido

138

N Ud. Descripcin Cantidad Precio() TOTAL()

3.9

U

TORNILLO TIRAFONDO 3X15mm 12 0,020 0,240
TORNILLO TIRAFONDO PARA MADERA DE
3X15 mm


3.10

U

TORNILLO ROSCA CIL, 3X10mm 4 0,040 0,160
TORNILLO DE ROSCA CILINDRICA DE 3X10 mm


3.11

U

ARANDELA 28X10X3mm

6 0,050 0,300
ARANDELA DE 28X10X3 mm.


TOTAL CAPTULO 3 41,51


















Control de un Sistema de Pndulo Invertido

139

4.2.4 Captulo 4: Placas de circuito impreso.

N Ud. Descripcin Cantidad Precio() TOTAL()

4.1

U

PLACA CIRCUITO IMPRESO

1 8,040 8,040
PLACA PARA FABRICACION DE PCB DE
DOBLE CARA,FOTORESINA POSITIVA, FR4, DE
160X100X1.6 mm



4.2

U

TORNILLOS PCB 4 0,330 1,320
TORNILLO SEPARADOR DE ACERO PARA PCB
DE M3X20 mm.


4.3

U

TUERCA HEX,M3 6 0,010 0,060
TUERCA HEXAGONAL DE M3


TOTAL CAPTULO 4 9,42












Control de un Sistema de Pndulo Invertido

140

4.3 Resumen del presupuesto

Captulo Importe
1 Componentes electrnicos . 73,70
2 Cables y conectores. . 10,20
3 Elementos mecnicos de la maqueta. . 41,51
4 Placas de circuito impreso. . 9,42
Presupuesto de ejecucin material 134,83

13% de gastos generales 17,53
6% de beneficio industrial 8,01
Presupuesto de ejecucin por contrato 160,37

16% IVA 25,66
Presupuesto de licitacin 186,03

El presupuesto de licitacin sube a la cantidad de CIENTO OCHENTA Y SEIS EUROS CON 3
CNTIMOS.
24 de Febrero de 2012

Ingeniero Tcnico Industrial
Joan Marc Berga Cabello

S-ar putea să vă placă și