Zahlavi

Sprache auswählen

Beschreibung des Steuerungsprogramms Version 1.0.1

 

Ich habe lange darüber nachgedacht, wie ich das geschriebene Programm hier im Detail analysieren kann. Am Ende habe ich beschlossen, nicht zu übertreiben. Jeder, der nicht in Javascript für node.js programmieren kann, wird es hier definitiv nicht lernen. Wer weiß, braucht keine trivialen Details. Für diese erste Version werde ich eine Ausnahme machen und die Beschreibung etwas genauer analysieren, um die Prozeduren und Abhängigkeiten zu löschen, die für andere Versionen gelten.

Javascript als Programmiersprache ist kein Compiler, sondern ein Interpreter. Dies bedeutet, dass ich den Quellcode nicht für mich behalte und hier nicht nur unverständliche ausführbare Dateien veröffentliche. Alle geschriebenen Programme sind reine Textdateien, die von jedem gelesen werden können, der die Sprache spricht. Nur node.js übersetzt diese Texte zum Zeitpunkt ihrer Ausführung in eine ausführbare Form. Daher können Sie alles, was Sie hier finden, studieren und dann an Ihre Bedürfnisse anpassen. Ich hätte gerne ein Feedback von Ihnen. Deshalb bitte ich jeden, der Anpassungen vornimmt, mir darüber zu schreiben. Ich lerne auch gerne etwas. Vielen Dank.

Sie können die erste Testversion von Version 1.0.1 von der Dateien zum Download / für HW-Version 1.x herunterladen. Die Verwendung wird am Ende der Raspberry Pi-Vorbereitungsseite beschrieben. Für seine Funktionalität ist es erforderlich, die Bibliotheken onoff und socket.io mit dem Programm npm zu installieren.

Das Projekt besteht aus diesen Teilen:

  • js Verzeichnis, hier sind meine Dateien mit Javascript-Funktionen
  • Verzeichnis Bild, hier sind die Bilder auf der Website verwendet
  • Datei favicon.ico, ein Programmsymbol, das im Browser angezeigt wird
  • Die Datei index.html, die grundlegende Webseite, die im Browser angezeigt wird
  • satprowler.js Datei, das Basisprogramm für node.js

Der Webserver verwendet nicht den Standard-Webport 80, sondern 8080. Wenn Sie möchten, können Sie die Portnummer in der Datei satprowler.js ändern. Ich wollte die Kommunikation mit dem Raspberry Pi irgendwie differenzieren. Daher ist es notwendig, die Adresse in diesem Format in den Webbrowser einzugeben.

http://192.168.xxx.xxx:8080

Wobei xxx die letzten beiden Ziffern der Raspberry Pi-IP-Adresse sind, abhängig von Ihren Heimnetzwerkeinstellungen. Sobald die Verbindung hergestellt ist, wird das folgende Fenster im Browser angezeigt.

PrtScr01Thumb

Obr. 1 Obrazovka programu SatProwler

Durch Drücken einer beliebigen Pfeiltaste wird der entsprechende Motor gestartet. Beim Loslassen stoppt der Motor wieder. Wenn Sie die Taste drücken, die Maus nach außen bewegen und die Maus loslassen, läuft der Motor weiter. Klicken Sie auf dieselbe Schaltfläche, um sie zu stoppen. Es ist ein Softwarefehler, aber auf diese Weise können Sie überprüfen, ob beide Engines gleichzeitig ausgeführt werden können.

Das war ursprünglich alles, was ich vom ersten Test an verlangt hatte. Motorsteuerung und Bewegungsrichtung prüfen. Aber dann habe ich eine Überprüfung der Eingangssignale von den Sensoren hinzugefügt. Wenn eine Taste losgelassen wird, werden die Werte aller Zähler im Terminalfenster angezeigt.

Der Wert, der den Zustand der Endschalter darstellt, ist zuerst wahr. Es ändert sich nach dem Schließen in false und kehrt nach dem Öffnen zu true zurück. Während des Tests stellte ich fest, dass die Nullpunktschalter bei verschiedenen Werten des Impulszählers schließen und öffnen. Daher wird die ursprüngliche Steuereinheit bei der Suche nach dem Nullpunkt wahrscheinlich übergehen und dann ein wenig zurückgeben. Dies ist im Video auf der Einführungsseite zu sehen. Der Schalter hat daher eine gewisse Hysterese und der richtige Nullpunkt liegt zum Zeitpunkt des Öffnens des Schalters. Ich werde diese Regel auch in meinen Programmen befolgen. Es ist auch zu berücksichtigen, dass es sich um mechanische Schalter mit Schwingungen handelt (wiederholtes Trennen / Verbinden aufgrund der Flexibilität der Kontakte). Ich löse diese Funktion in Version 1.0.1 nicht.

Tatsächlich habe ich keine Ahnung, warum beide Motoren zwei Drehzahlsensoren haben. Beim Zählen der Eingangsimpulse von Motoren zählt SatProwler Version 1.0.1 die Impulse von Kanal A und B in einem Zähler. Dies verdoppelt die Anzahl der Impulse und damit die theoretische Genauigkeit der Positionseinstellung. Ob dies tatsächlich der Fall ist, bleibt abzuwarten. Der Gleichstrommotor hat eine gewisse Trägheit und das Stoppen mit einer Genauigkeit von 1 Impuls wird wahrscheinlich nicht einfach sein.

Für den gesamten Azimutpfad im Bereich von -90 ° bis + 90 ° zählte mein Gerät ungefähr 36000 Impulse (18000 Impulse pro Kanal), was 200 Impulse (100 Impulse pro Kanal) pro Stufe bedeutet. Dies entspricht einer Genauigkeit von 0,01 Grad pro Impuls, wie in der ursprünglichen Bedienungsanleitung angegeben. Für den gesamten Höhenweg im Bereich von 10 ° bis 50 ° zählte mein Gerät ungefähr 32.000 (2 x 16.000) Impulse, d. H. 800 (2 x 400) Impulse pro Stufe. Dies entspricht einer Genauigkeit von 0,0025 Grad pro Impuls, wie in der ursprünglichen Bedienungsanleitung angegeben.

Der Webbrowser kommuniziert derzeit in eine Richtung mit dem Webserver. Dies bedeutet, dass es einen Befehl an den Server sendet, jedoch keine Rückbestätigung erhält, dass der Server ihn empfangen und ausgeführt hat. Die Funktionen RelayOn und RelayOff werden zum Senden des Befehls verwendet. Die erste Funktion ist ein Befehl zum Schließen, die zweite zum Öffnen eines Relais. Auf welches Relais (Relaispaar beim Richtungswechsel) sich der Befehl bezieht, wird durch die Zahl in Klammern definiert. Meine Bibliothek "js / driverfce.js" löst das Senden des Befehls an den Server.

Eine andere Bibliothek "https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js" bietet Netzwerkkommunikation. Leider konnte ich diese Bibliothek noch nicht lokal auf der Raspberry Pi SD-Karte platzieren, daher benötige ich zum Testen einen Internetzugang. Dies ist der gesamte leistungsstarke Teil der Datei index.html. Alles andere betrifft nur den HTML-Standard oder das Seitenlayout.

Die Datei satprowler.js enthält das gesamte Serverprogramm. Zuerst deklariere ich Variablen für den Status der Zähler und definiere die Standardwerte. Ich setze die Zähler auf einen imaginären Wert von 5000 und den Zustand der Schalter auf true. Dann wird die Ein-Aus-Bibliothek geladen, die die GPIO-Port-Pins direkt steuert. Anschließend werden die Parameter der einzelnen Pins definiert. Jeder, der andere GPIO-Port-Pins verwendet, muss diese hier reparieren. Es darf jedoch nicht vergessen werden, dass alle Eingänge aktive Pullup-Widerstände haben müssen. Die Onoff-Bibliothek kann sie nicht aktivieren, daher müssen auch die PIN-Nummern in der Datei config.txt im Startbereich der SD-Karte korrigiert werden, wie unter Vorbereiten des Raspberry Pi und anschließendes Neustarten des Raspberry Pi beschrieben.

Die Funktionen xxx.watch definieren die Interrupt-Behandlung, die durch Ändern des Werts an den Eingangspins des GPIO-Ports verursacht wird. Bisher gibt es nur die Addition oder Subtraktion von 1 im Impulszähler entsprechend der Drehrichtung des Motors. Die Variablen orgAZ und orgEL ändern sich je nach Status des Switches nur in false oder true. Bei Änderung auf true wird der Zählerwert jedoch zurückgesetzt. Von nun an sollten sie den korrekten Wert der aktuellen Position berechnen. Das Folgende ist eine Funktion, die verwendete Raspberry Pi-Interrupts freigibt, bevor das Programm beendet wird. Funktion process.on ('SIGINT', nicht exportOnClose); im Gegenteil, es aktiviert definierte Interrupts.

Anschließend erstellen und starten Sie Ihren eigenen Webserver. So reagieren Sie auf Webclient-Anfragen. Zeile http.listen (8080); Definiert, an welchem ​​Port der Server empfangsbereit ist. Hier können Sie den Standardport 80 oder etwas anderes einstellen.

Der Rest ist eine Beschreibung dessen, was der Server tut, nachdem er eine Anforderung zur Steuerung der GPIO-Ports erhalten hat. Es verwendet die Ein-Aus-Bibliothek, um die erforderlichen Ausgabewerte festzulegen. Hier muss sichergestellt werden, dass das Ein- und Ausschalten des Relais zum Ändern der Drehrichtung nur im Ruhezustand des Motors erfolgt.

Aus professioneller Sicht weist das Programm viele Mängel auf. Der Zweck ist jedoch nicht für den normalen Gebrauch. Es geht nur darum, die Funktionalität der Hardware zu testen. Nach einer sorgfältigen Annäherung an die Endschalter kann es jedoch zur wiederholten manuellen Einstellung der Positionen der Satelliten verwendet werden, für die die Werte der Zähler auf einem Blatt Papier aufgezeichnet werden. Dies würde es ermöglichen, die Genauigkeit zu überprüfen, mit der eine bestimmte Position wiederholt gesucht werden kann. Das Messgerät wäre ein Satellitenempfänger und sein Indikator für die Signalstärke vom Satelliten.

 

Keine Kommentare

Kommentar hinterlassen

Als Antwort auf Some User