Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-23 12:52
Dies ist ein Steuerschema für den 28BYJ-48-Schrittmotor, den ich im Rahmen meines Dissertationsprojekts im letzten Jahr entwickelt habe. Ich habe dies noch nie zuvor gesehen, also dachte ich, ich würde hochladen, was ich entdeckt habe. Hoffentlich hilft das jemand anderen da draußen!
Der Code erlaubt einem Schrittmotor grundsätzlich, die Winkelposition eines analogen Joysticks zu „kopieren“, d.h. wenn man den Joystick nach vorne drückt, zeigt der Motor in Richtung „Norden“. Drücken Sie den Joystick nach Westen, der Motor dreht sich in die gleiche Richtung.
Für meine Umsetzung habe ich gefordert, dass wenn der Joystick losgelassen wird, also keine Winkelstellung hat, der Motor in die "Home"-Richtung zurückkehrt. Die Ausgangsrichtung zeigt nach Osten, und der Motor (oder zumindest der Zeiger / das Gerät, das Sie an der Abtriebswelle befestigt haben!) muss auch beim Einschalten in diese Richtung zeigen.
Lieferungen
Arduino Uno oder ähnlich
Steckbrett & Auswahl an Überbrückungsdrähten (männlich zu männlich, männlich zu weiblich)
5V Netzteil
Analoges Joystick-Modul (idealerweise mit Tasterfunktion, dies erleichtert das Ausruhen der "Home"-Position
28BYJ-48 Schrittmotor und ULN2003 Schritttreiber
Stift, Papier und Blu-Tac (oder jedes andere Zeigegerät zum Anbringen am Motor!)
Schritt 1: Schritt 1: Einrichten
Verbinden Sie den Schrittmotor mit dem Schritttreiber und verbinden Sie die Pins wie folgt:
IN1 - Arduino-Pin 8
IN2 - Arduino-Pin 9
IN3 - Arduino-Pin 10
IN4 - Arduino-Pin 11
Verbinden Sie Ihr 5-V-Netzteil mit den Versorgungsschienen auf Ihrem Steckbrett und verbinden Sie die ULN2003-5-V-Eingänge mit den Versorgungsschienen. Verbinden Sie die Erdungsschiene mit dem Boden Ihres Arduino.
für den Joystick wie folgt anschließen:
Schaltstift - Arduino-Pin 2
X-Achse - Arduino A0 (Analog in 0)
Y-Achse - Arduino A1
+5V - Arduino 5V-Ausgang
Masse - Arduino Masse
Verbinden Sie schließlich die Masse Ihres Steckbretts mit dem anderen Arduino GND-Pin
Schritt 2: Schritt 2: Erklären des Codes
Ich habe den vollständigen Arduino-Code zum Herunterladen und Verwenden beigefügt. Aber ich werde mein Bestes tun, um die relevanten Teile hier zu erklären.
Die Theorie hinter diesem Code ist, dass der vom Joystick eingenommene Platz in eine Grafik mit 0, 0 in der Mitte aufgeteilt wird. Die Joystick-Eingänge ruhen jedoch bei (ungefähr) 512 in der Mitte, so dass zur Überwindung dieser zwei Funktionen verwendet werden, um den von der X- und Y-Achse gelesenen Wert "auf Null zu setzen". Je nach verwendeter Stromversorgung müssen Sie ggf. die Werte in den Funktionen ZeroX und ZeroY ändern, damit Ihr Joystick im Ruhezustand zuverlässig 0 anzeigt.
Wenn die X-, Y-Werte gelesen werden, werden sie zuerst mit der Funktion atan2() in der Bibliothek math.h in Bogenmaß umgewandelt. Das Erklären dieser Funktion liegt außerhalb des Rahmens dieser Anleitung, aber bitte schauen Sie nach - es ist ein ziemlich einfacher Trick der Geometrie!
Um denjenigen von uns, die früher mit Grad statt mit Rad gearbeitet haben, das Leben zu erleichtern, wird der von atan2() berechnete Rad-Wert in Grad umgewandelt.
Oben in der Schleife befindet sich ein kleiner Codeausschnitt, mit dem Sie auf die momentane Schaltfläche des Joysticks klicken können, um die "Ausgangsposition" zu verschieben. Dies war beim Testen des Codes unglaublich nützlich, aber ich habe es belassen, da ich sehen kann, wie es in einigen Fällen nützlich sein könnte.
Nun zum Hauptteil des Codes! Wir beginnen damit, dass wir die X-, Y-Koordinaten des Joysticks zweimal mit einer Verzögerung von 10 ms getrennt lesen und dann prüfen, ob sie gleich sind. Die Verzögerung ist auch kurz genug, um beabsichtigte Eingaben nicht zu stören.
Der Rest des Codes ist ziemlich selbsterklärend und ich habe mein Bestes getan, um ihn zu dokumentieren; Eine Reihe von IF-Anweisungen vergleichen den aktuellen Joystick-Winkel mit dem Motorwinkel und bewegen den Motor in diesen Winkel. Der 28BYJ-48 hat 5,689 Schritte pro Grad, deshalb multiplizieren wir die erforderliche Bewegung mit dieser scheinbar ungeraden Zahl!
Der Teil des Codes, der am meisten erklärt werden muss, ist das, was ich den "Wraparound-Fall" genannt habe. Auch wenn Joystick & Motor z. B. +175°, und der Joystick anschließend auf -175° bewegt (eine Bewegung von nur 10° auf dem Joystick, von knapp nordwestlich bis knapp südwestlich), würde sich der Motor um 350° IN DIE FALSCHE RICHTUNG bewegen! um dies zu erklären, wurde der Sonderfall geschrieben.
Der Wraparound-Fall beginnt damit, dass überprüft wird, ob Motor und Joystick entgegengesetzte Vorzeichen haben, d. h. der Motor ist positiv und der Joystick negativ oder umgekehrt. Es prüft auch, ob die Summe der absoluten (d. h. positiven Werte) von Joystick und Motor über 180° liegt.
Wenn beide Aussagen zutreffen, prüft die Funktion, ob der Motor im Uhrzeigersinn (bei negativem Motorwert) oder gegen den Uhrzeigersinn (bei positivem Motorwert) bewegt werden muss.
Die absoluten Werte des Motorwinkels und des Joystickwinkels werden addiert und von 360° subtrahiert, um die zu bewegende Distanz zu bestimmen. Schließlich wird der Motorwinkel (der jetzt den Joystickwinkel widerspiegelt) als solcher aktualisiert.
Schritt 3: FERTIG
Sie müssen also nur noch den Code auf Ihr Arduino hochladen und ausführen! Sehen Sie sich das Video oben an, um eine gute Vorstellung davon zu erhalten, wie das Projekt funktioniert. Dies wäre nützlich für Kamera-Gimbals, Roboterarme und viele andere Anwendungen!
Wenn Sie den Code verwenden, teilen Sie mir dies bitte mit. Wenn Sie feststellen, dass der Code verbessert werden kann, würde ich mich über Ihr Feedback freuen.
Empfohlen:
Wie man eine Babygewichtsmaschine mit Arduino Nano, HX-711 Wägezelle und OLED 128X64 herstellt -- Kalibrierung des HX-711: 5 Schritte
Wie man eine Babygewichtsmaschine mit Arduino Nano, HX-711-Wägezelle und OLED 128X64 herstellt || Kalibrierung von HX-711: Hallo Instructables, vor wenigen Tagen wurde ich Vater eines süßen Babys?. Als ich im Krankenhaus war, stellte ich fest, dass das Gewicht des Babys so wichtig ist, um das Wachstum des Babys zu überwachen. Also ich habe eine Idee? um eine Babygewichtsmaschine von meinem Selbst zu machen. In diesem Instructable ich
Eine Modifikation des linkshändigen DSLR-Halters von Bertus52x11. (mit zusätzlichem Mundgriff): 4 Schritte
Eine Modifikation des linkshändigen DSLR-Halters von Bertus52x11. (mit Added Mouth Grip): Also heute früher hat bertus52x11 die klügste Idee gepostet. Richtet sich an Menschen, die nur ihren linken Arm benutzen können - dauerhaft oder vorübergehend. Seine ursprüngliche Idee war es, am Stativanschluss darunter einen Daumenhaken anzubringen, mit dem die Kamera gehalten werden kann
Programmierung des Open DSKY: 5 Schritte (mit Bildern)
Programmierung des Open DSKY: Willkommen zu unseren laufenden Instructables zur Programmierung Ihres Open DSKY. Stellen Sie sicher, dass Sie wiederkommen, da dieses Instructable weiter wachsen wird, da wir ständig neues Programmiermaterial produzieren und veröffentlichen. Also folgen Sie ihm, mögen Sie es und bevorzugen Sie es. Diese Videoserie
Gewusst wie: Geschwindigkeit des Motors steuern?: 5 Schritte (mit Bildern)
Gewusst wie: Geschwindigkeit des Motors steuern?: Wenn Sie ein paar DC-Motoren herumliegen haben, kommt Ihnen die erste Frage in den Sinn, wie ich die Geschwindigkeit dieser Motoren kontrolliere! Also in diesem Instructables werde ich zeigen, wie einfach es ist! Sie fühlen sich faul, Sie können Videos auf meinem Kanal ansehen Auch Huge Tha
Vollständige Anleitung zur Verwendung des Bodenfeuchtesensors mit praktischem Beispiel: 7 Schritte
Vollständige Anleitung zur Verwendung des Bodenfeuchtigkeitssensors mit praktischem Beispiel: Sie können dieses und andere erstaunliche Tutorials auf der offiziellen Website von ElectroPeak lesen.ÜbersichtIn diesem Tutorial erfahren Sie, wie Sie einen Bodenfeuchtigkeitssensor verwenden. Es werden auch praktische Beispiele bereitgestellt, die Ihnen helfen, den Code zu beherrschen. Was Sie lernen werden: Wie Boden