En primer lugar en algún cambio del firmware no se que ha pasado que me ha dejado de medir bien las tensiones, he ido volviendo atrás en versiones anteriores que había guardado y el problema lo provoqué cinco versiones atrás. He de reconocer que las pruebas son laboriosas, la librería Xbee utiliza la UART de HW del micro, que es la misma que se utiliza para cargar los programas y para depurar, no lo tuve en cuenta (podía haber emulado un puerto por SW para depurar, poner un jumper para cortar la comunicación con el Xbee, etc.) y ahora me toca para cada prueba apagar, desenchufar el Xbee, cargar el sketch, apagar, enchufar de nuevo la radio y probar.
Al final el problema era de lo más tonto, el puerto analógico con el que medimos la tensión es el 1, en el sketch salía el 0, es decir, el cambio se ha limitado a un único bit del firmware, detectarlo me ha llevado varias horas.
Una vez resuelto este problema he probado de ir apagando los relés desde el servidor web del X4, todos han funcionado, pero…….
Le doy la orden de apagar al primer relé -> Se apaga, le doy la de encender -> se enciende, así con todos.
Le doy la orden de apagar al primer relé -> Se apaga, sin encenderlo, le doy la orden de apagar al segundo relé -> Se apaga, y en un momento se encienden todos sin que nadie se lo haya dicho.
Con el lío que he tenido y la confusión mental que me ha provocado me pongo a mirar de nuevo el firmware, pero soy incapaz de ver el error, también me ha costado un poco llegar a una conclusión, al final es un tema de potencia de la fuente que he podido comprobar con un simple multímetro.
Estos son los antecedentes:
- Uno de los criterios básicos cuando pensamos en este dispositivo es reducir el riesgo de apagados incontrolados, por ese motivo: El estado por defecto de todos los relés es encendido, pusimos unos switches para poder inhibir físicamente el apagado desde el dispositivo, el relé está encendido si no se alimenta la bobina, para conseguir que incluso en caso de fallo de todo el circuito no se pararan los equipos conectados.
- Para conseguir leer la tensión de la red con aislamiento galvánico utilizamos un transformador, compré un transformador de 2x6V y una potencia de 1VA, la lógica fué la siguiente: Si el micro consume 50mA, la radio Xbee 40mA y el resto del circuito es despreciable, la suma son 100 mA (redondeando), multiplico por 2 por seguridad, por lo que necesito 1VA, el trafo es suficiente.
A la hora de la verdad me encuentro, con un micro que consume 40mA, en lugar de montar una radio Xbee he montado una Xbee-PRO, que consume 295mA cuando está emitiendo, además cada vez que desactivo un relé añado una carga de 72 mA (son relés de 5V y con una bobina de 70 ohms).
Solo con el Xbee y el micro ya me estoy pasando, la tensión a la salida del regulador es de 4,8V en lugar de 5V. Cuando activo un relé sobrecargo el circuito un poco más, la tensión baja a 4,6V, pero sigue funcionando. Cuando activo el segundo relé de forma simultánea la tensión baja más y el micro se resetea. Como el estado por defecto de todos los relés es encendido al resetearse se encienden los relés de nuevo. Además esto no ocurre inmediatamente, pasa en el momento en el que la radio envía el siguiente paquete.
La verdad es que llegar a esta conclusión ha sido un proceso largo, por eso hay un nuevo penúltimo capítulo. En el proceso, eso si, he añadido al firmware de la PDU el código necesario para enviar a la red el identificador del producto, el número de serie, la versión del HW, etc.