informe de trabajo final - unsl - fica · permiten la captura de datos sino también su...
TRANSCRIPT
Universidad Nacional de San Luis
Facultad de Ingeniería y Ciencias Agropecuarias
Informe de Trabajo Final
Desarrollo e implementación de dispositivo
de medición y almacenamiento digital
Autor JAVIER RODRIGO RABBIA
Carrera INGENIERIA ELECTRONICA
Director
Ing. JAVIER ALEJANRO CARLETTO
Co-Director
Ing. GUILLERMO OMAR LARREGAY
VILLA MERCEDES- SAN LUIS- ARGENTINA 2015
RESUMEN
En la actualidad, todos los registros de cada Grupo Turbo-Generador (TG),
de las Centrales Generadoras de Energía Eléctrica de General Levalle y de San
Francisco pertenecientes a la Empresa Provincial de Energía de Córdoba, es
realizado en forma manual. Dicho registro, se refiere a la lectura de las
condiciones de operación y de generación que es llevado a cabo por sus
operadores y/o a la búsqueda de fallas ocasionadas por el funcionamiento,
realizados por los encargados del mantenimiento eléctrico de las mismas. Para
facilitar esta tarea, como así también modernizarla y hacerla más eficiente se
decide la implementación de un dispositivo de medición y almacenamiento digital
que permita tener un registro de manera cronológica de los valores o estados de
las distintas variables que se encuentran presentes en el control electrónico del
TG.
En este trabajo se presenta el desarrollo e implementación de una plataforma
portable y autónoma que brinda la posibilidad de medir y almacenar en una tarjeta
de memoria los valores de distintas variables eléctricas en cada instante de
tiempo. Una vez capturadas estas mediciones, se envían a una PC mediante un
software de comunicaciones desarrollado para ese fin, que brinda la posibilidad de
exportar los datos para visualizarlos y manipularlos en software específico.
El usuario del sistema es aquel que lo aplica en una actividad específica para
la adquisición de datos y su almacenamiento en una tarjeta Secure Digital (SD) en
forma de archivo de texto (con extensión *.txt). Por lo tanto, su contenido, podrá
ser visualizado desde cualquier ordenador.
Agradezco profundamente a las siguientes personas.
Sin ellas, este trabajo no hubiera sido posible.
… A Dios nuestro divino creador que siempre me ha llevado de la mano y
me ha permitido tener para cosechar, así como también la oportunidad de
acumular las experiencias que han servido de base para la realización de
este proyecto que realice llenándome de alegría y motivación…
A Teresita y Jorge, mis padres, y Lucrecia, mi hermana, por estar
siempre conmigo cuando los necesité, por apoyarme incondicionalmente
en todo lo que me propuse y por ser una fuente de inspiración día tras día.
A quienes dedico este trabajo por apoyarme y tener su confianza de que
lograría alcanzar este momento, por todos sus cuidados y consejos a lo
largo de mi vida.
A Begoña, mi querida esposa, por su paciencia, comprensión, y sobre
todo, por estar a mi lado incluso en los momentos más pesados de mi
carrera. También te dedico este trabajo en agradecimiento por
acompañarme en todos mis desvelos y momentos de preocupación,
apoyarme y alentarme a seguir adelante.
A mis abuelos, Dominga, Juana y Rafael, por guiarme y
acompañarme, desde mis primeros días de vida, hasta hoy.
A Sergio, Gastón y Nazareno, amigos inseparables, y Hugo, mi
amigo y cuñado, por su amistad y su ayuda desinteresada en todo
momento, a pesar de la distancia.
A mis amigos y compañeros de la carrera, por la compañía y los
buenos momentos vividos, que hicieron que la vida universitaria fuera
más liviana.
Por último, y no por eso menos importante, a aquellos docentes de la
Facultad de Ingeniería y Ciencias Agropecuarias que durante mi carrera
me formaron para ser un buen profesional y sobre todo una mejor
persona.
A los que quedaron en el tintero, no por mala intención, sino por
mala memoria.
A todos, muchas gracias.
Javier
I
Índice General
1. Introducción ……………..……………………………………………….…………............. 1
1.1 Antecedentes …………………………………………...………………..………. 1
1.2 Descripción del problema …………………………………………………...... 3
1.3 Planteamiento de la solución …………………………………………………. 4
1.4 Justificación …………………………………………………………………….... 5
1.5 Objetivos Generales ……………………………………………………………. 6
1.6 Objetivos Específicos ……………………………………………….................. 6
2. Central Generadora ……………………………………………………………………… 7
2.1. Lugar de implementación ………………………………………………….…. 7
2.1.1. Turbina …………...…………………………………………………... 8
2.1.2. Generador …………..……………………………………………… 11
2.1.3. Sistema de protección y control ……………………………….. 12
2.1.4. Chan Over …………..……………………………………………… 14
2.2. El control “SPEED-TRONIC” …………………………………………….. 15
2.2.1. Secuencia de control y arranque ……………………………… 17
II
2.2.2. Sensores de Velocidad ………..…………………………………. 18
2.2.3. Control de puesta en marcha ………………………………….... 19
2.2.4. Sistema de control de velocidad ………………………………. 22
2.2.5. Sistema de control de aceleración …………………………….. 23
2.2.6. Sistema de control de temperatura ……...…………………….. 24
2.3. Calibración sistema de control …………..……………………………….... 25
3. Implementación …………………………………………………………………………... 27
3.1. Metodología de diseño …………………………………………………….... 27
3.2. Etapas básicas del proyecto ……………..………………………………….. 27
3.3. Diseño del hardware …………….…………………………………………… 28
3.3.1. Análisis de las señales ………………………………………….... 28
3.3.2. Diseño de la estructura básica del proyecto ……………….... 28
3.3.3. Hardware de adquisición y transmisión de datos …………. 29
3.3.3.1. ¿Qué es Arduino? y ¿Por qué Arduino? ................ 30
3.3.3.2. Arduino MEGA 2560 …………..……………………. 31
3.3.3.3. Módulo SD Arduino …………………………………. 33
3.3.3.4. Módulo RTC Arduino ………..……………………… 36
3.3.4. Hardware adaptador de señales ………………………………... 38
3.3.4.1. Entradas Digitales …………….………………………. 38
III
3.3.4.2. Entradas Analógicas ……………………….………… 40
3.3.4.3. Entradas de Frecuencia ……...………………………. 42
3.3.4.4. Fuente de Tensión ………..…………………………… 44
3.3.5. Diagrama de conexionado ………...……………………………. 45
3.3.6. Lista de Elementos ……………………………………………….. 46
3.4. Diseño del software …………….……………………………………………. 49
3.4.1. Arduino ……………………………………………………………... 49
3.4.1.1. Entradas Digitales …………………………………….. 52
3.4.1.2. Entradas Analógicas ……….………………………… 53
3.4.1.3. Entradas de Frecuencia …………………………….... 53
3.4.1.4. Almacenamiento en memoria ………..…………….. 54
3.4.1.5. Hora y fecha real ………..……………………………. 55
3.4.1.6. Comunicación serial ……….………………………… 56
3.4.2. Visual Basic ………….……………………………………………. 57
3.4.2.1. Interfaz ………………………………………………….. 59
3.4.2.2. Programación ………….………………………………. 61
3.5. Prueba del Dispositivo ………………………………………………………. 62
4. Manual de Usuario ………………………………………………………………………. 66
4.1. Partes del Dispositivo de Medición y Almacenamiento Digital ……. 66
IV
4.2. Ensamble del Dispositivo ………….……………………………………….. 67
4.3. Funcionamiento del Dispositivo …………………………………………... 68
4.4. Lectura de datos en PC …………...…………………………………………. 69
5. Conclusiones y Trabajos Futuros ……………………………………………………... 70
5.1. Conclusiones ………………………………………………………………..…. 70
5.2. Trabajos Futuros …………………………………………………………….... 72
6. Bibliografía ………………………………………………………………………………... 74
7. Anexo ………………...…………………………………………………………………….. 77
V
Índice de Figuras
Figura 2.1. Ilustración Grupo Turbo-Generador …………….………………………….. 9
Figura 2.2: Principio Control SPEED TRONIC …………………………………….... 13
Figura 2.3: Panel esquemático ……………………………………………………………. 16
Figura 2.4: Panel Speed-Tronic real …………………………………………………….. 17
Figura 2.5: Secuencia Arranque y Control Mark II ………………………………..… 18
Figura 2.6: Secuencia de arranque ……………………………………………………….. 20
Figura 2.7: Secuencia típica de arranque ……………..………………………………… 22
Figura 2.8: Diagrama Control de Velocidad …………………………………………... 23
Figura 2.9: Circuito Control de Aceleración ………….……………………………….. 24
Figura 2.10: Control temperatura – potencial PCD …………………………………... 25
Figura 3.1: Diagrama en Bloque del proyecto ………………………………………… 29
Figura 3.2: Placa Arduino MEGA 2560 ……………..…………………………………. 31
Figura 3.3: Microcontrolador (µC) ATMEL ATMEGA2560 …………………...… 32
Figura 3.4: Módulo SD …………………………………………………………………….. 33
Figura 3.5: Conexión Arduino y Módulo SD ………………………………………….. 35
VI
Figura 3.6: Módulo RTC …………………………………………………………………... 36
Figura 3.7: Conexión Arduino MEGA2560 y Módulo RTC ………………………. 37
Figura 3.8: Esquema eléctrico de una entrada digital …………..……………………. 39
Figura 3.9: Distribución de componentes en PCB ……………………………………. 40
Figura 3.10: Esquema eléctrico de una entrada Analógica ……….………………… 42
Figura 3.11: Distribución de componentes en PCB ………………………………….. 42
Figura 3.12: Diagrama eléctrico entrada de Frecuencia …………………………….. 43
Figura 3.13: Diseño de PCB ………………..……………………………………………... 44
Figura 3.14: Diagrama eléctrico de la fuente de tensión ……………………............. 45
Figura 3.15: Diseño de PCB de la fuente de tensión …………..…………………….. 45
Figura 3.16: Diagrama de conexión del Hardware ………………………………….... 46
Figura 3.17: Entorno de programación …………………………………………………. 50
Figura 3.18: Entorno Visual Basic 2008 ……………...………………………………… 59
Figura 3.19: Pestaña datos digitales ……………………………………………………... 60
Figura 3.20: Pestaña de configuración ………………………………………………….. 60
Figura3.21: Valores entradas de Frecuencia ………………………………………...… 63
Figura 3.22: Valores entradas Analógicas …………………………………………...… 63
Figura 3.23: Curva de Velocidad % ................................................................................... 64
Figura 3.24: Curva de Temperatura …………….……………………………………….. 64
VII
Figura 3.25: Curva de VCE ……………………………………………………………….. 65
Figura 4.1: Dispositivo de medición y almacenamiento digital ………...…………. 66
Figura 4.2: Pestaña Visualización de datos ………….………………………………… 67
Figura 4.3: Pestaña de configuración ……………………………………………………. 67
Índice de Tablas
Tabla 3.1: Tabla de Componentes ……………………………………………………….. 49
Tabla 3.2: Conexión en el Control ………………………………………………………. 62
1
Capítulo 1
Introducción
1.1. Antecedentes
En la actualidad es cada vez más frecuente el uso de equipos registradores
de datos para la supervisión de variables; ya sean físicas, ambientales, etc. a partir
de su conversión a señal eléctrica con la utilización de los sensores adecuados, o
como en este caso proveniente directamente del control electrónico de una
determinada máquina. Esta supervisión tiene como fin almacenar el valor de las
variables a lo largo de un periodo y así analizar su comportamiento, y/o predecir
posible comportamiento. Por tales motivos, en la actualidad existen un gran
número de dispositivos que realizan estas funciones a costos elevados.
Muchos equipos comerciales modernos (conocidos como Datalogger -
Registradores de Datos) ofrecen una gran capacidad de captura y almacenamiento
de datos, como así también múltiples canales de entradas que permiten tener una
amplia capacidad en almacenamiento de variables eléctricas. Además, no solo
permiten la captura de datos sino también su procesamiento, dando la posibilidad
de obtener tablas, gráficos y archivos para poder, posteriormente, manipular y
analizar los valores y/o estados de las variables.
2
En todos aquellos ámbitos en los que se deban realizar tomas de larga
duración de parámetros de medición, sin la necesidad de contar con personal de
control con una presencia continua en el lugar de la medición, se emplean
Datalogger (Tesis “Diseño y Construcción de un Instrumento electrónico para
cuantificar magnitudes físicas”, 2011). En particular en pruebas de campo, en el
transporte, en las industrias, para el análisis de error de sistemas, en el estudio de
calidad, en investigación y desarrollo; lo que lo convierte, en un dispositivo con
amplio campo de aplicación y extensión.
A tales motivos, se le atribuye la importancia adquirida de estos
dispositivos, como así también su gran desarrollo y precio elevados. Este último,
llevan a buscar una solución alternativa con el diseño e implementación de un
nuevo dispositivo de medición y almacenamiento digital.
En su mayoría, los dispositivos de medición y almacenamiento digital se
encuentra compuesto por un procesador programable, una memoria no volátil para
el almacenamiento de los datos, puertos de comunicación y de uno o varios
canales de entrada para la conexión de diferentes transductores, como así, en los
denominados de alta gama, una interfaz donde el usuario puede configurar y
visualizar los datos capturados. A su vez suelen tener un abastecimiento propio de
energía como una batería o acumulador.
Los canales de entradas permiten adaptar la magnitud de las señales de
entrada para ser procesadas. Para esto se usan adaptadores de nivel de tensión
(para señales digitales), convertidores analógicos digitales (ADC), para señales
analógicas, entre otros. En cuanto a los puertos de comunicación, se los utiliza
3
para configurar el funcionamiento del equipo y para enviar los datos capturados
hacia la PC con el fin de poder visualizarlos y manipularlos en un software.
1.2. Descripción del problema
Durante el funcionamiento de algunas máquinas complejas, como un Grupo
Turbo-Generador, existe la posibilidad de ocasionarse fallas, cuyos puntos de
origen pueden resultar difíciles de detectar y por lo tanto, de encontrar una
solución. Para facilitar la búsqueda de la solución de este tipo de fallas se utilizan
Datalogger que permitan conocer los cambios de estados de las señales del control
electrónico en forma cronológica y al analizarlos, reconocer los puntos de origen
del problema, y posteriormente aislarlo y solucionarlo.
Este tipo de problema se presentó en un Grupo Turbo-Generador de la
Central Generadora General Levalle (Córdoba) perteneciente a la Empresa
Provincial de Energía de Córdoba (E.P.E.C.). La falla presente en dicho grupo,
originaba el bloqueo de la TG en condiciones aleatorias de funcionamiento sin
señalización de falla, de manera que su detección y solución resultaba compleja.
Al analizar el comportamiento de la TG al momento de ocasionarse el
bloqueo, se definieron posibles causas y se implementaron soluciones sin tener
respuesta favorable en la solución del problema, de manera que se decidió recurrir
a la utilización de un registrador de eventos utilizado en el Sector de
Comunicaciones de la E.P.E.C. Este dispositivo permitió conocer el cambio
temporal de las señales del control electrónico de la TG y al analizarlo junto a los
planos eléctricos se logró aislar, detectar y solucionar el problema.
Debido a que el dispositivo utilizado no pertenece a la Central Generadora,
su manipulación y uso queda a cargo del personal de Comunicaciones de la
4
Empresa, se propone como Trabajo Final de la carrera de grado de Ingeniería
Electrónica, el diseño y la construcción de un instrumento electrónico para
almacenar el cambio de estado de señales digitales que además permita medir y
almacenar magnitudes eléctricas analógicas (tensión, corriente y frecuencia). Esto
quiere decir que el dispositivo no solo permitirá detectar el cambio de estados,
cronológicamente, de las señales digitales del control sino que también
almacenará el valor de señales analógicas que permitan conocer y registrar el
funcionamiento de la TG.
Esta propuesta permite observar, almacenar y analizar el comportamiento de
las señales eléctricas (analógicas y digitales) del control de un Grupo Turbo-
Generador, de manera que permita la solución de problemas, como así también
una buena calibración y, por lo tanto, lograr un mejor funcionamiento del equipo.
Las variables a medir y optimizar son: el consumo de combustible, los tiempos y
torques de arranque, las temperaturas alcanzadas durante el arranque y
funcionamiento nominal, entre otras.
1.3. Planteamiento de la solución
Como es amplia la variedad de Datalogger y disponibilidades a fin en el
mercado, se debe realizar una delimitación del problema donde se adapte el
dispositivo a desarrollar, a las necesidades planteadas en el punto anterior.
Para empezar se necesita que sea capaz de capturar estados lógicos digitales
y valores de tensión y de frecuencia de señales analógicas. Estos valores se deben
almacenar en una memoria no volátil junto con la fecha y hora real de captura de
cada uno para dar un orden cronológico de los eventos. Además se necesita
desarrollar un software que permita cargar los datos que se encuentran en
5
memoria y poder visualizarlos en tablas y manipularlos, con lo cual se necesita
una comunicación rápida y confiable entre dispositivo y PC.
En cuanto a las señales digitales, se tienen tres niveles de tensión posibles a
medir (5Vcc, 12Vcc y 28Vcc), por lo tanto, se debe desarrollar un circuito
electrónico que permita convertir los niveles de tensión presentes en las señales
digitales a los niveles de tensión aceptables en las entradas digitales del
procesador. Las señales analógicas, posee una amplitud que varía entre ± 10Vcc, y
se necesita que el circuito adapte la señal a los niveles admisibles en el
convertidor analógico-digital del procesador. Por último, la frecuencia de las
señales alternas oscilan entre 0 y 10kHz pero con una tensión variable, lo cual
hace necesario un circuito que transforme dicha señal alterna en un tren de pulsos
de igual frecuencia y nivel de tensión fijo, para poder realizar la medición.
Estas señales, tras ser acondicionadas, deben ingresar a un procesador que
captura y almacena los valores en memoria y gestiona la comunicación con la PC
en el momento que se requiere.
1.4. Justificación
El presente trabajo está justificado por la necesidad de conocer con mayor
exactitud el comportamiento de las principales variables de funcionamiento del
Grupo Turbo-Generador, con el fin de mejorar y optimizar al máximo su
funcionamiento. Además considerando, el elevado costo de los Datalogger
comerciales, se propone el diseño y construcción de un dispositivo confiable y a
bajo costo.
Entre los impactos que se espera de este proyecto, se puede nombre como
uno de los más importantes, lograr el mejor funcionamiento del Turbo-Generador
6
y a su vez disminuir al mínimo el consumo de combustible y las temperaturas de
funcionamiento. Además, se espera que se convierta en una herramienta de gran
importancia en la localización y solución de fallas disminuyendo las pérdidas que
éstas generan.
Otro aspecto no menos importante, es lograr un impacto positivo en la
Empresa ya que se pretende que el proyecto quede abierto para que en un futuro
pueda ser adaptado e implementado en otros Grupos Generadores y/o equipos
existentes en toda la cadena del Sistema de Energía Eléctrica.
1.5. Objetivos Generales
Diseñar y construir un instrumento electrónico para cuantificar magnitudes
eléctricas analógicas (tensión, corriente y frecuencia), y almacenar el cambio de
estado de señales digitales.
1.6. Objetivos Específicos
Permitir un funcionamiento autónomo, durante el tiempo necesario, sin
intervención del operador.
Permitir la conexión con una PC y el monitoreo desde la misma de los
datos capturados en tiempo real.
Almacenar los datos en un dispositivo extraíble estándar, para permitir la
lectura de los datos desde cualquier lugar.
7
Capítulo 2
Central Generadora
2.1. Lugar de implementación
En las Centrales Generadores de General Levalle y de San Francisco ambas
pertenecientes a E.P.E.C., nace la necesidad de poder mejorar la etapa de
calibración periódica, del control de tres TG, permitiendo aproximar aun mas los
valores y condiciones de funcionamiento a los especificados en los manuales de
fábrica. Además, la de brindar una herramienta que permita solucionar problemas
de manera más rápida y ágil. Dichas necesidades impulsaron el desarrollo e
implementación de un dispositivo de medición y almacenamiento digital.
La Central Generadora de General Levalle, ubicada en km 540 Ruta
Nacional Nº 7 en la localidad de General Levalle, provincia de Córdoba, fue el
lugar principal de desarrollo del presente trabajo junto con el Laboratorio de
Mecatrónica de la Facultad de Ingeniería y Ciencias Agropecuarias de la
Universidad Nacional de San Luis (FICA-UNSL). Dicha central pertenece a las
20 centrales generadoras de energía eléctrica pertenecientes a la E.P.E.C.,
organismo encargado de generar y proveer energía al Sistema Interconectado
Provincial (S.I.P.) como así también de la comercialización de energía a otras
empresas encargadas de distribuirla a los usuarios. (Ver Anexo 3).
8
Esta central está compuesta por dos Grupos Turbo-Generadores a gas, los
cuales se denominan TG 1 y TG 2 (TG: Turbo-Gas). Según Manual de Servicio
TG (JB 1980), cada Turbo-Generador se encuentra compuesto por tres paquetes
principales: el paquete de turbina marca JOHN BROWN ENGINEERING, el
paquete del generador marca BRUSH y el del sistema de protección y control, de
GENERAL ELECTRIC. Cada una de las partes será detallada a continuación.
2.1.1. Turbina
La planta de fuerza de cada Grupo Turbo-Generador es una turbina de gas
de combustión independiente, compacta, que provee fuerza motriz industrial
confiable y de bajo costo. Dicha turbina permite la generación de energía
mecánica rotacional, con la utilización de aire caliente a compresión, que luego
será aprovechada por el generador para convertirla en energía eléctrica. Este tipo
de generación, es considerada como “Generación Térmica” ya que su
funcionamiento se basa en la compresión de aire atmosférico con su posterior
elevación de temperatura para aumentar su presión y así provocar el giro de la
turbina y el correspondiente compresor de aire. (Manual de Servicio TG, JB 1980)
La turbina de gas de único árbol y ciclo simple, modelo “P”, comprende los
siguientes componentes principales: compresor de flujo axial, sistema de
aprovisionamiento de combustible y combustión, y turbina, además de varios
sistemas auxiliares entre los que se pueden nombrar bomba de aceite mecánica,
bomba de aceite auxiliar, caja reductora, escape, sistema de refrigeración, etc. En
la figura 2.1, se puede observar una ilustración de la Turbo-Gas. (Ver Anexo 3).
9
Figura 2.1: Ilustración Grupo Turbo-Generador.
El aire atmosférico es dirigido hacia el compresor axial, donde pasa a través
de múltiples etapas de compresión (16 etapas de alabes) y se descarga en las
cámaras de combustión, y posteriormente en la turbina (de 2 etapas de alabes).
Mientras el aire pasa a través de la cámara de combustión, se calienta para
alcanzar la temperatura requerida de entrada de la turbina, por medio del
combustible que se quema en esta cámara. Dicho combustible es suministrado
por el Sistema de Combustible de la Central. El gas resultante de alta temperatura,
se expande luego en la turbina que maneja el compresor axial y el equipo de
carga. Luego de pasar por la turbina, el gas sale por el escape a la atmosfera.
La Turbo-Gas se arranca para el funcionamiento, con la utilización de un
equipo de arranque por un lapso de aproximadamente 3 minutos. Cuando alcanza
aproximadamente el 20% de la velocidad de régimen (cerca de 1000 RPM), las
bujía encienden la mezcla del combustible/aire en la cámara de combustión. La
10
misma se autosustenta y la ignición se mantiene solo por un periodo de tiempo
muy breve (1 min.). El equipo de arranque asiste a la unidad hasta la velocidad de
autosustentación (cerca de 3000 RPM) y en dicho momento se desacopla. La
unidad acelera hasta la velocidad de operación del regulador automático de
control y está disponible para la carga a las 5105 R.P.M. La dirección de la
rotación del compresor y la turbina, es de sentido contrario a las agujas del reloj,
si se observa desde el extremo de la entrada. (Manual de Servicio TG, JB 1980).
Se utiliza una combinación del motor diésel – conversor de torsión, para el
arranque. Esto otorga un “arranque negro” puesto que no requiere de fuente
externa de energía pudiendo arrancar con cero tensión de línea. Dicho motor
diésel es de doce cilindros, dos tiempos, con una velocidad de 2300 R.P.M. Posee
una potencia de 500HP y se encuentra colocado en uno de los extremos del grupo
Turbo-Gas. (Manual de Servicio TG, JB 1980).
Un sistema de control electrónico de estado sólido, controla todos los
parámetros de operación y da indicación visual del estado de la turbina a lo largo
de todas las etapas de operación. Se provee una protección mecánica de
sobrevelocidad, por medio de un perno de velocidad excesiva.
Un sistema de lubricación centralizado, provee aceite fresco, limpio y
presurizado a la unidad, y los requerimientos de disipación de calor se satisfacen
mediante disposiciones de refrigeración por agua. Para el enfriamiento de la
carcasa y rueda de la turbina, se insufla aire del compresor; este aire también sella
los laberintos de cojinetes para maximizar la vida de las partes. Se incorporan
varios ítems controlados hidráulicamente, en el diseño y estos están atendidos por
un sistema hidráulico de aceite.
11
2.1.2. Generador
El paquete del generador tiene la misma apariencia general que el paquete
de la turbina. Contiene la caja de cambios de carga, el generador, su equipo de
excitación y sus sistemas auxiliares. Como se dijo anteriormente, el generador fue
construido por la empresa BRUSH, y permite tomar la energía mecánica
entregada por la turbina, produciendo el giro del rotor del generador y
transformando la energía mecánica en eléctrica.
El generador está encerrado y utiliza un sistema de aire/agua para
enfriamiento medio. Posee un campo rotativo, guiado por la turbina, y una
armadura fija. La parte rotativa está sustentada por dos cojinetes simples
presurizados. Además incluye detectores de temperatura en los devanados de la
armadura, en los pasajes de aire y en los arrollamientos.
Manual de Servicio TG, JB 1980; este generador está diseñado para
generar energía eléctrica a una frecuencia de 50Hz, por lo que necesita que el
rotor gire a una velocidad de 3000 R.P.M., y es capaz de entregar una potencia
de salida a plena carga de 28000kVA a una tensión de 13,2kV y corriente de
1,225kA. (Ver Anexo 3).
Esos 28MVA de potencia pueden ser distribuidos en potencia activa o
reactiva según el consumo existente en la línea en cada momento. Para esto posee
un elemento denominado excitatriz, que es un pequeño generador también marca
BRUSH, controlado por 125 V, encargado de controlar el campo magnético en el
rotor del generador y por lo tanto, las condiciones de generación. Este elemento
también permite regular la tensión de generación, ya que con una sobreexcitación
se puede lograr una mayor tensión, necesaria en ciertas condiciones de línea.
12
Esta energía es entregada a la playa de transformadores donde se eleva la
tensión a un valor de 66kV para ser transportada. Esta conexión entre el generador
y el trasformador se realiza mediante un interruptor de máquina marca EFACEC
Divac 1731H. Dicho interruptor posee una tensión Ur de 17.5kV y corriente Ir de
3,15kA, cuyas características soportan las condiciones de generación. En cuanto al
interruptor de línea, que conecta la salida del transformador a la línea de 66kV,
marca ASEA es de pequeño volumen de aceite tipo HLC 72.5 y 84 kV, 1600A
con mecanismos de accionamiento BLG 104.
2.1.3. Sistema de protección y control
Cada turbina trabaja por separado y poseen su propio sistema de protección
y control, el cual se denomina SPEED-TRONIC (Mark II). El manual del Sistema
de Protección y Control, Capime; define a este sistema como un sistema de
control electrónico digital y analógico de estado sólido que provee las señales
analógicas y digitales necesarias para controlar y proteger las operaciones del
Grupo Turbo-Generador. (Ver Anexo 3).
Las condiciones de operación de la turbina son detectadas y utilizadas como
señales de realimentación del control, que está dividido en tres subsistemas
principales: Arranque, Velocidad y Temperatura, que pueden ser activados
durante la operación de la turbina y sus salidas están conectadas a una Compuerta
de Valor Mínimo (actúa como llave selectora de bajo voltaje) a través de la cual se
conecta a la línea del Control Electrónico de Voltaje (VCE) para el control del
Combustible. En la figura 2.2, se observa el esquemático de los tres tipos de
control y del significado del control del combustible en relación a la señal de
comando de combustible. Hay sensores que detectan la velocidad, temperatura y
13
presión de descarga del compresor de la turbina para determinar las condiciones
de operación de la unidad. Cuando es necesario para el control de la turbina alterar
las condiciones de operación en razón de cambios en la carga o condiciones
ambientales, se lo logra modulando el flujo de combustible a la turbina a través de
la señal de voltaje VCE.
La salida con tensión más baja, de los amplificadores de entrada pasa la
compuerta hacia el sistema de control de combustible como control del voltaje de
VCE. El control Electrónico de Voltaje es la señal de comando para el
combustible, regulando la entrada de combustible a la turbina en la cantidad
requerida por el sistema que está bajo control, y que se encuentra señalizado en el
panel frontal de control. El cambio entre los módulos de control de velocidad,
temperatura y arranque tiene lugar sin discontinuidad.
Figura 2.2: Principio Control SPEED TRONIC.
Los sistemas de protección se utilizan para prevenir condiciones anormales
que podrían dañar a la turbina. Los parámetros críticos de operación controlados
por el sistema de protección son: temperatura, velocidad, vibración y llama. Se
14
proveen sistemas de sobretemperatura y sobrevelocidad como sistemas
independientes de respaldo a los sistemas de temperatura, control y velocidad. La
detección y protección de vibración es activada cuando la amplitud de la vibración
de la turbina alcanza el límite preseleccionado. La detección de la llama y el
sistema de protección es activado si no se produce la llama durante el arranque, o
si la misma se pierde durante la operación. Cada sistema de protección tiene
canales redundantes de operación ya que cada uno opera independientemente y
produce el desenganche de la unidad si su señal corresponde a una condición de
desenganche.
2.1.4. Chan Over
Otro de los sistemas importantes del Grupo Turbo-Generador es el sistema
de alimentación eléctrica, denominado “CHAN OVER”. Este sistema entrega una
tensión trifásica de 380V que es utilizada para toda la etapa de potencia (como
bombas de aceite, ventiladores, bombas de agua, etc.) y también para la parte de
control, donde se distribuye en una tensión de 125Vcc para el banco de batería,
±12V y 5V para el panel del control y 28V para las tensiones de campo.
Este sistema consiste de tres contactores de potencia destinados a
seleccionar la fuente de energía eléctrica necesaria según el estado del Grupo
Turbo-Generador. Esto quiere decir que mientras la TG se encuentra detenida o en
una velocidad inferior a la de régimen, la energía eléctrica es tomada directamente
de la línea de transmisión. Mientras que una vez alcanzada la velocidad de
régimen, donde comienza la generación, realiza la conmutación a la etapa de
autosustentación donde toma energía del propio Generador (tensión 13,2kV) y
15
con un transformador se obtiene los 380V necesarios (llamado Transformador de
Servicios Auxiliares).
2.2. El control “SPEED-TRONIC”
El control Speed-Tronic (Ver panel esquemático en figura 2.3 y panel real
en la figura 2.4.), está conformado por un total de 156 tarjetas electrónicas,
interconectadas entre sí según las necesidades del circuito electrónico. Cada una
de ellas tiene definidas sus funciones según el tipo, algunas son de uso particular
como las de control de combustible, control de arranque, control de temperaturas,
mientras que otras son de uso general como compuertas, temporizadores, etc.
(Manual de Servicio TG, JB 1980).
16
Figura 2.3: Panel esquemático
17
Figura 2.4: Panel Speed-Tronic real.
2.2.1. Secuencia de control y arranque
El arranque de la turbina a gas requiere una secuencia correcta de señales de
comando a los accesorios, dispositivos de arranque y sistema de control de
combustible de la turbina. Siendo que un arranque seguro y exitoso depende del
funcionamiento correcto de casi todo el equipo de la turbina a gas, es importante
verificar la secuencia de los dispositivos seleccionados. (Manual Sistema de
Protección y Control, Capime).
Muchos de los circuitos lógicos de control están asociados no solo con los
dispositivos de control actuantes, sino que también en circuitos de protección
obteniendo condiciones permisivas antes de una operación. En la figura 2.5, se
18
puede observar un diagrama de bloque de todos los circuitos que tienen relación
con el control del arranque.
Figura 2.5: Secuencia Arranque y Control Mark II
2.2.2. Sensores de Velocidad
Sistema de Protección y Control, Capime; “una parte importante de la
secuencia de arranque de la turbina es el correcto registro de la velocidad”. Esto
es necesario para la secuencia lógica en el arranque y también para la detención de
19
la turbina. Para el registro de velocidad se utilizan los siguientes cuatro relés de
velocidad: 14HR relé de velocidad cero, 14HM relé de mínima velocidad, 14HA
relé de aceleración y 14HS relé de alta velocidad.
El relé de velocidad cero (14HR) provee una señal cuando el eje de la
turbina comienza a rotar. Si la velocidad está por debajo del parámetro 14HR, la
lógica permisiva inicia el acoplamiento del embrague y la secuencia de arranque
de la turbina. Durante el ciclo de parada, este relé provee la señal para permitir
que el dispositivo de girado sea puesto en servicio en la secuencia lógica de
enfriamiento de la turbina. En cuanto al relé 14HM, indica que la turbina ha
alcanzado su velocidad mínima de encendido e inicia la purga previa al
encendido. La caída de dicho relé, provee varias funciones permisivas para un
nuevo encendido de la turbina a gas luego de una detención.
La activación del relé de aceleración, indica que la turbina ha alcanzado
aproximadamente 40% del ciclo de aceleración. La entrada del relé de alta
velocidad 14HS indica que se alcanzó la velocidad de operación y que la
secuencia de aceleración ha sido completada. Con esta señal son actuados los
alabes guías variables y la purga del compresor. La salida del relé 14HS, en una
detención normal, se produce aproximadamente al 75% de la velocidad (3800
R.P.M.) llevando VCE a cero, cerrando los alabes guías variables y abriendo las
válvulas de purga del compresor. (Manual Sistema de Protección y Control,
Capime).
2.2.3. Control de puesta en marcha
El control de puesta en marcha consiste en la regulación de VCE según
niveles preestablecidos en la tarjeta denominada SSKC del control SPEED
20
TRONIC y así generar las señales de comando de combustible para la secuencia.
Sistema de Protección y Control, Capime; “Los niveles regulados son FUEGO,
CALENTAMIENTO y LIMITE DE ACELERACION”. A su vez, pueden intervenir
las tarjetas de los controles independientes de manera que durante la secuencia de
arranque los incrementos de velocidad y temperatura de escape sean limitados por
sus circuitos independientes de control, para proteger las partes de la turbina de
excesivas tensiones mecánicas y térmicas. En la figura 2.6, se puede observar un
diagrama en bloque de los circuitos de arranque.
Figura 2.6: Secuencia de arranque.
Mientras la turbina está detenida se efectúan verificaciones electrónicas de
las válvulas de relación parada/velocidad, válvulas de control de gas, accesorios y
provisión de voltaje. Una luz encendida en el panel “CHECK” indica que esos
sistemas están operativos y en correcto estado, girando el Selector de Operación al
modo requerido (“OFF”, “CRANK”, “FIRE” y “START”) se activa el circuito
seleccionado. Si todos los circuitos de protección y enganche de disparo están
21
activos, la luz “RELAY” se encenderá e indicara que el sistema acepta una señal
de arranque.
Cuando la llave principal de control se coloca en la posición “START”, se
da señal de arranque, para energizar el control principal, los circuitos de
protección (denominados circuitos 4, que permiten la presurización del sistema de
aceite de control y el enganche del embrague de arranque) y arrancan los circuitos
auxiliares necesarios. De esta manera el dispositivo de arranque comienza a girar
(Ver punto A de la figura 2.7). Durante esta etapa se da un ciclo temporizado de
purga que al finalizar permite que el combustible fluya, se fije un nivel de
encendido de VCE y se inicie el ciclo temporizado de encendido (Ver punto B,
figura 2.7).
Cuando el detector de llama indica que la llama ha sido establecida, en los
combustores, arranca el temporizado de calentamiento y la señal de comando de
combustible es fijada en el nivel “WARMUP” de VCE. Este tiempo de
calentamiento es fijado para minimizar las tensiones térmicas durante el arranque.
Una vez finalizada la temporización, el control de arranque incrementa
exponencialmente VCE hasta el límite de aceleración (Ver punto C, figura 2.7).
De esta manera, la turbina acelera hasta alcanzar su velocidad de régimen y
así pasar al punto D, donde se fija un valor mínimo de VCE para mantener esa
velocidad. Dicho valor de VCE luego es modificado para aumentar el torque de la
turbina, manteniendo la velocidad fija, y permitiendo comenzar con el ciclo de
generación incrementando carga.
22
Figura 2.7: Secuencia típica de arranque.
2.2.4. Sistema de control de velocidad
El sistema de control de velocidad está diseñado para controlar la velocidad
y la carga de la turbina, operando en respuesta a la señal real de velocidad de la
turbina y llamada por el punto regulado de velocidad. Mientras la turbina esta en
control de velocidad, la luz indicadora verde del panel estará energizada.
En la figura 2.8, se puede observar el diagrama en bloque del control de
velocidad en el que se puede ver que consiste de las tarjetas llamadas SHPB,
SFPB y SSZB en conjunto con el punto digital regulado.
23
Figura 2.8: Diagrama Control de Velocidad.
2.2.5. Sistema de control de aceleración
Incluido en el circuito de control de velocidad (tarjeta SSZB) hay otro
amplificador operacional que actúa para diferenciar la señal de velocidad. La
señal diferencial (aceleración) es comparada a una señal fija para regular VCE si
un rango de aceleración con pendiente del 1% por segundo es excedido. (Manual
Sistema de Protección y Control, Capime).
En la figura 2.9, se observa el circuito de aceleración que generalmente solo
actúa durante periodos del arranque, pero puede actuar en cualquier momento en
que el régimen de velocidad sea excedido.
24
Figura 2.9: Circuito Control de Aceleración.
2.2.6. Sistema de control de temperatura
Para operar dentro de los límites de diseño de tensiones térmicas de las
partes de la turbina, hay temperaturas máximas permisibles que no deberán ser
excedidas. Por lo tanto, es necesario tener un sistema de control de temperatura
que controle el flujo de combustible cuando la temperatura de operación ha
alcanzado los límites de diseño. Dentro de la turbina a gas, la temperatura más alta
se encuentra en las cámaras de combustión y en la entrada a la turbina, por lo
tanto es esta la que debe ser limitada por el sistema de control. Pero medir la
temperatura en ese lugar resulta poco práctico, por lo tanto el sistema está
diseñado para realizar un control indirecto midiendo y controlando la temperatura
de escape de la turbina.
Este control indirecto puede ser realizado a través de las relaciones
termodinámicas para la performance del ciclo de la turbina, pero el valor de la
temperatura de escape (Tx) no determina por si solo los valores de la temperatura
a controlar, sino que se necesita otro parámetro que es la presión de descarga del
compresor (PCD). De esta manera el sistema determina la temperatura límite de
encendido por una relación predeterminada de los dos parámetros mencionados y
25
así logra controlar el flujo de combustible por medio del VCE manteniendo la
temperatura por debajo del límite establecido.
Cabe remarcar que el control de temperatura esta realizado por la tarjeta
STKD del SPEED TRONIC, además de los sensores de temperatura, doce
termocuplas de cromo-aluminio ubicadas alrededor del conducto de escape de la
turbina. En la figura 2.10, se puede observar el esquema del control de
temperatura.
Figura 2.10: Control temperatura – potencial PCD.
2.3. Calibración del sistema de control
Cada Grupo Turbo-Generador, vino incorporado de un calibrador destinado
a realizar los ajustes necesarios en su control. Este calibrador está compuesto por
fuentes de tensión y frecuencia variables que permiten simular los valores que
toman los diferentes transductores y ajustar las señales de salida de control y así
26
sus variaciones para poder mantener el funcionamiento lo más próximo al
óptimo.
Dicha tarea debe ser realizada periódicamente, en las distintas paradas de
mantenimiento como así también en caso de fallas o cambio de piezas.
27
Capítulo 3
Implementación
3.1 Metodología de diseño
En este capítulo se describe el proceso de desarrollo del proyecto, para lo
cual se describe la metodología adoptada mediante los puntos siguientes:
1. Análisis de las señales a medir. Numero y valores.
2. Diseño de la estructura básica del proyecto
3. Selección del microcontrolador, que cuente con la capacidad suficiente
para la cantidad y tipo de entradas requeridas, además de la velocidad de
procesamiento
4. Diseño de circuitos adaptadores de señales
5. Diseño y programación del microcontrolador
6. Visualización de los datos en PC
3.2 Etapas básicas del proyecto
En el punto anterior se describieron los pasos a seguir a la hora de llevar a
cabo el proyecto planteado, los cuales marcaron las pautas para mantener un orden
en el estudio y desarrollo del mismo.
El proyecto, se puede dividir en dos partes, una primera, el desarrollo y
prueba del hardware y la segunda, el software. A esto se refiere a la programación
28
del microcontrolador y la realización de la interfaz de usuario. Estas dos partes se
desarrollan en los dos puntos siguientes.
3.3 Diseño del hardware
3.3.1 Análisis de las señales
En el primer capítulo (punto 1.3.) se definió los tipos y niveles de tensión de
las señales que el dispositivo desarrollado debe ser capaz de medir. Para avanzar
en las etapas del desarrollo del proyecto, es necesario definir el número de señales
de cada tipo.
En cuanto a las señales digitales, decir que en el control general del Turbo-
Generador se encuentran un gran número de señales de comportamiento digital,
tales como señales del control propiamente dicho, relés, presostatos, detectores de
llama, entre otros. Para este tipo de señal se estable un número mínimo de ocho
(8) entradas.
Importantes pero menos comunes en el control general, son las señales
analógicas continuas y alternas provenientes de transductores, servos, pickup de
velocidad, entre otras. Se determina que para señales analógicas es suficiente con
cuatro (4) entradas y dos (2) para las entradas de frecuencia (alternas).
3.3.2 Diseño de la estructura básica del proyecto
A partir de los análisis previos, tanto del requerimiento de señales a medir
como también del tipo y capacidad de almacenamiento, visualización, reloj, etc. se
procedió a diseñar un diagrama en bloque de la estructura básica del proyecto, el
cual se puede observar en la figura 3.1. Este diagrama permite visualizar y
29
comprender de forma rápida y sencilla las partes estructurales del dispositivo de
medición en desarrollo.
uP PCTransductoresLectura de
valores
Envio datos
Configuración
Alm
ace
na
mie
nto
y
Le
ctu
ra d
e d
ato
s
Memoria SD
Modulo RTC
SoftwareVisualizaciónAnalógica
Digital
Frecuencia
Figura 3.1: Diagrama en Bloque del proyecto
3.3.3 Hardware de adquisición y transmisión de datos
Al analizar la oferta de procesadores del mercado, se decide utilizar el
microcontrolador Arduino MEGA2560 para capturar las señales de entradas y
realizar el procesamiento de dichos datos. Esta elección se debe a que sus
características (especificadas en los apartados 3.3.3.1 y 3.3.3.2) que permiten
satisfacer los requisitos de entrada y velocidad de procesamiento.
El microcontrolador MEGA2560 como la mayoría de los
microcontroladores de gama baja cuentan con una pequeña memoria interna, lo
cual es desfavorable para este proyecto, que requiere de una elevada capacidad de
almacenamiento como así también un método extraíble. Por tales motivos, se opta
por el almacenamiento en memoria SD con la utilización del módulo SD de
Arduino. Los datos almacenados en la memoria deben estar referidos a la fecha y
hora real al momento de la captura, para lo cual se utiliza el correspondiente
módulo Real Time Clock (RTC) de Arduino. Este módulo está destinado a
mantener la hora y fecha incluso al desconectar la alimentación principal del
30
microcontrolador, utilizando una pila del tipo CR-2032. Por último, se estableció
la comunicación por USB para enviar los datos a la PC.
3.3.3.1 ¿Qué es Arduino? y ¿Por qué Arduino?
Herrador en 2009 dijo “Arduino es una plataforma de prototipo electrónica
de código abierto basada en hardware y software flexible y fácil de usar. Está
pensado para artistas, diseñadores, como hobby y para cualquier interesado en
crear objetos o entornos interactivos”.
Arduino puede “sentir” el entorno mediante la recepción de entradas desde
una variedad de sensores y controlar a su alrededor mediante la manipulación de
actuadores como luces, motores, etc. el microcontrolador de la placa se programa
usando el “Arduino Programming Language”, basado en el lenguaje C, y el
“Arduino Development Environment”. Los proyectos de Arduino pueden ser
autónomos o se pueden comunicar con software en ejecución en un ordenador.
Las placas se pueden ensamblar a mano o encargarlas preensambladas, el
software se descarga gratuitamente. Los diseños de referencia de hardware están
disponibles bajo licencia open-source, por lo que se es libre de adaptarlas a tus
necesidades.
Aunque Arduino es una más de las tantas plataformas microcontroladas
disponibles en el mercado, ofrece algunas ventajas para profesores, estudiantes y
aficionados sobre otros sistemas, tales como: bajo costo, multiplataforma, entorno
de programación simple y claro, código abierto y software extensible, hardware
extensible, entre otros.
31
3.3.3.2 Arduino MEGA 2560
Arduino Mega 2560 (ver figura 3.2) es una versión ampliada de la tarjeta
original de Arduino y está basada en el microcontrolador Atmega2560, que se
puede observar en la figura 3.3, junto a su distribución y conexión de pines.
Esta placa dispone de 54 pines que pueden funcionar como entradas/salidas
digitales, 14 de las cuales se pueden utilizar como salidas PWM (modulación de
anchura de pulso). Además dispone de 16 entradas analógicas, 4 UARTs (puertos
series), un oscilador cristal de 16MHz, una conexión USB, un conector de
alimentación, un conector ICSP y un pulsador para el reset. Para empezar a
utilizar la placa sólo es necesario conectarla a la PC a través de un cable USB, o
alimentarla con un adaptador de corriente AC/DC. También, puede alimentarse
mediante una batería. (Datasheet Microcontrolador ATmega2560, 2014).
La tarjeta Arduino MEGA2560 es compatible con la mayoría de los shield o
tarjetas de aplicación/ampliación disponibles para las tarjetas Arduino UNO
original.
Figura 3.2: Placa Arduino MEGA 2560.
32
Figura 3.3: Microcontrolador (µC) ATMEL ATMEGA2560.
Se hace un listado de las características principales de la placa usada en el
proyecto:
Microcontrolador ATmega2560
Tensión de alimentación (recomendado) 7-12V
Integra regulación y estabilización de +5Vcc
54 líneas de Entradas/Salidas Digitales (14 de ellas se pueden utiliza como
salidas PWM)
16 Entradas Analógicas
Máxima corriente continua para las entradas: 40 mA
Salida de alimentación a 3.3V con 50 mA
Memoria de programa de 256Kb (el bootloader ocupa 8Kb)
Memoria SRAM de 8Kb para datos y variables del programa
33
Memoria EEPROM para datos y variables no volátiles
Velocidad del reloj de trabajo de 16MHz
Reducidas dimensiones de 100 x 50 mm
Analizando dichas características, se concluye que se satisfacen los
requerimientos determinados en la sección 3.3.1 La velocidad de 16MHz es
suficiente para realizar el procesamiento requerido sin perder información y el
número de entradas digitales y analógicas disponibles son mayores al número
requerido.
3.3.3.3 Módulo SD Arduino
De acuerdo a lo mencionado en el apartado 3.3.3, se decide almacenar los
datos capturados en una memoria SD, utilizando un módulo de bajo costo para
realizar la conexión de dicha memoria con la placa Arduino. Este módulo,
mostrado en la figura 3.4 permite la comunicación entre el Arduino y la tarjeta SD
llevada a cabo bajo el protocolo SPI (Serial Peripherical Interface), y cuenta con
el soporte mecánico necesario para que la conexión y extracción se realice
fácilmente.
Figura 3.4: Módulo SD.
34
A pesar de sus cuantiosas ventajas, se debe tener en cuenta ciertos aspectos
importantes a detallar:
Las tarjetas SD funcionan a 3.3V. Usar una tensión mayor puede romper la
tarjeta.
Casi todas las placas Arduino funcionan a 5V, por lo tanto no pueden
usarse directamente.
El lector de LC Studio tiene un pin para 5V y uno para 3.3V. El pin de 5V
está conectado a un regulador de tensión que transforma la tensión de 5V a
3.3V pero sólo para la alimentación de la tarjeta, no para las señales.
El pin de 3.3V del lector sólo es de salida, no es de entrada.
Dicha diferencia de niveles de tensión de funcionamiento entre uno y otro
debe ser solucionada con un divisor resistivo como se muestra en la figura 3.5.
Concretamente se trata de adaptar las siguientes señales:
SCK, MOSI, CS deben ir conectados del Arduino al conversor de niveles,
y del conversor al lector de tarjetas. La tensión de salida de estas señales
debe ser 3.3V
La señal MISO puede ir conectada directamente al Arduino (esta señal va
sólo del lector al Arduino).
35
Figura 3.5: Conexión Arduino y Módulo SD.
A continuación se muestra un código de ejemplo, que permiten escribir
datos en una memoria SD.
#include <SD.h>
const int chipSelect = 53;
void setup(){
// Configuración del puerto serie para informar de fallos a través de él.
Serial.begin(9600);
// El pin CS por defecto de la placa Arduino debe ser configurado como salida
pinMode(53, OUTPUT);
// Si existió un error al leer la tarjeta se informa por el puerto serie.
if (!SD.begin(chipSelect)){
Serial.println("Error al leer la tarjeta.");
return;
}
}
void loop(){
// Se crean las variable para guardar el valor del potenciómetro.
int pot=0;
// leer los datos del potenciómetro.
pot=analogRead(0);
// se abre el fichero donde se guardaran los datos (Si no existe se crea
automáticamente).
File dataFile = SD.open("valorpot.txt", FILE_WRITE);
// Si el fichero es correcto escribe en el.
if (dataFile) {
// Escribir en el fichero "POT: "
dataFile.print("POT: ");
// A continuación se escribe el valor de la variable pot y salta a la línea
siguiente.
dataFile.println(pot);
dataFile.println("-----5s-----");
// Cerrar el archivo.
dataFile.close();
// Avisa que se ha podido escribir correctamente.
Serial.println("impresión correcta");
// Si no logro escribir en el fichero avisar por el puerto serie.
}else{
Serial.println("Error al escribir en valorpot.txt");
36
}
// Esperar 5s para tomar la siguiente medida.
delay(5000);
}
3.3.3.4 Módulo RTC Arduino
El Arduino, al igual que los demás microcontroladores restablece sus
valores al desconectar la alimentación y toda la información de la memoria RAM
se pierde. Además, la memoria EEPROM no volátil es de pequeño tamaño y por
lo tanto impide el almacenamiento de grandes cantidades de datos. Esto genera la
necesidad de utilizar memoria externa no volátil, como por ejemplo una tarjeta
SD.
Además, reiniciar el microcontrolador origina la pérdida del contador de
tiempo interno (funciones millis() y micros() de Arduino), restableciendo la hora
actual a cero, lo cual no es deseable en este proyecto. Para evitar este problema, se
emplea un módulo RTC de Arduino, mostrado en la figura 3.6.
Figura 3.6: Módulo RTC.
Este módulo se conecta al Arduino MEGA mediante el bus Inter- Integrated
Circuits (I2C), con la utilización de una librería que facilita ésta comunicación. El
modelo utilizado es el Tiny RTC I2C que incorpora un reloj de tiempo real
37
DS1307, una batería para memorizar los datos y una pequeña memoria EEPROM
24C32, además de una simple conexión, la cual se observa en la figura 3.7.
Figura 3.7: Conexión Arduino MEGA2560 y Módulo RTC.
Dicha librería se apoya en la librería Wire para la comunicación I2C, por lo
que debe ser referencia e incluirla en el código. RTClib es compatible con
cualquier módulo RTC que use el chip DS1307. A continuación se muestra un
simple código para utilizar este módulo.
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
void setup () {
Wire.begin(); // Inicia el puerto I2C
RTC.begin(); // Inicia la comunicación con el RTC
//RTC.adjust(DateTime(__DATE__, __TIME__)); // Establece la fecha y hora (Comentar
una vez establecida la hora)
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
}
voidloop(){
DateTimenow = RTC.now(); // Obtiene la fecha y hora del RTC
Serial.print(now.year(), DEC); // Año
Serial.print('/');
Serial.print(now.month(), DEC); // Mes
Serial.print('/');
Serial.print(now.day(), DEC); // Dia
Serial.print(' ');
Serial.print(now.hour(), DEC); // Horas
Serial.print(':');
Serial.print(now.minute(), DEC); // Minutos
Serial.print(':');
Serial.print(now.second(), DEC); // Segundos
Serial.println();
delay(1000); // La información se actualiza cada 1 seg.
}
38
3.3.4 Hardware adaptador de señales
En esta etapa se tomó en cuenta las características de las señales a medir y
de los valores que toma como entrada el microcontrolador para diseñar y construir
los circuitos de adaptación. Se tuvo presente que las señales son tomadas de
puntos internos del control de la máquina y que ese dispositivo tiene su propio
sistema de alimentación independiente del sistema eléctrico de la central, por lo
tanto requiere un sistema de masas aisladas para que dicha conexión no afecte su
funcionamiento.
A la hora de diseñar estos circuitos se debe tener en cuenta el tipo de señal
(digital, analógica y/o frecuencia), los niveles de tensión (28V, 12V, 5V, etc.), la
frecuencia y, algo no menos importante para este tipo de control, el consumo de
corriente.
El consumo de corriente por parte de la entrada del circuito adaptador debe
ser muy pequeño, del orden de los µA, ya que si tienen una baja impedancia de
entrada producen caídas de tensión importantes impidiendo su buen
funcionamiento. Por esto, en el diseño de los circuitos adaptadores deben ser
considerados con una alta impedancia de entrada.
3.3.4.1 Entradas Digitales
Entre las entradas digitales, se tienen señales que provienen de compuertas y
temporizadores provenientes del panel de control con un nivel lógico 1 de tensión
de salida de 5Vcc y alimentadas con ±12Vcc. Así también algunas que se dirigen
hacia la máquina (señal de salida del control) con un nivel lógico 1 de 28Vcc.
Como se observa, se tienen distintos niveles de tensión en este tipo de entradas,
39
por tal motivo se debe diseñar un circuito capaz de llevar las tensiones de entradas
a los niveles aceptables por el microcontrolador.
Los circuitos electrónicos de adaptación, para este tipo de entrada, deben
transformar un nivel lógico 0 que oscila entre 0V y 1V a un nivel lógico 0 de
entrada al microcontrolador de 0V fijo. Mientras que para un nivel lógico 1 que
oscila entre 3V y 28V a un nivel lógico 1 de entrada al microcontrolador de 5V.
Para esto, se decidió colocar un amplificador operacional en la entrada de
ganancia 3 y su salida ingresa a un circuito buffer CD74HCT245 que permite que
toda entrada menor a 1.8V origine un 0 lógico a la salida y las entradas mayores a
2.1V, corresponden a un 1 lógico. En la figura 3.8, se observa el diagrama
eléctrico, realizado con la ayuda de un software de diseño electrónico adecuado al
igual que los demás esquemáticos del trabajo. En la figura 3.9, el correspondiente
diseño de la placa Printed Circuit Board (PCB) para las 8 entradas requeridas.
Figura 3.8: Esquema eléctrico de una entrada digital.
74hct245
74HC245DW_VHDL
A34
A56A45
A67
A78
A89
DIR1
A23A12
~G19
B1 18
B2 17
B3 16
B4 15
B5 14
B6 13
B7 12
B8 11
U2
TL080CP
3
2
4
7
6
51
8
R1
3.3MΩ
R2
10MΩ
R4
4.7MΩ
R3
3.3MΩ
5V
15V
VDD
-15V
R5
10MΩ
R6
10MΩ
4
ENTRADA
TEST_PT1
Acom
TEST_PT1
Pin_uP
TEST_PT1
5V
15V
40
Figura 3.9: Distribución de componentes en PCB.
3.3.4.2 Entradas Analógicas
Una parte muy importante en el control del Grupo Turbo-Generador se basa
en las señales de entrada y salidas. Las primeras son señales que provienen de
transductores situados en la parte de campo del Grupo y entregan información del
estado del mismo, mientras que las segundas van desde el control hacia el Grupo
y permiten regular el funcionamiento de los actuadores y así poder gobernar el
estado del mismo como también de los equipos auxiliares, en todo momento.
41
Haciendo un relevamiento de este tipo de señales se puede decir que en su
mayoría son señales de corriente continua pero con valor que oscila entre los ±
10Vcc. Por tal motivo, se decidió hacer un circuito adaptador que convierta el
rango de valores de ± 10Vcc al rango de valores admisibles por el Convertidor
Analógico Digital (ADC) de la placa Arduino, que comprende los valores de 0 a
5V. Esto quiere decir, que cuando se tiene una tensión de entrada de -10V se debe
tener una tensión de 0V como salida del adaptador y a su vez entrada del ADC del
Arduino. De igual modo, para 0V de entrada corresponde a 2,5V en su salida y
para 10V de entrada, 5V de salida. Esto origina una ecuación de relación entrada-
salida que permite determinar el valor que se está midiendo, la misma se puede
observar en la ecuación 1.
𝑉𝑎𝑙𝑜𝑟𝑟𝑒𝑎𝑙 =𝑉𝑎𝑙𝑜𝑟 𝐴𝐶𝐷
𝑉𝑎𝑙𝑜𝑟 𝑀𝑎𝑥𝐴𝐶𝐷 (1)
Donde 𝑉𝑎𝑙𝑜𝑟𝑀𝑎𝑥𝐴𝐶𝐷 = 51.15− 10 .
En la figura 3.10, se observa el esquema eléctrico, el cual indica que el
circuito de cada entrada está compuesto por dos configuraciones de
amplificadores operacionales. Una primera etapa corresponde a un amplificador
diferencial de ganancia 0.25 de manera de disminuir a un ¼ los niveles de tensión
de entrada, es decir que el rango de ±10V se transforma en ±2.5V. La segunda
etapa es un amplificador sumador de ganancia 1, esto permite sumarle una tensión
de 2.5V a la salida de la primera etapa y desplazar el rango de ±2.5 a un rango de
0 a 5V. En la figura 3.11, se puede observar el diseño de la PCB para 4 entradas
analógicas.
42
Figura 3.10: Esquema eléctrico de una entrada Analógica.
Figura 3.11: Distribución de componentes en PCB
3.3.4.3 Entradas de Frecuencia
Durante el estudio realizado en la etapa de diseño del hardware adaptador de
señales se determinó que en su mayoría las señales corresponden al grupo Digital
y Analógico, pero unas pocas señales de salida de transductores son de corriente
U2
TL080CP
3
2
4
7
6
51
8
R1
3.3MΩ
R2
1MΩ
R3
3.3MΩ
5V
15V
VDD
-15V
R5
1MΩ
ENTRADA
TEST_PT1
Acom
TEST_PT1
Pin_uP
TEST_PT1R72MΩ
Key=A50%R82MΩ
Key=A50%R4
1MΩ
R6
1MΩ
R9
2MΩ
Key=A
50% U1
TL080CP
3
2
4
7
6
51
8
v
-5V
R10
1MΩ
VCC
5V
43
alternas cuya amplitud y frecuencia varían con proporción a la señal de entrada;
esto quiere decir que se tiene una señal alterna con amplitud y frecuencia variable.
Por tal motivo, se decidió medirlas en función de la frecuencia, y se diseño un
circuito electrónico consistente de un amplificador de ganancia infinita por
entrada.
El diseño realizado permite convertir la señal alterna senoidal en una señal
cuadrada de igual frecuencia pero cuyos valores son 0V, nivel mínimo, y 5V,
nivel máximo para poder ser señales de entrada en la placa Arduino y así medir la
frecuencia de dicha onda cuadrada. En las figuras 3.12 se observa el diagrama
eléctrico y en la 3.13, el correspondiente diseño PCB.
Se debe remarcar que para este tipo de señal se necesitó tomar la
alimentación para el Amplificador Operacional desde la fuente de tensiones del
control Speed-Tronic ya que al ser alterna, el A.O. perdía la referencia y entregaba
señales erroneas. A la salida del amplificador se decidió colocar un optoacoplador
para aislar las masas y entregar la señal de onda cuadrada referida a la masa del
microcontrolador de medición.
Figura 3.12: Diagrama eléctrico entrada de Frecuencia.
U1TL080CD
3
2
4
7
6
51
8
U2OPTOCOUPLER_VIRTUAL
R1
3.3MΩ
R2
10MΩ
R3
1kΩ
R4
1kΩ
P12V
5V
N12V
5VGND
N12V
5V
GND
ENTRADA
TEST_PT1
SALIDA
TEST_PT1
44
Figura 3.13: Diseño de PCB
3.3.4.4 Fuente de Tensión
Al finalizar con el diseño y construcción de las placas adaptadoras, se
determinaron las tensiones necesarias para el funcionamiento y se procedió al
diseño y construcción de una fuente de tensión que alimente dichos circuitos.
En la figura 3.14, se observa el diagrama eléctrico de la fuente de tensión de
tipo lineal ya que los consumos de corrientes requeridos son muy pequeños y por
lo tanto las perdidas y alteraciones no justifican el desarrollo de otro tipo de fuente
como las conmutadas. Los niveles de tensión requeridos son +15Vcc, +5Vcc, -
5Vcc y -15Vcc, los cuales se obtienen de la red de 220Vca 50Hz. En la figura
3.15, se puede observar el diseño PCB de la misma.
45
Figura 3.14: Diagrama eléctrico de la fuente de tensión.
Figura 3.15: Diseño de PCB de la fuente de tensión.
3.3.5 Diagrama de conexionado
En esta sección se muestra el diagrama de conexión de las distintas placas,
en las cuales se especifican el número de pin y el tipo de alimentación requerida.
El mismo se puede observar en la figura 3.16.
T1
TS_AUDIO_10_TO_1D11B4B42
1
2
4
3
C12.2mF
C22.2mF
U1
LM7815CT
LINE VREG
COMMON
VOLTAGE
U2
LM7805CT
LINE VREG
COMMON
VOLTAGE
U3
LM7905CT
LINE VREG
COMMON
VOLTAGE
U4
LM7915CT
LINE VREG
COMMON
VOLTAGE
C310uF
C410uF
C510uF
C610uF
P5
TEST_PT1
GND
TEST_PT1
N5
TEST_PT1
N15
TEST_PT1
P15
TEST_PT1
46
uC
MODULO RTC MODULO SDGND
GND
5V
5V
CS
53
MOSI
51
SCK
52
MISO
50
GND
GND
VCC
5V
SDA
20
SCL
21
DIGITAL
30 31 32 33 34 35 36 37
ANALOGICO
A0
1
A1
2
A2
3
A3
4 5
A5
6 7
A7
8
A6A4
FREC.
2
1
3
2
PC USBUSB
F.T.
GND
GND +5V +15V-15V -5V
220V
50Hz
1 2 3 4 5 6 7 8
Figura 3.16: Diagrama de conexión del Hardware.
3.3.6 Lista de Elementos
En la siguiente sección se muestra una lista con un resumen de los
principales elementos utilizados en la construcción del dispositivo de medición y
almacenamiento digital, especificando su función y límites de operación en el
proyecto desarrollado.
Imagen Nombre Función
Principal
Limitaciones
de Operación
Microcontrolador
Atmega 2560. 1
Proceso de datos
recibidos y
almacenamiento
en memoria SD.
Envió de datos a
PC.
Número de
interrupciones.
Espacio de
memoria.
Placa Arduino
Mega 2560.
Placa de
desarrollo que
conecta el µC.
Atmega2560 con
los periféricos
necesarios para
su
funcionamiento.
No se observa.
1Información disponible en http://pdf.datasheetcatalog.com/datasheets2/30/3055029_1.pdf
47
Módulo RTC Mantiene la hora
y fecha real con
ausencia de la
alimentación.
Solo entrega
Hs/min/seg. En
caso de este
proyecto se
necesitan
también los
miliseg.
Módulo SD Conexión entre
memoria SD y
µC.
Niveles de
tensión de
funcionamiento
diferentes a los
del µC
Amplificador
Operacional
TL080. 2
Permiten una
entrada de alta
impedancia y
masas aisladas.
Sensible a
ruidos.
Limitación de
frecuencia,
máxima de
20kHz.
CD74HCT245.3 Permiten
asegurar el
voltaje de
entrada en el µC.
No se observó.
LM7815. 4
Mantiene +15V
necesario para el
funcionamiento
de los
componentes del
sistema.
No se observó.
LM7805. 5 Mantiene +5V
necesario para el
funcionamiento
de los
componentes del
sistema.
No se observó.
LM7905. 6 Mantiene -5V
necesario para el
funcionamiento
de los
componentes del
sistema.
No se observó.
2Información disponible en http://pdf.datasheetcatalog.com/datasheet/texasinstruments/tl080.pdf 3Información disponible en http://pdf.datasheetcatalog.com/datasheet2/1/02glhewsates3885ie825lrz9dcy.pdf 4Información disponible en http://pdf.datasheetcatalog.com/datasheets/150/44435_DS.pdf 5Información disponible en http://pdf.datasheetcatalog.com/datasheet/fairchild/LM7805.pdf 6Información disponible en http://pdf.datasheetcatalog.com/datasheet/fairchild/LM7905.pdf
48
LM7915. 7 Mantiene -15V
necesario para el
funcionamiento
de los
componentes del
sistema.
No se observó.
Memoria SD Almacenamiento
de datos para ser
enviados a la Pc.
No se observó.
Batería de 3V Asegura que se
mantendrá la
hora y la fecha
aunque esté
desconectada la
fuente de
alimentación.
No se observó.
Diodos Para
rectificación de
onda senoidal.
No se observó.
Capacitores Filtran señales
para tener
respuestas más
estables.
No se observó.
Resistencias Manejo del
voltaje adecuado
en diferentes
puntos del
sistema.
No se observó.
Trimmer
multivueltas
Permiten tener
un ajuste fino de
la ganancia en
las
configuraciones
de los A.O.
No se observó.
7Información disponible en http://pdf.datasheetcatalog.com/datasheet/fairchildsemiconductor/LM7915.pdf
49
Transformador Transforma el
nivel de tensión
de c.a. Reduce la
tensión de
entrada de 220V
a 12V+12V para
alimentar la
fuente.
Perdidas
propias del
transformador.
Gran tamaño y
peso.
Inyección de
ruidos
eléctricos al
sistema de
medición.
Tabla 3.1: Tabla de Componentes
3.4 Diseño del software
3.4.1 Arduino
En esta sección se hace una pequeña introducción a la plataforma de
programación de Arduino como así también, una breve explicación de las distintas
líneas de la programación que determina el funcionamiento del microcontrolador
Mega 2560.
La plataforma Arduino se programa mediante el uso de un lenguaje propio
basado en el lenguaje de programación de alto nivel Processing. Sin embargo, es
posible utilizar otros lenguajes de programación y aplicaciones populares en
Arduino, debido a que Arduino usa la transmisión serial de datos soportada por la
mayoría de los lenguajes mencionados. Para los que no soportan el formato serie
de forma nativa, es posible utilizar software intermediario que traduzca los
mensajes enviados por ambas partes para permitir una comunicación fluida.
(Tapia y Manzano, 2013).
En nuestro caso, se utilizó directamente el entorno de desarrollo (IDE)
descargado de la página web de Arduino. Se dispone de versiones para Windows
50
y para MAC, así como las fuentes para compilarlas en LINUX. En la Figura 3.17,
se muestra el aspecto del entorno de programación.
Figura 3.17: Entorno de programación.
En la figura 3.17, se observa el entorno de programación de Arduino, la cual
es bastante simple y divide la ejecución en dos partes: setup y loop. Setup()
constituye la preparación del programa y loop() es la ejecución. En la función
Setup() se incluye la inicialización de variables y se trata de la primera función
que se ejecuta al iniciar la ejecución. Esta función se ejecuta una única vez y es
empleada para configurar el pinMode (p. ej. si un determinado pin digital es de
entrada o salida) e inicializar la comunicación serie. La función loop() incluye el
código que se ejecutara en forma continua (leyendo las entradas de la placa,
salidas, etc.). Arduino está basado en C y soporta todas las funciones del estándar
C y algunas de C++. A continuación se muestra un resumen con la estructura y
sintaxis del lenguaje Arduino:
Sintaxis básica
Delimitadores:;, {}
51
Comentarios: //, /* */
Cabeceras: #define, #include
Operadores aritméticos: +, -, *, /, %
Asignación: =
Operadores de comparación: ==, !=, <, >, <=, >=
Operadores Booleanos: &&, ||, !
Operadores de acceso a punteros: *, &
Operadores de bits: &, |, ^, ~, <<, >>
Operadores compuestos:
Incremento y decremento de variables: ++, --
Asignación y operación: +=, -=, *=, /=, &=, |=
Estructuras de control
Condicionales: if, if...else, switch case
Bucles: for, while, do... while
Bifurcaciones y saltos: break, continue, return, goto
En primer lugar para comenzar a trabajar con el entorno de desarrollo de
Arduino se deben configurar las comunicaciones entre la placa Arduino y el PC.
Para esto, se le debe indicar al entorno el tipo de placa a conectar, el procesador y
el puerto. Una vez terminada esta configuración, se recomienda realizar una
prueba para verificar que todo funciona correctamente con la utilización del
ejemplo “Blink” (parpadeo de un LED ubicado en la placa Arduino) y poder
conocer las herramientas del entorno que facilitan la programación.
52
En la barra superior de la interfaz encontramos los principales botones
(nuevo, abrir, guardar, verificar y cargar) los cuales permiten iniciar un nuevo
proyecto como así también recuperar uno ya creado o guardarlo. El botón cargar,
permite cargar el programa en el microcontrolador para iniciar su ejecución, pero
algo importante que se recomienda hacer durante el avance de la programación es
verificar periódicamente la sintaxis de las líneas. Es importante remarcar, que el
entorno Arduino incorpora una herramienta llamada “monitor serial” la cual
permite observar los valores de variables o verificar una determinada línea de
programación por medio de la comunicación serial.
En los apartados siguientes se mostraran porciones de códigos
correspondientes a las distintas secciones, destacando los puntos más importantes.
Para observar el código fuente de Arduino ir a Anexo 1.
3.4.1.1 Entradas Digitales
El proceso de lectura y almacenamiento de cada entrada digital, consiste en
leer continuamente la entrada y comparar el estado actual con el último
almacenado en memoria. Si esta comparación da que los estados son diferentes se
debe almacenar este último valor en memoria junto a la hora y fecha de medición
y además debe quedar registrada para la próxima comparación de la entrada. En
caso contrario, que los estados coincidan, el microcontrolador no debe realizar
ninguna operación.
Como entrada al Arduino, se decidió conectar la salida de la placa de
adaptación a los pines 30 al 37, para lo cual se tuvo que definir en el programa a
dichos pines como entrada. A continuación se muestra una pequeña porción del
código utilizador para realizar la operación.
53
// ENTRADA DIGITAL
for (iD=30; iD<34; iD++) { //lee del pin 30 al pin 50 Ent_digital
if (digitalRead(iD) != Valor_Digital[iD-30]){ //si el nuevo estado es
diferente al anterior almacenar
Valor_Digital[iD-30] = !Valor_Digital[iD-30]; //se niega el valor existente
y se almacena
escribirDigital(iD-30, Valor_Digital[iD-30]);
}
}
3.4.1.2 Entradas Analógicas
A diferencia de las entradas digitales, el proceso de lectura de las entradas
analógicas y de frecuencia, consiste en muestrear el valor de las entradas cada un
cierto tiempo preestablecido y almacenar dicho valor en la memoria junto a la
fecha y hora de la medición.
Para este tipo de entrada, se tuvo que configurar el convertidor analógico
digital y un timer con interrupción para realizar la medición cada 500ms (Ver
Anexo 1). Dichos almacenamiento se realiza en una matriz de valores y otro de
fecha. A continuación se muestra una pequeña porción del código de
implementación.
// MUESTREO ENTRADAS ANALOGICAS y FRECUENCIA
ISR(TIMER1_OVF_vect){
TCNT1=34286;
for(iA=0; iA<8; iA++){
muestra[jA].valor[iA] = (leer_adc(iA)/51.15-10);
}
muestra[jA].h = Hora.h;
muestra[jA].m = Hora.m;
muestra[jA].s = Hora.s;
muestra[jA].t = Hora.t;
muestra[jA].D = Fecha.d;
muestra[jA].M = Fecha.m;
muestra[jA].A = Fecha.a;
jA++;
}
// ENTRADAS ANALOGICAS y FRECUENCIA
//Almacenamiento en memoria
if (jA==20){
escribirAnalogica();
escribirFrecuencia();
jA=0;
}
3.4.1.3 Entradas de Frecuencia
Ya se definió el principio de lectura y almacenamiento junto a las entradas
analógicas, ahora se debe que agregar que, en este caso, para realizar la medición
54
se utilizaron las entradas digitales con interrupción externa (pin 2 y pin 3) por lo
tanto se tuvo que configurar dichos pines como entrada y habilitar la interrupción.
La interrupción externa trabaja en conjunto con un contador lo que permite
determinar el tiempo que transcurre entre dos pulsos consecutivos y así poder
determinar la frecuencia del tren de pulso. De todos estos valores generados, solo
se almacena uno cada 500ms; esto quiere decir que los demás valores se pierden.
(Ver Anexo 1).
A continuación se muestra una porción del código que define el
funcionamiento de este tipo de entrada.
// MUESTREO ENTRADAS ANALOGICAS y FRECUENCIA
ISR(TIMER1_OVF_vect){
TCNT1=34286;
muestra[jA].h = Hora.h;
muestra[jA].m = Hora.m;
muestra[jA].s = Hora.s;
muestra[jA].t = Hora.t;
muestra[jA].D = Fecha.d;
muestra[jA].M = Fecha.m;
muestra[jA].A = Fecha.a;
Valor_Frecuencia[0][jA] = Valor_Frec[0];
Valor_Frecuencia[1][jA] = Valor_Frec[1];
jA++;
}
// ENTRADAS DE FRECUENCIA
// Interrupcion de frecuencia por pin 2
ISR(INT4_vect) {
t3.bytes[0] = TCNT3;
TCNT3 = 16;
Valor_Frec[0] = (16000000.0f/t3.valor); //convierte el valor en Hz.
t3.valor = 0;
}
// Interrupcion de frecuencia por pin 2
ISR(INT5_vect) {
t4.bytes[0] = TCNT4;
TCNT4 = 16;
Valor_Frec[1] = (16000000.0f/t4.valor); //convierte el valor en Hz.
t4.valor = 0;
}
3.4.1.4 Almacenamiento en memoria
Para el almacenamiento de los datos utilizando el módulo SD de Arduino, se
decidió crear un archivo de texto separado por comas, para cada tipo de datos
donde almacenar los valores lectura tras lectura. De esta forma, se logra un envió
55
de datos entre el Arduino y la PC de forma sencilla, ya que se lee cada archivo de
forma completa.
En este apartado solo se mostrara la porción de código para la inicialización
de la memoria SD y del archivo digital.txt junto con el código para almacenar los
valores digitales en dicho archivo. Para poder observar el código para las entradas
analógicas y de frecuencia ver Anexo 1, código fuente de Arduino.
// FUNCION INICIO MEMORIA SD Y ARCHIVOS
voidinicializarSD() {
// MEMORIA SD
pinMode(53, OUTPUT); //inicio de memoria
Serial.print("Inicializando SD...");
//controlar que la SD este correcta
if (!SD.begin(53)){
Serial.println("Fallo o tarjera no presente");
}
else{
Serial.println("SD correcta");
}
}
// inicio archivo DIGITAL
voidinicioArchivoDigital(){
File digitalFile = SD.open("digital.txt", FILE_WRITE);
StringdigitalString = "FECHA,HORA,ENTRADA,ESTADO";
digitalFile.println(digitalString);
digitalFile.close();
return;
}
// FUNCION ESCRIBIR DATOS DIGITALES EN SD
voidescribirDigital(int id, int valor) {
String digitalString = "";
File digitalFile = SD.open("digital.txt", FILE_WRITE);
digitalString += String (Fecha.d) + String ("/") + String (Fecha.m) + String
("/") + String (Fecha.a) + String (",");
digitalString += String (Hora.h) + String (":") + String (Hora.m) + String
(":") + String (Hora.s) + String (":") + String (Hora.t) + String (",");
digitalString += String (id) + String (",") + String (valor);
digitalFile.println(digitalString); //escribir en archivo Digital.txt
digitalFile.close();
}
3.4.1.5 Hora y fecha real
Mantener la hora y fecha real es uno de los puntos importantes a la hora de
almacenar los datos leídos, ya que este proyecto se basa en el comportamiento
cronológico de las entradas. Para esto se utilizó el módulo RTC como registro de
hora al momento de desconectar la alimentación del Arduino y un conjunto de
registros para llevar la fecha y hora en el momento de la ejecución. Esto se tuvo
56
que realizar de esta manera ya que el módulo RTC solo entrega información de
hora, minutos, segundos, y se requiere de una resolución de milisegundos.
// MÓDULO RTC
Wire.begin(); // Inicia el puerto I2C
RTC.begin(); // Inicia la comunicación con el RTC
//RTC.adjust(DateTime(__DATE__, __TIME__)); // Actualiza hora y dia de la
computadora en la que se compile.
// HORA Y FECHA
ISR(TIMER2_OVF_vect){
TCNT2=131;
Hora.t++;
if (Hora.t>999) {
Hora.t=0;
Hora.s++;
}
if (Hora.s>59) {
Hora.s=0;
Hora.m++;
}
if (Hora.m>59) {
Hora.m=0;
Hora.h++;
}
if (Hora.h>23) {
Hora.h=0;
Fecha.d++;
}
if(Fecha.d>maxdia[Fecha.m-1]) {
Fecha.m++;
if(Fecha.m == 13) { Fecha.m = 1; Fecha.a++; }
Fecha.d = 1;
}
}
3.4.1.6 Comunicación serial
Por último en Arduino se programó la comunicación serial, que se utiliza
para recibir los comandos desde la PC y enviar los datos correspondientes hacia
ella. Además se puede recibir la orden de borrar por completo algún archivo en
particular de la memoria SD. A continuación se muestra el código utilizado para
realizar estas dos operaciones para las entradas digitales, mientras que el
correspondiente a las entradas analógicas y de frecuencia se encuentra en Anexo
1, código fuente de Arduino.
// COMUNICACION USB
//si existe datos disponibles, leerlos
if (Serial.available()>0){
optionjA=jA; //Guarda posicion de memoria
option=Serial.read();//lee la opcion enviada
if(option=='d'){
File dataFile = SD.open("digital.txt"); // Abrir el archivo.
// Si se podo abrir correctamente:
57
if (dataFile) {
// Mostrar un aviso de comienzo del txt
Serial.println("* A continuacion se muestra los datos Digitales");
// Mandar sus datos por el puerto serie.
while (dataFile.available()) {
Serial.write(dataFile.read());
}
dataFile.close(); // Cerrar el archivo.
// Si no se consiguió abrir el archivo mandar un error.
}else {
Serial.println("Error al abrir digital.txt");
}
}
// borrar archivos de SD
if (option=='i'){
SD.remove("Digital.txt");
inicioArchivoDigital();
}
jA=optionjA; //Restablecer posición de memoria
}
3.4.2 Visual Basic
La última etapa de desarrollo del dispositivo de medición y almacenamiento
digital consiste en el diseño y construcción de una interfaz amigable para el
usuario, la cual debe ser un software en la PC que le permita, de manera sencilla y
clara, cargar los datos almacenados hasta el momento en la memoria SD, como así
también guardarlos en la PC y manipularlos. Dicha interfaz se desarrollo con la
utilización del entorno de programación Visual Basic.
Ramos en 2010 dijo “Visual Basic es una aplicación y un lenguaje de
programación desarrollados por Alan Cooper para Microsoft. Se origina en el
clásico lenguaje BASIC”. La primera versión salió en 1991 en un entorno
relativamente sencillo para facilitar la creación de programas gráficos. Visual
Basic, como su nombre lo indica, utiliza una interfaz totalmente visual.
Actualmente, los programas creados en Visual Basic sólo funcionan en
Windows. La aplicación Visual Basic, permite crear ventanas, botones, menús,
etc. de forma sencilla con solo arrastrar y soltar los elementos. Luego se pueden
definir las apariencias, posiciones y comportamientos tanto de forma visual como
utilizando códigos de programación.
58
Este lenguaje toma elementos de diferentes paradigmas como el orientado a
objetos y el orientado a eventos. Visual Basic suele considerarse un sistema RAD
(Rapid Application Development), porque permite crear aplicaciones de forma
rápida, especialmente para prototipos. (Ramos, 2010).
En la figura 3.18, se puede observar el entorno de programación Visual
Basic junto a los distintos elementos que lo componen y facilitan la programación.
Esto es lo que básicamente se ve al crear un nuevo proyecto, lo primero que
podemos observar es el “Cuadro de Herramientas”, en el cual se encuentran todos
los controles que puedes agregar al proyecto como cajas de texto, label, tablas,
combo box, listas, botones que simplemente con arrastra ya tienes tu control en el
Form, bien sea Windows o Web. El “Explorador de Soluciones”, aquí es donde
veras todos los archivos de tu proyecto como las imágenes, cantidad de
formularios, base de datos, nos permite agregar elementos ya existentes o nuevos.
Dentro del explorador tenemos todos los archivos que tengan que ver con nuestro
proyecto. Al crear un nuevo proyecto por defecto se abre el primer
formulario (WINDOWS FORM) por defecto nombrado form1.
Además en la margen derecha tenemos algo muy importante para definir las
características de nuestra ventana, la “Ventana de Propiedades”, cada objeto que
este en nuestro formulario tiene sus propiedades distintas, hasta el mismo
formulario, una vez seleccionados la ventada de propiedades mostrara cada una de
ella y se podrás modificarla para obtener la apariencia deseada.
59
Figura 3.18: Entorno Visual Basic 2008
3.4.2.1 Interfaz
En esta sección se diseño la interfaz grafica del programa, la cual debe ser
clara para el usuario y permitir una utilización sencilla e intuitiva. Para cumplir
con lo anterior se decidió dividir la pantalla en cuatro pestañas, tres de las cuales
son idénticas y cada una de ellas permite el tratamiento de un tipo de datos
(digital, analógico o de frecuencia) y una cuarta destinada a la configuración.
En la figura 3.19: se muestra la pestaña destinada a la manipulación de datos
digitales. En la misma se puede observar que en su mayoría se encuentra ocupada
por una caja de texto en la cual se mostraran los datos relacionados. Además, en la
margen inferior izquierda se encuentran dos botones para controlar los datos en la
memoria SD ya que el primero se llama cargar, el cual permite cargar el archivo
60
digital.txt de manera completa y un segundo llamado borrar, el cual borra todos
los datos del archivo. En la margen derecha inferior se ubican cuatro botones
(abrir, guardar, limpiar, graficar) que permiten manipular los datos en la PC.
Figura 3.19: Pestaña datos digitales.
En cuanto a la pestaña de configuración (ver figura 3.20), por el momento
solo se coloco la configuración de la comunicación serial y los botones para
conectar y desconectar el programa con el microcontrolador Arduino por USB. En
la margen superior derecha, se coloco un indicador del estado de la conexión por
USB.
Figura 3.20: Pestaña de configuración.
61
3.4.2.2 Programación
Una vez diseñada la interfaz grafica, se deben definir las funciones de cada
uno de los elementos colocados en ella. Esto se realiza en la ventana de código del
programa, en el cual se definen o relacionan los objetos en líneas de código del
lenguaje Basic.
Para comenzar con esta parte de la programación, se comenzó con la
comunicación serial, para lo cual se colocaron líneas de código que nos permiten
reconocer los puertos de la PC en los cuales se puede establecer una conexión y al
seleccionar los parámetros de conexión y presionar el botón “conectar” la misma
es iniciada. Si esta se logra establecer, el indicador cambia de estado, apareciendo
la palabra Conectado. Esta porción se código se puede observar a continuación.
PrivateSub Form1_Load(ByVal sender AsObject, ByVal e As EventArgs)
HandlesMyBase.Load
BuscarPuerto()
EndSub
PrivateSub BuscarPuerto()
'Busca los puertos disponibles para establecer conexion y los muertra en ComboBox
Try
ComboBoxPuerto.Items.Clear()
ForEach puerto AsStringInMy.Computer.Ports.SerialPortNames
ComboBoxPuerto.Items.Add(puerto)
Next
If ComboBoxPuerto.Items.Count > 0 Then
ComboBoxPuerto.SelectedIndex = 0
Else
MsgBox("NO HAY PUERTOS DISPONIBLES EN TU SISTEMA")
EndIf
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
EndTry
EndSub
PrivateSub BotonConectar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BotonConectar.Click
'al hacer click en conectar toma la configuracion y conecta el dispositivo
Try
With SerialPort
.BaudRate = ComboBoxVelocidad.Text
.DataBits = NumeroBitDato.Value
.Parity = NumeroBitParidad.Value
.StopBits = NumeroBitParada.Value
.PortName = ComboBoxPuerto.Text()
.Open()
If .IsOpen Then
LabelEstado.Text = "Conectado"
Else
MsgBox("CONEXION FALLIDA!", MsgBoxStyle.Critical)
EndIf
EndWith
Catch ex As Exception
62
MsgBox(ex.Message, MsgBoxStyle.Critical)
EndTry
AddHandler SerialPort.DataReceived, AddressOf Recepcion
EndSub
Una vez establecida la conexión, se procedió a definir los botones de control
de datos en la memoria SD. Para esto, se partió de la comunicación serial
establecida en el Arduino la cual espera las letras d, a y f para enviar los archivos
digital.txt, analog.txt y frecu.txt respectivamente, y las letras i, n y r para vaciar
los mismos.
Por lo dicho anteriormente, los tres botones “cargar” del programa envían la
letra correspondiente para que el Arduino le envié los archivos y asigna la caja de
texto en la cual se mostraran los datos recibidos por el puerto, mientras que los
botones “borrar” solo envían la letra y no realizan ninguna operación en el
programa. Estas líneas de código se pueden observar en Anexo, código Visual
Basic junto con las líneas de los botones que nos permiten manipular los datos en
la PC.
3.5 Prueba del Dispositivo
Se conectó el dispositivo de medición y almacenamiento digital,
desarrollado, en el control de la TG para observar su comportamiento. Para esto se
decidió tomar las mediciones necesarias para obtener la curva de arranque
mostrada en la figura 2.7. Las mismas corresponden a la Velocidad, Temperatura
y VCE en función del tiempo. En la tabla 3.2 se observa la conexión realizada
para llevar a cabo la medición.
Medición Entrada Tarjeta Pin
Velocidad F1 SSZB (1L1O) Pin 3
Temperatura A1 STKK (1L1L) Pin 14
VCE A2 SSKC (1L1R) Pin 24
Tabla 3.2: Conexión en el Control.
63
En la figura 3.21 se observan los valores de las entradas de frecuencia en el
software desarrollado y la grafica correspondiente a la velocidad en la figura 3.22.
En la figura 3.23 se observan los de las entradas analógicas, mientras que en la
figura 3.24 se observa la curva de temperatura y en la 3.25 la de VCE.
Figura 3.21: Valores entradas de Frecuencia.
Figura 3.22: Valores entradas Analógicas.
64
Figura 3.23: Curva de Velocidad %.
Figura 3.24: Curva de Temperatura.
0
20
40
60
80
100
120
13:0
:0:2
44
13:0
:16:
711
13:0
:33:
677
13:0
:50:
641
13:1
:7:1
01
13:1
:24:
520
13:1
:41:
478
13:1
:57:
930
13:2
:14:
870
13:2
:31:
816
13:2
:48:
729
13:3
:5:1
66
13:3
:22:
105
13:3
:38:
971
13:3
:55:
408
13:4
:12:
322
13:4
:29:
185
13:4
:45:
596
13:5
:2:4
63
13:5
:19:
313
Velocidad %
Vel %
0123456789
13:0
:0:2
4413
:0:1
7:70
913
:0:3
5:67
313
:0:5
3:63
313
:1:1
1:59
013
:1:3
0:9
13:1
:47:
462
13:2
:5:4
0513
:2:2
3:34
113
:2:4
1:25
913
:2:5
9:19
513
:3:1
6:62
613
:3:3
4:48
413
:3:5
2:41
813
:4:1
0:33
113
:4:2
8:18
713
:4:4
5:59
613
:5:3
:451
13:5
:21:
305
Temperatura
Temperatura
65
Figura 3.25: Curva de VCE.
En esta prueba, se observo una correcta aceptación, por parte de la TG, de
los circuitos de adaptación diseñados, pero una inestabilidad indeseada en las
entradas analógicas producto del diseño. La misma quedara planteada como
trabajo futuro para lograr la curva real de operación de la TG.
0
2
4
6
8
10
12
14
13
:0:0
:24
413
:0:1
4:71
513
:0:2
9:68
513
:0:4
4:15
513
:0:5
9:12
013
:1:1
3:58
61
3:1
:29
:11
13:1
:43:
474
13:1
:57:
930
13:2
:12:
875
13:2
:27:
331
13:2
:42:
249
13:2
:56:
702
13:3
:11:
645
13
:3:2
6:9
213
:3:4
0:96
413
:3:5
5:40
813
:4:1
0:33
113
:4:2
4:73
713
:4:3
9:63
51
3:4
:54
:14
13
:5:8
:92
013
:5:2
3:29
7
VCE
VCE
66
Capítulo 4
Manual de Usuario
4.1 Partes del Dispositivo de Medición y Almacenamiento Digital
Figura 4.1: Dispositivo de medición y almacenamiento digital.
67
Figura 4.2: Pestaña Visualización de datos
Figura 4.3: Pestaña de configuración
4.2 Ensamble del Dispositivo
Antes de poner a funcionar el instrumento de medición (Datalogger) debe
asegurarse que posee lo siguiente:
1. Los cables que corresponden a los sensores que se encargaran de monitorear las
señales a medir, los cuales deben conectarse según el tipo de señal a medir ver en
la figura 4.1.
68
2. Debe tener además disponible un toma de energía de 220V 50Hz para energizar
el Datalogger, en la figura 4.1. se observa el cable de alimentación, el cual
corresponde a la energía del instrumento.
3. Colocar la memoria SD en la ranura correspondiente tal como se observa en la
figura 4.1.
4. Controlar la carga de la batería de 3V para asegurarse que la fecha y hora del
dispositivo sea la correcta.
4.3 Funcionamiento del Dispositivo
Una vez cumplidos los pasos explicados en el apartado anterior puede poner
a funcionar su Datalogger (ponerlo a censar las variables de entrada) de la manera
siguiente:
1. Enchufe la alimentación y presione el botón de encendido/apagado (observar
LED indicador rojo encendió) y su instrumento está en marcha.
2. El dispositivo se encuentra midiendo y almacenando los valores de las señales
de entrada. Espere el tiempo deseado de medición.
3. Para observar los datos vea el apartado 4.4.
4. Finalizada la medición, apague el dispositivo, usted observara que el LED
indicador se apagara, finalizara la captura de datos y queda listo para desconectar
los cables.
69
4.4 Lectura de datos en PC
La lectura de los datos se puede realizar con la utilización del software
propio del instrumento a través de la comunicación USB o a través de un lector de
memoria SD.
Pasos por comunicación USB:
1. Encender la PC y abrir el software del dispositivo
2. Con el instrumento encendido conectar el cable USB al puerto de la PC
3. Configurar la comunicación y conectar el dispositivo con el software. Ver
figura 4.3.
4. Vaya a la pestaña correspondiente al tipo de dato a leer y presione el botón
cargar. Ver figura 4.2.
5. En la pantalla aparecerán los datos almacenados hasta el momento en la
memoria
6. Usted puede manipular los datos en pantalla o almacenarlo en la PC para un
posterior uso
7. Una vez finalizado, termine la comunicación con el botón “desconectar”
8. Desconecte el cable USB y si desea cerrar el software
Pasos para leer los datos desde la memoria SD:
En este caso no se utiliza el puerto USB, por lo tanto se necesita en la PC un
lector de memoria SD.
70
1. Simplemente presione el botón de apagado y se cerraran las mediciones, usted
podrá observar que el LED indicador rojo se apagara
2. Luego retire la memoria SD y colóquela en el lector correspondiente para ser
conectada en cualquier PC y así descargar los datos medidos.
3. Coloque el adaptador en la PC y está listo para abrir su memoria de tal forma
que pueda observar los archivos creados, deberá presentar los tres tipos de datos
medidos y cantidad de memoria consumida
4. Elija el archivo que quiera analizar y dele doble clic para abrirlo con el software
del dispositivo o en otro software destinado a abrir archivos .txt estructurado, se
recomienda EXCEL, ya que se puede visualizar los datos correctamente,
manipularlos y graficarlos.
5. Esta listo para tratar sus datos de acuerdo a sus necesidades. Por ejemplo si
desea elaborar tablas, hacer comparaciones o elaborar gráficos.
71
Capítulo 5
Conclusiones y Trabajos Futuros
5.1 Conclusiones
Se ha cumplido con los objetivos del presente trabajo, logrando implementar
un dispositivo de medición y almacenamiento digital que permita operar
independientemente, y de una forma simple para el usuario, y sin afectar el
funcionamiento del Grupo Turbo-Generador de la Central Generadora General
Levalle para la cual fue diseñado.
Además, en el desarrollo del proyecto no solo se creó un dispositivo de
medición para dicho sistema, sino que también se ha pretendido y logrado que el
sistema sea lo más versátil posible, de modo que pueda ser adaptable a cualquier
aplicación posible para la que el microcontrolador esté preparado. Para ello, se
diseñaron los circuitos de entrada, de masa aislada y alta impedancia de modo que
su conexión no afecte el funcionamiento en el punto de medición.
Con la implementación del presente desarrollo, se logra tener por primera
vez en la Central Generadora General Levalle y San Francisco un registro digital
del funcionamiento diario de cada TG, como así también optimizar al máximo los
72
parámetros de funcionamiento, tales como consumo de combustible, temperaturas
de funcionamiento, potencia, perdidas por falla, entre otra, según especificaciones
del manual técnico.
A raíz de lo anterior, y complementado con el registro de eventos de forma
cronológica, se utilizará como una nueva herramienta practica a la hora de
solucionar fallas en el control de la TG, como así también ampliar su aplicación a
otros equipos del Sistema Interconectado Provincial.
5.2 Trabajos Futuros
Dado que el dispositivo de medición y almacenamiento digital se diseño con
el fin de ser un sistema versátil, las posibilidades a la hora de mejorarlo y
ampliarlo son muy numerosas. Entre las cuales se puede decir, la ampliación del
número de entradas digitales y analógicas ya que la disponibilidad de pines de
estos tipos de entradas por parte del microcontrolador Arduino lo permite.
En cuanto al hardware, también se plantea la posibilidad de mejoras en
cuanto a la estabilidad del diseño de los circuitos de adaptación de señales, como
así también otorgarle un sistema de autonomía a batería para entregarle mayor
estabilidad y hacerlo independiente del sistema eléctrico y poder utilizarlo en
zonas alejadas de dicho suministro.
Por último y con respecto al software, queda planteado como trabajo futuro
la mejora del tratamiento de los datos y la configuración del funcionamiento del
dispositivo desde dicha plataforma. El primero se debe a que en esta instancia solo
se puede visualizar y almacenar los datos en la PC, sin poder manipularlos como
la creación de gráficos. En cuanto al segundo punto, queda la necesidad de poder
configurar por parte del usuario el tipo de medición a realizar, en las cuales debe
73
poder definir el tipo de datos (digital, analógico y/o frecuencia), el número de
entradas de cada tipo y el número de datos a capturar, como así también poder
configurar y/o ajustar la fecha y hora en caso de pérdida de información.
Como se puede observar, las posibilidades de mejoras del dispositivo de
medición y almacenamiento digital planteado son innumerables, y dependen
principalmente de las necesidades que deban satisfacerse.
74
Capítulo 6
Bibliografía
John Brown Engineering. “Manuel de Servicio Turbo-Gas”. Clydebank,
Escocia. (1980).
General Electric. “Directo-Matic II. Field Instruction and Card Application
Data”. Nº GEK-8692M. (1980).
CAPIME. Manual “Sistema de Protección y Control de TG John Brown”.
ASEA. Catalogo LA 14-2 SP, tercera edición. Diciembre 1978.
Kernighan, B.W.; Ritchie, D.M. “El lenguaje de programación C”,
segunda edición. Editorial Pearson Educación.
Dietel, H.M.; Dietel, P.J.; “Como Programar en C/C++”, segunda edición.
Editorial Prentice Hall.
Herrador, R.E. “Guía de Usuario de Arduino”. Universidad de Córdoba.
Noviembre 2009.
Atmel. “Datasheet Microcontrolador ATmega 2560”. Febrero 2014.
Quijada Valle, O.M.; Argueta Sorto, A. “Diseño y Construcción de un
Instrumento electrónico para cuantificar magnitudes físicas (Datalogger).
Primera Etapa: Medir la Temperatura”. Tesis de la carrera de Ingeniería
Electrónica. Universidad de el Salvador. Agosto 2011.
75
Ramos, E. C. “Manual Teórico-Práctico Visual Basic 2008”. Instituto de
Formación Profesional del Paraguay. (2010).
Francesco, B. “Programación Avanzada con Microsoft Visual Basic .Net”,
edición 2003. Editorial MCGRAW-HLL.
Tapia Ayala, C.H.; Manzano Yupa, H.M. “Evaluación de la plataforma
Arduino e implementación de un sistema de control de posición
horizontal”. Tesis de la carrera de Ingeniería Electrónica. Universidad
Politécnica Salesiana. Ecuador 2013.
Enlaces Web:
http://arduino.cc/en/Main/arduinoBoardMega2560. Consultado en
septiembre 2014.
https://msdn.microsoft.com/es-es/vstudio. Consultado en noviembre 2014.
http://www.datasheetcatalog.com/
http://pdf.datasheetcatalog.com/datasheets2/30/3055029_1.pdf.
Consultado en octubre 2014.
http://pdf.datasheetcatalog.com/datasheet/texasinstruments/tl080.pdf.
Consultado en octubre 2014.
http://pdf.datasheetcatalog.com/datasheet2/1/02glhewsates3885ie825lrz9d
cy.pdf. Consultado en noviembre 2014.
http://pdf.datasheetcatalog.com/datasheets/150/44435_DS.pdf. Consultado
en diciembre 2014.
http://pdf.datasheetcatalog.com/datasheet/fairchild/LM7805.pdf.
Consultado en diciembre 2014.
76
http://pdf.datasheetcatalog.com/datasheet/fairchild/LM7905.pdf.
Consultado en diciembre 2014.
http://pdf.datasheetcatalog.com/datasheet/fairchildsemiconductor/LM7915
.pdf. Consultado en diciembre 2014.
77
Capítulo 7
Anexo
Anexo 1. Código Fuente Arduino.
// Proyecto de Trabajo Final
//DESARROLLO E IMPLEMENTACION DE DISPOSITIVO DE MEDICION Y ALMACENAMIENTO DIGITAL
//
//********************************************************************
// LIBRERIAS
#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 RTC;
//********************************************************************
// DECLARACION DE VARIABLES Y CONSTANTES
//
// GENERAL
// ENTRADA DIGITAL
int iD;
int Valor_Digital[20];
// ENTRADAS ANALOGICAS
int iA;
int m, n;
volatile int jA;
volatile struct {
volatile float valor[8];
volatile int D;
volatile int M;
volatile int A;
volatile int h;
volatile int m;
volatile int s;
volatile int t;
} muestra[20];
// ENTRADA DE FRECUENCIA
volatile float Valor_Frec[2]={0,0};
volatile float Valor_Frecuencia[2][20];
union u_32b {
volatile unsigned long valor;
volatile unsigned int bytes[2]={0,0};
};
volatile union u_32b t3;
volatile union u_32b t4;
78
// HORA Y FECHA
volatile struct {
volatile int a = 0;
volatile int m = 0;
volatile int d = 0;
} Fecha;
volatile struct {
volatile int h = 0;
volatile int m = 0;
volatile int s = 0;
volatile int t = 0;
} Hora;
char maxdia[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// COMUNICACION USB
int option;
int optionjA;
//********************************************************************
// DEFINICION E INICIALIZACION
//
// INICIO FUNCIONES PARA ENTRADA DE FRECUENCIA
void configInterrupcionesFrecuencia() {
pinMode(2, INPUT_PULLUP);
EIMSK |= _BV(INT4);
EICRB |= _BV(ISC41)|_BV(ISC40);
EIMSK |= _BV(INT5);
EICRB |= _BV(ISC51)|_BV(ISC50);
}
void configInterrupcionesTimers() {
TCCR3B = 0;
TCNT3 = 0;
TIMSK3 = 0x01;
TCCR3A = 0x00;
TCCR3B = 0b00000001;
TCCR4B = 0;
TCNT4 = 0;
TIMSK4 = 0x01;
TCCR4A = 0x00;
TCCR4B = 0b00000001;
}
// FUNCION INICIO CONVERTIDOR A/D
void inicializarADC() {
ADMUX|=_BV(REFS0);
ADCSRA|=_BV(ADEN)|_BV(ADPS2)|_BV(ADPS1)|_BV(ADPS0);
}
uint16_t leer_adc(uint8_t canal) {
ADMUX=((ADMUX & (0xE0)) | canal);
ADCSRA|=_BV(ADSC);
while(ADCSRA & _BV(ADSC));
return ADC;
}
// FUNCION INICIO MEMORIA SD Y ARCHIVOS
void inicializarSD() {
// MEMORIA SD
pinMode(53, OUTPUT);
Serial.print("Inicializando SD...");
if (!SD.begin(53)){
Serial.println("Fallo o tarjera no presente");
}
else{
Serial.println("SD correcta");
}
}
// inicio archivo DIGITAL
void inicioArchivoDigital(){
79
File digitalFile = SD.open("digital.txt", FILE_WRITE);
String digitalString = "FECHA,HORA,ENTRADA,ESTADO";
digitalFile.println(digitalString);
digitalFile.close();
return;
}
// inicio archivo ANALOGICO
void inicioArchivoAnalogico(){
File analogFile = SD.open("analog.txt", FILE_WRITE);
String analogString =
"FECHA,HORA,ENTRADA_1,HORA,ENTRADA_2,HORA,ENTRADA_3,HORA,ENTRADA_4,HORA,ENTRADA_5,
HORA,ENTRADA_6,HORA,ENTRADA_7,HORA,ENTRADA_8";
analogFile.println(analogString);
analogFile.close();
return;
}
// inicio archivo FRECUENCIA
void inicioArchivoFrecuencia(){
File frecFile = SD.open("frec.txt", FILE_WRITE);
String frecString = "FECHA,HORA,ENTRADA_1,HORA,ENTRADA_2";
frecFile.println(frecString);
frecFile.close();
return;
}
// FUNCION ESCRIBIR DATOS DIGITALES EN SD
void escribirDigital(int id, int valor) {
String digitalString = "";
File digitalFile = SD.open("digital.txt", FILE_WRITE);
digitalString += String (Fecha.d) + String ("/") + String (Fecha.m) +
String ("/") + String (Fecha.a) + String (",");
digitalString += String (Hora.h) + String (":") + String (Hora.m) + String
(":") + String (Hora.s) + String (":") + String (Hora.t) + String (",");
digitalString += String (id) + String (",") + String (valor);
digitalFile.println(digitalString);
digitalFile.close();
}
// FUNCION ESCRIBIR DATOS ANALOGICOS EN SD
void escribirAnalogica() {
File analogFile = SD.open("analog.txt", FILE_WRITE);
String analogString = "";
String muestraString = "";
for (m=0; m<19; m++){
analogString = String(muestra[m].D) + String("/") +
String(muestra[m].M) + String("/") + String(muestra[m].A) + String(",");
analogFile.print(analogString);
muestraString = String(muestra[m].h) + String(":") +
String(muestra[m].m) + String(":") + String(muestra[m].s)
+ String(":") + String(muestra[m].t) + String(",");
analogString = "";
for(n=0; n<8; n++) {
analogString += muestraString + String(muestra[m].valor[n]) +
String(",");
}
analogFile.println(analogString);
}
analogFile.close();
}
// FUNCION ESCRIBIR DATOS DE FRECUENCIA EN SD
void escribirFrecuencia() {
File frecFile = SD.open("frec.txt", FILE_WRITE);
String frecString = "";
String muestraString = "";
for (m=0; m<19; m++){
frecString = String(muestra[m].D) + String("/") + String(muestra[m].M)
+ String("/") + String(muestra[m].A) + String(",");
frecFile.print(frecString);
muestraString = String(muestra[m].h) + String(":") +
String(muestra[m].m) + String(":") + String(muestra[m].s)
+ String(":") + String(muestra[m].t) + String(",");
frecString = "";
frecString += muestraString + String(Valor_Frecuencia[0][m]) +
String(",") + muestraString + String(Valor_Frecuencia[1][m]) + String(",");
80
frecFile.println(frecString);
}
frecFile.close();
}
//********************************************************************
// DEFINICION E INICIALIZACION
//
void setup() {
t3.valor=1;
// ENTRADA DIGITAL
for(int i = 30; i < 50; i++) { pinMode(i, INPUT); }
// HORA Y FECHA
noInterrupts();
TCCR2A=0;
//TCCR2B=0b00000101;
TCCR2B|=_BV(CS22)|_BV(CS20);
TCNT2=131; //valor para que tarde 1ms en desbordar
//TIMSK2=0b00000001;
TIMSK2|=_BV(TOIE2);
// TEMPORIZADOR MUESTREO ANALOGICO y FRECUENCIA
TCCR1A=0;
TCCR1B=0b00000100;
TCNT1=34286;
TIMSK1=0b00000001;
interrupts();
// ENTRADAS DE FRECUENCIA
configInterrupcionesFrecuencia();
configInterrupcionesTimers();
sei();
// MÓDULO RTC
Wire.begin(); // Inicia el puerto I2C
RTC.begin(); // Inicia la comunicación con el RTC
//RTC.adjust(DateTime(__DATE__, __TIME__));
// PUERTO SERIAL
Serial.begin(115200);
// MEMORIA SD
inicializarSD(); //INICIO MEMORIA
if(SD.exists("digital.txt")==0){
inicioArchivoDigital();}
if(SD.exists("analog.txt")==0){
inicioArchivoAnalogico();}
if(SD.exists("frec.txt")==0){
inicioArchivoFrecuencia();}
// INICIO CONVERTIDOR A/D
inicializarADC();
}
//********************************************************************
// DESARROLLO DE PROGRAMA
//
void loop() {
// HORA Y FECHA
if (Fecha.a == 0){
DateTime now = RTC.now();
Hora.s = now.second();
Hora.m = now.minute();
Hora.h = now.hour();
Fecha.d = now.day();
Fecha.m = now.month();
Fecha.a = now.year();
}
// ENTRADA DIGITAL
for (iD=30; iD<34; iD++) {
if (digitalRead(iD) != Valor_Digital[iD-30]){
Valor_Digital[iD-30] = !Valor_Digital[iD-30];
81
escribirDigital(iD-30, Valor_Digital[iD-30]);
}
}
// ENTRADAS ANALOGICAS y FRECUENCIA
if (jA==20){
escribirAnalogica();
escribirFrecuencia();
jA=0;
}
// COMUNICACION USB
if (Serial.available()>0){
optionjA=jA;
option=Serial.read();
if(option=='a') {
File dataFile = SD.open("analog.txt");
if (dataFile) {
Serial.println("* A continuacion se muestra los datos Analogicos");
while (dataFile.available()) {
Serial.write(dataFile.read());
}
dataFile.close();
}else {
Serial.println("Error al abrir analog.txt");
}
}
if(option=='f'){
File dataFile = SD.open("frec.txt");
if (dataFile) {
Serial.println("* A continuacion se muestra los datos de
Frecuencia");
while (dataFile.available()) {
Serial.write(dataFile.read());
}
dataFile.close();
}else {
Serial.println("Error al abrir frec.txt");
}
}
if(option=='d'){
File dataFile = SD.open("digital.txt");
if (dataFile) {
Serial.println("* A continuacion se muestra los datos Digitales");
while (dataFile.available()) {
Serial.write(dataFile.read());
}
dataFile.close();
}else {
Serial.println("Error al abrir digital.txt");
}
}
if (option=='i'){
SD.remove("Digital.txt");
inicioArchivoDigital();
}
if (option=='n'){
SD.remove("analog.txt");
inicioArchivoAnalogico();
}
if (option=='r'){
SD.remove("frec.txt");
inicioArchivoFrecuencia();
}
jA=optionjA;
}
}
//********************************************************************
//DEFINICION DE FUNCIONES
//
// MUESTREO ENTRADAS ANALOGICAS y FRECUENCIA
ISR(TIMER1_OVF_vect){
TCNT1=34286;
for(iA=0; iA<8; iA++){
muestra[jA].valor[iA] = (leer_adc(iA)/51.15-10);
82
}
muestra[jA].h = Hora.h;
muestra[jA].m = Hora.m;
muestra[jA].s = Hora.s;
muestra[jA].t = Hora.t;
muestra[jA].D = Fecha.d;
muestra[jA].M = Fecha.m;
muestra[jA].A = Fecha.a;
Valor_Frecuencia[0][jA] = Valor_Frec[0];
Valor_Frecuencia[1][jA] = Valor_Frec[1];
jA++;
}
// ENTRADAS DE FRECUENCIA
ISR(INT4_vect) {
t3.bytes[0] = TCNT3;
TCNT3 = 16;
Valor_Frec[0] = (16000000.0f/t3.valor);
t3.valor = 0;
}
ISR(INT5_vect) {
t4.bytes[0] = TCNT4;
TCNT4 = 16;
Valor_Frec[1] = (16000000.0f/t4.valor);
t4.valor = 0;
}
ISR(TIMER3_OVF_vect) {
t3.bytes[1]++;
if(t3.bytes[1]==250){
t3.bytes[1]=0;
Valor_Frec[0]=0;
}
}
ISR(TIMER4_OVF_vect) {
t4.bytes[1]++;
if(t4.bytes[1]==250){
t4.bytes[1]=0;
Valor_Frec[1]=0;
}
}
// HORA Y FECHA
ISR(TIMER2_OVF_vect){
TCNT2=131;
Hora.t++;
if (Hora.t>999) {
Hora.t=0;
Hora.s++;
}
if (Hora.s>59) {
Hora.s=0;
Hora.m++;
}
if (Hora.m>59) {
Hora.m=0;
Hora.h++;
}
if (Hora.h>23) {
Hora.h=0;
Fecha.d++;
}
if(Fecha.d > maxdia[Fecha.m-1]) {
Fecha.m++;
if(Fecha.m == 13) { Fecha.m = 1; Fecha.a++; }
Fecha.d = 1;
}
}
Anexo 2. Código Fuente Visual Basic.
83
Public Class Form1
Dim recibidos As String
Dim tipoDato As String
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles
MyBase.Load
BuscarPuerto()
End Sub
Private Sub BuscarPuerto()
'Busca los puertos disponibles para establecer conexion y los muertra en
ComboBox
Try
ComboBoxPuerto.Items.Clear()
For Each puerto As String In My.Computer.Ports.SerialPortNames
ComboBoxPuerto.Items.Add(puerto)
Next
If ComboBoxPuerto.Items.Count > 0 Then
ComboBoxPuerto.SelectedIndex = 0
Else
MsgBox("NO HAY PUERTOS DISPONIBLES EN TU SISTEMA")
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Private Sub BotonConectar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BotonConectar.Click
'al hacer click en conectar toma la configuracion y conecta el dispositivo
Try
With SerialPort
.BaudRate = ComboBoxVelocidad.Text
.DataBits = NumeroBitDato.Value
.Parity = NumeroBitParidad.Value
.StopBits = NumeroBitParada.Value
.PortName = ComboBoxPuerto.Text()
.Open()
If .IsOpen Then
LabelEstado.Text = "Conectado"
Else
MsgBox("CONEXION FALLIDA!", MsgBoxStyle.Critical)
End If
End With
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
AddHandler SerialPort.DataReceived, AddressOf Recepcion
End Sub
Private Sub BotonDesconectar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BotonDesconectar.Click
SerialPort.Close()
LabelEstado.Text = "Desconectado"
End Sub
Private Sub Recepcion(ByVal sender As Object, ByVal e As
System.IO.Ports.SerialDataReceivedEventArgs)
recibidos += SerialPort.ReadExisting().Replace(",", vbTab)
Me.Invoke(New EventHandler(AddressOf actualizar))
End Sub
Private Sub actualizar(ByVal s As Object, ByVal e As EventArgs)
If tipoDato = 0 Then
TextDigital.Text = recibidos
End If
If tipoDato = 1 Then
TextAnalogico.Text = recibidos
End If
If tipoDato = 2 Then
TextFrecuencia.Text = recibidos
End If
End Sub
84
'-----------------------------------------------------------------------------
------
'ENTRADAS DIGITALES
Private Sub BotonDigitalCargar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BotonDigitalCargar.Click
If SerialPort.IsOpen Then
tipoDato = 0
recibidos = ""
SerialPort.WriteLine("d")
Else
MsgBox("NO ESTAS CONECTADO", MsgBoxStyle.Exclamation)
End If
End Sub
Private Sub BotonDigitalBorrar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BotonDigitalBorrar.Click
If SerialPort.IsOpen Then
SerialPort.WriteLine("i")
Else
MsgBox("NO ESTAS CONECTADO", MsgBoxStyle.Exclamation)
End If
End Sub
Private Sub BotonDigitalLimpiar_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles BotonDigitalLimpiar.Click
TextDigital.Clear()
recibidos = ""
End Sub
Private Sub BotonDigitalAbrir_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BotonDigitalAbrir.Click
TextDigital.Clear()
Dim Open As New OpenFileDialog()
Dim myStreamReader As System.IO.StreamReader
Open.Filter = "Text [*.txt*]|*.txt|All Files [*,*]|*,*"
Open.CheckFileExists = True
Open.Title = "Abrir Archivo Digital"
Open.ShowDialog(Me)
Try
Open.OpenFile()
myStreamReader = System.IO.File.OpenText(Open.FileName)
TextDigital.Text = myStreamReader.ReadToEnd()
Catch ex As Exception
End Try
End Sub
Private Sub BotonDigitalGuardar_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles BotonDigitalGuardar.Click
Dim Save As New SaveFileDialog()
Dim myStreamWriter As System.IO.StreamWriter
Save.Filter = "Text
(*.txt)|*.txt|HTML(*.html*)|*.html|PHP(*.php*)|*.php*|All files(*.*)|*.*"
Save.CheckPathExists = True
Save.Title = "Guardar Archivo Digital"
Save.ShowDialog(Me)
Try
myStreamWriter = System.IO.File.AppendText(Save.FileName)
myStreamWriter.Write(TextDigital.Text)
myStreamWriter.Flush()
Catch ex As Exception
End Try
End Sub
'-----------------------------------------------------------------------------
------
'ENTRADAS ANALOGICAS
Private Sub BotonAnalogicoAbrir_Click_1(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles BotonAnalogicoAbrir.Click
TextAnalogico.Clear()
Dim Open As New OpenFileDialog()
Dim myStreamReader As System.IO.StreamReader
Open.Filter = "Text [*.txt*]|*.txt|All Files [*,*]|*,*"
Open.CheckFileExists = True
Open.Title = "Abrir Archivo Analogico"
85
Open.ShowDialog(Me)
Try
Open.OpenFile()
myStreamReader = System.IO.File.OpenText(Open.FileName)
TextAnalogico.Text = myStreamReader.ReadToEnd()
Catch ex As Exception
End Try
End Sub
Private Sub BotonAnalogicoCargar_Click_1(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles BotonAnalogicoCargar.Click
If SerialPort.IsOpen Then
tipoDato = 1
recibidos = ""
SerialPort.WriteLine("a")
Else
MsgBox("NO ESTAS CONECTADO", MsgBoxStyle.Exclamation)
End If
End Sub
Private Sub BotonAnalogicoBorrar_Click_1(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles BotonAnalogicoBorrar.Click
If SerialPort.IsOpen Then
SerialPort.WriteLine("n")
Else
MsgBox("NO ESTAS CONECTADO", MsgBoxStyle.Exclamation)
End If
End Sub
Private Sub BotonAnalogicoGuardar_Click_1(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles BotonAnalogicoGuardar.Click
Dim Save As New SaveFileDialog()
Dim myStreamWriter As System.IO.StreamWriter
Save.Filter = "Text
(*.txt)|*.txt|HTML(*.html*)|*.html|PHP(*.php*)|*.php*|All files(*.*)|*.*"
Save.CheckPathExists = True
Save.Title = "Guardar Archivo Analogico"
Save.ShowDialog(Me)
Try
myStreamWriter = System.IO.File.AppendText(Save.FileName)
myStreamWriter.Write(TextAnalogico.Text)
myStreamWriter.Flush()
Catch ex As Exception
End Try
End Sub
Private Sub BotonAnalogicoLimpiar_Click_1(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles BotonAnalogicoLimpiar.Click
TextAnalogico.Clear()
recibidos = ""
End Sub
Private Sub BotonAnalogicoGraficar_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles BotonAnalogicoGraficar.Click
End Sub
'-----------------------------------------------------------------------------
------
'ENTRADAS DE FRECUENCIA
Private Sub BotonFrecuenciaCargar_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles BotonFrecuenciaCargar.Click
If SerialPort.IsOpen Then
tipoDato = 2
recibidos = ""
SerialPort.WriteLine("f")
Else
MsgBox("NO ESTAS CONECTADO", MsgBoxStyle.Exclamation)
End If
End Sub
Private Sub BotonFrecuenciaBorrar_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles BotonFrecuenciaBorrar.Click
If SerialPort.IsOpen Then
SerialPort.WriteLine("r")
Else
86
MsgBox("NO ESTAS CONECTADO", MsgBoxStyle.Exclamation)
End If
End Sub
Private Sub BotonFrecuenciaAbrir_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles BotonFrecuenciaAbrir.Click
TextFrecuencia.Clear()
Dim Open As New OpenFileDialog()
Dim myStreamReader As System.IO.StreamReader
Open.Filter = "Text [*.txt*]|*.txt|All Files [*,*]|*,*"
Open.CheckFileExists = True
Open.Title = "Abrir Archivo Frecuancia"
Open.ShowDialog(Me)
Try
Open.OpenFile()
myStreamReader = System.IO.File.OpenText(Open.FileName)
TextFrecuencia.Text = myStreamReader.ReadToEnd()
Catch ex As Exception
End Try
End Sub
Private Sub BotonFrecuenciaGuardar_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles BotonFrecuenciaGuardar.Click
Dim Save As New SaveFileDialog()
Dim myStreamWriter As System.IO.StreamWriter
Save.Filter = "Text
(*.txt)|*.txt|HTML(*.html*)|*.html|PHP(*.php*)|*.php*|All files(*.*)|*.*"
Save.CheckPathExists = True
Save.Title = "Guardar Archivo Fracuancia"
Save.ShowDialog(Me)
Try
myStreamWriter = System.IO.File.AppendText(Save.FileName)
myStreamWriter.Write(TextFrecuencia.Text)
myStreamWriter.Flush()
Catch ex As Exception
End Try
End Sub
Private Sub BotonFrecuenciaLimpiar_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles BotonFrecuenciaLimpiar.Click
TextFrecuencia.Clear()
recibidos = ""
End Sub
Anexo 3. Memoria Fotográfica
87
1. Central Generadora General Levalle.
2. Edificio Central G.L.
88
3. La Turbina extremo motor de lanzamiento.
4. La Turbina extremo generador.
89
5. El Generador y la excitatriz.
6. Placa Generador.
90
7. Sala de Control