Aufbau eines KI-betriebenen Follow-Trolley Teil 3: Hardware-Montage und -Prüfung
Montage des Follow-Trolley-Rahmens, der Schnittstellenleiterplatte und das Schreiben in der Programmiersprache Python, um den korrekten Betrieb der Hardware zu überprüfen.
Einführung
Im zweiten Teil dieser Serie haben wir den Aluminium-Extrusionsrahmen des Follow-Trolleys entworfen. Wir haben auch die elektronischen Komponenten betrachtet, die das Steuersystem des Trolleys ausmachen. In diesem Beitrag werden wir die Schnittstellenleiterplatte und den Rahmen montieren sowie alle Komponenten testen.
Rahmenbaugruppe
Wir begannen mit der Trolley-Montage, indem wir das Aluminium-Strangpressprofil, das den Rahmen bildet, abschnitten. Auf der Grundlage des von uns zuvor entwickelten CAD-Modells wurde eine Schnittliste erstellt. Mit einer großzügigen Anwendung des Prinzips „zweimal messen, einmal schneiden“ wurde das Aluminium-Strangpressprofil auf die richtige Größe zugeschnitten und konnte dann verschraubt werden. Wie üblich wurde eine Folie verwendet, um alle an den Kanten des geschnittenen Extrusionsprofils verbleibenden Grate zu brechen.
Da wir das Extrusionssystem von Rexroth für den Einsatz ausgewählt hatten, stand eine Vielzahl von Zubehörteilen zur Verfügung. Anstatt Eckstücke zur Versteifung zu verwenden, um das Profil miteinander zu befestigen, haben wir uns für eine profilierte runde Ecke entschieden, die dem Extrusionsprofil entspricht und sauberer aussieht.
Diese wird als Kit (420-6959) verkauft, welches die Ecke selbst und drei selbstschneidende M8-Schrauben beinhaltet, was die Installation schnell und leicht macht, da keine Vorbereitung des Extrusionsprofils erfolgen muss. Wir haben eine Akkubohrmaschine verwendet, um die selbstschneidenden Schrauben hineinzuschrauben, da das Drehmoment unseres kleinen Akkuschraubers nicht ausreichte.
Um die Ecken zu vervollständigen, wurden auch Abdeckungen (420-6971) gekauft. Diese werden in ein kleines Loch in der Mitte des Eckstücks eingepresst und runden das Aussehen des Profils ab.
Der obere und der untere Rahmen wurden zunächst als zwei separate Komponenten montiert, in die dann die vier Eckprofile geschraubt wurden, um den Rahmen zu bilden. Bevor der Rahmen vollständig montiert werden konnte, installierten wir die Aluminiumplatte, die als Basis des Trolleys dient – diese hält alle Verkabelungen, Steuerungen und Batterien an Ort und Stelle.
Nach dem Anbringen der Platte schraubten wir die Eckstücke an und montierten dann die Korbbodenplatte. Dann konnten wir den oberen Rahmen installieren, der das Fahrgestell des Follow-Trolleys vervollständigt.
Leiterplattendesign und -montage
Da der GPIO auf dem Jetson Nano auf einem Niveau von 3,3 V ist und die von uns ausgewählten Komponenten mit höheren Spannungen (meistens 24 V) arbeiten, muss eine Platine entwickelt werden, die für Pufferung und Pegelverschiebung von Signalen sorgt.
Wir begannen diesen Prozess mit einem Blick auf alle Eingänge und Ausgänge, die benötigt werden – die Motorantriebe von Electromen benötigen ein analoges Drehzahlsignal von 0–5 V und einen digitalen Eingang von 4–28 V für die Richtungsregelung. Die Stapelleuchte verfügt über drei 24-V-Eingänge für die drei Leuchten und einen gemeinsamen Erdungsanschluss. Als nächstes werden die beiden IFM-Näherungssensoren angeschlossen – wir haben die PNP-Ausgangsversion gewählt, die 24 V für eine Last liefert.
In DS PCB wurde ein Schema gestartet – bestehend aus der 40-poligen Stiftleiste, die dem Jetson Nano GPIO-Stiftleisten-Pinout entspricht, einer Reihe von 24-V- und 5-V-High-Side-Schaltern und einem Operationsverstärker-Schaltkreis.
Die drei 24-V-High-Side-Schaltkreise unterscheiden sich aufgrund des Zusatzes eines zusätzlichen Widerstands leicht von den Schaltkreisen für 5 V. Dies ist notwendig, da die meisten MOSFET-Geräte nicht weit über einer 20-V-Differenz am Gate-Pin hinaus tolerieren. Daher bilden die beiden Widerstände einen Widerstandsteiler, der eine 12-V-Differenz zwischen Gate und Quelle bietet, der ausreicht, um das Gerät einzuschalten.
Eine Operationsverstärkerschaltung ermöglicht eine Tiefpassfilterung für das PWM-Signal, das von Jetson Nano stammt. Auch dann verschiebt der Pegel das Signal von 0–3,3 V auf 0–5 V, was für die Einspeisung in die Motorsteuerung geeignet ist. Die Filterung mit niedrigem Durchgang war erforderlich, da die Motorsteuerung einen analogen Eingang anstelle eines PWM-Signals erwartet. Da wir nicht wussten, wie sie auf ein PWM-Signal reagieren würde, haben wir uns entschieden, auf Nummer sicher zu gehen und den LPF sowie den Puffer zu implementieren.
Es wurde eine schnelle Simulation des Pufferkreises durchgeführt, um sicherzustellen, dass die Widerstandswerte ausgewählt wurden, um die richtige Verstärkung zu liefern, und dass sich der Stromkreis wie erwartet verhält.
Die 24-V-Signale der Näherungssensoren wurden mit einem Widerstandsteiler verarbeitet, wobei die Widerstandswerte berechnet wurden, um einen 3,3-V-Ausgang für die GPIO-Stifte zu liefern.
Mit dem schematischen Entwurf sind wir zum Leiterplattenlayout übergegangen. Das Layout dieser Platine war relativ einfach und sie ist ziemlich kompakt. Der größte Teil der Platinengröße entfällt auf die 40-polige Stiftleiste und die zahlreichen Anschlüsse, die zu verschiedenen Komponenten auf dem Wagen führen. Wir haben die kleineren Stiftleisten der Serie MC von Phoenix Contact ausgewählt, um Drähte an die Platine anzuschließen, da wir keine hohe Stromkapazität benötigten und die steckbare Ausführung eine einfache Verdrahtung bietet.
Die Montage der Leiterplatte war eine schnelle Angelegenheit, die nicht länger als eine Stunde dauerte. Zu diesem Zeitpunkt können wir die verschiedenen Ein- und Ausgänge testen.
Einrichtung und Prüfung von Jetson Nano
Nachdem der Rahmen und die Schnittstelle der Leiterplatte montiert waren, gingen wir zur Einrichtung des Jetson Nano über und testeten dann die GPIO-Schnittstelle.
Zunächst stellten wir sicher, dass J48 gebrückt war, um den externen 5-V-Klinkeneingang zu aktivieren – so konnten wir alles problemlos auf dem Prüfstand testen. Die GPIO-Stiftleiste auf dem Jetson wurde dann mit einem 40-poligen Flachbandkabel an die Stiftleiste auf unserer Schnittstellenplatine angeschlossen.
Die Jetson PWM-Schnittstelle einrichten
Im ersten Teil haben wir ein Linux-Image auf dem Jetson Nano eingerichtet, sodass wir bereits ein funktionierendes System hatten, mit dem wir fortfahren konnten. Bevor das Peripheriegerät mit der Hardware-PWM verwendet werden kann, muss es mit Hilfe des Linux-Gerätebaums konfiguriert werden.
Bequemerweise hat Nvidia ein Python-Skript zur Verfügung gestellt, das eine terminalbasierte Benutzeroberfläche zur Konfiguration der GPIO-Stiftleisten bietet. Um starten zu können, haben wir den Befehl sudo /opt/nvidia/jetson-io/jetson-io.py in einem maximierten Terminalfenster ausgeführt (es ist wichtig, ein maximiertes Fenster zu haben, andernfalls wird das Tool nicht richtig angezeigt).
Bei laufendem Werkzeug haben wir die Option „40-polige Erweiterungsstiftleiste konfigurieren“ ausgewählt und dann „pwm0“ und „pwm2“ aktiviert. Das Tool erzeugte dann ein Gerätebaum-Overlay und kompilierte dies dann zu einem Gerätebaum-Blob, der beim Neustart angewendet wurde.
Als nächstes wurde die Python-Bibliothek "Jetson.GPIO" installiert, die so einfach ist wie die Ausführung der sudo-Pip-Installation von Jetson.GPIO. Wir haben auch das begleitende GitHub-Repository geklont, da es einen Satz von „udev“-Regeln enthält, die angewendet werden müssen, sowie einige Python-Anwendungsbeispiele. Um zu beginnen, haben wir zuerst eine neue Benutzergruppe namens „gpio“ erstellt und dann unseren Benutzer hinzugefügt, indem wir den Befehl sudo groupadd -f -r gpio && sudo usermod -a -G gpio jetson ausgeführt haben.
Anschließend haben wir die udev-Regeln installiert, indem wir die Regeln sudo cp lib/python/Jetson/GPIO/99-gpio.rules /etc/udev/rules.d/ aus dem Stammverzeichnis des Repositorys ausgeführt haben. Die Regeln mussten dann angewendet werden, entweder mit einem Neustart oder durch Ausführen von sudo udevadm control --reload-rules && sudo udevadm trigger.
Die GPIO-Schnittstellen testen
An diesem Punkt können wir nun die PWM-Sample ausführen, um sicherzustellen, dass der PWM-Ausgang funktioniert und dass unsere Schnittstellenplatine erfolgreich einen 0–5-V-Analogausgang erzeugt. Das Skript musste leicht modifiziert werden, um sowohl die Ausgangsstiftzahl als auch die PWM-Frequenz nach oben zu ändern. Im Beispiel ist dies auf 50 Hz eingestellt, aber der Low-Pass-Filter benötigt mindestens 1 kHz, um eine Gleichspannung in Balance zu erzeugen.
Das Abtasten des Ausgangs des Operationsverstärkerkanals zeigte einen schönen, gleichmäßigen 0–5-V-Ausgang, während der Beispielcode den PWM-Wert erhöhte und verringerte. Der Mustercode wurde dann angepasst, um den anderen PWM-Ausgangsstift zu testen, und wieder wurde das gleiche Verhalten festgestellt. Genau wie die Simulation, die während der Entwurfsphase durchgeführt wurde, gezeigt hatte.
Mit der Bestätigung, dass die PWM funktioniert, haben wir die Ausgangskanäle getestet. Dies erfolgte erneut durch die Änderung des Sample-Ausgangsskripts, das bereitgestellt wurde, um den korrekten GPIO-Stiftsatz zu erhalten. Auch dies war ein Erfolg, da die Stapelleuchte blinkte, als das Skript die Ausgänge ein- und ausschaltete.
Nur die beiden Eingänge der Näherungssensoren wurden getestet. Dies wurde zunächst mit einem Multimeter durchgeführt, um zu überprüfen, ob die Ausgangsspannung der Widerstandsteiler innerhalb der 3,3-V-Grenze der Jetson-GPIO-Stifte lag. Mit dieser Bestätigung wurde das mitgelieferte Skript "simple_input.py" geändert, um die Eingangsstifte zu überwachen. Der Strom wechselte zwischen "HIGH" und "LOW" hin und her, als wir an der Klemme wackelten.
Prüfung
Bei den abschließenden Tests wurden der Motorantrieb, der Not-Aus-Schalter und der Motor so verkabelt, als ob die Bewegungssteuerungen am Rahmen des Folgewagens installiert wären. Es wurde ein kleines Python-Skript geschrieben, das den Motor in einer Schleife erst in die eine und dann in die andere Richtung laufen lässt, bis es beendet wird.
Das obige Video zeigt, wie der Jetson Nano die Geschwindigkeit und die Richtung des Motors steuert, um zu überprüfen, ob das Steuerungssystem wie vorgesehen funktioniert.
Nächste Schritte
In diesem Beitrag haben wir einen Blick auf den Rahmen, die Schnittstellenkarte und die Funktionsweise geworfen, den Jetson Nano eingerichtet und das System auf korrekte Funktion getestet. Der nächste Schritt ist die Fertigstellung der mechanischen Seite, die Verkabelung des Systems und die Verbindung der Ausgabe des im ersten Beitrag vorgestellten KI-Modells mit dem Bewegungssystem, so dass der Wagen dann lenken und einer Person folgen kann.
Kommentare