Está en la página 1de 53

Laboratorio Análisis de Sistemas de

Control
Proyecto final
Nicanor Quijano - Fernando Jiménez - Alain Gauthier
Universidad de los Andes
Danny Jiménez Abel Zambrano Oscar Archila
Agosto 2019

Índice
1. Introducción 2

2. Definición del proyecto 2

3. Criterios de evaluación 4
3.1. Modelo matemático . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2. Identificación del sistema . . . . . . . . . . . . . . . . . . . . . . 4
3.3. Diseño de controladores . . . . . . . . . . . . . . . . . . . . . . . 4
3.4. Validación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.5. Análisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.6. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

4. Recursos de apoyo para el desarrollo del proyecto 5

5. Descarga de archivos necesarios 6

6. Guı́a de implementación (hardware) 6


6.1. Lista de partes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6.2. Construcción de la planta . . . . . . . . . . . . . . . . . . . . . . 7
6.3. Implementación del circuito . . . . . . . . . . . . . . . . . . . . . 8
6.4. Vı́deo de ensamble . . . . . . . . . . . . . . . . . . . . . . . . . . 10

7. Guı́a de instalación (software) 10


7.1. Instrucciones para Windows 10 . . . . . . . . . . . . . . . . . . . 10
7.1.1. Instalación de Python . . . . . . . . . . . . . . . . . . . . 10
7.1.2. Instalación de Arduino . . . . . . . . . . . . . . . . . . . . 19
7.2. Instrucciones para macOS . . . . . . . . . . . . . . . . . . . . . . 23

1
7.2.1. Instalación de Python . . . . . . . . . . . . . . . . . . . . 23
7.2.2. Instalación de Arduino . . . . . . . . . . . . . . . . . . . . 31
7.3. Instrucciones para Ubuntu 16.04 . . . . . . . . . . . . . . . . . . 33
7.3.1. Instalación de Python . . . . . . . . . . . . . . . . . . . . 33
7.3.2. Instalación de Arduino . . . . . . . . . . . . . . . . . . . . 38

8. Programación Arduino y uso de herramientas instaladas 40


8.1. Programación del Arduino UNO . . . . . . . . . . . . . . . . . . 40
8.2. Validación y uso del programa . . . . . . . . . . . . . . . . . . . 46

9. Calibración del sensor 50


9.1. Caracterización del potenciometro . . . . . . . . . . . . . . . . . 51

10.Referencias 53

1. Introducción
En el transcurso del curso Análisis de Sistemas de Control los estudiantes
han adquirido conceptos clave para el entendimiento y aplicación de la teorı́a de
control en problemas de ingenierı́a reales; sin embargo, de la teorı́a a la práctica
siempre hay una gran brecha. Es por esta razón que se reta a los estudiantes a
aplicar todos los conocimientos ya adquiridos mediante la ejecución de un sis-
tema de control real.

La planta de control diseñada para el desarrollo de este proyecto está basada


en el trabajo realizado por White y Steinmeyer en el curso [1]; sin embargo, ha
sido adaptada para poder ser replicada con los recursos disponibles en la ciudad
de Bogotá y con materiales y dispositivos de bajo costo.

Este documento presenta la definición del proyecto a realizar, la guı́a de


fabricación y construcción de la planta fı́sica, y la guı́a de instalación de los dis-
tintos programas y herramientas necesarias para la implementación del proyecto.

El proyecto aquı́ planteado debe verse como una excelente oportunidad de


aplicar todos los conocimientos adquiridos a lo largo del curso, en un problema
de control real. Los estudiantes que decidan aceptar el reto ganarán gran can-
tidad de habilidades y experiencia que serán útiles no solo para el desarrollo de
problemas de control, sino de ingenierı́a en general.

¡Mucho ánimo!

2. Definición del proyecto


El presente proyecto tiene como fin aplicar todos los conocimientos adquiri-
dos en el curso Análisis de Sistemas de Control por medio de la implementación

2
fı́sica de una planta de control. El objetivo general del proyecto es implementar
un Aeropéndulo de bajo costo, previamente diseñado y basado en el trabajo
realizado en [1]. Los estudiantes llevarán a cabo un proceso de construcción,
caracterización y diseño e implementación de estrategias de control. Todo esto
ejercido en un problema de aplicación real.

Por lo tanto, mediante este ejercicio de aplicación los estudiantes se enfren-


tarán a los siguientes retos de ingenierı́a:
Análisis del modelo matemático del sistema, a partir de aplicación de
principios fı́sicos.

Simulación y reconocimiento del comportamiento del sistema.


Diseño de un controlador PID con base en diferentes métodos de sintoni-
zación.
Análisis del comportamiento del sistema (de forma matemática) en lazo
cerrado.

Análisis y compresión del efecto de la ubicación de los polos del sistema.


Simulación de las estrategias de control aplicadas a la planta.
Implementación de una planta fı́sica de control.

Implementación real de estrategias de control.


Análisis y comparación de resultados obtenidos en simulaciones y en im-
plementación.
De esta forma, los principales objetivos del proyecto son:

1. Plantear el modelo matemático de la planta a partir de principios fı́sicos.


2. Construir la planta de control fı́sica.
3. Caracterizar el sistema implementado y validar el modelo matemático pre-
viamente obtenido.

4. Sintonizar controladores P y PID mediante 2 estrategias de sintonización


diferentes.
5. Analizar el comportamiento de la planta y relacionarlo con la ubicación
de los polos del sistema.
6. Desarrollar habilidades en el manejo de tecnologı́as modernas y de código
abierto para el diseño de sistemas de control.
7. Desarrollar habilidades en la aplicación de conocimientos de ciencia e in-
genierı́a para la solución de problemas reales.

3
8. Desarrollar habilidades de comunicación oral y escrita.
Los estudiantes presentarán un informe escrito y una sustentación oral que
detalle y respalde el proceso de desarrollo llevado a cabo durante la realización
del proyecto. Para el informe y la sustentación es importante tener en cuenta
los criterios de evaluación descritos en la sección 3 de este documento.

3. Criterios de evaluación
A continuación se describen los criterios a evaluar en el informe y sustenta-
ción del proyecto.

3.1. Modelo matemático


Planteamiento de ecuaciones a partir de principios fı́sicos.
Justificación del modelo y suposiciones.

Función de transferencia teórica.

3.2. Identificación del sistema


Descripción del procedimiento seguido.

Función de transferencia experimental.

3.3. Diseño de controladores


Para el diseño de los controladores el objetivo es minimizar la función F
dada por:
F = (0.5) ∗ OS % + (0.2) ∗ ess + (0.3) ∗ ts
Donde OS % denota el Overshoot porcentual, ess denota el error en estado
estacionario y ts corresponde al tiempo de establecimiento.

Diseñar control proporcional (P) mediante 2 métodos de sintonización


diferentes (no está permitido usar Autotune).
Diseñar control PID mediante 2 métodos de sintonización diferentes (no
está permitido usar Autotune).

Justificación del proceso de diseño y sintonización (para los 4 controlado-


res).

4
3.4. Validación
Matemática: evaluar ubicación de los polos y concluir (para los 4 con-
troladores diseñados).
Simulación: simular los 4 controladores diseñados, compararlos de acuer-
do con la validación matemática y concluir.
Implementación: evaluar en la planta fı́sica los 4 controladores di-
señados y concluir.

3.5. Análisis
Comparar el desempeño de los 4 controladores con base en los resultados
de la validación (sección 3.4).

3.6. Conclusiones
Concluir con base en los resultados obtenidos y el análisis realizado.
¿Qué aprendı́? (individual por cada miembro del equipo).
¿Qué fue lo más difı́cil del desarrollo del proyecto? (individual por
cada miembro del equipo).

4. Recursos de apoyo para el desarrollo del pro-


yecto
Los estudiantes tienen a su disposición las bases de datos suscritas de las
Universidad de los Andes. Ahı́ podrán encontrar artı́culos que podrı́an ser de
ayuda para el desarrollo del proyecto.

Por otro lado, los estudiantes cuentan con el apoyo de los asistentes gradua-
dos del laboratorio de Análisis de Sistemas de Control, quienes podrán orien-
tarlos hacia el camino correcto en la solución del problema de aplicación.

Adicionalmente, los estudiantes tienen a su disposición un foro en Sicua en


donde podrán plantear sus dudas, inquietudes y problemas. Esto con el fin de
recibir retroalimentación de los asistentes graduados y de sus otros compañeros
del curso.

Finalmente, cabe resaltar que los estudiantes no deben despreciar la efectivi-


dad de consultar sus problemas en Google. El software y hardware empleado en
este proyecto es de código abierto, y por esta razón hay miles de personas que
posiblemente han tenido los mismos problemas que usted pueda tener. Nunca
descarte la opción de consultar sus obstáculos en internet.

5
5. Descarga de archivos necesarios
Para el desarrollo de este proyecto vamos a emplear una serie de archivos
desarrollados por el MIT en [1]. Los archivos necesarios están disponibles en:
ArchivosProyectoFinalControl o en la sección de contenidos en SicuaPlus. Des-
cargue la carpeta .zip y descomprı́mala en una carpeta con ubicación conocida.
De ahora en adelante, esta carpeta/ubicación será denotada como ArchivosPro-
yectoFinalControl.

6. Guı́a de implementación (hardware)


6.1. Lista de partes
A continuación se detalla la lista de partes que los estudiantes deben adqui-
rir para la implementación del proyecto (ver figura 1). En esta se mencionan
lugares donde se pueden conseguir las distintas partes requeridas. El lector debe
considerar estos lugares como sugerencias y no como única opción.

Figura 1: Lista de partes requeridas para el proyecto.

NOTA: el potenciómetro a emplear debe ser el mismo empleado


en el vı́deo de ensamble de la sección 6.4. Este potenciómetro tiene
un eje de 6mm de diámetro y una rosca de 9mm de diámetro. En ca-
so de usar un potenciómetro diferente, este podrı́a no encajar en la
estructura diseñada.

En la Figura 1 se presenta la lista de partes requerida para el desarrollo del


proyecto. Adicional a las partes aquı́ listadas es necesario emplear una fuente
DC regulada a 12V . Por fortuna, la universidad cuenta con suficientes fuentes
para todos los grupos. De esta manera los grupos pueden solicitar el présta-
mo de las fuentes DC en el almacén del laboratorio de eléctrica y electrónica

6
(solicitar la fuente DC que se empleó en la práctica de la planta térmica). Los
grupos que deseen adquirir su propia fuente DC deben buscar una fuente DC
a 12V de por lo menos 1A de corriente. En dado caso es necesario que adquie-
ran también el conector respectivo para poder adaptar la fuente a la protoboard.

Por otro lado, en el almacén del laboratorio de ingenierı́a eléctrica y electróni-


ca los estudiantes tienen a su disposición el préstamo de pinzas, cortafrı́os, cau-
tines y cables de cobre que podrı́an necesitar durante el desarrollo del proyecto.

PRECAUCIÓN: en caso de realizar labores de soldadura es necesa-


rio que adquieran un tapabocas con filtro N-95 y gafas de protección.
Este tapabocas lo consiguen en la ferreterı́a de Homecenter. Las gafas
pueden alquilarlas en El mono.

6.2. Construcción de la planta


La construcción de la planta consiste en ensamblar las piezas de MDF corta-
das con láser. Los planos de corte láser están disponibles en archivo descargado
al comienzo de la guı́a: ArchivosProjectoFinalControl. En la figura 2 se da un
adelanto de los planos de cortes que el lector tendrá que emplear para la fabri-
cación de las piezas en MDF.

Figura 2: Planos de corte láser para MDF de 3mm.

Se han incluido dos archivos .pdf relevantes para corte láser. El archivo: Pla-

7
nos de corte proyecto final - MDF 3mm.pdf es el que contiene los planos de
corte láser que se deben llevar en USB al sitio donde se realizará el corte (son
los mismos planos que se muestran en la figura 2). Por otro lado, el archivo:
Cotas proyecto final - MDF 3mm.pdf contiene los mismos planos de corte pero
con anotaciones adicionales que detallan las dimensiones de las piezas. Este se-
gundo archivo no se debe usar para el corte láser; sin embargo, es importante
revisar las dimensiones de las piezas antes de iniciar el corte (pedirle a técnico
que revise las principales dimensiones antes de iniciar el corte). Esto último con
el fin de evitar cortes erróneos por mal ajuste de la escala, ya sea por parte del
técnico o del software empleado.

CONSEJO 1: preguntar el costo de corte por minuto y el tiempo


estimado antes de iniciar el corte.

CONSEJO 2: cuando reciba las piezas de MDF déjelas un tiempo


razonable en un área con buena ventilación para que se desprendan
del olor a MDF quemado.

CONSEJO 3: si al momento de ensamblar las piezas estas no en-


cajan o el ajuste es demasiado apretado, utilice un pedazo de papel
lija para reducir levemente el ajuste correspondiente. Esto permitirá
que las piezas encajen sin crear juego u holgura en el ajuste.

6.3. Implementación del circuito


El circuito que se implementará en este proyecto es extremadamente sencillo.
No hay razón para preocuparse si no se tiene experiencia armando circuitos. El
lector puede copiar el montaje de la Figura 3 en su protoboard.

8
Figura 3: Esquema de conexiones para protoboard.

En la carpeta ArchivosProyectoFinalControl se ha incluido un PDF con el


esquema de la Figura 3 en mayor resolución. Esto con el fin de poder guiarse
con más facilidad a la hora de implementar el circuito.

Por otro lado, los estudiantes familiarizados con la implementación de cir-


cuitos pueden guiarse a partir del esquemático de la Figura 4.

Figura 4: Esquemático del circuito a implementar.

9
6.4. Vı́deo de ensamble
El proceso de construcción de la planta se detalla en el vı́deo: Ensamble del
Aeropéndulo. Se recomienda visualizar el vı́deo en alta definición (720p).

7. Guı́a de instalación (software)


El software necesario para el desarrollo del proyecto está comprendido por
Python y Arduino. A continuación se presenta el procedimiento paso a paso pa-
ra la instalación del software requerido para tres distintos sistemas operativos:
Windows 10, macOS Sierra y Ubuntu 16.04. El lector solo debe seguir las ins-
trucciones correspondientes al sistema operativo que planea usar en el desarrollo
del proyecto. Si su sistema operativo no es exactamente la versión empleada en
este tutorial, no se preocupe y siga las instrucciones del sistema operativo más
parecido al suyo.

Para instalación en Windows 10 consulte la sección 7.1


Para instalación en macOS Sierra consulte la sección 7.2

Para instalación en Ubuntu 16.04 consulte la sección 7.3

En caso de tener dificultades durante la instalación el lector puede recurrir


al foro habilitado en Sicua.

7.1. Instrucciones para Windows 10


7.1.1. Instalación de Python
El primer paso es instalar Python. Python es un lenguaje de programación
interpretado, gratuito y de código abierto. Python viene en dos versiones distin-
tas: Python 2.∗ y Python 3.∗. Para el desarrollo de este proyecto el lector puede
optar por la versión que prefiera; sin embargo, debe recordar su elección para
ser consistente con la misma durante la totalidad del proyecto.

Python puede ser descargado desde este link: Python.

10
Figura 5: Seleccione la versión de Python que desee descargar. Durante este
tutorial se estará trabajando con Python 2.7; sin embargo, también se incluirán
las instrucciones para Python 3.6.

Una vez descargado el archivo correspondiente, de clic en el mismo para


iniciar su instalación.

Figura 6: Seleccione la opción especificada y dé clic en N ext.

11
Figura 7: Seleccione la ruta para la instalación de Python. Si no tiene preferencia
se recomienda dejar la ruta por defecto. Después de clic en N ext.

12
Figura 8: Utilice la barra lateral para bajar hasta el final de la lista y
configure la opción: Add python.exe to Path. Debe verse exactamente
como en la imagen. Este paso es muy importante, en caso de no
hacerlo el programa no funcionará apropiadamente. Una vez configurado
dé click en N ext.

13
Figura 9: Permita que Python realice cambios en su equipo y espere a que la
instalación finalice.

Figura 10: En este paso ya finalizó la instalación de Python en su equipo. Dé


clic en F inish.

Para verificar su instalación abra el PowerShell de Windows (Inicio → Win-


dows PowerShell).

14
En el PowerShell (pantalla azul) escriba:
python −−version
Esto mostrará la versión de Python que instaló anteriormente. Después es-
criba:
pip −−version
Esto mostrará la versión de pip que tiene instalada. pip es un administrador
de paquetes de Python que permite instalar y desinstalar los distintos módulos
de Python que se emplearán en este laboratorio. Las nuevas versiones de Python
(incluyendo las de esta guı́a) ya vienen con pip por defecto y por esta razón no
fue necesario instalarlo de forma adicional.
En caso de haber instalado Python 3.6, los comandos a ejecutar deben ser:

python3 −−version

pip3 −−version

Figura 11: Al ejecutar los comandos descritos anteriormente el lector deberı́a


ver algo similar a lo mostrado en esta imagen.

Ahora vamos a instalar los módulos de Python necesarios para el proyecto.

15
Figura 12: En el PowerShell utilice el comando cd para cambiar al directorio
en el que descomprimió la carpeta ArchivosProyectoFinalControl. Una vez ahı́,
emplee el comando dir. Deberı́a ver información similar a la mostrada en esta
imagen.

Ahora vamos a instalar lo módulos de Python que se requieren en este pro-


yecto. Estos son:
flask

flask-socketio
pyserial
eventlet
Para instalar todos estos módulos solo es necesario emplear pip y el archivo
de requerimientos req.txt incluido en el archivo descargado (ArchivosProyec-
toFinalControl). El comando a correr es diferente dependiendo de la versión de
Python que el lector instaló.

Para Python 2.7 ejecute:


pip install -r req.txt

Para Python 3.6 ejecute:


pip3 install -r req.txt

16
Figura 13: Al correr el comando mencionado anteriormente deberı́a obtener los
resultados de esta imagen.

Una vez finalizada la instalación de los módulos de Python mencionados an-


teriormente, se puede continuar a correr el programa del proyecto (con el fin de
validar su correcto funcionamiento).

Para esto asegúrese de estar ubicado en el PowerShell en la carpeta de archi-


vos descargada (en este caso se llama ArchivosProyectoFinalControl). Estando
en esta ubicación ejecute el comando:
python server.py
O equivalentemente para Python 3.6 ejecute:
python3 server.py

17
Figura 14: Al ejecutar el comando anterior deberı́a observar información similar
a la mostrada en esta imagen.

Abra su navegador de preferencia (en este caso se emplea Chrome de Google)


y escriba la dirección: localhost:3000

Esto lanzará la interfaz del programa que le permitirá interactuar con el


Arduino y con la planta de control.

Figura 15: Al entrar al localhost:3000 el lector deberı́a observar una interfaz


similar a la mostrada en esta imagen. Note que la primera opción desplegable
aparece vacı́a, esto se debe a que aún no hemos conectado el Arduino al equipo.

Para cerrar la interfaz vaya al PowerShell de Windows, dé clic sobre el mismo
y oprima Ctrl + C. Esto finalizará la ejecución del programa server.py.

ADVERTENCIA: cuando esté trabajando con el Arduino es nece-

18
sario conectar el Arduino al equipo antes de ejecutar el server.py. De
igual forma, es MUY IMPORTANTE que cuando se desee detener el
programa primero cierre el server.py con el comando Ctrl + C, an-
tes de desconectar el Arduino del equipo. De no hacerlo su Arduino
podrı́a resultar dañado.

Aquı́ culmina la instalación de relacionada con Python. Ya estamos listos


para continuar con el siguiente paso: instalar Arduino.

7.1.2. Instalación de Arduino


Arduino es una plataforma gratuita de código abierto que nos permitirá
realizar la comunicación entre el computador y la electrónica de la planta de
control. Para este proyecto se requiere una versión del Arduino IDE superior a
1.6. Se recomienda emplear la última versión de Arduino disponible a la fecha
(1.8.6). Esta puede ser descargada desde este enlace: Arduino.

Utilice la barra lateral de la página para bajar hasta ver la opción mostrada
en la Figura 47.

Figura 16: Dé clic en el enlace Windows Installer, esto abrirá una nueva
página que le preguntará si desea donar dinero a Arduino. Si no desea donar dé
clic en el enlace JUST DOWNLOAD.

19
Figura 17: Ejecute el archivo descargado. Revise los términos de licencia y dé
clic en I Agree

Figura 18: Seleccione las opciones mostradas y dé clic en N ext.

20
Figura 19: Establezca la ruta de instalación deseada y dé clic en Install.

Figura 20: En este punto se iniciará la instalación.

21
Figura 21: Instale los drivers requeridos por Arduino.

Figura 22: Instale los drivers requeridos por Arduino.

Figura 23: Finalmente, dé clic en Close.

22
7.2. Instrucciones para macOS
7.2.1. Instalación de Python
El primer paso es instalar Python. Python es un lenguaje de programación
interpretado, gratuito y de código abierto. Python viene en dos versiones distin-
tas: Python 2.∗ y Python 3.∗. Para el desarrollo de este proyecto el lector puede
optar por la versión que prefiera; sin embargo, debe recordar su elección para
ser consistente con la misma durante la totalidad del proyecto.

Python puede ser descargado desde este link: Python.

Figura 24: Seleccione la versión de Python que desee descargar. Durante este
tutorial se estará trabajando con Python 2.7; sin embargo, también se incluirán
las instrucciones para Python 3.6.

Una vez descargado el archivo correspondiente, de clic en el mismo para


iniciar su instalación.

23
Figura 25: Dé clic en Continuar.

Figura 26: Dé clic en Continuar.

24
Figura 27: Revise la licencia de instalación, dé clic en Continuar y acepte la
licencia.

Figura 28: Seleccione el disco en el que desea instalar Python y dé clic en
Continuar.

25
Figura 29: Revise la ubicación en la que se instalará Python. Si está de acuerdo
dé clic en Instalar.

Figura 30: En este punto se iniciará la instalación de Python en su sistema.


Espere hasta que la instalación finalice.

26
Figura 31: En este punto la instalación de Python ha finalizado con éxito.

Para verificar su instalación abra la terminal de comandos de macOS (Launch-


pad → terminal). En la terminal (pantalla blanca) escriba:

python −−version
Esto mostrará la versión de Python que instaló anteriormente. Después es-
criba:
pip −−version

El segundo comando le mostrará la versión de pip que tiene instalada. pip es


un administrador de paquetes de Python que permite instalar y desinstalar los
distintos módulos de Python que se emplearán en este laboratorio. Las nuevas
versiones de Python (incluyendo las de esta guı́a) ya vienen con pip por defecto
y por esta razón no fue necesario instalarlo de forma adicional.

En caso de haber instalado Python 3.6, los comandos que debe ejecutar son:
python3 −−version
pip3 −−version

27
Figura 32: Al ejecutar los comandos descritos anteriormente el lector deberı́a
ver algo similar a lo mostrado en esta imagen.

Ahora vamos a instalar los módulos de Python necesarios para el proyecto.

Figura 33: En la terminal utilice el comando cd para cambiar al directorio


en el que descomprimió la carpeta ArchivosProyectoFinalControl. Una vez ahı́,
emplee el comando ls. Deberı́a ver información similar a la mostrada en esta
imagen.

Ahora vamos a instalar lo módulos de Python que se requieren en este pro-


yecto. Estos son:

flask
flask-socketio
pyserial

28
eventlet
Para instalar todos estos módulos solo es necesario emplear pip y el archivo
de requerimientos req.txt incluido en el archivo descargado (ArchivosProyec-
toFinalControl). El comando a correr es diferente dependiendo de la versión de
Python que el lector instaló.

Para Python 2.7 ejecutar:


pip install -r req.txt
Para Python 3.6 ejecutar:
pip3 install -r req.txt

Figura 34: Al correr el comando mencionado anteriormente deberı́a obtener los


resultados de esta imagen. Al finalizar la ejecución no deberı́a ver ningún error
en la terminal de comandos.

Una vez finalizada la instalación de los módulos de Python mencionados an-


teriormente, se puede continuar a correr el programa del proyecto (con el fin de

29
validar su correcto funcionamiento).

Para esto asegúrese de estar ubicado en la terminal en la carpeta de archivos


descargada (en este caso se llama ArchivosProyectoFinalControl). Estando en
esta ubicación ejecute el comando:

python server.py
O equivalentemente en Python 3.6 ejecute:
python3 server.py

Figura 35: Al ejecutar el comando anterior deberı́a observar información similar


a la mostrada en esta imagen.

Abra su navegador de preferencia (en este caso se emplea Chrome de Google)


y escriba la dirección: localhost:3000

Esto lanzara la interfaz del programa que le permitirá interactuar con el


Arduino y con la planta de control.

30
Figura 36: Al entrar al localhost:3000 el lector deberı́a observar una interfaz
similar a la mostrada en esta imagen. Note que en la primera opción desplegable
solo aparece Bluetooth-incoming. Esto se debe a que aún no hemos conectado
el Arduino al equipo y este equipo cuenta con Bluetooth integrado.

Para cerrar el servidor local cierre el navegador, vaya a la terminal de ma-


cOS, de clic sobre la misma y oprima Ctrl + C. Esto finalizará la ejecución del
programa server.py.

ADVERTENCIA: cuando esté trabajando con el Arduino es nece-


sario conectar el Arduino al equipo antes de ejecutar el server.py. De
igual forma, es MUY IMPORTANTE que cuando se desee detener
el programa primero se cierre el server.py con el comando Ctrl + C,
antes de desconectar el Arduino del equipo. De no hacerlo su Arduino
podrı́a resultar dañado.

Aquı́ culmina la instalación de relacionada con Python. Ya estamos listos


para continuar con el siguiente paso: instalar Arduino.

7.2.2. Instalación de Arduino


Arduino es una plataforma gratuita de código abierto que nos permitirá
realizar la comunicación entre el computador y la electrónica de la planta de
control. Para este proyecto se requiere una versión del Arduino IDE superior a
1.6. Se recomienda emplear la última versión de Arduino disponible a la fecha
(1.8.6). Esta puede ser descargada desde este link: Arduino.

31
Utilice la barra lateral de la página para bajar hasta ver la opción mostrada
en la figura 37.

Figura 37: De clic en el enlace Mac OSX Installer, esto abrirá una nueva
página que le preguntará si desea donar dinero a Arduino. Si no desea donar de
clic en el enlace JUST DOWNLOAD.

32
Figura 38: Descomprima el archivo descargado y posteriormente agregue Ar-
duino a sus aplicaciones de sistema.

7.3. Instrucciones para Ubuntu 16.04


7.3.1. Instalación de Python
El primer paso es instalar Python. Python es un lenguaje de programación
interpretado, gratuito y de código abierto. Python viene en dos versiones distin-
tas: Python 2.∗ y Python 3.∗. Para el desarrollo de este proyecto el lector puede
optar por la versión que prefiera; sin embargo, debe recordar su elección para
ser consistente con la misma durante la totalidad del proyecto.

Abra la terminal de Ubuntu. Para esto oprima Ctrl + Alt + t.

Figura 39: La terminal de comandos de Ubuntu.

En la terminal ejecute el comando:


sudo apt-get update

33
Esto le pedirá ingresar su contraseña de súper usuario.

Una vez termine de correr el comando anterior, ejecute el comando:


sudo apt-get upgrade
Acepte guardar los datos en el espacio de disco sugerido (oprima y + Enter).

Los comandos anteriores nos permitieron actualizar el administrador de pa-


quetes de Ubuntu. Ahora vamos a instalar Python y Pip. En este caso se insta-
lará tanto Python 2.∗ como Python 3.∗.

Ejecute el comando:
sudo apt-get install python python-pip python3 python3-pip

Figura 40: Ejecute el comando con Enter. Después acepte continuar oprimiendo
y + Enter.

Una vez finalice la instalación el lector puede verificarla corriendo los co-
mandos:
python −−version
pip −−version
O equivalentemente para Python 3:
python3 −−version
pip3 −−version

34
Para evitar futuros warnings vamos a actualizar la versión de pip. Para esto
ejecute los siguientes comandos:
pip install −−upgrade pip
pip −−version
O equivalentemente para Python 3:
pip3 install −−upgrade pip
pip3 −−version

Figura 41: Resultado de actualizar pip en Python 2.

En este punto ya estamos listos para instalar los módulos de Python que
utilizaremos en este proyecto. Para esto dirı́jase a la carpeta ArchivosProyecto-
FinalControl que descargó al comienzo de este tutorial (sección 5).

Figura 42: Para dirı́jase a la carpeta deseada utilice el comando cd con la ruta
de la carpeta. En el caso de este tutorial la ruta es Documents → ArchivosPro-
yectoFinalControl. Una vez en la carpeta emplee el comando ls para listar los
contenidos de la misma. Deberı́a ver algo similar a esta imagen.

Los módulos de Python que se requieren en este proyecto son:

35
flask
flask-socketio
pyserial
eventlet

Para instalar todos estos módulos solo es necesario emplear pip y el archivo
de requerimientos req.txt incluido en el archivo descargado (ArchivosProyec-
toFinalControl). El comando a correr es:
pip install -r req.txt

O equivalentemente para Python 3:


pip3 install -r req.txt

Figura 43: Al correr el comando mencionado anteriormente deberı́a obtener los


resultados de esta imagen al final de la terminal.

Una vez finalizada la instalación de los módulos de Python mencionados an-


teriormente, se puede continuar a correr el programa del proyecto (con el fin de
validar su correcto funcionamiento).

Para esto asegúrese de estar ubicado en la terminal en la carpeta de archivos


descargada (en este caso se llama ArchivosProyectoFinalControl). Estando en
esta ubicación ejecute el comando:
python server.py
O equivalentemente en Python 3:

python3 server.py

36
Figura 44: Al ejecutar el comando anterior deberı́a observar información similar
a la mostrada en esta imagen.

Abra su navegador de preferencia (en este caso se emplea Firefox) y escriba


la dirección: localhost:3000

Esto lanzara la interfaz del programa que le permitirá interactuar con el


Arduino y con la planta de control.

Figura 45: Al entrar al localhost:3000 el lector deberı́a observar una interfaz


similar a la mostrada en esta imagen. Note que la primera opción desplegable
aparece vacia, esto se debe a que aún no hemos conectado el Arduino al equipo.

Para cerrar la interfaz cierre el navegador, vaya a la terminal de Ubuntu,


de clic sobre la misma y oprima Ctrl + C. Esto finalizará la ejecución del
programa server.py.

37
Figura 46: Al seguir la instrucción anterior deberı́a observar algo similar a lo
mostrada en esta imagen.

ADVERTENCIA: cuando esté trabajando con el Arduino es nece-


sario conectar el Arduino al equipo antes de ejecutar el server.py. De
igual forma, es MUY IMPORTANTE que cuando se desee detener
el programa primero se cierre el server.py con el comando Ctrl + C,
antes de desconectar el Arduino del equipo. De no hacerlo su Arduino
podrı́a resultar dañado.
Aquı́ culmina la instalación de relacionada con Python. Ya estamos listos
para continuar con el siguiente paso: instalar Arduino.

7.3.2. Instalación de Arduino


Arduino es una plataforma gratuita de código abierto que nos permitirá
realizar la comunicación entre el computador y la electrónica de la planta de
control. Para este proyecto se requiere una versión del Arduino IDE superior a
1.6. Se recomienda emplear la última versión de Arduino disponible a la fecha
(1.8.5). Esta puede ser descargada desde este link: Arduino.

Utilice la barra lateral de la página para bajar hasta ver la opción mostrada
en la figura 47.

38
Figura 47: De clic en el enlace Linux 64 bits, esto abrirá una nueva página
que le preguntará si desea donar dinero a Arduino. Si no desea donar de clic en
el enlace JUST DOWNLOAD.

Antes de instalar el archivo descargado vamos a instalar y desinstalar una


versión anterior de Arduino. Esto se hace con el fin de evitar un error que aparece
al tratar de instalar el Arduino 1.8.5 sin haber instalado versiones previas del
programa. Para esto ejecute en la terminal el comando:
sudo apt-get install arduino
Acepte la instalación con y + Enter.

Cuando finalice esta instalación ejecute el comando:

sudo apt-get remove arduino


Acepte con y + Enter.

Ahora dirı́jase a la carpeta de descargas donde descargó el instalador de


Arduino 1.8.5.

Figura 48: Utilice el comando cd para dirı́jase a la ruta de la carpeta de des-


cargas. Una vez ahı́ utilice el comando ls para listar el contenido de la misma.
Finalmente descomprima el archivo descargado de Arduino.

Para descomprimir el archivo de arduino use el comando:

39
tar -xvf arduino-1.8.5-linux64.tar.xz

Figura 49: Cuando finalice la descompresión utilice el comando ls para listar


nuevamente los contenidos de la carpeta de descargas. Con el comando cd in-
grese a la nueva carpeta que apareció (carpeta descomprimida). Dentro de esta
carpeta use nuevamente ls para listar sus contenidos.

Finalmente, instale Arduino 1.8.5 ejecutando el comando:

sudo ./install.sh
Si todo funcionó correctamente deberı́a ver resultados similares a los de la
figura 49. Para acceder al programa de Arduino en Ubuntu, debe buscar Arduino
IDE en los programas instalados. Esto lo puede hacer fácilmente empleando la
herramienta mostrada en la figura 50.

Figura 50: Herramienta de búsqueda de programas instalados en Ubuntu.

8. Programación Arduino y uso de herramientas


instaladas
8.1. Programación del Arduino UNO
El último paso en la implementación software es la programación del micro-
controlador del Arduino UNO. Los pasos descritos a continuación asumen que el

40
lector ya tiene instalado el Software Arduino y los drivers respectivos. En caso
de no ser ası́ consulte la sección 7 de este documento.

Las instrucciones que se presentarán a continuación fueron ejecutadas en


Windows; sin embargo, el proceso a seguir es prácticamente idéntico en los
demás sistemas operativos.

El primer paso es conectar el Arduino UNO al equipo. Una vez conectado


inicie el programa de Arduino (el Arduino IDE).

Figura 51: En esta ventana dé clic en Archivo → Abrir.

41
Figura 52: Navegue hasta la ubicación de la carpeta ArchivosProyectoFinal-
Control → programa arduino UNO y abra el archivo programa arduino UNO
tal como se muestra. Esto cargará el código del programa en la ventana del
Arduino IDE.

42
Figura 53: En la esquina inferior derecha podrá observar la configuración de
programación actual. En dado caso de no ser la deseada o de no ver nada, dé
clic en Herramientas → P laca : y seleccione Arduino/Genuino U no. Poste-
riormente dé clic en Herramientas → P uerto : y seleccione el puerto en el cual
tiene conectado el Arduino UNO (por lo general es la única opción que sale).

43
Figura 54: Con el código abierto dé clic en la opción mostrada. Esta opción
permitirá verificar que no haya errores en el código antes de intentar cargarlo
al Arduino.

Figura 55: Al verificar el código, si no hay ningún problema, deberı́a ver la barra
de estado tal como se muestra en esta imagen. Esta indica que el programa fue
compilado exitosamente.

44
Figura 56: Con el código abierto dé clic en la opción mostrada. Esta opción
permitirá cargar el programa al Arduino.

Figura 57: Al cargar el código, si no hay ningún problema, deberı́a ver la barra
de estado tal como se muestra en esta imagen. Esta indica que el programa fue
subido exitosamente al Arduino.

En este punto ya hemos culminado la programación del Arduino. El siguiente


paso es probar el funcionamiento del programa completo.

45
8.2. Validación y uso del programa
Una vez instalados todos los programas necesarios y después de haber car-
gado el código en el Arduino UNO, se procede a validar el funcionamiento del
programa completo.

Con el Arduino UNO conectado al equipo ejecute el programa server.py,


abra una nueva ventana del navegador y entre a localhost:3000/. Si toda la
instalación fue exitosa deberı́a ver una interfaz como la de la Figura 58.

Figura 58: Observe que ahora si aparece un puerto serial en la primera lista
desplegable. En este caso aparece el puerto COM4 porque se está trabajando
en Windows y el Arduino UNO está conectado al COM4. En su caso puede
aparecer una opción diferente; sin embargo, debe coincidir con el puerto en el
cual tiene conectado el Arduino UNO.

46
Figura 59: Dé clic en la opción marcada para iniciar la conexión serial con el
Arduino UNO.

Figura 60: Observe que ahora la tercera lista desplegable indica que se encuentra
conectado con la placa Arduino.

47
Figura 61: Utilizando la barra lateral el lector puede desplazarse a la parte baja
de la interfaz y observar las distintas gráficas que esta presenta. Estas gráficas
arrojan información importante sobre la planta de control.

Las gráficas disponibles en la interfaz le permiten conocer información impor-


tante del sistema en tiempo real. La información disponible comprende: ángulo
del péndulo (ArmAngle), error (Error), variación del error (Delta), error acu-
mulado (Sum) y voltaje en PWM enviado al motor (MotorCmd).

Por otro lado, el programa cuenta con una serie de deslizadores que le per-
miten interactuar con el control de la planta en tiempo real. Estos deslizadores
son:

K P: ganancia proporcional del controlador PID.


K D: ganancia derivativa del controlador PID.

K I: ganancia integral del controlador PID.


SumMax: máxima cantidad de términos a considerar en el error acumula-
do.
Direct: offset en PWM que se suma a la salida del controlador PID.

Desired: posición angular deseada en grados (referencia).

Finalmente, el programa cuenta con dos interruptores adicionales. Estos son:

Generate CSV: al seleccionarlo el usuario puede guardar los datos del


programa en un archivo CSV. El archivo CSV quedará guardado en la
carpeta csv files de la carpeta ArchivosProyectoFinalControl.

48
Alternate desired: le permite alternar la posición deseada entre dos valores
definidos (onda cuadrada).

Figura 62: Para finalizar la conexión serial debe dar clic en la tercera lista des-
plegable. Esto desconectara la comunicación serial con el Arduino y le mostrará
el estado tal como está señalado en la imagen.

Figura 63: Si desea desconectar el Arduino UNO del computador recuerde que
primero debe cerrar el navegador de la interfaz y posteriormente debe dar clic
en el PowerShell/terminal y presionar Ctr + C para interrumpir el programa
server.py tal como se muestra en la imagen. SOLO DESPUÉS DE IN-
TERRUMPIR EL server.py ES SEGURO DESCONECTAR EL AR-
DUINO DEL COMPUTADOR.

49
9. Calibración del sensor
Para poder obtener mediciones acertadas del ángulo del Aeropéndulo, es ne-
cesario caracterizar el potenciometro que se está empleando como sensor de la
posición angular. Para esto se ha incluido el archivo: programa caracterizacion angulo.ino
en la carpeta ArchivosProyectoFinalControl.

Siguiendo los pasos de programación del Arduino UNO ilustrados en la sec-


ción 8, el lector debe cargar el programa programa caracterizacion angulo.ino a
la tarjeta Arduino UNO.

Figura 64: Cargar el programa programa caracterizacion angulo.ino a la tarjeta


Arduino UNO. Después usar el monitor serial para poder observar los datos
medidos. Para acceder al monitor serial puede emplear la opción encerrada en
rojo.

RECOMENDACIÓN: para evitar posibles errores en la comunia-


ción serial, verifique que el programa server.py NO se esté ejecutando
cuando programe el Arduino UNO ni cuando abra el monitor serial.
Por otro lado, es recomendable cerrar el monitor serial una vez fina-
lice el proceso de medición aquı́ mencionado.

50
Figura 65: Al abrir el monitor serial el lector deberı́a observar datos como los
mostrados en la imagen. En caso de no ver nada verifique que el Baud rate
esté configurado en 115200 (lo puede verificar en la esquina inferior derecha del
monitor serial).

El monitor serial de la figura 65 le muestra la medición de voltaje digital


del pin central del potenciometro. Para poder implementar el sistema de control
planteado en este proyecto, es necesario convertir este voltaje digital a grados.
Para hacer esto el lector debe caracterizar el potenciometro.

9.1. Caracterización del potenciometro


Caracterizar el potenciometro consiste en encontrar la función de conversión
de voltaje digital a grados. Para esto el lector debe registrar varios pares de
datos: voltaje digital & ángulo en grados (ángulo medido manualmente
por el lector), y construir una tabla de datos para posteriormente realizar una
regresión lineal de la forma:

Y = mX + b
Donde Y corresponde a la posición angular en grados, X es el voltaje digital
medido con el potenciometro, m es la pendiente de la recta de regresión y b es

51
el Y-intercepto de la recta de regresión.

Una vez que el lector haya encontrado los valores de m y b correspondientes


a su montaje (planta implementada), debe reemplazarlos en el código: progra-
ma arduino UNO.ino.

Figura 66: Para reemplazar m y b en el código del programa arduino UNO.ino


el lector solo debe modificar las primeras lı́neas del código y cambiar los valores
por defecto de m y b. Una vez modificados el lector debe volver a cargar el
programa arduino UNO.ino a la tarjeta Arduino UNO siguiendo los pasos de la
sección 8.

52
10. Referencias
[1] J. White y J. Steinmeyer. Introduction to Control System Design - A First
Look. Massachusetts Institute of Technology (MITx). Jul. de 2016. url:
www . edx . org / es / course / introduction - control - system - design -
first-mitx-6-302-0x.

53

También podría gustarte