Para automatizar una casa grande, apareció la tarea de encender / apagar cargas potentes: bombas de piscina, calderas e incluso habitaciones de huéspedes en su conjunto (cuando nadie vive en ellas), y también quería saber la cantidad de energía consumida por ellas. Pero no había dispositivos listos para usar con las características necesarias (e incluso cerca de ellos). Tuve que inventarlo yo mismo. La primera versión resultó no ser muy útil, pero mostró un poco de trabajo y obtienes un dispositivo completamente terminado.

Francamente, prácticamente no tengo experiencia en la creación de dispositivos de CA potentes. Por lo tanto, cuando desarrollé este dispositivo, traté de hacerlo lo más seguro posible: pararrayos, caminos anchos diseñados para soldar neumáticos de cobre potentes, blindaje en las capas intermedias del tablero. En la primera versión, hubo algunos excesos y errores (por ejemplo, en la hoja de datos en la salida de voltaje del módulo de fuente de alimentación 1 y Vout1, resultó que no era lo mismo, así que tuve que cortar las pistas y separé el conector microUSB simplemente, por lo que el puerto no lo hizo) obras).
Para la conmutación, se eligieron los relés biestables de 80 amperios EW80. Debo decir que la elección no es muy exitosa: el caso tiene fugas y en condiciones locales de alta humedad puede ser inadecuado. Desafortunadamente, la elección de los relés biestables potentes de los proveedores disponibles no es demasiado grande, por lo que tendrá que sellar cada relé por separado o todo el estuche. Como teclas de control, tomé los controladores de mosfet ADP3624 disponibles (uno para cada par de relés), que permiten energizar los devanados en ambas polaridades y desenergizarlos después de la desconexión. Los sensores de pasillo ACS759-100 miden el consumo y el voltaje de línea a través de un transformador de baja potencia. Como el ADC y el microcontrolador de control es STM32F373CBT6.
Para simplificar la conexión del dispositivo terminado, el voltaje de entrada se suministra a un conector, y los buses de cobre de 7x3 mm soldados sobre las pistas de la placa se extenderán a todos los canales de conmutación. En condiciones de cables posiblemente muy largos a la carga (muchas decenas de metros), se decidió cambiar tanto el cero como la fase al mismo tiempo para evitar problemas de interferencia, distorsiones y solo por seguridad. Dado que la placa no está diseñada para funcionar sin dispositivos de protección externos ("enchufes", RCD), no hay elementos de seguridad en ella, solo hay pararrayos para protección contra impulsos de alto voltaje. Cada canal tiene un LED indicador, también hay un circuito de señalización ("tweeter" y un relé para 10 amperios de carga externa), pero su uso en el software aún no se ha implementado.
El dispositivo se controla a través de un puerto serie con aislamiento galvánico (teóricamente es posible usar un puerto USB), con un protocolo simple similar al utilizado en mi atenuador. Lo reemplazaré con MQTT-over-serial más tarde.

Debo decir de inmediato que el circuito resultó no tener mucho éxito y cambiará un poco en la próxima versión: la estabilidad del voltaje de 3.3 voltios para alimentar los sensores de corriente y el controlador no resiste las críticas, lo que conduce a errores en la medición de potencia en un par de decenas de vatios (incluso sin carga) Lo más probable es que suministre fuentes estables de voltaje de referencia 3.3v para cada sensor por separado. También puede valer la pena usar un ADC de 16 bits en el controlador, pero, desafortunadamente, su velocidad no es demasiado alta: ahora la corriente y el voltaje se miden aproximadamente 5000 veces por segundo, lo que en teoría se puede hacer con 16 bits, pero no he logrado alcanzar una estabilidad Su trabajo con muchos canales a través de DMA.
El firmware del controlador una vez cada diez segundos muestra datos sobre el consumo de carga en cada canal y el voltaje de la red, y recibe comandos para encender y apagar los canales. El software es muy tosco, también tendrá que rehacerse en orden y agregar varias funciones de control (por ejemplo, sobretensión en la red, sobrecarga, sobrecalentamiento de la placa, etc.).
→
Código en github