Inhaltsverzeichnis:

Arduino: Precision Lib für Schrittmotor - Gunook
Arduino: Precision Lib für Schrittmotor - Gunook

Video: Arduino: Precision Lib für Schrittmotor - Gunook

Video: Arduino: Precision Lib für Schrittmotor - Gunook
Video: Stepper motor controlled by arduino and potentiometer 2024, Juli
Anonim
Image
Image
Globale Variablen
Globale Variablen

Heute zeige ich Ihnen eine Bibliothek für einen Vollschrittmotortreiber mit Endschaltern und Motorbewegungen mit Beschleunigung und Mikroschritt. Diese Lib, die sowohl auf dem Arduino Uno als auch auf dem Arduino Mega funktioniert, ermöglicht es Ihnen, die Motoren nicht nur nach der Anzahl der Schritte, sondern auch nach Millimetern zu bewegen. Und es ist auch ziemlich genau.

Ein wichtiges Merkmal dieser Bibliothek ist, dass Sie damit Ihre eigene CNC-Maschine bauen können, die nicht unbedingt nur die X, Y, sondern beispielsweise auch einen Abschnittsschalter ist, da es sich nicht um eine fertige GRBL handelt, sondern um die Programmierung, die ermöglicht es Ihnen, die ideale Maschine für Sie zu bauen.

Die folgende Aussage ist jedoch ein wichtiges Detail! Dieses Video ist nur für diejenigen, die bereits an das Programmieren gewöhnt sind. Wenn Sie mit der Arduino-Programmierung nicht vertraut sind, sollten Sie sich zuerst andere einführende Videos auf meinem Kanal ansehen. Dies liegt daran, dass ich in diesem speziellen Video ein fortgeschrittenes Thema bespreche und die im Video verwendete Lib genauer erkläre: Schrittmotor mit Beschleunigung und Hubende.

Schritt 1: StepDriver-Bibliothek

Diese Bibliothek deckt die drei gängigsten Treibertypen auf dem Markt ab: A4988, DRV8825 und TB6600. Es konfiguriert die Pins der Treiber und ermöglicht es ihnen, das Zurücksetzen und Versetzen in den Schlafmodus durchzuführen sowie die Motorausgänge zu aktivieren und zu deaktivieren, die auf den Enable-Pin wirken. Es stellt auch die Eingänge der Mikroschritt-Pins des Treibers und die Grenzschalter und deren Aktivierungspegel (hoch oder niedrig) ein. Es hat auch einen Motorbewegungscode mit kontinuierlicher Beschleunigung in mm / s², Höchstgeschwindigkeit in mm / s und Mindestgeschwindigkeit in mm / s.

Für diejenigen, die sich die Teile 1 und 2 des Videos Step Motor with Acceleration and End of Stroke angesehen haben, laden Sie diese neue Bibliothek herunter, die heute verfügbar ist, da ich einige Änderungen an dieser ersten Datei vorgenommen habe, um die Verwendung zu erleichtern.

Schritt 2: Globale Variablen

Ich zeige genau, wozu jede der globalen Variablen dient.

Schritt 3: Funktionen - Setzen der Treiberpins

Funktionen - Setzen der Treiber-Pins
Funktionen - Setzen der Treiber-Pins

Hier beschreibe ich einige Methoden.

Ich habe die Pinout-Einstellung und die Arduino-Pins als Ausgang eingestellt.

Schritt 4: Funktionen - Grundfunktionen des Treibers

Funktionen - Grundfunktionen des Treibers
Funktionen - Grundfunktionen des Treibers

In diesem Teil beschäftigen wir uns mit der Konfiguration des Treibers und seiner Grundfunktionen.

Schritt 5: Funktionen - Motorschritteinstellung

Funktionen - Motorschritteinstellung
Funktionen - Motorschritteinstellung
Funktionen - Motorschritteinstellung
Funktionen - Motorschritteinstellung

In diesem Schritt des Codes konfigurieren wir die Anzahl der Schritte pro Millimeter, die der Motor ausführen muss.

Schritt 6: Funktionen - Einstellen des Motorschrittmodus

Funktionen - Einstellen des Motorschrittmodus
Funktionen - Einstellen des Motorschrittmodus
Funktionen - Einstellen des Motorschrittmodus
Funktionen - Einstellen des Motorschrittmodus
Funktionen - Einstellen des Motorschrittmodus
Funktionen - Einstellen des Motorschrittmodus

Diese Tabelle zeigt die Einstellungen für den Motorschrittmodus. Hier sind einige Beispiele.

Schritt 7: Funktionen - Einstellen der Endschalter

Funktionen - Einstellen der Endschalter
Funktionen - Einstellen der Endschalter

Hier muss ich die ganzen und booleschen Werte lesen. Es muss eingestellt werden, ob die aktive Taste oben oder unten ist, während der maximale und minimale Endstift eingestellt wird.

Schritt 8: Funktionen - Auslesen der Endschalter

Funktionen - Auslesen von Endschaltern
Funktionen - Auslesen von Endschaltern
Funktionen - Auslesen von Endschaltern
Funktionen - Auslesen von Endschaltern
Funktionen - Auslesen von Endschaltern
Funktionen - Auslesen von Endschaltern

Dieser Teil unterscheidet sich von dem in der Lib, die ich letzte Woche zur Verfügung gestellt habe. Warum habe ich es geändert? Nun, ich habe eRead erstellt, um einige andere zu ersetzen. Hier liest der eRead den LVL, den digitalRead (Pin) und gibt TRUE zurück. All dies muss auf hohem Niveau durchgeführt werden. Die folgende Arbeit mit der aktiven Taste erfolgt auf der unteren Ebene. Ich werde es hier verwenden, um Ihnen die Tabelle "Wahrheit" zu zeigen.

Im Bild des Codes habe ich ein Diagramm platziert, das beim Verständnis hilft, dass ich mich in diesem Teil des Quellcodes in Richtung Aufsteigend bewege und noch nicht die Ende-Taste gedrückt habe.

Nun, in diesem Bild mit dem Code bool DRV8825 zeige ich die Engine, die sich immer noch in Wachstumsrichtung bewegt. Allerdings ist der maximale Endschalter aktiviert. Der Mechanismus muss dann die Bewegung stoppen.

Zum Schluss zeige ich dieselbe Bewegung, aber in die entgegengesetzte Richtung.

Hier haben Sie bereits den Kursendeschalter aktiviert.

Schritt 9: Funktionen - Bewegungseinrichtung

Funktionen - Bewegungseinrichtung
Funktionen - Bewegungseinrichtung

Der Hauptnutzen der motionConfig-Methode besteht darin, Millimeter pro Sekunde (eine Messung, die in CNC-Maschinen verwendet wird) in Schritte umzuwandeln, um die Steuerung eines Schrittmotors zu erfüllen. In diesem Teil instanziiere ich daher die Variablen, um die Schritte und nicht die Millimeter zu verstehen.

Schritt 10: Funktionen - Bewegungsfunktion

Funktionen - Bewegungsfunktion
Funktionen - Bewegungsfunktion

In diesem Schritt behandeln wir den Befehl, der einen Schritt in einer Zeitspanne in Mikrosekunden in die gewünschte Richtung bewegt. Wir stellen auch den Richtungsstift des Fahrers, die Verzögerungszeit und die Richtung der Endschalter ein.

Schritt 11: Funktionen - Bewegungsfunktion - Variablen

Funktionen - Bewegungsfunktion - Variablen
Funktionen - Bewegungsfunktion - Variablen

In diesem Teil konfigurieren wir alle Variablen, die unter anderem Perioden der maximalen und minimalen Geschwindigkeit, die Entfernung der Flugbahn und die Schritte umfassen, die zum Unterbrechen der Flugbahn erforderlich sind.

Schritt 12: Funktionen - Bewegungsfunktion - Beschleunigung

Funktionen - Bewegungsfunktion - Beschleunigung
Funktionen - Bewegungsfunktion - Beschleunigung
Funktionen - Bewegungsfunktion - Beschleunigung
Funktionen - Bewegungsfunktion - Beschleunigung

Hier präsentiere ich einige Details darüber, wie wir zu den Beschleunigungsdaten gekommen sind, die durch die Torricelli-Gleichung berechnet wurden, da diese die Arbeitsräume der Beschleunigung und nicht die Zeit berücksichtigt. Aber hier ist es wichtig zu verstehen, dass es sich bei dieser ganzen Gleichung nur um eine Codezeile handelt.

Im obigen Bild haben wir ein Trapez identifiziert, da die Anfangsdrehzahlen für die meisten Schrittmotoren schlecht sind. Das gleiche passiert mit der Verzögerung. Aus diesem Grund visualisieren wir ein Trapez im Zeitraum zwischen Beschleunigung und Verzögerung.

Schritt 13: Funktionen - Bewegungsfunktion - Kontinuierliche Geschwindigkeit

Funktionen - Bewegungsfunktion - Kontinuierliche Geschwindigkeit
Funktionen - Bewegungsfunktion - Kontinuierliche Geschwindigkeit
Funktionen - Bewegungsfunktion - Kontinuierliche Geschwindigkeit
Funktionen - Bewegungsfunktion - Kontinuierliche Geschwindigkeit

Hier behalten wir die Anzahl der Schritte bei, die bei der Beschleunigung verwendet werden, wir fahren mit kontinuierlicher Geschwindigkeit fort und halten die maximale Geschwindigkeit ein, die im Bild unten zu sehen ist.

Schritt 14: Funktionen - Bewegungsfunktion - Verzögerung

Funktionen - Bewegungsfunktion - Verzögerung
Funktionen - Bewegungsfunktion - Verzögerung
Funktionen - Bewegungsfunktion - Verzögerung
Funktionen - Bewegungsfunktion - Verzögerung

Hier haben wir eine andere Gleichung, diesmal mit einem negativen Beschleunigungswert. Es wird auch in einer Codezeile angezeigt, die in der Abbildung unten das Rechteck mit der Bezeichnung Deceleration darstellt.

Schritt 15: Funktionen - Bewegungsfunktion - Kontinuierliche Geschwindigkeit

Funktionen - Bewegungsfunktion - Kontinuierliche Geschwindigkeit
Funktionen - Bewegungsfunktion - Kontinuierliche Geschwindigkeit
Funktionen - Bewegungsfunktion - Kontinuierliche Geschwindigkeit
Funktionen - Bewegungsfunktion - Kontinuierliche Geschwindigkeit

Wir kehren zu kontinuierlicher Geschwindigkeit zurück, um die zweite Hälfte der Flugbahn zu bearbeiten, wie unten gezeigt.

Schritt 16: Funktionen - Move-Funktion - Move Turns

Funktionen - Move-Funktion - Move Turns
Funktionen - Move-Funktion - Move Turns

In diesem Teil bewegen wir den Motor in einer bestimmten Anzahl von Umdrehungen in die gewünschte Richtung und wandeln die Anzahl der Umdrehungen in Millimeter um. Schließlich bewegen wir den Motor in die gewünschte Richtung.

Schritt 17: Bewegungsdiagramm - Positionsgeschwindigkeit

Bewegungsdiagramm - Positionsgeschwindigkeit
Bewegungsdiagramm - Positionsgeschwindigkeit

In diesem Diagramm habe ich Daten, die aus der Gleichung extrahiert wurden, die wir im Teil der Beschleunigung verwendet haben. Ich nahm die Werte und spielte auf der Arduino-Serie, und ging von diesem zu Excel, was zu dieser Tabelle führte. Diese Tabelle zeigt den Fortschritt des Schrittes.

Schritt 18: Bewegungsdiagramm - Position vs. Position

Bewegungsdiagramm - Position vs. Position
Bewegungsdiagramm - Position vs. Position

Hier nehmen wir die Position in Schritten und die Geschwindigkeit und wandeln sie in die Periode in Mikrosekunden um. Wir bemerken in diesem Schritt, dass die Periode umgekehrt proportional zur Geschwindigkeit ist.

Schritt 19: Bewegungsdiagramm - Geschwindigkeit vs. Moment

Bewegungsdiagramm - Geschwindigkeit vs. Moment
Bewegungsdiagramm - Geschwindigkeit vs. Moment

Schließlich haben wir die Geschwindigkeit als Funktion des Augenblicks, und deshalb haben wir eine Gerade, da es sich um die Geschwindigkeit als Funktion der Zeit handelt.

Empfohlen: