Sei sulla pagina 1di 15

P

DESARROLLO DE APLICACIÓN ANÁLOGICA-DIGITAL DE UN SISTEMA DE


CONTROL DE TEMPERATURA POR MEDIO DE PHYTON

1. INTRODUCCIÓN

Los sistemas de control automático de procesos es parte del progreso industriales


desarrollado durante lo que ahora se conoce como la segunda revolución industrial.
El uso intensivo de la ciencia de control automático es producto de una evolución la
cual es consecuencia del uso difundido de las técnicas de medición y control ya que
es un conjunto de dispositivos encargados de administrar, ordenar, dirigir o regular
el comportamiento de otro sistema con el fin de incrementar la eficiencia y/o reducir
la probabilidad de fallo del proceso. Su estudio intensivo ha contribuido al
reconocimiento universal de sus ventajas.

El control automático de procesos se usa fundamentalmente porque reduce el costo


de procesos industriales. Lo que compensa con creces la inversión en equipos para
este tipo de aplicaciones. [1]

La comunicación a través del puerto serie se sigue utilizando mucho para conectar
el PC con otros dispositivos, como por ejemplo microcontroladores. Además de
estar soportado en todos los ordenadores y dispositivos, la interfaz software es muy
fácil de utilizar.
Actualmente muchos ordenadores portátiles no vienen con puerto serie incorporado
(no traen un conector DB9). Esto no es problema, ya que se pueden
emplear conversores USB-serie. [1]
Por ende se busca implementar la comunicación por medio de un programa
poderoso, fácil de aprender y utilizar. Que cuente con estructura de datos eficientes
y de alto nivel y un enfoque simple pero efectivo para la programación orientada a
objetos. La sintaxis de Python y su tipado dinámico, de igual forma con su naturaleza
interpretada, hacen de éste un lenguaje ideal para scripting y desarrollo rápido de
aplicaciones en diversas áreas y sobre la mayoría de las plataformas. [2]

2. ANTECEDENTES

Python es un lenguaje de programación moderno creado por Guido van Rossum a


inicios de los años noventa. La implementación canónica, conocida como CPython,
está bajo una licencia de software libre y se puede descargar del sitio oficial. El que
sea una tecnología abierta y libre tiene ventajas importantes sobre tecnologías
propietarias. Lo principal es que se puede usar sin tener que cubrir algún costo de
licencias. [3]

Este tipo de lenguaje de programación es de los denominados lenguajes dinámicos


tipo guion. Se puede considerar como un lenguaje moderno de alto nivel orientado
a objetos y que permite trabajar en varios paradigmas de programación. El grupo
de programadores iniciales estaban trabajando en ese momento en un intérprete de
lenguaje que derivó en el concepto de máquina virtual.

Es importante destacar que Python tiene una sintaxis muy visual, gracias a una
notación identidad (con márgenes) de obligado cumplimiento. En muchos lenguajes,
para separar porciones de código, se utilizan elementos como las llaves o las
palabras. Para separar las porciones de código en Python se debe tabular hacia
dentro, colocando un margen al código que iría dentro de una función o un bucle
simplificando así un poco el lenguaje de programación.[4]
Entre las aplicaciones que se destacan realizadas con Python van desde
calculadoras, control de encendí-apagado de un computador, realizar algunos tipos
de videojuegos, solución de sistemas matemáticos y unión mediante comunicación
serial con algunos microcontroladores como lo es el Arduino prototipado rápido de
proyectos.[4]

2.1 Aplicaciones
Esta biblioteca tiene una gran gama de aplicaciones, que van desde la
comunicación con dispositivos móviles como celulares y miniordenadores, hasta el
control de plantas industriales automatizadas. Las funciones que este módulo
provee, posibilitan, por ejemplo, establecer comunicación con los bancos o registros
de memorias de muchos dispositivos y poder manejar sus datos. En el área de la
robótica, actualmente muchas plantas automatizadas en las que se utilizan robots
o maquinaria industrial, utilizan el protocolo RS-232 y puerto seriales para poder
comunicarse con dichos dispositivos, y por ejemplo, enviar instrucciones de
funcionamiento o recibir la retroalimentación de estos dispositivos, estableciendo
una comunicación bilateral o Full-duplex. Todo esto se realiza a través del puerto
Serial y pySerial tiene la capacidad de realizar esto. [5]

2.2 Utilidad de la biblioteca pySerial en distintas carreras de Ingeniería


El módulo pySerial provee un método por el cual se pueden comunicarse distintos
dispositivos con una computadora u ordenador. Esta capacidad es de gran
importancia en muchas carreras de Ingeniería, en las que el control numérico y la
retroalimentación PC-máquina es muy importante, a la vez que provee una forma
de automatizar distintos procesos. [5]

3. MARCO TEÓRICO

Un sistema de control es un conjunto de dispositivos encargados de administrar,


ordenar, dirigir o regular el comportamiento de otro sistema con el fin de incrementar
la eficiencia y/o reducir la probabilidad de fallo del proceso.
Son innumerables los sistemas de control que se utilizan a nivel industrial y
doméstico, muchos de ellos son desarrollados e implementados a partir de la
detección de la necesidad. A nivel educativo se realizan diseños a escala de los
sistemas usados industrialmente. Para poder llegar a este paso hay que tener el
control sobre el sistema que se va a controlar allí es donde entran a jugar la
comunicación, entonces para empezar hablar de comunicaciones hay q entender
un poco lo que viene siendo el modelo de comunicaciones lo cual se ve en cualquier
parte cuando se necesita llevar información de un lado a otro como se observa en
la figura 1, se necesita a alguien quien vaya a llevar el mensaje, un medio en el cual
el mensaje de transmita y alguien que lo reciba de esta manera quien vaya a llevar
el mensaje necesita redactar el mensaje de manera que, quien lo reciba lo pueda
entender.[6]

Figura 1. Modelo de comunicaciones.

Cuando se habla de comunicaciones se pueden ver dos tipos de enlaces, como se


puede observar en la figura 2, un enlace muy común es el de tipo punto a punto el
cual se trata de Emisor y un Receptor y hay una línea entre ellos que los une no
tienen comunicación con otro elemento, solo entre ellos a comparacion del tipo de
enlace punto a multipunto que el elemento A puede llegar a comunicarse con
diferentes elementos. Después dentro de estos modelos de transmisión se tienen
dos modalidades los cuales se conocen como Half Duplex y Full Duplex estas se
muestran en la figura 3. [6]

Figura 2. Tipos de enlaces

Figura 3. Modelos de transmisión.


Donde el primero consiste en utilizar el mismo medio para transmitir el mensaje
donde solo puede enviar un mensaje sea de ida o de regreso y el segundo por lo
regular lo que hace es tener medios diferentes para cada una de las comunicaciones
puede ser uno para la emisión de los datos y el otro para la recepción lo que hace
su funcionamiento más y rápido y eficiente aumentando la velocidad de ejecución
de la tarea que se vaya a realizar. Sobre la interfaces de la comunicación que se
muestra en la figura 4 son los tipos de interfaces de comunicación que existen los
cuales son paralelo y serial. Serial es la que se va a implementar en el sistema de
control de temperatura realimentado de por si las computadoras utilizan
comunicación serial. [6]

Figura 4. Tipos de interface serial.

La interface en paralelo es la más rápida ya que se estaría enviando todo el paquete


de datos al mismo tiempo pero en costos tratando de implementar a largas
distancias y para diferentes equipos se vuelve muy tedioso.

El concepto de comunicación serial es sencillo. El puerto serial envía y recibe bytes


de información un bit a la vez. Aun y cuando esto es más lento que la comunicación
en paralelo, que permite la transmisión de un byte completo por vez, este método
de comunicación es más sencillo y puede alcanzar mayores distancias.

3.1 ¿Qué es la comunicación serial?


La comunicación serial es un protocolo muy común (no hay que confundirlo con el
Bus Serial de Comunicación, o USB) para comunicación entre dispositivos que se
incluye de manera estándar en prácticamente cualquier computadora. La mayoría
de las computadoras incluyen dos puertos seriales RS-232. La comunicación serial
es también un protocolo común utilizado por varios dispositivos para
instrumentación; existen varios dispositivos compatibles con GPIB que incluyen un
puerto o protocolo RS-232. Además, la comunicación serial puede ser utilizada para
adquisición de datos si se usa en conjunto con un dispositivo remoto de muestreo
esto la hace la mejor opción a la hora de implementar una comunicación con
dispositivos como microcontroladores. [7]

El puerto Serial de las computadoras utiliza el protocolo RS-232 para comunicarse


con dispositivos externos como un mouse, un brazo robótico o un microcontrolador.
Entre las muchas librerías de Python se encuentra una específica que provee la
capacidad de utilizar muy fácilmente el o los puertos seriales de una computadora
para comunicarse con otros dispositivos. Esta biblioteca se denomina pySerial y fue
creada por Chris Liechti. Al igual que Python, pySerial es compatible con muchas
plataformas o Sistemas Operativos como Linux, Windows, MacOS, BSD, Jython y
IronPython. [5]

La página web oficial de este módulo es: http://pyserial.sourceforge.net/ . En esta


página se encuentran documentaciones de esta biblioteca, muchos ejemplos útiles
para comprender su uso y aspecto avanzados sobre el uso de pySerial. [5]

La biblioteca pySerial provee muchos módulos con los cuales se puede tener casi
total control del puerto Serial de una computadora. Ya que las computadoras
pueden tener más de un puerto Serial configurado, pySerial utiliza números del 0 al
255 para cada uno de los puertos, de tal forma que se pueda invocar cada puerto
de manera individual y que se asegure la compatibilidad con muchas plataformas.[5]

4. PLANTEAMIENTO DEL PROBLEMA


Desarrollar una aplicación en Python que permita establecer la comunicación serial
con un PC y el microcontrolador, con base a lo anterior, este proyecto se estructura
en tres fases de desarrollo.

Primera fase de investigación sobre la programación en microcontrolador JM&60


aplicada a la comunicación serial.

Por medio de una segunda etapa ya enfocada al desarrollo de la aplicación que


implica la comunicación por medio de Docklight y una tercera etapa del bloque de
programación en Python que muestre el funcionamiento de la comunicación serial
por medio de Python.

En este sentido, la presente investigación está enfocada a la realización de una


metodología que pueda ser implementada y permita modificar las variables de
temperatura y ciclo de dureza de señale PWM.

5. Justificación

Actualmente vivimos en una sociedad donde la actividad educativa y comercial está


concentrada en generar y distribuir sistemas de control con base en una
comunicación con algunos dispositivos que se dé su fácil acceso y entendimiento,
información por la cual se utilizan diferentes formas de enviar y recibir datos, uno de
ellos es la comunicación serial.

La comunicación a través del puerto serie es utilizada con mucha frecuencia para
conectar el PC con otros dispositivos, como por ejemplo microcontroladores y con
base a esto se utilizara del sistema de programación Python ya que puede ser
soportado en todos los ordenadores y dispositivos, además de aprovechar la
interfaz software que es fácil de utilizar y amigable para quienes empiezan a
programar, para llevar a cabo una comunicación la cual se implementa para
modificación y control de temperatura en un cubículo y así aprovechar que en el
aspecto educativo es necesario brindar al estudiante entornos que motiven su
aprendizaje y que le permita fortalecer lo aprendido previamente además de
despertar curiosidad en lo que aún no se ha estudiado.

6. Objetivos

General

 Desarrollar una aplicación analógica-digital de un sistema de control de


temperatura por medio de Python.

Específicos

 Realizar el montaje analógico requerido y la programación en lenguaje C del


micro controlador además de la comunicación serial con Python.

 Garantizar la transmisión de datos Pc-Microcontrolador vía comunicación


serial por medio de Python

 Precisar la funcionalidad, la interacción con el usuario y en general los


detalles de la aplicación que se va a desarrollar mediante Python por
comunicación serial.

7. Metodología

Inicialmente se llevó acabo la búsqueda bibliográfica sobre Python y las


características que podrían ser útiles para la elaboración del sistema por
comunicación serial con el microcontrolador para el sistema de control de
temperatura.
Se instalaran los drivers o algunas librerías correspondientes de los protocolos de
comunicación serial los cuales tiene que tener el programa Python para poder
utilizar su comunicación serial y realizar pruebas de la misma con el fin de descartar
cualquier improvisto que pueda interferir con una buena adquisición de datos.
Se introducirá como metodología de diseño el método top-down, haciendo énfasis
en la relación entre los diferentes niveles de abstracción existentes en el diseño
lógico, jerarquía y modularidad del lenguaje con la interacción del micro controlador.

8. Cronograma de actividades

El siguiente es el cronograma de actividades propuesto para el desarrollo del


proyecto. Las actividades de las semanas restantes del semestre serán
determinadas de acuerdo a las necesidades que vayan surgiendo en el transcurso
de la elaboración del proyecto.

Semanas 1 2 3 4 5 6 7 8 9 10

Realización de la Propuesta

Revisión Bibliográfica

Revisión de los avances

Revisión practica de los parámetros

Diseño de metodología

Evaluación del código implementado


tanto en CodeWarrior y en PyCharm

Exposición

9. Resultados
Los materiales o herramientas que se utilizaron en este proyecto fueron a
continuación:
 Microcontrolador JM60
 Programa CodeWarrior (freescale)
 Programa Python 3.5
 Librería pySerial
 Librería time (No hay necesidad de instalar la librería time ya que ésta forma
parte de las librerías que vienen por defecto al instalar Python pero esta tiene
que ser importada)
Donde Python es un lenguaje interpretado, quiere decir que no tiene que compilar
el código en su totalidad. Esto permite que Python sea un lenguaje de programación
multiplaforma al poder ejecutarse en cualquier sistema operativo
independientemente del hardware que éste utilice el procedimiento que se siguió
fue el siguiente:
Se comenzó con un programa sencillo en codewarrior algo como encender un led
si se activa la interrupción de comunicación serial, luego se condiciono que si
entrara cierto sitring por medio de la comunicación serial después de la interrupción
se encendiera el led, para dicho proceso tan sencillo se procedió a utilizar el
programa PyCharm el cual es un IDE o entorno de desarrollo integrado
multiplataforma utilizado para desarrollar en el lenguaje de programación
Python este proporciona análisis de código, depuración gráfica, integración
con VCS / DVCS y soporte para el desarrollo web con Django, entre otras
bondades, en este caso se utilizó la versión Community que es gratuita y
orientada a la educación y al desarrollo puro en Python.
Figura 5. Inicialización de la comunicación serial mediante PyCharm (parte 1).

Como se observa en la figura 5 se inició importando las librerías necesarias, las


cuales fueron utilizadas en el código luego se utilizó la librería serial para
programarla como iba a funcionar, por donde (COM10 en nuestro caso) y a qué
velocidad va a trasmitir los datos (9600 baudios) la cual tiene que ser a la misma
que el microcontrolador y/o codewarrior. En este caso no se utilizó la librería time
pero en el segundo procedimiento el cual se trata también de recibir un dato la
librería time llega hacer importada para que le dé un tiempo de espera al dato que
envía el micro para que PyCharm lo reciba y pueda este ser leído.

En el código que se muestra en la figura 6 se llegó a implementar él envió del dato


por comunicación serial para el microcontrolador y el dato que PyCharm debe estar
recibiendo ya que después de haber enviado el dato por serial en PyCharm el
microcontrolador debe encender el led y responder con un envió de cierta variable
o constante.
Figura 6. Comunicación serial mediante PyCharm (parte 2).

10. Análisis y discusión de resultados


Inicialmente no se obtuvo comunicación ya que se estaba utilizando un COMX el
cual no correspondía al utilizado en el momento entonces se realizó una búsqueda
bibliográfica sobre la librería serial, observando que tiene algunas utilidades que
simplifican el trabajo con los puertos serie. Para nuestro caso con el sistema
Windows se puede explorar, en el administrador de dispositivos, la lista de puertos
COM y LPT donde mostrará el nombre del dispositivo y el nombre del puerto a
utilizar en la comunicación serial (COM10, en este caso).

Para acceder a la comunicación serial se inicia llamando a la función serial.Serial()


es decir, sin parámetros de configuración, posteriormente se podrá configurar
asignándole la configuración a la instancia que se ha creado.
Para asignar el número de puerto se usa puerto.port=10, para asignar la velocidad
(en baudios) se utiliza puerto.baudrate=9600, puerto.timeout=2 para el tiempo de
espera y así sucesivamente. Esto tiene varias formas de ser implementado se
empezó con argumentos en la función serial.serial(), luego se tuvo en cuenta estos
que se están mencionando y por último se decidió por el que parecía más simple y
ayudaba a tener en cuenta de que se trataba dicha función.

La configuración por defecto corresponde a una velocidad de 9600 baudios, 8 bits


de datos, sin paridad y con un bit de parada lo que es bastante común que suele
expresarse como 9600, 8, N, 1 o 9600_8N1 como argumento de la función
serial.Serial().

En el envío y recepción de dato se tenía un problema el cual trataba de enviar la


información en tipo bytes y recibirla en tipo string para poder así ser manipulados
por el código de CodeWarrior y ser mostrada (tipo string) en PyCharm lo cual se
llegó a solucionar con una breve investigación bibliográfica respecto al envío y
recepción de datos por vía comunicación serial.

En el momento de tener una comunicación serial segura se procede al control de


temperatura del cubículo de acrílico en el cual la velocidad que se modifica del
cooler por medio de la señal PWM, esta puede llegar hacer modificada mediante
comunicación serial por PyCharm (Python) variando el Dutty y/o la frecuencia de la
señal variando así el tiempo de llegar a estabilizar el interior del cubículo siendo este
setPoint sobre pasado y puede llegar a variar el setPoint de temperatura.

Dicho sistema de control será útil para dar a conocer a estudiantes que inician su
proceso de aprendizaje en la programación orientada a objetos una herramienta útil,
ya que Python provee una fácil y poderosa estructura de soporte para diferentes
tipos de programas porque tiene tipos de datos de alto nivel incorporados, además
minimiza la cantidad de caracteres como llaves comillas entre otros que son
necesarios en el lenguaje C, con la ventaja de realizar más acciones con poco
código y no requiere compilación.
10. Conclusiones
 El sistema de control realimentado desarrollado en este proyecto integrativo
de semestre permite que el usuario tenga total control sobre las condiciones
bajo las cuales opera el sistema y se provechó el lenguaje de programación
Python para realizar una comunicación serial adecuada con el micro
controlador JM60.

 La elección de la temperatura como variable a controlar se hizo con la


intención de hacer cotidiano y comprensible el sistema, de manera que los
estudiantes puedan interpretar asertivamente y modificar los valores de
velocidad de cooler la cual será ingresada por medio de la interfaz de python.

11. Bibliografía

[1]-Conceptos de control automático industrial


http://sapiensman.com/control_automatico/ (Fecha de consulta Abril 7 de 2016)

[2]-El tutorial de Python Autor original: Guido van Rossum


http://docs.python.org.ar/tutorial/pdfs/TutorialPython2.pdf (Fecha de consulta Abril 7
de 2016)

[3]-Paython como primer lenguaje de programación


http://rubenmauricio.com/programacion/python-como-primer-lenguaje-de-
programacion/ (Fecha de consulta Abril 5 de 2016)

[4]-Que es Python, Realizado por: Miguel Ángel Alvares


http://www.desarrolloweb.com/articulos/1325.php (Fecha de consulta Abril 5 de
2016)

[5]- Modulo pySerial: Uno de los Autores: Ing. Roberto Delgado


https://pyserialuvg.wikispaces.com/M%C3%B3dulo+pySerial (Fecha de consulta
Abril 7 del 2016)

[6]- Taller: Comunicaciones seriales con Arduino y python; Autor: Eden de


Hackerspace https://www.youtube.com/watch?v=KeAN6b02dMw (Fecha de
consulta Abril 7 del 2016)

[7]- Comunicación serial: Conceptos Generales: Autor: National Instruments


http://digital.ni.com/public.nsf/allkb/039001258CEF8FB686256E0F005888D1
(Fecha de consulta Abril 6 del 2016)