Universidad Nacional de San Luis
Facultad de 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 tar jeta 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.
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 tar jeta 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.
… 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
Í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
I
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 II
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 III
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
IV
Í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
V
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 d e 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 VI
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
VII
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.
1
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 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 buscar una solución solución alternativa con el diseño e implementación 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 puertos de comunicación, comunicación, se los los utiliza
2
para configurar el funcionamiento del equipo y para enviar los datos capturados hacia la PC con el fin de poder visualizarlos visualizar los y manipularlos en un software.
1.2. Descripción 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. 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 3
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 TurboGenerador, 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 4
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 5
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.
6
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).
7
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).
8
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
9
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 extre mo 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.
10
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. 11
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
12
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
13
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
14
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).
15
Figura 2.3: Panel esquemático
16
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
17
puede observar un diagrama d iagrama 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 2.2.2. Sensores de Velocidad Sistema de Protección y Control, Capime; “una “u na 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
18
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 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 19
TRONIC y así generar las señales de comando de combustible para la secuencia. Sistema de Protección y Control, Capime; “ Los “ Los niveles regulados son FUEGO, CALENTAMIENTO y LIMITE DE ACELERACION ” 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”) “START”) se activa el circuito seleccionado. Si todos los circuitos de protección y enganche de disparo están
20
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.
21
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 reg ulado.
22
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.
23
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
24
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í
25
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.
26
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 27
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 TurboGenerador 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
28
comprender de forma rápida y sencilla las partes estructurales del dispositivo de medición en desarrollo.
Memoria SD s o t o n t a e i d m e a d n y e a r c u a t c m l e A L
D i g i t al Analógica a n c i c u e e r F
Transductores
Lectura de valores
Envio datos uP
Visualización
PC
Software
Configuración
Modulo RTC
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 29
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.
30
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.
31
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 32
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.
33
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).
34
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 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");
35
} // 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
36
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 #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. }
37
Hardware adaptador de señales
3.3.4
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,
38
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. 15V 10MΩ 7
ENTRADA
1
5V
5
3
3.3MΩ
Acom
74hct245 TL080CP
6
4.7MΩ
2
3.3MΩ 4
8
4 10MΩ
2
A1
B1
18
3
A2
B2
17
4 5
A3
B3
A4
B4
16 15
A5
B5
A6
B6
A7
B7
A8
B8
6 7 8 9 1
DIR
19
~G
Pin_uP
14 13 12 11
-15V 10MΩ
Figura 3.8: Esquema eléctrico de una entrada digital.
39
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 t odo momento.
40
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 entradasalida 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.
41
-5V
15V
5V
1MΩ 7 7
1
1
5
5 3
ENTRADA
1MΩ
3
3.3MΩ
Acom
TL080CP
6
TL080CP
6
Pin_uP
2
1MΩ
2
4
3.3MΩ 4
8
8
-15V
1MΩ 1MΩ
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
42
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. P12V 5V
7
1
5
3
1kΩ 6
ENTRADA
1kΩ
2
SALIDA
3.3MΩ 4
8
10MΩ
N12V
Figura 3.12: Diagrama eléctrico entrada de Frecuencia.
43
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 a limente 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.
44
P15
LM7815CT
LM7805CT
LINE VOLTAGE
LINE VOLTAGE
VREG
COMMON
T1 4
COMMON
C3 10uF
C1 2.2mF
2
P5
VREG
C4 10uF GND
1
3
C2 2.2mF C5 10uF
C6 10uF
LM7915CT
LM7905CT
LINE VOLTAGE
LINE VOLTAGE
VREG
COMMON
N5
VREG
COMMON
N15
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.
45
MODULO RTC
PC
USB
MODULO SD
GND VCC SDA SCL
GND 5V CS MOSI SCK MISO
GND 5V
GND 5V 53
20
21
51
52
50
USB
uC GND
30 31 32 33 34 35 36 37 220V 50Hz
A0 A1 A2 A3 A4 A5 A6 A7
2
3
1
2
F.T. -15V -5V GND +5V +15V 1 2 3 4
5 6 7 8
DIGITAL
1
2 3 4
5 6
7 8
ANALOGICO
FREC.
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.
I magen
Nombre
F unció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 No se observa. desarrollo que conecta el µC. Atmega2560 con los periféricos necesarios para su funcionamiento.
1
Información disponible en http://pdf.datasheetcatalog.com/datasheet s2/30/3055029_1.pdf
46
2
Información Información 4 Información 5 Información 6 Información 3
disponible disponible disponible disponible disponible
en en en en en
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 Niveles de memoria SD y tensión de µC. funcionamiento diferentes a los del µC
Amplificador Operacional TL080. 2
Permiten una entrada de alta impedancia y masas aisladas.
CD74HCT245.
Permiten asegurar el voltaje de entrada en el µC.
LM7815.
Mantiene +15V No se observó. necesario para el funcionamiento de los componentes del sistema.
LM7805.
Mantiene +5V No se observó. necesario para el funcionamiento de los componentes del sistema.
LM7905.
Mantiene -5V No se observó. necesario para el funcionamiento de los componentes del sistema.
Sensible a ruidos. Limitación de frecuencia, máxima de 20kHz. No se observó.
http://pdf.datasheetcatal og.com/datasheet/t exasinstruments/tl080.pdf http://pdf.datasheetcatalog.com/datasheet2/1/02glhewsates3885ie825lrz9dcy.pdf http://pdf.datasheetcatalog.com/datasheet s/150/44435_DS.pdf http://pdf.datasheetcatalog.com/datasheet/fairchild/LM7805.pdf http://pdf.datasheetcatal og.com/datasheet/fai rchild/LM7905.pdf
47
LM7915.
Mantiene -15V No se observó. necesario para el funcionamiento de los componentes del sistema.
Memoria SD
Almacenamiento No se observó. de datos para ser enviados a la Pc.
Batería de 3V
Asegura que se No se observó. mantendrá la hora y la fecha aunque esté desconectada la fuente de alimentación.
Diodos
Para No se observó. rectificación de onda senoidal.
Capacitores
Filtran señales No se observó. para tener respuestas más estables.
Resistencias
Manejo del No se observó. voltaje adecuado en diferentes puntos del sistema.
Trimmer multivueltas
Permiten tener No se observó. un ajuste fino de la ganancia en las configuraciones de los A.O.
7
Información disponible en http://pdf.datasheetcatalog.com/datasheet/fai rchildsemiconductor/ LM7915.pdf
48
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
49
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:;, {} 50
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.
51
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. 52
// 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 53
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ó
54
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 55
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:
56
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. 57
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.
58
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 dest inada 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
59
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. 60
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 co ntinuació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
61
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
Velocidad F1 Temperatura A1 VCE A2 Tabla 3.2: Conexión en el Control.
Tarjeta
Pin
SSZB (1L1O) STKK (1L1L) SSKC (1L1R)
Pin 3 Pin 14 Pin 24
62
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.
63
Velocidad % 120 100 80 60 40 Vel %
20 0 : : :
:
:
:
:
:
:
:
:
:
: : :
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
: : :
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
: : :
: : :
Figura 3.23: Curva de Velocidad %.
Temperatura 9 8 7 6 5 4 3 2 1 0
Temperatura
: : : :
:
:
:
:
:
:
:
:
:
:
:
:
: :
: : :
: : :
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
: : :
: : :
Figura 3.24: Curva de Temperatura.
64
VCE 14 12 10 8 6 VCE
4 2 0 : : :
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
: : :
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
: : :
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
: : :
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.
65
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.
66
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.
67
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.
68
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 lecto r de memoria SD.
Pasos por comunicación USB : 1. Encender la PC y abrir el software del disposit ivo 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.
69
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.
70
Capítulo 5
Conclusiones y Trabajos Futuros 5.1 Conclusiones Se ha cumplido con los objetivos del presente t rabajo, 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 71
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 e n 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 72
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.
73
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.
74
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. 75
http://pdf.datasheetcatalog.com/datasheet/fairchild/LM7905.pdf . Consultado en diciembre 2014.
http://pdf.datasheetcatalog.com/datasheet/fairchildsemiconductor/LM7915 .pdf . Consultado en diciembre 2014.
76
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 #include #include #include 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;
77
// HORA Y FECHA volatile struct { volatile int a = 0; volatile int m = 0; volatile int d = 0; } Fecha; volatile struct { volatile int h volatile int m volatile int s volatile int t } Hora;
= = = =
0; 0; 0; 0;
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 TCNT3 TIMSK3 TCCR3A TCCR3B
= = = = =
0; 0; 0x01; 0x00; 0b00000001;
TCCR4B TCNT4 TIMSK4 TCCR4A TCCR4B
= = = = =
0; 0; 0x01; 0x00; 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(){
78
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(",");
79
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];
80
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);
81
} muestra[jA].h muestra[jA].m muestra[jA].s muestra[jA].t muestra[jA].D muestra[jA].M muestra[jA].A
= = = = = = =
Hora.h; Hora.m; Hora.s; Hora.t; Fecha.d; Fecha.m; 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.
82
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
83
'---------------------------------------------------------------------------------'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"
84
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
85
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
86
1. Central Generadora General Levalle.
2. Edificio Central G.L.
87
3. La Turbina extremo motor de lanzamiento.
4. La Turbina extremo generador.
88
5. El Generador y la excitatriz.
6. Placa Generador.
89