Medida de la temperatura de un transformador de media tensión

modelo1

El problema.

En la central hidroeléctrica tenemos un transformador que convierte la tensión de los alternadores (480V) a la tensión de la red (20KV). Como todo transformador, según la potencia que estemos entregando y la temperatura ambiente se calienta. Para proteger de una excesiva temperatura el trafo dispone de unas pt100 de tres hilos, una por cada fase introducidas dentro del nucleo seco de este.

Antes de este proyecto usabamos un dispositivo de la marca TecSystem modelo T154 que era el encargado de esta función. Este circuito funciona bien, pero debido a un problema que desconozco, cada vez que hay tormenta con fuerte aparato eléctrico se averiaba algún canal (temperatura de fase). Después de perder todas las fases de un aparato, decidimos adquirir otro, que precisamente no es barato. Al cabo del tiempo y tras varias tormentas se volvió a averiar con lo que decidimos que era la hora de sustituirlo por algo funcional y más asequible.

Funcionamiento del T154

t154

Para nuestro proyecto hemos decidido clonar la funcionalidad del T154, realizando la monitorización de la temperatura y la protección del trafo.

El T154 se compone de:

  • 3 entradas para pt100 de tres hilos
  • Dos salidas de alarma. Ambas son salidas a relé y programables a distinto rango de temperaturas. Dichas alarmas se activan cuando se alcanza una temperatura y no se apagan hasta que dicha temperatura baje a determinada consigna.
  • Salida de fallo, indicando que alguna de las sondas esta fallando.
  • Salida de ventilador. Tiene la misma funcionalidad que las alarmas, es decir, se enciende a una temperatura y no se apaga hasta que la temperatura baje a cierto nivel. La única diferencia es su uso, en este caso para encender un ventilador que enfrie el transformador.
  • Display de 7 segmentos para mostrar la información de programación y la temperatura.

Nosotros usaremos las mismas entradas y las salidas de alarma que provee el T154, también usaremos la salida de ventilador pero prescindiremos de la salida de fallo, ya que esta no está conectada a nada.

Todo ello lo haremos usando nuestra plataforma Arduino mejorando, además, el sistema de programación, utilizando un display alfanumérico y añadiendo comunicación ModBus para la comunicación con el sistema SCADA de la central, cosa que no posee.

Sobre las pt100

Una pt100 es un sensor RTD, Resistance Temperature Detector o detector de temperatura resistivo. Estos sensores se caracterizan porque el valor de su resistencia interna depende de la temperatura.

Basicamente hay dos tipos de RTD: PTC y NTC. PTC significa coeficiente de temperatura positivo, es decir, a mayor temperatura mayor resistencia. NTC significa lo contrario, coeficiente de temperatura negativo: a mayor temperatura menor resistencia. Las pt100 son del tipo PTC, es decir, su resistencia será mayor según la temperatura vaya subiendo.

El comportamiento será definido por el material con el que estan construidas, siendo el caso de las pt100 el platino. El "100" en el nombre indica la resistencia que tiene el sensor a 0ºC, es decir, 100 ohmios.

También existen pt1000, esto quiere decir que a 0 grados su resistencia será de 1000 ohmios.

Las pt100 presentan un problema: Un cambio de brusco de temperatura significa un cambio mínimo de resistencia. Cuando usamos cables con una distancia considerable, la propia resistencia del cable puede hacernos variar la temperatura del sensor varios grados. Por ello las pt100 se presenta en varios formatos.

El peor de todos es el formato de dos hilos. Esto significa que de los extremos de la pt100 sale un cable por cada lado. Cuando añadimos mas cable para llegar a donde está el aparato de medición, a la resistencia de la propia pt100 se le añade la de los dos cables.

La de tres hilos mejora la medición. De un extremo salen dos hilos y del otro solo uno. Bajo determinadas condiciones se puede reducir el error bastante.

El último formato es el de cuatro hilos. En este la resistencia de los cables se anula por completo y es el más fiable de ellos.

El problema de estos formatos es el precio, siendo la sonda de dos hilos la más barata y la de cuatro hilos la mas cara.

En cuanto a la evolución de la resistencia con la temperatura no tiene un comportamiento lineal, si no más bien curvo. Existen tablas donde se indica el valor de resistencia para una determinada temperatura.

Se puede implementar dicha tabla usando PROGMEM en Arduino, pero consumirá una cantidad de memoria bastante considerable. Dado que aunque el comportamiento no es lineal, pero muy aproximado a una recta, existe una fórmula que nos simplificará mucho el trabajo.

Dicha fórmula es la siguiente:

formula01

Siendo R0 el valor de la resistencia a la temperatura de 0 grados, en el caso la pt100 será 100. a será el coeficiente de temperatura del material siendo para el platino 0.00385. T será la temperatura.

Si sustituimos los valores y despejamos la variable de temperatura obtendremos la siguiente fórmula:

formula02

Esta fórmula será más fácil de programa en Arduino, ahora tan solo basta con poder interpretar la resistencia para calcular la temperatura.

Medición de la pt100 de tres hilos

En nuestro caso el transformador posee sondas de tres hilos. La medición de este tipo de sondas se realiza mediante una modificación del puente de Wheatstone. Pero nosotros vamos a utilizar una medición diferente.

Crearemos un generador de corriente cuya salida pasará a través de la pt100 y mediremos la caida de tensión correspondiente, como se muestra en la siguiente figura.

circuito01

La resistencias llamadas RCx, representan la resistencia del cable.

La corriente i que debemos hacer circular debera ser pequeña, del orden de miliamperios. Si elegimos una corriente muy elevada, la pt100 emitirá calor y la temperatura será falseada.

Suponiendo que la entrada del voltimetro consume una corriente i2 despreciable obtendremos que la caida de tensión en el voltimetro dependera solo de la resistencia de la pt100 y de la del cable RC3. Si el cable tiene un grosor bastante considerable y una longitud adecuada podemos también despreciarla ya que el error será mínimo, quedando tan solo la resistencia de la pt100 que es lo que buscamos.

Continuará...

El circuito

Para el circuito crearemos nuestra PCB usando un microcontrolador atMega328p (Arduino UNO) con el bootloader cargado lo cual nos facilitará la programación del microcontrolador.

Dicha PCB constará de lo siguiente:

  • Microcontrolador atMega328p, con su cristal de 16MHz y condensadores de filtro.
  • Se usaran tres entradas analógicas del Arduino, una para cada canal. A dichas entradas se conectará un circuito adaptador para poder medir la caida de tensión en la pt100.
  • Tres salidas de relé que serán las correspondientes a las salidas de alarma y ventilador.
  • Display de 16x2 alfanumérico.
  • Pulsador de reset (útil para la programación), y tres pulsadores para manejo del menú de programación.
  • Fuente de alimentación para reducir la alimentación de 12V a los 5V necesarios para el microcontrolador.
  • Puerto de comunicaciones para ModBus/Programación.

El circuito adaptador de señal es el siguiente:

corregido

En el circuito se utiliza un LM317LZ como generador de corriente, con una resistencia 1k24 ohmios, lo que en teoria ajusta la corriente a 1mA aproximadamente.

Esa corriente circulará a través de la pt100 haciendo que se produzca una caida de tensión en ella. Esa tensión será del orden de mili voltios con lo que conviene amplificarla un poco.

Para ello utilizamos un L![corregido|426x386](upload://uCzATrGU4OzUAmxPS7bRlazUV9g.png) M324 en configuración no inversor con una ganancia de 6.

Si hacemos calculos mentales, veremos que a cero grados de temperatura, la resistencia será de unos 100 ohmios, lo cual significa que al circular la corriente a través de ella tendrá una caida de tensión de 0.1V. Al tener una ganancia de 6, la tensión que llegará al pin analógico será de 0.6 voltios.

El trafo aguanta una temperatura máxima de 150 grados, pero no conviene llegar a ella y en condiciones favorable deberá rondar los 90 grados. Aun así la pt100 a 150 grados tendrá una resistencia de 157 ohmios lo que implica que a la entrada analógica llegarán unos 0.942 voltios. ¿Qué significa eso? Pues que para aumentar la precisión en la lectura podemos usar la referencia analógica interna de Arduino de 1.1V.

Entre la salida del amplificador y la entrada analógica hemos colocado un filtro RC para minimizar fluctuaciones y ruidos.

Las tres salidas de relé tienen la misma forma:

circuito03

El relé elegido es un HK4100F de bobina de 12 voltios y un consumo de 30mA. Es pequeño, barato y tiene una potencia suficiente para activar el pequeño ventilador del transformador. Paras las salidas de alarma no tiene mayor importancia porque estan conectadas a las entradas de un automata (también armado con Arduino.

Q1 hace de driver para el relé y evitar dañar el pin de Arduino.

D1 es el diodo antiparalelo que protege el circuito de los rebotes del relé y D2 es simplemente es un led de señalización.

Se ha puesto unos bloques de 3 terminales, estando a disposición los contactos normalmente abierto y cerrado.

circuito04

La fuente está basada en el regulador 7805. A la entrada se ha puesto un filtro RC que limita los ruidos y un condensador considerado "grande" que evita que el microcontrolador se enteré de fluctuaciones en la alimentación. Además se ha protegido la entrada con un diodo supresor de transitorios de 18V. Se incluye un led de señalización.

El consumo es de unos 20mA sin salidas de relé activas, si se activan el consumo podría llegar casi a los 100mA.

Continuará...

Desde ya que nada que decir a tu proyecto: pero porque no usas el MAX31865 que esta diseñado para leer PT100/1000 etc? Cuesta 5 euros.

Aca los beneficios y bondades de este integrado

  • Provides High-Accuracy Thermocouple Temperature Readings
  • Includes Automatic Linearization Correction for 8 Thermocouple Types
  • ±0.15% (max, -20°C to +85°C) Thermocouple FullScale and Linearity Error
  • 19-Bit, 0.0078125°C Thermocouple Temperature Resolution
  • Internal Cold-Junction Compensation Minimizes System Components
  • ±0.7°C (max, -20°C to +85°C) Cold-Junction Accuracy
  • ±45V Input Protection Provides Robust System Performance
  • Simplifies System Fault Management and Troubleshooting
  • Detects Open Thermocouples
  • Over- and Undertemperature Fault Detection
  • 50Hz/60Hz Noise Rejec

Hay puntos muy difíciles de igualar, no digo superar.
Este es muy fuerte, claro que no hace falta midiendo 150 °C, con 1 digito alcanza.
19-Bit, 0.0078125°C Thermocouple Temperature Resolution

Esto si que es importante:

  • Includes Automatic Linearization Correction for 8 Thermocouple Types
  • ±0.15% (max, -20°C to +85°C) Thermocouple FullScale and Linearity Error

Solo es aporte, aunque descarto que lo has considerado.

Hola Surbyte.

Cuando diseñe el circuito estuve mirando las posibilidades y efectivamente vi el MAX31865. Pero lo descarte por los siguientes motivos:

Tiempo de espera. Al hacer el pedido tardaba mas de un mes en llegarme.

No me atrevo todavía a trabajar con SMD y los módulos que encontraba con un precio asequible venían con los pines soldados, mi experiencia me dice que al desoldar los pines puede que me cargue el módulo.

No necesitaba precisión, por lo que usar amplificadores era una opción. Los amplificadores y reguladores los tenía a mano, como una centena en el armario de componentes.

Te sorprenderá, pero me gusta destripar cosas y cuando abrí el T154 para ver que llevaba dentro me sorprendió que solo llevaba un microcontrolador de 8 bits pequeño, no me acuerdo del modelo, pero si se que tenía 256 bytes de RAM y no disponia de nada, solo puerto serie. Llevaba un chip para controlar un display y el conversor AD era un chip externo de 8 bit de resolución. Y un monton de transistores y amplificadores operacionales.

Así que me motivo mas para hacerlo yo mismo.

Esta tarde continuaré con la explicación. El proyecto tiene una falla que al final será una duda que podemos debatir.

Continuando con el circuito

circuito05

En la parte de los botones no hay mucha complicación. Aprovechando la resistencia PULL UP del arduino, solo hemos añadido un condensador de 100nF para reducir el debounce.

El reset es un circuito especial. Siguiendo las recomendaciones de la nota de aplicación AVR042 en la que se consideran aspectos sobre el diseño del hardware se recomienda el uso de dicho esquema en ambientes propensos a ruidos eléctricos. En nuestro caso estará cerca de un transformador, tensiones altas, asi que es recomendable usarlo.

El inconveniente de usar este esquema es que nos obliga a tener que pulsar el botón para poder programar el circuito.

El display tampoco presenta mucha complicación en su conexionado. Para el contraste se ha prescindido del potenciometro y se conectado una resistencia el pin VEE llevada a GND. Con un valor entre 2k2 y 3k6 ohmios se obtienen valores de contraste bastante visibles y una resistencia no ocupa el espacio de un potenciometro.

El puerto de comunicaciones es un simple conector IDC donde estan disponibles los pines D0 (RX), D1 (TX) y D2 (TXE). Este último es usado en la habilitación del modo de escritura/lectura del MAX485. También está disponible la alimentación de 5V para poder alimentar el módulo de comunicaciones externo.

El módulo externo de comunicaciones está basado en un MAX485, y el bus rs485 dispone de su propia alimentación y esta físicamente aislado de los automatas mediante optoacopladores, por lo que su esquema es algo más complejo y se optó por colocar en un módulo externo. @Surbyte sabe de lo que hablo.

Una vez realizado el esquema se diseña la placa colocando los componentes intentando minimizar el número de puentes (para no tener que realizar una placa de doble cara), también procurando que la alimentación esté cerca del atMega. Se ha añadido un pequeño plano de masa.

El resultado es el siguiente:

El grabado de las pistas se ha hecho mediante el método de la plancha.

Dejo los esquemas y PCB en proteus para aquel que le interese.

t154.zip (97.8 KB)

Hay dos versiones del archivo. El que se llama t154 a secas es el original, pero contiene un error que corregí en el que llama "t154-copia". Comentaré el error después.

El programa

El programa no es muy complicado. Quizás lo más díficil de entender es la máquina de estados que se utiliza para la programación del menú.

Cada pantalla del display es un estado del menú. En cada estado ocurrirá una transición cuando pulsemos cualquiera de los botones realizando una acción acorde. Por ejemplo: pulsar ENTER significa cambiar al siguiente estado o pantalla; sin embargo, UP/DOWN sirven para cambiar el valor de la variable que se está editando en ese momento. La pantalla principal tiene un temporizador que la refresca cada segundo.

Con este menu podemos elegir si queremos o no usar tanto el ventilador o alguna de las dos alarmas. si optamos por usarlas nos pedirá que introduzcamos la temperatura a las que debe apagarse o encender cualquiera de ellas. Por ejemplo, podemos prescindir del ventilador y de la alarma 2, y programar la temperatura de la alarma 1; en este caso la salida de relé que únicamente se activará será la correspondiente a la alarma 1.

La libreria para la máquina de estados no la he publicado por ningún lado aún, y quizás merezca la pena hacer un pequeño tutorial y publicarlo. Si os interesa claro está...

Para los botones he usado la libreria SimpleButton, que es una versión en inglés y con alguna mejora de la libreria BotonSimple que utilizé en el tutorial Como no leer un boton y como si debemos hacerlo.

En cuanto a la comunicación ModBus he optado por usar una librería propia. Esta basada en SimpleModBus y la diseñe escribiendo desde cero para añadir alguna funcionalidad propia, como por ejemplo poder usar SoftwareSerial, o funciones callback para que se realice una acción cuando se recibe una función.

A los que cuando vayais al código y veáis la función calcular os contaré que he implementado un filtro paso bajo EMA. Si os interesa saber como funciona, hay un tutorial de Luis Llamas que lo explica muy bien.

En la siguiente entrada explicaré como calibrar el dispositivo y ahí veremos alguna parte de lo que corresponde al código.

Como siempre dejo como attachment el código fuente y las librerias.

t154.zip (3.1 KB)
SimpleMBS.zip (3.2 KB)
SimpleButton.zip (1.6 KB)
FSM.zip (1.5 KB)

Programación del dispositivo

El chip atMega328p podemos usar un zócalo o soldarlo directamente, tan solo hemos de grabar el bootloader en él antes de dejarlo definitivamente instalado.

Para hacer esto existen infinidad de tutoriales en la red, en nuestro caso hace tiempo construimos un shield programador para un Arduino UNO que utilizaremos como programador ISP

programador

Una vez grabado el bootloader ya podremos subir programas como si un Arduino uno se tratara. Para ellos utilizaremos una placa UNO a la que le quitaremos el chip del atMega y la conectaremos de la siguiente manera:

programacion

Llevaremos el pin RX del puerto de comunicaciones al RX del Arduino; el pin TX lo llevaremos al TX y por último uniremos los GND del Arduino UNO y de nuestra placa.

A partir de ese momento podremos subir el sketch al dispositivo desde el IDE pulsando el botón Subir

Como comentamos anteriormente, el circuito del RESET impide que la placa Arduino haga un reset del atMega328p, por lo que para conseguir que se programe correctamente deberemos pulsar nosotros mismos el botón de reset.

Para ello, tendremos que realizar un paso previo. En preferencias deberemos marcar las casillas Compilación y Subir de la opción Mostrar salida detallada mientras:.

Cuando pulsemos el botón Subir empezará el proceso de compilación y si todo ha ido correctamente, acto seguido empezará la programación. Hemos de estar pendiente del proceso y notaremos que esto ocurre justo en el momento en el que la salida se pone de color rojo.

Excelente proyecto enhorabuena @victorjam , ¿podrias poner un enlace al " shield programador para un Arduino UNO ", no encuentro nada en la busqueda y estoy bastante interesado en construir uno de ellos.
Saludos y gracias.

No lo vas a encontrar. Ese proyecto lo hice hace muchos años, cuando todavia no habia probado la plancha para las PCB y estaba hecho a mano. Pero puede que me anime a construir otro y lo enseñe con su expansión para programar chips atMega1284p, atTiny84 y 85.

Incluso por aquella época yo todavia no estaba en el foro.

Calibración del dispositivo

Antes de poder empezar a medir temperatura debemos calibrar el dispositivo. Todos los componentes electrónicos no son iguales y aunque todos tienen en teoría las mismas propiedades, en la práctica, los valores de los componentes son diferente aunque sean iguales. Esto es aplica a todos los dispositivos.

Para ello debemos obtener:

  • La tensión Vref de referencia del Arduino.
  • La tensión de Offset de los operacionales.
  • Obtener la corriente real del generador de corriente y el valor real de la ganancia del amplificador operacional.

Tensión de referencia de Arduino.

Vamos a utilizar la tensión de referencia interna de Arduino. En teoría, dicha tensión es de 1.1 voltios; en realidad esta tensión no será exactamente esa tensión, si no que será muy próxima.

Aquí es donde entra un problema de diseño. Para poder usar correctamente la referencia interna debemos dejar el pin VREF al aire y en el esquema por costumbre en los diseños se llevó a VCC (5 voltios). Por lo tanto hemos de cortar la patilla como se muestra en la imagen:

cortame

De paso podemos soldar en la cara pistas un concensador de 100 nF desde ese pin a la pista GND. Eso ayudará a filtrar ruidos.

En el .zip del esquema, la versión llamada "copia" tiene ese fallo corregido por lo que no hará falta.

chapuza

Una vez hayamos hecho el arreglo, alimentaremos el circuito y con el voltímetro leeremos la tensión en el pin VREF, la anotaremos para después de usarla en el programa en la variable INTERNAL_AREF.

Si bien la tensión no es 1.1V debe estar muy cercana a ella: 1.08, 1.09, 1.11 etc.

Para poder continuar con el proceso de calibrado debemos armarnos un juego de resistencias de pruebas. Dichas resistencias serviran para tener con un valor real de resistencia los valores de tensión en la placa.

resistencias

Básicamente usaremos tres resistencias de valor aproximadamente entre el rango de temperatura. Recomendable una de 100 ohmios. En nuestro caso hemos usado 68, 100, 110, 147 ohmios. A cada una de ellas le hemos soldado una tercera pata para poder "simular" una pt100 de tres hilos.

El "tridente" simplemente es un puente para poder medir el offset.

Medición del offset del amplificador operacional.

Para medir el offset del amplificador operacional debemos ubicar la salida del operacional en la PCB, siendo esta una resistencia. En la siguiente imagen podemos determinar el punto para cada canal.

PUNTOS

Instalamos el puente en el bloque terminal y mediremos en la resistencias los valores de tensión que obtenemos. Dicha tensión debería ser del orden de milivoltios, si hubiera tensión superiores tendremos algún fallo en la placa o algún componente.

Un amplificador operacional no es ideal, y cuando su entrada es cero, su salida no va a ser nunca cero. Esta tensión se puede medir y anular.

Una vez tengamos los datos podremos rellenar el array voff del programa.

Medición de la corriente y el valor de la ganancia.

A partir de ahora, debemos tomar bastante medidas y conviene utilizar papel y realizar una tabla.

Para un determinado canal debemos medir la tensión entre en el bloque de terminales (imagen anterior), y la tensión en la resistencia.

La tensión en el bloque de terminales nos sirve para obtener la corriente real que genera el LM317. El valor de la resistencia la conocemos. La tensión en el bloque de terminales será la caida de tensión que se produce en la resistencia. Por lo tanto aplicando la ley de Ohm (I=V/R) obtendremos la corriente.

Esta corriente debe ser muy cercana a miliamperio que escogimos, así que el valor debe estar muy próximo.

Anotada la corriente, medimos la tensión en la salida del amplificador, con lo que podremos obtener la ganancia real del amplificador dividiendo esta tensión entre la del bloque de terminales.

Igualemente, las resistencias del amplificador operacional se calcularon para obtener una ganancia aproximada de 6, con lo que el valor que obtengamos debe ser muy cercano.

Este proceso lo repetiremos para cada una de las resistencias y obtendremos una serie de valores de corriente y ganancia.

Debemos ajustar estos valores de tal manera que cuando introduzcamos los datos al programa el valor obtenido sea muy proximo a la temperatura teorica de la pt100 con ese valor de resistencia.

Con estos valores podemos rellenar los array iref y av que son la corriente de referencia y la ganancia de tensión en el programa.

Dejo un ejemplo de la hoja de calculo que realicé para tomar los datos:

excel

La calibración no es perfecta y puede que tengamos un error de un par de grados, cosa que para la aplicación no es grave. Solo que es un proceso entretenido.

En fin tirare de la red, aunque visto tus proyectos hubiera preferido montar el tuyo.
Saludos y gracias.

Instalación

Una vez montada la placa, programada, calibrada, y hechos pruebas de ruidos eléctricos en el laboratorio se procedió a la instalación.

Antes de hacer el montaje se desmontó una pared donde estába encerrado el transformador para mejorar su refrigeración y se cerro con cerca metálica formando una jaula (que no llega a ser una jaula de Faraday muy buena).

Se cojió una caja metálica donde se instaló un carril DIN donde se sujetó el módulo, igualmente se añadió el módulo de comunicaciones rs845. Se añadió un bloque de terminales como en otro cualquier armario eléctrico para llevar los cables de alimentación, señales de alarma y alimentación.

instalacion01

instalacion02

Los interruptores sirven para evitar que se encienda el ventilador o se disparen las protecciones, sin tener que programar nada, siendo bastante útil para pruebas sin tener que desconectar nada.

La alimentación se obtiene de la alimentación general que hay para todos los automatas de la central. Dicha tensión es de 12 voltios con una batería tampón de respaldo ante fallos de tensión.

Las salidas de alarma se llevarón al automata de línea. Ese automata se encarga de abrir el "interruptor de alta" en caso de fallo y de parar los generadores también. Este automata está basado en Arduino igualmente.

La salida de ventilador toma la corriente de 220VAC y los lleva a unos ventiladores que estan cerca del ventilador. Para evitar problemas de ruidos eléctricos los motores de dichos ventiladores llevan acoplados varistores para suprimir transitorios.

Las pt100 están alojadas en el núcleo de la bobina del transformador. Su cable es fino y corto, llegando tan solo a una regleta de conexiones que tiene el transformador. De dicha regleta salen unas mangueras que van a la caja donde se haya nuestro medidor de temperatura.

instalacion04

La longitud de estas mangueras es aproximadamente de unos 7-8 metros y con una sección de 2.5mm^2, con lo que el error por resistencia de cable es mínimo.

El armario está situado a unos 3 metros del transformador. La longitud de las mangueras se debe a que deben recorrer la pared sorteando obstaculos.

La propia sonda pt100 tiene una malla de protección en el cable. Las mangueras a su vez tienen su propia malla. Ambas mallas se hayan unidas a tierra de la central.

Después de realizar la instalación ya se puede empezar a probar...

modelo1

Edito: la tierra de la central no está para nada conectada a los negativos de mis fuentes. Lo digo por que seguro me lo vais a preguntar cuando escriba el siguiente post.

Y ya hemos acabado con la explicación del proyecto, ahora vienen las pruebas y la parte en la que espero me déis consejo a los expertos (que yo no lo soy).

La instalación se realizó en septiembre del año pasado, durante la pandemia, aprovechando la falta de agua en el río en la época de verano.

Durante todo el año ha estado funcionando, midiendo la temperatura bien, un poco oscilante en la
medición pero no es nada grave. No ha dado problemas aparentes de falsos disparos, ni se ha
reiniciado, ni perdido datos de memoria.

Pero, llegó Julio y la época de tormentas. Y en una tormenta con las máquinas aun generando a tope falló. Cuando lo desconecté y me puse a comprobar lo que había fallado descubrí que tanto
los LM317 como el amplificador operacional habían muerto. El atMega328p estaba increiblemente
sano, el display también y la comunicación ModBus seguía funcionando.

La sustitución fue rápida y lo volví a instalar, previa calibración para los nuevos componentes.

En Agosto, ya sin agua, con las máquinas paradas, desconectado de la red (el interruptor de alta
lo abro para poder trabajar sin miedo) empecé a hacer mantenimiento a una de las turbinas; cuando una tarde hubo otra tormenta y... otra vez cayeron los reguladores y el amplificador.

Siempre he achacado problemas de ruidos a que cuando estoy conectado a la red es muy probable que un rayo que caiga en la red. Eso coincide con la primera avería. Pero la segunda es peor, dado que fisicamente no estaba unido a la red.

Aquí os propongo una "tormenta de ideas". Intentando pensar por donde puede venir el fallo
y como poder corregirlo.

@Gonpezzi, por si te interesa, he estado mirando y tengo el esquema del shield a mano. Te lo dejo como attachment.

shieldprogramador.zip (20.7 KB)

Es la versión que diseñe para hacer a mano, con rotulador, así que no es muy bonita pero es funcional.

1 Like

Muchisimas gracias.

Hola, he estado leyendo por encima este post y no veo que hayas puesto descargadores de gas, seria interensante que todos los cables que entran al armario electrico esten conectados a descargadores de gas.

Buena observación de @tresvdoble.
Iba a comentar (sinceramente en su momento leí los post pero no comenté y luego se me pasó por alto) que si te das cuenta todo lo que se quema tiene que ver con cables que terminan actuando como antenas induciendo corrientes debido al campo eléctrico provocado por el rayo. Hablo de la línea eléctrica y del amplificador. Descarto que hay mas cables y entonces la pregunta:
Por qué no hay daños en otros lados como en la red 485? Será que ahi esta bien blindada?
Conociéndote @victorjam se que no es la respuesta. No dejas cosas libradas al azar.
Tema complicado el que persigues, para un auditor electrónico.
Creo que conociendo donde falla sistemáticamente el sistema tendrías que hacer 1 o 2 cosas complementando la sugerencia de @tresvdoble.

  1. Pondría supresores TVS en las líneas citadas, alimentación (LM317, etc) y amplificador de PT100.
  2. Armaría un Logger para ver que ocurre, pero claro, un logger que funcione cuando todo lo demás deja de hacerlo? Parece un contrasentido.
    Si puedes armar algo que funcione entonces podrias proteger lo que ya tienes hecho.
    Ademas dicho logger debería funcionar solo cuando se presentan situaciones de tormenta, o que tenga una activación remota o manual con la que tu lo pones en marcha. Tal vez una posible solución muy simple fuera que funcione con alimentación a baterías y que este en deep sleep a la espera de este mando que lo pone a registrar que pasa.
    Hablo de algo que mire perturbaciones en el cable de entrada DC del regulador LM317.

Siguiendo con las ideas que las estoy poniendo sin filtro y tal como me llegan mientras escribo se me ocurre esto: poner filtro de ferrita en la linea DC.

Hace poco vi un video de un ingeniero inglés que intentaba leer datos de un sistema cargador solar mptt. Por alguna razón el sistema tenía ruido y se propuso minimizarlo. Probó todo, tal como siempre estamos en este foro dando sugerencias. Que el cable con malla, que la jaula de Faraday, pues bien, lo que funcionó espectacularmente fueron aros de ferrite en los cables DC. Toda perturbación es del tipo modo común entonces al llegar al aro de ferrita se cancela.
De nuevo supongo que también debes tener esto pero por si se te escapó, tal vez ayude.

Hola,
Mis conocimientos de electricidad de baja y alta tensión son limitados pero según dices lo tienes enjaulado pero no muy buena jaula.
Además de la idea de usar gdt's, ferritas, ¿has aterrizado la jaula? la piqueta/malla de tierra ¿está en buen lugar y correctamente humidifcada, saneada, buen cable ,.buena sección del cable, comprobada fugas,..?
Saludos

Hola chicos!

Veo que la tormenta de ideas funciona.

Para @tresvdoble, decir que no he usado nunca descargadores de gas.

Para @Surbyte: estoy planteándome el uso de los TVS. De momento he hecho un pequeño experimento colocando varistores en la entrada, en paralelo a las pt100. Dado que tienen una alta resistencia no afectan para nada en la medida.

En cuanto al rs485... Todos los automatas que fabrico tienen un puerto de comunicaciones que proporciona TX/RX y TXE. Pero en el módulo estas líneas están optoaisladas. El bus 485 es independiente del automata que sea y tiene incluso su alimentación propia. Todo con cable s-ftp apantallado. Desde que hice esa modificación no he vuelto a tener problemas de modbus, que como te acordarás te conté que en cada tormenta se freían un par de max485 como mínimo.

He pensado en rediseñar el circuito, sobretodo la parte analógica que es donde peca, añadiendos TVS al lm317 y varistores en paralelo a la entrada. Solo que tengo que conseguir que dichos componentes no sean excesivamente grandes para no exagerar la placa.

En cuanto a la ferrita en la alimentación de todo el circuito, es otra opción, pero por hay descarto que haya problemas. De hecho, el atmega sobrevive y no hace falta ni reprogramarlo ni nada.

En cuanto a la tierra... @DanX3, eso es un mundo. De hecho me preocupa que el cable que sale del transformador es gordo y apantallado. Que sea gordo mejor, reduce la resistencia de error, pero el apantallamiento va conectado a la toma de tierra del transformador. Igualmente el armario está conectado a tierra.

Se "supone" que la tierra esta bien, que hay tres picas, que se pasó la última revisión y que todo está acorde a la normativa. En una prueba que realice por "cacharrear" observé que entre neutro y tierra había unos 20 voltios... así que definitivamente algo va mal... Por eso, intento en la mayoría posible evitar tierras, incluso estoy pensando en desconectar el apantallamiento de tierra.

Ahora ya tenemos agua con lo que estamos en funcionamiento las 24H. Reparé el original y para probrar le añadí los varistores soldados por atrás a ver su comportamiento. Mala suerte que al ponerlo en el armario descubrí que se había jodido un conector, así que en su lugar puse el de respuesto (que no tiene ni varistores).

Ayer mismo hubo tormenta. No llego a averiarse pero si se colgó. No me preocupa mucho porque lo tengo en modo pruebas y no estorba al funcionamiento normal del resto de dispositivos.

Cuando tenga un rato disponible, arreglaré el problema del conector y veré como añadir los TVS, mientras hago el rediseño y fabrico la nueva PCB. Solo que tendré que esperar a una crecida para poder sustituirlo.

Un saludo a todos.

No olvides la idea de un logger MARAVILLOSO que no se cuelgue y te arroje datos que ahora no conoces, jajaja. Me río porque parece un contrasentido enel marco de cosas que se cuelgan con la tormenta o se queman.
Realmente es un problema con el que pocos hemos luchado.
Buscaré el video a ver si aporta algo.