Sistema de protección contra fugas



Quiero compartir mi experiencia en la creación de un dispositivo que no solo fue interesante de implementar, sino que también podría ser beneficioso. Quizás alguien dirá que era posible hacer algo más simple, pero este no es nuestro camino ...

Todo comenzó con el hecho de que después de la reparación del apartamento se descubrió un problema potencial. En el caso de una fuga en algún lugar, no funcionará llegar a las grúas para ingresar al departamento sin cierto esfuerzo físico y destreza, ya que la escotilla que cierra las grúas no está muy bien instalada. Por lo tanto, en caso de necesidad urgente (accidente) cerrar los grifos rápidamente no funcionará. Era necesario hacer algo con esto, y apareció una solución: aprovechar la oportunidad de forma remota, es decir sin abrir la escotilla, pare el suministro de agua. Y como beneficio adicional, implementar todo lo demás que se pueda confiar con la electrónica.

Así es como se ve el dispositivo.



Características clave:
  • Cierre el suministro de agua de forma independiente en caso de fuga.
  • Cierre el suministro de agua en modo "manual": en el panel frontal hay un "botón rojo" y un interruptor de palanca de dos posiciones
  • Mostrar lecturas de medidor en pantalla propia
  • Mostrar otra información útil en la pantalla

No puede, pero planea:
  • Trabajar desde una fuente de energía de respaldo. Ahora, en caso de un corte de energía, el dispositivo es inútil.
  • Trabaja con sensores de fugas inalámbricos
  • Grifos limpios usted mismo. Para no "volverse ácido", es recomendable abrirlos / cerrarlos una vez al mes
  • Notificar sobre eventos en un teléfono inteligente y ser controlado por "aire"

No puede (y por muy necesario que sea):
  • Tiene varios canales para leer diferentes sensores de fuga con cable, ahora todos los sensores (5 piezas) están conectados en paralelo
  • Gestionar grúas individualmente. Hay dos de ellos (uno en agua caliente, el segundo en agua fría), y están conectados en paralelo
  • Control de rotura a sensores

La siguiente es una descripción de los componentes y su propósito (precios a julio de 2015).

Por supuesto, también necesitaba un programador / emulador, utilicé este: ARM Emulator, compatible con ARM7, ARM9, ARM11, Cortex-M3 core, ADS, IAR, STM32, interfaz JTAG, versión V8 de doble búfer . De las características, es posible mencionar que, además de los cables estándar para la programación SW , tuve que aplicar el voltaje de suministro de corriente del chip programable, 3,3 voltios en mi caso. Es necesario que el programador comprenda los niveles de voltaje de los valores lógicos. Sin esto, el chip programable no quería ser detectado. Además, este programador tiene la capacidad de alimentar un dispositivo programable, se proporciona un pin para esto, el voltaje se enciende / apaga mediante la utilidad JLink.exe.

Más sobre hierro


Microcontrolador


El cerebro de todo el sistema es un microcontrolador de 32 bits de ST perfectamente soldado por trabajadores chinos en fábricas chinas a una placa que es "compatible" con Leaf Maple Mini .
Sobre Leaf Maple Mini
eta4ever
,
«» , …

Tiene 48 conclusiones. El núcleo funciona a 72MHz, tiene SRAM integrado - 20KB y Flash - 128KB. Más detalles aquí . Tales parámetros definitivamente fomentan el uso de herramientas y herramientas de alto nivel, es decir, Estos son FreeRTOS , pantalla gráfica en color, C ++, etc. (y no dos LED y ensamblador). En general, no te niegues nada ... excepto C ++, pero esto no es un problema de chip.
¿Por qué?
C++ , , , . , C++ , , , , .. STM32CubeMX , FreeRTOS. , .

Usando las conclusiones del microcontrolador. Desde aquí puedes adivinar a qué está conectado.


Monitor




El módulo con una pantalla TFT de 320x240 píxeles construido en un controlador compatible con ILI9341 es responsable de mostrar información; funciona por SPI a la frecuencia máxima posible para este paquete (18MHz). SPI está conectado al microcontrolador solo en una dirección, la salida para leer datos del módulo de visualización permanece suspendida en el aire, porque No se me ocurrió esta funcionalidad, pero la guardé en las patas libres del microcontrolador. La transferencia de datos funciona en DMA .

Un conector para conectar una tarjeta SD está soldado al módulo en la parte posterior, no he probado trabajar con una tarjeta SD y el conector no está involucrado en este proyecto.

Módulo RTC y EEPROM




El reloj en el módulo se implementa con un chip DS3231. No causé ningún problema especial, el único inconveniente fue que todos los valores (fecha, hora) se almacenan en registros en formato BCD , cuando dos dígitos decimales se reflejan en un byte (en los cuatro bits superiores, el dígito más significativo, en el inferior, el dígito menos significativo) . Por ejemplo, el valor "38 minutos" se almacena como el valor decimal 56 (esto es "38" en la notación hexadecimal). No fue posible averiguar si es posible cambiar al formato binario.

El módulo tiene su propia batería, por lo que cada vez que pierde energía, no tiene que establecer la hora y la fecha. Además, el microcircuito AT24C32 está soldado en la placa del módulo, ¡con hasta 32768 bits EEPROM! En pocas palabras, son 4 Kbytes de memoria no volátil. Tanto el reloj como la memoria se encuentran en el mismo bus I2C. Por el momento, la memoria se usa solo para almacenar la configuración del dispositivo, el valor actual de las lecturas de los contadores y algo más. finalmente ocupado ... 25 bytes. Más tarde se usará para mantener registros de varios eventos y posiblemente para mantener estadísticas de consumo (no sé por qué, pero habrá una ocasión para programar la visualización de gráficos).

Además de los contactos y la alimentación del bus I2C, hay dos más en el tablero. "SQW" es la señal del despertador que se puede programar a través de los registros y "32K" es la frecuencia generada por el DS3231 para otros dispositivos. Este proyecto no aplica.

Módulo con sensor de humedad




Se utiliza como amortiguador entre el mundo exterior y el microcontrolador. Los cables que van a las sondas en total tienen una longitud de unos 10 metros, sin pantalla. Cables telefónicos convencionales de dos hilos. En el caso de un golpe estático, espero que solo este módulo muera, pero no el microcontrolador. Es capaz de medir la resistencia entre dos electrodos y proporcionar esta información en forma analógica (voltaje de 0 a voltaje de suministro) y en digital (0/1, el módulo tiene una resistencia variable que se puede ajustar al límite de operación).

Hubo problemas menores con este módulo. Al aplicar y eliminar la tensión de alimentación, el módulo en la salida digital señaló un disparo, esto también podría verse por el parpadeo del LED durante una fracción de segundo (en la placa del módulo, se instala un LED en paralelo con la salida digital). El microcontrolador logró leer una señal anormal cuando se aplicó / restableció la alimentación del sistema (problema No. 1). La solución se implementó omitiendo pulsos de operación cortos, en anticipación de una condición fijada por un tiempo.

La resistencia variable tiene un ángulo de ajuste muy pequeño, en el cual no pude encontrar el límite entre la ausencia de falsos positivos y una buena sensibilidad (problema No. 2). Posteriormente se implementó leyendo la señal analógica a través del microcontrolador ADC. Al mismo tiempo, se hizo posible establecer el límite de respuesta en la configuración del dispositivo como parámetro. La capacidad de ajustar el nivel de respuesta ahora se considera superflua, y probablemente sea mejor codificar el valor límite.

Se notó que después de varios minutos de operación (¿calentamiento?), El módulo de repente comenzó a indicar una operación espontánea (problema número 3, ¿cuántos de ellos?).

En el límite de las respuestas anormales, la intensidad del brillo del LED (en el módulo) aumentó o disminuyó gradualmente, como si fuera controlado por un generador PWM, está claro que esto es ruido y es de alta frecuencia, lo mismo podría esperarse en la salida "digital" del módulo (problema No. 4 )

Aclararé que todos estos problemas se resolvieron cuando se implementó la lectura de la señal analógica del módulo.

Las sondas (partes de sensores que se encuentran directamente en lugares de acumulación de agua en caso de accidente) están hechas de medios improvisados. Esto es estaño (acero) y una pequeña caja de conexiones redonda, modificada mecánicamente al tipo deseado y con alambres soldados en su interior. Cuando el agua entra entre los pares de electrodos, la resistencia disminuye y el controlador lo considera como una "fuga".



Las pruebas de laboratorio mostraron que el producto realiza bien su función y no es un eslabón débil en el sistema.

Nutrición


Todo el sistema funciona desde la carga del teléfono: 5 voltios, 2A (aquí con un margen). En la placa Maple Mini, se instala un regulador de voltaje de 3.3 voltios, el voltaje de entrada puede ser de hasta 12 voltios, las características del estabilizador lo permiten, pero un voltaje tan grande no es conveniente de usar, más sobre eso a continuación.

Con un estabilizador, 3.3 voltios también van a la potencia de los módulos RTC, TFT y al módulo de medición de humedad. Las grúas se conectan a través del conjunto del interruptor de alimentación ULN2003AN, directamente desde la fuente de alimentación, es decir. trabajar desde 5 voltios, menos la caída de las teclas. ULN2003AN usa solo dos de los siete canales.

Por supuesto, es aconsejable reemplazar la fuente de alimentación por otra, con un voltaje ligeramente más alto, porque a veces, al cerrar las grúas, una de ellas, en una posición casi extrema debido al funcionamiento de su propio remolque (se instalan dos piezas en el cuerpo de la válvula, para resolver las posiciones extremas), se detiene por una fracción de segundo, luego se produce un "rebote" (debido al juego en los engranajes de la caja de cambios ), luego un intento repetido de apretar la válvula de bola y así sucesivamente hasta que el controlador elimine la tensión de alimentación del servoaccionamiento.

El vendedor en el sitio tiene información de que las grúas deberían funcionar a partir de 5 voltios, en este caso el voltaje se suministra menos. El software está hecho para que para abrir y cerrar los grifos, el voltaje se suministre solo durante un cierto tiempo (6 segundos), tiempo durante el cual los grifos deben tener tiempo para abrirse o cerrarse. Vale la pena señalar que este efecto no afecta el cierre incompleto del grifo, ya que Este momento llega después de que el grifo ha cerrado completamente el flujo de agua. También es posible mencionar que demasiado voltaje a los servos (aplicado 9 voltios para el experimento) hace que se muevan por inercia aún más (después de que se active el interruptor de límite) y se apoyen contra la posición extrema con el sonido característico de un impacto.

Válvulas de bola servo


Las válvulas de cierre parecen confiables, pero la parte electrónica tuvo que ser finalizada.



Si observa el circuito de control de la grúa, notará que están controlados por voltaje positivo. El general "menos" y dos cables de potencia de señal "más", uno para cerrar, el otro para abrir. Pero ULN2003AN no puede funcionar en este modo; en él, cuando se abre la llave, la salida administrada se conecta al signo menos. La solución es cambiar la polaridad de control de la grúa misma. Para hacer esto, tuve que cambiar las señales del "trailer", porque Debido a un cambio en la polaridad, el motor eléctrico giraba en la dirección opuesta (en comparación con el circuito original), mientras que las posiciones extremas ahora están en direcciones opuestas. Como resultado, tenemos una grúa con un "más" común y dos "menos" de control. ¡Exactamente lo que se necesita!

Grúas con servos en condiciones de "combate".



Lecturas del medidor


Por supuesto, no hay datos almacenados en el contador en sí, lo que podría leerse con dos cables retirados de él. Esto es solo una cadena con un interruptor de láminas y un imán ubicado en un impulsor giratorio. Las mediciones con un multímetro no mostraron la presencia de resistencia o capacitancias eléctricas en el circuito. En mis contadores, el circuito (con la apertura posterior) del interruptor de láminas se produce a un caudal de un litro de agua. En algún lugar había información sobre los medidores, cuya señal se forma cada 10 litros. Aquellos. ellos son diferentes.

Se requiere el microcontrolador para leer estos pulsos. La interfaz de usuario del dispositivo, por supuesto, proporciona el valor inicial.

De los problemas existentes: en ausencia de electricidad, no se tendrá en cuenta el consumo de agua. Hay un defecto de hardware, debe solucionarlo: haga una copia de seguridad de las baterías, esto también es necesario para las funciones principales del dispositivo; de lo contrario, el dispositivo no podrá apagar los grifos si es necesario.

De aquí surgen las dos tareas siguientes:
  1. . , , « », , () / . , ( ), «», , (, ), , FreeRTOS.
  2. , , « ».
    ¿Apagar los grifos?
    , , , , , 11 , , «» , , «» , !

Control S


Codificador


Ubicado junto a la pantalla y diseñado para navegar por el menú. Rotación: vaya al elemento del menú siguiente / anterior, presione: seleccione / active un elemento del menú.

"Botón rojo"


La forma más fácil de apagar los grifos es presionar el botón rojo. Aunque no debería ser útil, porque algún tiempo antes, el dispositivo en sí tenía que hacer todo. Pero por si acaso, el botón existe. Presione repetidamente, mantenga presionado, haga doble clic, etc. sin contar, solo la primera pulsación y ya está. El modo "emergencia" está activado, solo se puede deshabilitar a través de un elemento de menú especial.

Interruptor de encendido / apagado


También se pueden apagar con grifos, pero también se pueden abrir, por supuesto, si el sistema no está en modo de "bloqueo". Puede ser útil para el cierre temporal del suministro de agua.

LED tricolor


Todo aquí también es simple. Para indicar el modo actual: verde: todo está en orden, rojo: no todo está en orden, los toques azules se bloquean con el interruptor de palanca (consulte el párrafo anterior). No se utilizan colores de mezcla, tres fueron suficientes. Pero aquí surgió un problema. El brillo es tan fuerte que deslumbra cuando miras la pantalla. 470 ohmios para cada color no fue suficiente. Corregido programáticamente. Cuando la pantalla está en un estado activo (y está activo mientras usa los controles y durante un tiempo), este LED está apagado.

Conclusión


El dispositivo funciona, las pruebas periódicas muestran que funciona correctamente. No se congela, no tiene errores. Aunque sé dónde hay errores potenciales, pero no críticos en el código, esto no se trata en este artículo.

Fuentes, proyecto Keil uVision 5, archivo de proyecto para STM32CubeMX

Source: https://habr.com/ru/post/es382065/


All Articles