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

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)