Auslaufschutzsystem



Ich möchte meine Erfahrungen bei der Erstellung eines Geräts teilen, dessen Implementierung nicht nur interessant war, sondern auch von Vorteil sein könnte. Vielleicht wird jemand sagen, dass es möglich war, etwas Einfacheres zu tun, aber das ist nicht unser Weg ...

Alles begann damit, dass nach der Reparatur der Wohnung ein potenzielles Problem entdeckt wurde. Im Falle eines Lecks irgendwo funktioniert es nicht, ohne bestimmte körperliche Anstrengung und Geschicklichkeit zu den Kränen zu gelangen, um die Wohnung zu betreten, da die Luke, die die Krane schließt, nicht sehr gut installiert ist. Daher funktioniert es im dringenden Fall (Unfall) nicht, die Wasserhähne schnell abzuschalten. Es war notwendig, etwas damit zu tun, und es erschien eine Lösung - um die Gelegenheit aus der Ferne zu realisieren, d.h. Unterbrechen Sie die Wasserversorgung, ohne die Luke zu öffnen. Und als Bonus, um alles andere zu implementieren, dem die Elektronik vertrauen kann.

So sieht das Gerät aus.



Hauptmerkmale:
  • Stellen Sie die Wasserversorgung bei Undichtigkeiten selbständig ab
  • Schalten Sie die Wasserversorgung "im manuellen" Modus aus - auf der Vorderseite befinden sich ein "roter Knopf" und ein Kippschalter mit zwei Positionen
  • Zählerstände auf dem eigenen Display anzeigen
  • Zeigen Sie andere nützliche Informationen auf dem Display an

Es kann nicht, aber Pläne:
  • Arbeiten Sie mit einer Backup-Stromquelle. Jetzt im Falle eines Stromausfalls - das Gerät ist unbrauchbar
  • Arbeiten Sie mit drahtlosen Lecksensoren
  • Reinigen Sie die Wasserhähne selbst. Um nicht „sauer“ zu werden, ist es ratsam, sie einmal im Monat zu öffnen / schließen
  • Benachrichtigen Sie über Ereignisse auf einem Smartphone und lassen Sie sich von "air" steuern.

Es kann nicht (und egal wie sehr notwendig):
  • Haben Sie mehrere Kanäle zum Lesen verschiedener verdrahteter Lecksensoren, jetzt sind alle Sensoren (5 Stk.) Parallel geschaltet
  • Krane individuell verwalten. Es gibt zwei davon (eine bei heißem, die zweite bei kaltem Wasser) und sie sind parallel geschaltet
  • Bruchkontrolle an Sensoren

Das Folgende ist eine Beschreibung der Komponenten und ihres Zwecks (Preise ab Juli 2015).

Natürlich brauchte ich auch einen Programmierer / Emulator, ich benutzte diesen: ARM-Emulator, unterstützt ARM7, ARM9, ARM11, Cortex-M3-Kern, ADS, IAR, STM32, JTAG-Schnittstelle, doppelt gepufferte V8-Version . Von den Merkmalen kann erwähnt werden, dass ich zusätzlich zu den Standarddrähten für die SW- Programmierung die Stromversorgungsspannung vom programmierbaren Chip anlegen musste, in meinem Fall 3,3 Volt. Der Programmierer muss die Spannungspegel der logischen Werte verstehen. Ohne dies wollte der programmierbare Chip nicht erkannt werden. Dieser Programmierer kann auch ein programmierbares Gerät mit Strom versorgen. Hierfür ist ein Pin vorgesehen. Die Spannung wird vom Dienstprogramm JLink.exe ein- und ausgeschaltet.

Mehr zu Eisen


Mikrocontroller


Das Gehirn des gesamten Systems ist ein 32-Bit-Mikrocontroller von ST, der von chinesischen Arbeitern in chinesischen Fabriken sauber auf eine Platine gelötet wurde, die mit Leaf Maple Mini „kompatibel“ ist .
Über Blattahorn Mini
Wie bemerkt eta4ever
,
«» , …

Hat 48 Schlussfolgerungen. Der Kern läuft mit 72 MHz, hat SRAM - 20KB und Flash - 128KB integriert. Weitere Details hier . Solche Parameter fördern definitiv die Verwendung von Werkzeugen und Werkzeugen auf hoher Ebene, d.h. Dies sind FreeRTOS , grafische Farbanzeige, C ++ usw. (und nicht zwei LEDs und Assembler). Verweigern Sie sich im Allgemeinen nichts ... außer C ++, aber dies ist kein Chipproblem.
Warum?
C++ , , , . , C++ , , , , .. STM32CubeMX , FreeRTOS. , .

Unter Verwendung der Schlussfolgerungen des Mikrocontrollers. Von hier aus können Sie erraten, womit verbunden ist.


Anzeige




Das Modul mit einem TFT-Display von 320 x 240 Pixel, das auf einem mit ILI9341 kompatiblen Controller aufgebaut ist, ist für die Anzeige von Informationen verantwortlich und arbeitet mit SPI bei der maximal möglichen Frequenz für dieses Bundle (18 MHz). SPI ist nur in einer Richtung mit dem Mikrocontroller verbunden, der Ausgang zum Lesen von Daten vom Anzeigemodul bleibt in der Luft hängen, weil Ich habe mir diese Funktionalität nicht ausgedacht, sie aber auf den freien Beinen des Mikrocontrollers gespeichert. Die Datenübertragung funktioniert mit DMA .

Ein Anschluss zum Anschließen einer SD-Karte ist auf der Rückseite mit dem Modul verlötet. Ich habe die Arbeit mit einer SD-Karte nicht getestet und der Anschluss ist an diesem Projekt nicht beteiligt.

RTC- und EEPROM-Modul




Die Uhr auf dem Modul ist mit einem DS3231-Chip implementiert. Ich habe keine besonderen Probleme verursacht, die einzige Unannehmlichkeit war, dass alle Werte (Datum, Uhrzeit) in Registern im BCD-Format gespeichert sind , wenn zwei Dezimalstellen in einem Byte wiedergegeben werden (in den oberen vier Bits - die höchstwertige Ziffer, in der unteren - der niedrigstwertigen Ziffer). . Beispielsweise wird der Wert "38 Minuten" als Dezimalwert 56 gespeichert (dies ist "38" in der hexadezimalen Notation). Es konnte nicht herausgefunden werden, ob es möglich ist, zum Binärformat zu wechseln.

Das Modul verfügt über eine eigene Batterie, sodass Sie bei jedem Stromausfall weder Uhrzeit noch Datum einstellen müssen. Außerdem ist die AT24C32-Mikroschaltung mit bis zu 32768 EEPROM-Bits auf die Modulplatine gelötet! Einfach ausgedrückt sind es 4 KB nichtflüchtiger Speicher. Sowohl die Uhr als auch der Speicher befinden sich auf demselben I2C-Bus. Im Moment wird der Speicher nur zum Speichern von Geräteeinstellungen, des aktuellen Werts der Zählerwerte und etwas anderem verwendet. schließlich belegt ... 25 Bytes. Später wird es verwendet, um Protokolle verschiedener Ereignisse und möglicherweise Verbrauchsstatistiken zu führen (ich weiß nicht warum, aber es wird Gelegenheit geben, die Anzeige von Grafiken zu programmieren).

Zusätzlich zu den I2C-Buskontakten und der Stromversorgung befinden sich zwei weitere auf der Platine. "SQW" ist das Signal vom Wecker, das über die Register programmiert werden kann, und "32K" ist die vom DS3231 für andere Geräte erzeugte Frequenz. Dieses Projekt gilt nicht.

Modul mit Feuchtigkeitssensor




Es wird als Puffer zwischen der Außenwelt und dem Mikrocontroller verwendet. Die Drähte zu den Sonden haben insgesamt eine Länge von etwa 10 Metern ohne Schirm. Herkömmliche Zweidraht-Telefonkabel. Im Falle eines statischen Treffers hoffe ich, dass nur dieses Modul stirbt, nicht aber der Mikrocontroller. Es ist in der Lage, den Widerstand zwischen zwei Elektroden zu messen und diese Informationen in analoger Form (Spannung von 0 bis Versorgungsspannung) und in digitaler Form (0/1, das Modul verfügt über einen variablen Widerstand, der an die Betriebsgrenze angepasst werden kann) anzugeben.

Es gab kleinere Probleme mit diesem Modul. Beim Anlegen und Entfernen der Versorgungsspannung signalisierte das Modul am Digitalausgang eine Auslösung. Dies konnte auch daran gesehen werden, dass die LED für den Bruchteil einer Sekunde blinkte (auf der Modulplatine ist parallel zum Digitalausgang eine LED installiert). Der Mikrocontroller konnte ein anormales Signal lesen, als die Systemstromversorgung angelegt / zurückgesetzt wurde (Problem Nr. 1). Die Lösung wurde implementiert, indem kurze Betriebsimpulse in Erwartung eines für eine Weile festgelegten Zustands übersprungen wurden.

Der variable Widerstand hat einen sehr kleinen Einstellwinkel, bei dem ich die Grenze zwischen dem Fehlen falsch positiver Ergebnisse und einer guten Empfindlichkeit nicht finden konnte (Problem Nr. 2). Es wurde später implementiert, das analoge Signal durch den ADC-Mikrocontroller zu lesen. Gleichzeitig wurde es möglich, das Antwortlimit in den Geräteeinstellungen als Parameter festzulegen. Die Möglichkeit, die Antwortstufe anzupassen, wird jetzt als überflüssig angesehen, und es ist wahrscheinlich besser, den Grenzwert fest zu codieren.

Es wurde festgestellt, dass das Modul nach einigen Minuten Betrieb (Aufwärmen?) Plötzlich einen spontanen Betrieb signalisierte (Problem Nummer 3, wie viele davon ?!).

An der Grenze abnormaler Reaktionen nahm die Intensität des LED-Glühens (auf dem Modul) allmählich zu oder ab, als ob es von einem PWM-Generator gesteuert würde. Es ist klar, dass dies Rauschen und Hochfrequenz ist, dasselbe könnte am „digitalen“ Ausgang des Moduls erwartet werden (Problem Nr. 4) )

Ich werde klarstellen, dass all diese Probleme behoben wurden, als das Lesen des analogen Signals vom Modul implementiert wurde.

Sonden (Teile von Sensoren, die sich im Falle eines Unfalls direkt an Orten befinden, an denen sich Wasser ansammelt) werden aus improvisierten Mitteln hergestellt. Dies ist Zinn (Stahl) und eine kleine runde Anschlussdose, die mechanisch auf den gewünschten Typ modifiziert und mit Drähten eingelötet ist. Wenn Wasser zwischen die Elektrodenpaare eintritt, nimmt der Widerstand ab und wird von der Steuerung als „Leckage“ angesehen.



Labortests haben gezeigt, dass das Produkt seine Funktion gut erfüllt und kein schwaches Glied im System ist.

Ernährung


Das gesamte System funktioniert ab dem Aufladen des Telefons - 5 Volt, 2A (hier mit Rand). Auf der Maple Mini-Platine ist ein Spannungsregler von 3,3 Volt installiert, die Eingangsspannung kann bis zu 12 Volt betragen, die Eigenschaften des Stabilisators erlauben es, aber eine so große Spannung ist nicht bequem zu verwenden, mehr dazu weiter unten.

Mit einem Stabilisator werden 3,3 Volt auch an die Leistung der RTC-, TFT-Module und des Feuchtemessmoduls abgegeben. Die Krane werden über die ULN2003AN-Leistungsschalterbaugruppe direkt von der Stromversorgung angeschlossen, d. H. Arbeiten Sie ab 5 Volt abzüglich des Abfalls der Tasten. ULN2003AN verwendet nur zwei der sieben Kanäle.

Natürlich ist es ratsam, das Netzteil durch ein anderes mit einer etwas höheren Spannung zu ersetzen, weil Manchmal stoppt einer der Krane beim Schließen der Krane in einer fast extremen Position aufgrund des Betriebs seines eigenen Anhängers (zwei Teile sind im Ventilkörper installiert, um die extremen Positionen zu ermitteln) für den Bruchteil einer Sekunde, dann tritt ein „Rückprall“ auf (aufgrund des Spiels in den Zahnrädern des Getriebes) ), dann ein wiederholter Versuch, den Kugelhahn usw. festzuziehen, bis die Steuerung die Versorgungsspannung vom Servoantrieb entfernt.

Der Verkäufer auf der Website hat Informationen, dass die Krane ab 5 Volt arbeiten sollen, in diesem Fall wird die Spannung weniger geliefert. Die Software ist so konzipiert, dass zum Öffnen und Schließen der Abgriffe nur für eine bestimmte Zeit (6 Sekunden) Spannung zugeführt wird. Während dieser Zeit müssen die Abgriffe Zeit zum Öffnen oder Schließen haben. Es ist anzumerken, dass dieser Effekt das unvollständige Schließen des Hahns nicht beeinflusst, da Dieser Moment kommt, nachdem der Wasserhahn den Wasserfluss vollständig unterbrochen hat. Es ist auch zu erwähnen, dass zu viel Spannung an den Servos (9 Volt für das Experiment angelegt) dazu führt, dass sie sich durch Trägheit weiter bewegen (nachdem der Endschalter ausgelöst wurde) und mit dem charakteristischen Geräusch eines Aufpralls gegen die Extremposition stoßen.

Servokugelhähne


Absperrventile sehen zuverlässig aus, aber das elektronische Teil musste fertiggestellt werden.



Wenn Sie sich den Kransteuerkreis ansehen, werden Sie feststellen, dass diese durch positive Spannung gesteuert werden. Die allgemeinen "Minus" - und zwei Signalstrom "Plus" -Drähte, einer zum Schließen, der andere zum Öffnen. ULN2003AN kann in diesem Modus jedoch nicht funktionieren. Wenn der Schlüssel geöffnet wird, wird der verwaltete Ausgang mit dem Minus verbunden. Die Lösung besteht darin, die Steuerpolarität des Krans selbst zu ändern. Dazu musste ich die Signale des "Trailers" austauschen, weil Aufgrund einer Änderung der Polarität drehte sich der Elektromotor in die entgegengesetzte Richtung (im Vergleich zum Standardkreis), während die extremen Positionen jetzt in entgegengesetzte Richtungen weisen. Als Ergebnis haben wir einen Kran mit einem gemeinsamen „Plus“ und zwei Kontroll- „Minuspunkten“. Genau das, was benötigt wird!

Kräne mit Servos unter "Kampf" -Bedingungen.



Zählerstände


Natürlich sind im Zähler selbst keine Daten gespeichert, die durch zwei von ihm entfernte Drähte gelesen werden könnten. Dies ist nur eine Kette mit einem Reedschalter und einem Magneten, der sich auf einem rotierenden Laufrad befindet. Messungen mit einem Multimeter zeigten keinen Widerstand oder keine elektrischen Kapazitäten im Stromkreis. In meinen Zählern erfolgt der Kreislauf (mit anschließendem Öffnen) des Reedschalters mit einer Durchflussrate von einem Liter Wasser. Irgendwo gab es Informationen über die Zähler, deren Signal alle 10 Liter gebildet wird. Jene. Sie sind anders.

Der Mikrocontroller muss diese Impulse lesen. Die Benutzeroberfläche des Geräts liefert natürlich den Anfangswert.

Aufgrund bestehender Probleme: Ohne Strom wird der Wasserverbrauch nicht berücksichtigt. Es liegt ein Hardwarefehler vor, der behoben werden muss. Führen Sie eine Notstromversorgung der Batterien durch. Dies ist auch für die Hauptfunktionen des Geräts erforderlich, da das Gerät sonst die Wasserhähne bei Bedarf nicht ausschalten kann.

Daraus ergeben sich folgende zwei Aufgaben:
  1. . , , « », , () / . , ( ), «», , (, ), , FreeRTOS.
  2. , , « ».
    Wasserhähne abstellen?
    , , , , , 11 , , «» , , «» , !

Kontrollen


Encoder


Befindet sich neben dem Display und dient zur Navigation im Menü. Drehung - Gehen Sie zum nächsten / vorherigen Menüpunkt und drücken Sie - Wählen / Aktivieren eines Menüpunkts.

"Roter Knopf"


Der einfachste Weg, die Wasserhähne auszuschalten, ist das Drücken der roten Taste. Obwohl es nicht nützlich sein sollte, weil Einige Zeit zuvor musste das Gerät selbst alles tun. Aber nur für den Fall, die Schaltfläche existiert. Wiederholtes Drücken, langes Halten, Doppelklicken usw. nicht gezählt, nur die erste Presse und das wars. Der Notfallmodus ist aktiviert und kann nur über einen speziellen Menüpunkt deaktiviert werden.

Ein / Aus-Kippschalter


Sie können auch durch Tippen ausgeschaltet, aber natürlich auch geöffnet werden, wenn sich das System nicht im Crash-Modus befindet. Dies kann nützlich sein, um die Wasserversorgung vorübergehend zu unterbrechen.

Dreifarbige LED


Alles hier ist auch einfach. Um den aktuellen Modus anzuzeigen: Grün - alles ist in Ordnung, Rot - nicht alles ist in Ordnung, Blau - Tippen werden mit dem Kippschalter blockiert (siehe Absatz oben). Das Mischen von Farben wird nicht verwendet, drei waren genug. Aber hier trat ein Problem auf. Das Leuchten ist so stark, dass es beim Betrachten des Displays blendet. 470 Ohm für jede Farbe waren nicht genug. Programmatisch korrigiert. Wenn sich das Display in einem aktiven Zustand befindet (und während Sie die Bedienelemente verwenden und für eine Weile aktiv sind), ist diese LED aus.

Fazit


Das Gerät funktioniert. Regelmäßige Tests zeigen, dass es ordnungsgemäß funktioniert. Es friert nicht ein, es ist nicht fehlerhaft. Obwohl ich weiß, wo potenzielle, aber unkritische Fehler im Code vorhanden sind, wird dies in diesem Artikel nicht behandelt.

Quellen, Keil uVision 5-Projekt, Projektdatei für STM32CubeMX

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


All Articles