Stunden auf Gasentladungslampen (GRI) sind sie Nixie Uhr

Projektkonzept


Das Konzept dieses Produkts besteht darin, die Notwendigkeit zu erfüllen, die reale Flamme zu betrachten. Eine Glimmentladung in einem Gas ist streng genommen keine Flamme, obwohl sie wie eine echte Flamme aussieht.
Ich mag seine Farbe und dies war das einzige Motiv, solche Uhren in einer einzigen Kopie für mich selbst zu kreieren.

Die Aufgabe, ein Gerät für die Massenproduktion zu schaffen, wurde nicht gestellt.

Daher ist das Projektbudget viel vernünftiger. Entscheidungen wurden aufgrund unserer eigenen Vorstellungen von Schönheit getroffen, die Kosten für Komponenten wurden nicht berücksichtigt. Natürlich gibt es immer Einschränkungen, zum Beispiel habe ich keine großen GRI (Gasentladungsindikatoren) wie IN18 gekauft - ihr Preis ist mehr als eine intuitiv definierte Grenze und sie passten nicht zu meinem Konzept des Erscheinungsbilds des Produkts. Ich habe den GRI-Typ IN-12 verwendet.

IN12 ist mit einer Mischung aus Neon (oder einer Mischung aus Inertgasen) und Quecksilberdampf gefüllt. Quecksilberdampf erhöht die Haltbarkeit der Vorrichtung erheblich und verleiht dem Glühen des Plasmas eine bläuliche Färbung. Andere GRIs können quecksilberfrei sein und ein klares Neonlicht erzeugen.

Die Hauptfunktion der Uhr besteht darin, die genaue Uhrzeit anzuzeigen (CEP, hallo!). Es ist sehr wünschenswert, dass die Zeit beim Start automatisch eingestellt wird und keine Manipulation durch den Benutzer erfordert. Aus meiner persönlichen Sicht werden Tasten auf solchen Geräten überhaupt nicht benötigt. Ähnliche Geräte mit einem Dutzend Tasten und Hunderten von Funktionen, die durch verschiedene Kombinationen von Drücken und Druckzeiten verursacht werden, machen mich sehr traurig. Erstens - GRI sind gut angepasst, um nur Zahlen anzuzeigen. Es ist nichts anderes vorgesehen, und Versuche, Menüelemente usw. anzuzeigen, verwenden meiner Meinung nach ein ungeeignetes Werkzeug. Gleiches gilt für Zusatzfunktionen wie Wecker etc.

Zweitens ist es offensichtlich, dass es unrealistisch ist, sich daran zu erinnern, welche Kombination von Tastendrücken die eine oder andere eingebettete Funktion aktiviert. Das Schreiben von Programmen für solche Geräte macht Spaß und ist angenehm, aber dann unmöglich zu verwenden.

Diese Frage wird in dem Buch Donald A. Norman Design vertrauter Dinge perfekt berücksichtigt. Ich werde eine Passage zitieren:

„Während meiner Reisen habe ich den Leitz-Diaprojektor mehrmals benutzt. Das erste Mal war der schlimmste Albtraum. Ich begann zu vortragen und zeigte die erste Folie. Als es notwendig war, zur nächsten Folie zu wechseln, drückte der für die Show verantwortliche Student sanft auf den Knopf und begann mit Entsetzen zu beobachten, wie der Ständer in die entgegengesetzte Richtung ging, aus dem Diaprojektor rutschte und vom Tisch auf den Boden fiel und alle Folien mischte. Es dauerte 15 Minuten, um die Folien in der richtigen Reihenfolge anzuordnen. Schuld daran war nicht der Student, sondern dieser elegante Diaprojektor. Wie kann eine Taste zwei entgegengesetzte Funktionen ausführen? Niemand konnte es beim ersten Mal richtig machen. “

Das Problem war, dass eine Taste zwei entgegengesetzte Funktionen ausführte - ein kurzer Druck verschob den Schieber nach vorne, ein langer nach hinten. “

Wir setzen die Diskussion über das Einstellen der Uhr fort. Diese Geräte werden mithilfe eines Computers, Tablets oder Smartphones optimal von ihrer eigenen Webseite aus konfiguriert.

Ich brauche keinen Wecker für Uhren mit GRI - erstens gibt es immer Mobiltelefone mit solchen Funktionen und einer viel bequemeren Oberfläche. Zweitens kann der Takt am GRI keine autonome Stromquelle verwenden, da der typische Stromverbrauch (200 Volt * 7 mA = 1400 mW oder 1,4 Watt) ziemlich groß ist und für chemische Stromquellen vernünftige Grenzen überschreitet. Daher wird die Uhr mit der GRI vom Netzwerk gespeist, und die Alarmfunktion hängt von der Zuverlässigkeit des Netzwerks ab.

Aus den obigen Überlegungen ergibt sich das folgende System:

GRI-Uhr mit Strom aus dem Netzwerk, mit der Möglichkeit, die genaue Zeit aus dem Internet zu ermitteln, mit der Einstellung von einer eigenen Webseite. Es sind keine zusätzlichen Funktionen erforderlich.

Trotzdem habe ich die Strenge dieser Regel verletzt, indem ich die folgenden Funktionen hinzugefügt habe:

Eine Uhr kann Straßentemperatur, Luftfeuchtigkeit und Luftdruck anzeigen. Diese Funktion erfüllt mein persönliches Bedürfnis, die Außentemperatur zu kennen, wenn ich morgens zur Arbeit komme. Ich befestige mein Hemd jeden Tag an derselben Stelle und wenn die Uhr mich dort findet, zeigen sie konstant die Außentemperatur, Luftfeuchtigkeit und den Luftdruck in Millimetern Quecksilber an. Die Veranstaltung erwies sich sowohl bei mir als auch bei meinen Familienmitgliedern als erfolgreich und sehr gefragt. Daten zu Straßentemperatur, -druck und -feuchtigkeit werden automatisch erfasst und für die Zeit zwischen Paketen von einer externen Quelle gespeichert. Wenn das Zeitlimit überschritten wird (Daten sind veraltet), zeigt die Uhr das aktuelle Datum an. In meinem Heimsystem kommen Daten zu den Parametern der externen Umgebung in Intervallen von 10 Minuten an, das Zeitlimit "Daten veraltet" ist auf 30 Minuten eingestellt. Bei der Gestaltung der Uhr wurde davon ausgegangen, dass dem externen Team eine Stimme gegeben werden konnte, zum Beispiel: „Uhr, Wetter!“. Während des Prototyping stellte sich jedoch heraus, dass diese Methode unzuverlässig und unpraktisch ist. Daher wurde in Zukunft die Sprachsteuerung durch ein Verfahren zur Bestimmung der Anwesenheit einer Person vor der Uhr gemäß dem Flugzeit-Lasersuchgerät ersetzt. Die Uhr sollte Wetterdaten anzeigen, wenn Sie etwa eine Sekunde vor ihnen stehen.

Die Uhr eines externen Befehls über die HTTP-Schnittstelle kann die in diesem Befehl empfangenen Daten anzeigen. Das Team überträgt sowohl die Daten selbst als auch die Zeit, zu der sie auf dem Display angezeigt werden. Es wurde als Gelegenheit konzipiert, etwas vom Computer durch Ereignisse anzuzeigen, beispielsweise durch Überhitzung des Prozessors des Heimservers oder durch andere Parameter. Über die eingebettete Oberfläche können Sie von außen einen siebenstelligen Code mit zwei Punkten anzeigen. In der Praxis wird es überhaupt nicht angewendet.

Zu den zwingenden Anforderungen gehörte auch die Auswirkung einer reibungslosen Änderung der Zahlen. Es ist dieser Effekt, der einzige von allen, den ich wirklich mag!

Die Helligkeit der Anzeigen sollte an das Umgebungslicht angepasst werden, während der Bildkontrast unverändert bleibt.

Die Uhr sollte sechs Ziffern und einen Hilfswert vor den Ziffern anzeigen, um anzuzeigen, was aktuell angezeigt wird.

Implementierung der konzipierten Hardwarelösung


GRI-Auswahl


Zur Anzeige der Zeit und anderer Daten wurden vier GRI IN-12A, zwei IN-12B und ein IN-15A verwendet.

IN-12B enthält die Punkte, mit denen ich Stunden-Minuten-Sekunden getrennt habe.

GRI IN-15A kann eine Reihe von Sonderzeichen „+“, „-“, „%“, „P“ usw. am Zeilenanfang anzeigen.

Der optimale Abstand zwischen den Anzeigen.


Damit die Uhr harmonisch aussieht, sollte ein gewisser Abstand zwischen den Anzeigen wie zwischen den Buchstaben in einer Zeile vorgesehen werden. Die Untersuchung der Frage ergab folgende Informationen: Der optimale Abstand zwischen den Zahlen beträgt 4 mm, zwischen den Wörtern 8 mm. Der optimale Abstand zwischen den Zahlen wird durch einen passgenauen Indikator in den Panels sichergestellt. Ich glaube, das ist kein Zufall, dachten sowjetische Ingenieure während der Entwicklung mit dem Kopf und machten den richtigen Abstand.

Synchronisation mit Zeitservern


Überlegen Sie, wie Sie automatisch die genaue Zeit ermitteln können:

  1. Eine Anfrage über das Internet an einen genauen Zeitserver.
  2. Glonass \ GPS-Empfänger. Leider funktioniert es in einigen Fällen nicht: In meiner Wohnung am unteren Rand des Raums verschwindet beispielsweise das Signal der Satelliten, und die erfolglose Konfiguration der umliegenden Gebäude wirkt sich auf mich aus, bei der der klare Himmel nur direkt am Fenster sichtbar ist.
  3. Mobilfunknetz. Theoretisch können Sie Zeit von einer Mobilfunkstation anfordern, ohne sich zu registrieren (d. H. Ohne SIM-Karte). Ich habe es nicht versucht. Theoretisch der universellste Weg, der vom Benutzer nichts verlangt.
  4. Präzise Zeitsignale bei langen Wellenlängen. Es ist schwierig für die Anwendung, es gibt keine tragbaren fertigen Lösungen.

Meiner Meinung nach ist es am besten, die genaue Zeit über das Internet abzufragen. Es ist zu beachten, dass sich die integrierten Funktionen zum Speichern der aktuellen Uhrzeit des ESP8266 als recht genau herausstellten: In einem Monat, in dem der Zugangspunkt zum Netzwerk, über das die beschriebenen Stunden mit dem Internet verbunden waren, versehentlich getrennt wurde, betrug die Abfahrt weniger als eine Minute. Ich habe dies durch das Zusammentreffen von Uhr und Computerzeit bestimmt. Nach Wiederherstellung der Stromversorgung wird der Access Point automatisch synchronisiert.

Die Wahl der Prozessor- und Steuerschaltungen GRI


Zur Steuerung der Uhr ist ein Prozessor erforderlich, der auf das Internet zugreifen kann. Bei den verfügbaren handelt es sich um Karten, die auf dem ESP8266 basieren. Die Studie des Problems zeigte, dass das Board billig und weit verbreitet ist, über eine umfangreiche, vorgefertigte Software verfügt, die von Enthusiasten erstellt wurde und in der Arduino-Umgebung programmiert werden kann.

Die Wahl des Systems (Mikroschaltung) der Steuerung


GRI wird mit einer ziemlich hohen Spannung von etwa 200 Volt betrieben. Laut Pass (siehe Abb. 1) benötigt IN12 mindestens 170 Volt für das normale Auftreten einer Glimmentladung bei einem Strom von bis zu 2 mA. Das Steuersystem muss in der Lage sein, Ströme von mehreren Milliampere zu schalten und Spannungen im Bereich von 200 Volt standzuhalten. In der Sowjetunion wurden K155ID1 (133ID1 usw.) Mikroschaltungen hergestellt (binärer Hochspannungsdezimaldecoder). Sie arbeiteten perfekt im statischen Modus, ein Decoder war pro Lampe erforderlich. Jetzt sind diese Mikroschaltungen aus alten Lagerbeständen erhältlich und werden im Werk Minsk Integral sogar in kleinen Mengen hergestellt. Grundsätzlich eine gute Wahl für Uhren auf Gegenmikrokreisen. Aufgrund der begrenzten Anzahl von Ausgängen auf Mikroprozessoren sind sie jedoch in einem Mikroprozessorsystem schwierig zu verwenden. Die ESP8266-Uhr, die als Grundlage dient, hat nur ein Dutzend Schlussfolgerungen, und einige davon weisen bestimmte Einschränkungen auf. Für 7 Decoder sind 28 Ausgänge oder ein Zwischenregister erforderlich, in das Daten sequentiell ausgegeben und dann parallel zu K155ID1 ausgegeben werden müssen, was die Schaltung erheblich kompliziert.


Abb. 1. Pass der Glimmentladungsanzeige IN-12


Abb. 2. Pass der Glimmentladungsanzeige IN-15

Bei Verwendung von 155ID1 erfordert der Effekt einer reibungslosen Änderung der Zahlen eine dynamische Anzeige. Tatsache ist, dass GRI ein scharf nichtlineares Gerät ist und es sehr schwierig ist, seine Helligkeit auf analoge Weise durch Ändern der Spannung zu steuern - es ist aufgrund der hohen Steigung der Strom-angelegten Spannungscharakteristik sehr schwierig. Im Bereich geringer Helligkeit wird die Gasentladung instabil. Die externe Beleuchtung wirkt sich auch auf das stetige Einschalten der Lampe aus - bei einer Verringerung der externen Beleuchtung steigen sowohl die Durchbruchspannung als auch die Einschaltzeit der Anzeige an. Externe Photonen dienen als eine Art Feuerzeug, Initiatoren der Entladung. Übrigens wird die hohe Steilheit der Abhängigkeit des Stroms durch die Gasentladungsvorrichtung von der angelegten Spannung verwendet, um eine stabile Spannung zu erhalten, tatsächlich ist eine solche Gasentladungsvorrichtung ein Spannungsstabilisator. Um die Helligkeit des GDI zu steuern, ist daher die Verwendung eines gepulsten Leistungsmodus erforderlich, bei dem die Helligkeit proportional zum durchschnittlichen Strom durch den GDI ist, der wiederum proportional zur Breite des Impulses ist.

Eine dynamische Anzeige bei Verwendung von 155ID1 + GRI ist durchaus möglich, weist jedoch eine Reihe von Einschränkungen auf. Aufgrund der Besonderheit der 155ID1-Schaltung (relativ niedrige Spannungsschlüsselelemente - nur 60 Volt) sind Blitze benachbarter Nummern und andere unerwünschte Effekte möglich. Diese Effekte werden mit einer Vielzahl von Tricks bekämpft - sowohl Hardware als auch Software. Auf der RADIOKOT.RU-Website (https://radiokot.ru/forum/viewtopic.php?f=3&t=3210) gibt es ein großes Thema, das NIXIE CLOCK gewidmet ist. Ich habe alles gelesen und Schlussfolgerungen für mich gezogen - dynamische Anzeige ist für meine Zwecke ungeeignet .

Eine Suche im Internet ergab einen hervorragenden Ersatz für 155ID1 - dies ist der HV5622-Chip, der ein 32-Bit-Schieberegister mit Hochspannungsausgängen darstellt. Das Blockschaltbild ist in Abb. 3 dargestellt.


Abbildung 3. Strukturdiagramm von HV5622, Supertex inc. ©

Der HV5622 kann Spannungen bis zu 230 Volt umschalten und Daten über eine serielle Schnittstelle mit einer Taktfrequenz von bis zu 8 MHz empfangen. Mikroschaltungen können in einer Kette in Reihe geschaltet werden. Zur Steuerung sind nur 4 Ausgänge vom MK erforderlich: Daten, ein Taktsignal, ein Schreibsignal in das Ausgangsregister und ein Freigabesignal. Das einzige, was Zweifel aufkommen ließ, war die nährende Spannung. Laut Handbuch sollten es mindestens 8 Volt sein. Und ich möchte die Chips mit 5 Volt versorgen und sie sogar mit einem logischen Signal mit einem Pegel von 3,3 V steuern. Im Internet habe ich einige Beispiele für die Verwendung solcher Mikroschaltungen gefunden und sie mit 5 Volt betrieben. Daher bot ich während der Entwicklung für alle Fälle die Möglichkeit, einen Logikpegelwandler und ein 5622-Netzteil mit einer höheren Spannung zu installieren, installierte diese Knoten jedoch nicht sofort. Die Praxis hat gezeigt, dass ab 5 Volt sowieso alles gut funktioniert.

Beobachten Sie Ernährung


Um die Uhr am GRI mit Strom zu versorgen, ist eine Stromversorgung mit zwei Ausgängen erforderlich: 5 Volt mit einem Strom im Bereich von einem halben Ampere und 180-200 Volt mit einem Strom von etwa 10 mA. Standardmäßig lösen die Autoren von Schemata für solche Uhren das Leistungsproblem wie folgt: Sie verwenden ein externes Schaltnetzteil 220 -> 12 Volt, von denen 5 Volt im Takt erzeugt werden, und 180 Volt für die Stromversorgung werden vom zweiten Impulswandler vom Eingang 12 Volt erhalten. Das heißt, Tatsächlich werden 2 Impulswandler in der allgemeinen Stromversorgungsschaltung verwendet, von denen der erste 220 - 12 und der zweite 12 - 180 ergibt. Meiner Meinung nach ist dies ineffizient. Aus diesem Grund habe ich mich für eine sehr traditionelle Art der Verwendung des vorgefertigten Ringkerntransformators TorAN15 entschieden. Das Aussehen dieses Transformators ist in Abb. 4 dargestellt.


Abbildung 4. TorAN15-Transformator

Ich habe diesen Transformator auf der ISTOK2.COM-Website gekauft. Der Transformator hat zwei Sekundärwicklungen - eine bei 170 Volt, die zweite bei 6,3 Volt. Dies ermöglichte es, mit der einfachsten Stromversorgungsschaltung auszukommen. Hochleistungsversorgung GRI wird durch eine Diodenbrücke gleichgerichtet und auf Kondensatoren gefiltert. Diese Teile werden von einem unnötigen Leuchtstofflampenschoner verwendet. Niedrig für die Mikrokreisstromversorgung wird auch durch eine Diodenbrücke gleichgerichtet, auf einem Elektrolytkondensator gefiltert und auf einem integrierten Stabilisator 7805 stabilisiert. Der Wirkungsgrad einer solchen Schaltung ist viel höher als bei einem System mit zwei Umwandlungen, die Zuverlässigkeit des Systems ist viel höher. Plus das völlige Fehlen von Hochfrequenzstörungen. Das Minus ist unmodern und der Transformator ist schwer. Aber die Schwere des Transformators ist in diesem Fall eher ein Plus - ich wollte, dass die Uhr brutal massiv ist.

Das Taktschema ist also definiert: Es handelt sich um ein fertiges Modul auf Basis von ESP12E, drei HV5622-Mikroschaltungen, einen Lichtsensor auf Basis von MAX44009 und eine herkömmliche (ich würde sogar konservative sagen) Stromversorgung. Anschließend wurde ein Knoten zum Bestimmen einer Person vor der Uhr basierend auf dem VL53L0X-Flugzeit-Entfernungsmesser-Lasermodul hinzugefügt. Das schematische Diagramm der Uhr ist in Fig. 5 gezeigt.


Abbildung 5. Dronsky Nixie Uhr. Schematische Darstellung

Ich habe die Pin-Umschaltung wie folgt aufgeteilt: Die ersten drei Lampen - die erste HV5622, die zweiten drei Lampen - die zweite HV5622, die verbleibende HV5622 steuern die Lampe mit Sonderzeichen und Punkten in zwei IN12B.

In der Entwurfsphase war nicht klar, ob der SPI-Kanal genug Geschwindigkeit haben würde, um Daten für einen reibungslosen Ziffernwechsel auszugeben. Die Tatsache, dass es für den ESP12E nicht schwierig ist, einmal pro Sekunde 96 Bit auszugeben, stand außer Zweifel. Aber gibt es genug Geschwindigkeit, um Effekte auszugeben? Nach Berechnungen sollte mit einem Spielraum ausreichen. Aber wie Sie wissen, war es glatt auf dem Papier ...

Daher war zunächst geplant, Daten in drei Stufen separat für jeden Chip auszugeben. Ein praktischer Test hat gezeigt, dass der SPI-Kanal auch bei einer Taktfrequenz von 4 MHz eine ausreichende Geschwindigkeit mit einem großen Spielraum für Effekte aufweist. Sogar die Fähigkeit, die Geschwindigkeit zu verdoppeln, wurde nicht beansprucht. Infolgedessen sind alle Mikroschaltungen in einer Kette verbunden und die Ausgabe von 96 Bit erfolgt mit einem Befehl. Berechnungen zufolge sollte die Ausgabezeit von 96 Bit 24 μs betragen. Abbildung 6 zeigt eine Aufzeichnung eines logischen Analysators, der sieben Zeichen auf der GRI ausgibt. Die Gesamtausgabezeit unter Berücksichtigung der Erzeugung des LE-Signals beträgt weniger als 30 μS.


Abbildung 6. Ausgang des 96-Bit-Ausgangskanals HSPI des Logikanalysators mit einer Taktfrequenz von 4 MHz

Die CLOCK-Pins aller Chips sind kombiniert. Der DI-Anschluss (Dateneingang) der zweiten und dritten Mikroschaltung ist mit den DO-Anschlüssen (Datenausgang) der ersten bzw. zweiten Mikroschaltung verbunden. Die LE-Pins (Latch-Freigabe) werden kombiniert, sie empfangen einen Impuls, der Daten von der Verschiebung zum Ausgangsregister überträgt. Bis zur Übertragung der Lampe wird ausgegeben, was im Ausgangsregister gespeichert ist. BLOCK-Pins werden kombiniert und über einen 1k-Widerstand mit Masse verbunden, um die Ausgangsstufen des HV5622 ausgeschaltet zu halten, bis das Programm im MK startet. Im Handbuch wird empfohlen, die Stromversorgung einzuschalten, die erste Datenausgabe vorzunehmen und dann die Ausgangsstufen einzuschalten.

Helligkeitsregelung


Um die Helligkeit des GRI zu steuern, um einen konstanten optimalen Kontrast der Anzeigen aufrechtzuerhalten, wird der BLOCK-Ausgang verwendet, an den ein PWM-Signal mit einer Frequenz von 2500 Hz geliefert wird. Es wurde eine ausreichend hohe Frequenz des PWM-Steuersignals verwendet, die das Fehlen von Strobe-Effekten usw. garantierte. In Übereinstimmung mit den Normen (Konstruktionsnormen und -vorschriften (Konstruktionsnormen und -regeln) 23 - 05 - 2010 (aktualisierte Version von SNiP 23 - 05 - 95) und den Hygienevorschriften und -normen von SNPiN 2.21 /2.1.1.1278-03) Es wird angenommen, dass eine Person die Frequenz von Beleuchtungspulsationen über 300 Hz nicht wahrnimmt. In diesem Fall bietet ein Überschreiten der PWM-Frequenz um fast eine Bestellung das richtige Maß an Sehkomfort.

Der Effekt einer reibungslosen Änderung der Zahlen


Um den visuellen Effekt einer reibungslosen Änderung der Ziffern zu erzielen, müssen die alten und neuen Ziffern während des Wechsels einer Ziffer in eine andere (normalerweise 200 bis 250 ms) abwechselnd eingeschaltet werden. Die Brenndauer der alten Ziffer sollte abnehmen und die neue sollte zunehmen. Der Algorithmus zum Ändern von Ziffern (Unterprogrammänderung ()) führt 60 Zyklen durch.Beim Starten des Ziffernänderungsalgorithmus ist die erste Ziffer 100% der Zykluszeit und die zweite 0% enthalten. Während die Zyklen vergehen, nimmt die Einschaltzeit der ersten Ziffer von 100% auf 0% ab, und die Einschaltdauer der zweiten Ziffer steigt von 0% auf 100%. Somit reduziert der Algorithmus zum reibungslosen Ändern von Ziffern über 200 ms und 60 Zyklen die Helligkeit der ersten Ziffer auf Aus und der zweiten auf volle Helligkeit.

Während der restlichen Zeit des zweiten Intervalls werden die Nummern kontinuierlich und statisch eingeschaltet. Ihre Gesamthelligkeit wird durch Steuern der allgemeinen Ein / Aus-Anzeige des PWM-Signals an den BL-Anschlüssen verringert.

Abbildung 7 zeigt die vom Logikanalysator beim Ändern der Zahlen aufgezeichneten Signale. Es ist ersichtlich, dass zu Beginn des Verschiebungsunterprogramms die alte Nummer für die maximale Zeit eingeschaltet ist und die neue die minimale ist, und während der Verschiebung (ungefähr 250 ms) verringert sich die Brennzeit der alten Nummer auf 0 und die neue wächst auf das Maximum. Optisch äußert sich dies in einer sanften Abnahme der Helligkeit der alten Figur bei gleichzeitigem „Auftauen“ der neuen Figur.


Abb. 7. Aufzeichnung von Steuersignalen während eines reibungslosen Ziffernwechsels. Hier wird

eine Videoaufzeichnung des Effekts gegeben.


und hier


und hier:


Synchronisation mit Zeitservern


Nachdem ich das Problem im Internet untersucht hatte, kam ich zu dem Schluss, dass Autoren von Programmen selbst Routinen für das NTP-Protokoll schreiben (oder vorgefertigte Routinen von Drittanbietern verwenden). Dies hat mich etwas überrascht, da das Espressif SDK integrierte Funktionen für die Arbeit mit Echtzeit erwähnt. Die eingebaute Funktionalität bietet eine Anforderung für Zeitserver (bis zu drei), Zeitkorrektur (nach meinen Beobachtungen - eine Anforderung an einen Zeitserver erfolgt alle 4-6 Stunden), Konvertierung eines Wertes in Form von Unix-Zeit in eine für Menschen lesbare Form, Korrektur gemäß einer bestimmten Zeit- Zone.

Zu den Funktionen der Verwendung der integrierten Echtzeitfunktion: Für die erste und mehrere nachfolgende Zeitanforderungen wird Null zurückgegeben und die Diagnose "RTC zuerst ausführen" ausgegeben. Vorgehensweise - Ich habe sie nicht gefunden und warte daher nur (einige Sekunden), bis eine andere Zeit als Null angezeigt wird.

Taktstartalgorithmus


Wenn die Uhr eingeschaltet ist, wird das System im Client-Modus eingeschaltet und versucht, mit den gespeicherten Details eine Verbindung zum Access Point herzustellen.

ESP8266 speichert diese Details nach einer erfolgreichen vorherigen Verbindung allein im Dienstspeicher. Dies ist eine im SDK implementierte Funktion. Wenn diese Verbindung nicht erfolgreich ist, wird der nächste Versuch unternommen, aber der Name und das Kennwort für den Zugriffspunkt werden aus dem EEPROM gelesen. Das EEPROM speichert auch die Zeitzone (eine Zahl im Bereich von -12 - +12), die dann verwendet wird, um die Zeit korrekt in ein lokales Format zu konvertieren.

Wenn diese Verbindung ebenfalls nicht erfolgreich ist, wechselt der Betriebsmodus zum „Zugangspunkt“ und die Webseite der Uhr wird unter der Standardadresse 192.168.4.1 für jedes an diesen Zugangspunkt angeschlossene Gerät verfügbar. In meinem Fall lautet der Name des Zugriffspunkts ESP_D. Gehen Sie von einem Smartphone, Tablet oder Laptop zur Geräteseite, wählen Sie einen Zugangspunkt aus und geben Sie ein Passwort ein. Während der Access Point-Modus aktiviert ist, ist der Client-Modus deaktiviert. Dies ist auf die Besonderheiten des Verhaltens des Systems in einer Situation zurückzuführen, in der die Verbindung zum Zugriffspunkt fehlgeschlagen ist. Das System wiederholt ständig Beitrittsversuche, es wird nur damit beschäftigt sein und es werden praktisch keine Ressourcen mehr für irgendetwas anderes übrig sein. Äußerlich wird sich dies als unangenehme Hemmung der Schnittstelle manifestieren. Das Erscheinungsbild der Seite ist in Abb. 8 dargestellt.


Abb. 8. Darstellung der WEB-Taktschnittstelle und der Befehlszeile, die die Reaktion auf den Ping-Befehl demonstrieren.

Auf dieser Seite werden alle gefundenen Zugriffspunkte angezeigt. Zugangspunkte werden nach Signalstärke sortiert. Die oberste Zeile ist der Zugangspunkt mit dem stärksten Signal und höchstwahrscheinlich der nächstgelegene (d. H. Derjenige, dem Sie beitreten müssen). Sie müssen ein Passwort eingeben, eine Zeitzone auswählen und auf OK klicken. Das System aktiviert den Client-Modus (gleichzeitig mit dem Access Point) und versucht, eine Verbindung herzustellen. Wenn die Verbindung erfolgreich hergestellt wurde, werden die Parameter im EEPROM gespeichert. Wenn die Verbindung fehlgeschlagen ist, wird auf der Seite eine Meldung angezeigt, und Sie können erneut versuchen, das Kennwort usw. einzugeben.

Nach einer erfolgreichen Anmeldung im Netzwerk wird der "Zugangspunkt" -Modus deaktiviert und nur der "Client" -Modus verbleibt, d. H. Auf die Überwachungsseite kann nur über das interne Netzwerk zugegriffen werden.
Um über den Namen auf die Uhr zugreifen zu können (in meinem Fall „esp“), wird die NBNS-Bibliothek gestartet, die eine Antwort über das NetBios-Protokoll liefert. Die Bibliothek ermöglicht es der Uhr, auf Befehle wie ping esp zu reagieren und einfach unter dem Namen esp darauf zuzugreifen

Aus Gründen, die mir nicht klar sind, ist dies eine wunderbare Bibliothek, die eine Antwort auf eine Broadcast-Anfrage wie "An welcher Adresse ist der" Name "?" und damit Sie das trostlose Verfahren zum Ermitteln der IP-Adresse des Geräts anhand der internen Daten des Routers (Switch) vergessen können, wird es sehr selten verwendet. Fast alle im Internet beschriebenen Geräte des ESP8266 verwenden diesen einfachen und praktischen Mechanismus nicht. Faulheit sollte den Fortschritt bewegen - aber in diesem Fall bewegt sie sich nicht.

Als nächstes beginnt der Hauptprogrammzyklus, in dem Folgendes auftritt:

  • Die aktuelle Zeit wird abgefragt und wenn die Sekunden vergehen, beginnt eine Änderung der Zeitanzeige.
  • Der Lichtsensor wird abgefragt und das Tastverhältnis des PWM-Signals angepasst, wodurch die Helligkeit der Uhr gesteuert wird. Der Zweck der Einstellung besteht darin, den konstanten Kontrast der Zahlen beim Ändern der Beleuchtung im Raum beizubehalten.
  • VL53L0X. , 2 .

Experimente haben gezeigt, dass 2 Meter unter idealen Bedingungen sind, wenn ein weißes Blatt Papier oder Aluminiumfolie mit einem Reflexionskoeffizienten nahe der Einheit als Reflektor verwendet wird. Bei gewöhnlichen Objekten mit einem unvollständigen Reflexionskoeffizienten (Gewebe, menschliche Haut usw.) beträgt der Abstand zur sicheren Bestimmung etwas mehr als 1 Meter. Wenn der Sensor das Vorhandensein eines Objekts vor der Uhr anzeigt, zeigt eine Unterroutine die aktuelle Außentemperatur, Luftfeuchtigkeit und den Luftdruck an. Es wurden Maßnahmen ergriffen, um die Störfestigkeit etwas zu erhöhen - der einfachste Algorithmus „mehr als 50% der Operationen“ wird verwendet. Dies bedeutet, dass für ein Intervall von 800 ms das Ziel in mehr als der Hälfte der Entfernungsmessungen in einer Entfernung von weniger als 1 Meter erfasst werden muss. Beim Debuggen zeigte das System, dass normalerweise 50-60 Operationen erhalten werden, wenn sich das Ziel im Sichtfeld des Sensors befindet.

Das menschliche Erkennungssystem funktioniert nur, wenn das Ziel im Sichtfeld erscheint. Um die Show erneut zu starten, müssen Sie einen Schritt zurücktreten und erneut gehen. Dies geschieht, um die Situation zu beseitigen, dass beim Stehen vor der Uhr ständig externe Parameter angezeigt werden.

Der Lasersensor VL53L0X verwendet eine IR-Laserdiode, die bei einer Wellenlänge von 940 nm emittiert und für die Augen sicher ist.

Das Video zeigt die Reaktion des Systems auf das Auftreten eines Hindernisses im Sichtfeld des Lasersuchgeräts:


Der ursprüngliche Plan zum Auslösen der Anzeige externer Daten war die Verwendung eines Spracherkennungs-Chips. Zu diesem Zweck habe ich den WTK6900B02-Chip (Sprachbefehlserkennung) verwendet, der freundlicherweise von Sound Technologies zur Verfügung gestellt wurde. Gemäß der Beschreibung sollte die Mikroschaltung ein Dutzend Audiobefehle erkennen und einen Binärcode ausgeben, der dem empfangenen Befehl entspricht. Ein Impuls von der Mikroschaltung wurde an einen der Ausgänge des ESP8266 angeschlossen und ein Hardware-Interrupt-Handler wurde daran angeschlossen. Durch Hardwareunterbrechung wird die Tatsache der Erkennung eines Sprachbefehls aufgezeichnet. Auf dem Chip, den ich erhalten habe, wurde eine Reihe von Befehlen in englischer Sprache aufgezeichnet. Ich habe hart in der "richtigen Aussprache" von Befehlen trainiert, damit sie erkannt werden. Es stellte sich heraus, dass man nicht mit Oxford-Aussprache sprechen sollte, sondern mit einem chinesischen Akzent :)), ziemlich laut.

Trotz des erheblichen Zeitaufwands konnte ich Sprachbefehle nicht zuverlässig erkennen. Das Beste, was ich bekam, war eine zu 50% korrekte Erkennung. Daher musste ich einen anderen Mechanismus zum Auslösen der Anzeige externer Daten verwenden - den Laser-Entfernungsmesser VL53L0X.

Das Hauptprogramm der Uhr hinterließ Spuren der Verwendung des Sprachsteuerungssystems.
Das Programm enthält auch Teile zum Lesen von Daten von ihrem Ultraviolett-Sensor VEML6070. Tatsache ist, dass ich das Uhrprogramm abwechselnd zu Hause und bei der Arbeit getestet habe und nur einen MAX44009-Sensor hatte. Daher wurde bei der Arbeit der Ultraviolettsensor VEML6070 an den ESP8266 angeschlossen und ein Teil des Programms geschrieben, der bestimmt, welcher der Sensoren derzeit angeschlossen ist. Um den Kontrastanpassungsalgorithmus zu erarbeiten, stellte sich heraus, dass dies völlig ausreichend war, und ich habe in der endgültigen Version des Programms nichts geändert.

Datenausgabe an die Register HV5622


Wie oben erwähnt, sind zur Steuerung von Gasentladungslampen Mikroschaltungen erforderlich, die eine ziemlich hohe Spannung schalten können. Ich entschied mich für die HV5622-Chips, die ein 32-Bit-Register mit sequentiellem Schreiben und parallelem Auslesen sind. Die Kathoden der Lampen sind jeweils mit ihrem HV5622-Anschluss verbunden. Um eine bestimmte Ziffer zu zünden, muss 0 ausgegeben werden. An die ersten beiden HV5622 sind die Kathoden von sechs GRI angeschlossen, an die dritte HV5622 sind die Punkttrennzeichen von Stunden-Minuten und Minuten-Sekunden und die Kathoden der siebten Lampe mit Sonderzeichen. Um die erforderlichen Ziffern in den Lampen zu aktivieren, muss im Register eine 32-Bit-Nummer angezeigt werden, in der Protokoll 1 (die Daten im HV5622 sind invertiert) den erforderlichen Kathoden der Lampen entspricht. Das Programm verfügt über Arrays mit 32-Bit-Variablen der Dimension 10.Jedes Element eines solchen Arrays enthält eine Binärzahl mit log 1 an einer der Positionen, deren Ausgabe an das Register zur Zündung der gewünschten Ziffer führt. Da jede Mikroschaltung mehrere GDIs steuert, ist es für die Ausgabe erforderlich, eine 32-Bit-Variable aus mehreren Elementen zu bilden, die hauptsächlich aus logischer 0 bestehen, wobei log 1 den erforderlichen Ziffern in jeder Lampe entspricht.

Es ist erwähnenswert, dass die Entscheidung, Arrays zur Steuerung der GRI-Kathoden zu verwenden, einen schwerwiegenden Vorteil hat: Wenn beim Löten von Drähten von den GRI-Buchsen zu den HV5622-Buchsen ein Fehler aufgetreten ist und die Schlussfolgerungen der GRI gemischt wurden, ändern Sie zum Fixieren einfach die Konstante im Programm, ohne etwas zu löten. Die große Anzahl und die enge Anordnung der HV5622-Kabel erschweren das Löten zweier benachbarter Drähte.

Um alle drei Register zu vervollständigen, müssen 3 32-Bit-Variablen (insgesamt 96 Bit) ausgegeben werden. Es ist unvernünftig, dies mit einem „Hebel“ zu tun - zu lang, zeitaufwändig.

Glücklicherweise enthält der ESP8266 einen Hardwaremechanismus (HSPI) für die serielle Kommunikation, und das SDK verfügt über Zugriffsfunktionen auf diesen Mechanismus. Mit dem Start dieses Mechanismus musste ich leiden. Die Schwierigkeit bestand darin, dass nicht klar war, wo 32-Bit-Variablen für die Ausgabe im HSPI-Modus abgelegt werden sollten. Um den HSPI-Mechanismus zu verstehen, habe ich einen Logikanalysator verwendet. Nach einer Reihe von Experimenten wurde mir klar, dass 96 Bit ausgegeben werden. Dies ist jedoch die gewünschte 32-Bit-Nummer am Anfang und zwei 32-Bit-Nummern, die beliebigen Müll enthalten. Die Suche im Internet ergab nichts, aber zu welchem ​​Zeitpunkt wurde mir klar, dass es eine Anweisung wie WRITE_PERI_REG (SPI_W0 (HSPI), d0) gibt. dann können Sie versuchen, WRITE_PERI_REG (SPI_W1 (HSPI), d1) zu schreiben; und weiter WRITE_PERI_REG (SPI_W2 (HSPI), d2); Dabei sind d0, d1, d2 32-Bit-Variablen. Das heißt,Sie müssen zuerst die Daten in die Register SPI_W0 - SPI_W2 zerlegen und dann einen Befehl zum Starten des Austauschs ausgeben. Ich stelle auch fest, dass das HSPI-Modul bis zu 512 Bit ausgeben kann und es nur 16 solcher Register gibt: W0 - W15.

Das LE-Signal, mit dem Daten an das Ausgangsregister HV5622 übertragen werden, wird programmgesteuert erzeugt.

System-Debugging


Ich habe es nicht gewagt, das System sofort mit einer vollwertigen Hochspannung (230 Volt) zu debuggen und aus einem Dutzend LEDs eine Debug-Anzeige mit einer Betriebsspannung von 5 Volt zu machen. Als ich nach dem Debuggen sicher war, dass die richtigen LEDs richtig aufleuchteten, wurden die GRI in den Panels montiert und eine hohe angewendet. Infolge einer solchen Debugging-Sequenz wurde kein einzelner Chip oder eine einzelne Anzeigelampe beschädigt :). Ein Foto des zum Debuggen verwendeten Knotens ist in Abbildung 9 dargestellt.


Abbildung 9. Foto der Debug-LED-Baugruppe.

Ein kurzer Video-Debugging-Prozess hier


Gehäuse


Die ursprüngliche Idee war, ein brutales Gehäuse aus dickem Metall wie Kupfer, Messing oder Bronze herzustellen. Da für die Wi-Fi-Verbindung jedoch ein dielektrisches Gehäuse erforderlich ist, bleibt in der endgültigen Version nur die Frontplatte aus dickem Metall übrig. Eine flüchtige Suche im Internet nach Unternehmen, die maßgeschneiderte Gehäuse herstellen, ergab einen Wert von rund 5000 r pro Gehäuse. Meiner Meinung nach ist dies unter den gegenwärtigen Umständen ein unangemessener Betrag. Also nahm ich das fertige Gebäude (Gainta G2119C), kaufte es auf dem Weg zum Cottage im Shcherbinsky Chip-i-Deep-Laden und entschied mich dafür und ließ die Frage nach der Frontplatte und möglicherweise einem anderen Gebäude für später.

Trotz des Fehlers im Teil des Uhrengehäuses habe ich beschlossen, die erzielten Ergebnisse in dem Artikel anzugeben, da ich der Ansicht war, dass die entwickelten und angewendeten Schaltungs- und Softwarelösungen für die Öffentlichkeit von Interesse sein würden.

Das heutige Erscheinungsbild des Falles ist in Abb. 10 dargestellt.




Abbildung 10. Aussehen des Uhrengehäuses

Fazit


Die Uhr arbeitet seit mehr als einem Jahr, es gab keine Fehler, die Aufgaben wurden erledigt. Ich werde noch einmal die Unterscheidungsmerkmale meiner Uhrenvariante auflisten:

  • Statischer Anzeigemodus bei gleichzeitiger Auswirkung eines reibungslosen Zahlenwechsels
  • Verwenden von HV5622-Chips zur Steuerung von GRI
  • HV5622-Daten werden mit der HSPI-Hardware-Engine geschrieben
  • Die genaue Zeit wird von den genauen Zeitservern aus dem Internet übernommen.
  • Der Zugriff auf die Uhr ist über das interne Netzwerk namentlich möglich
  • Das Setup ist beim ersten Start einmal erforderlich.
  • Das völlige Fehlen von Tasten, Alarmen usw.
  • Stufenlose Anpassung der Helligkeit des Glühens des GRI, um einen konstanten Bildkontrast in den gegebenen Grenzen der Änderung des Umgebungslichts aufrechtzuerhalten
  • Die Uhr reagiert auf die Annäherung einer Person und zeigt Straßentemperatur, Luftfeuchtigkeit und Luftdruck an.

Ich bin zufrieden :)

→ Hier liegt das Archiv mit dem Programm

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


All Articles