Inhaltsverzeichnis:

Arduino Uno mit Spindel und Pitch-Motor - Gunook
Arduino Uno mit Spindel und Pitch-Motor - Gunook

Video: Arduino Uno mit Spindel und Pitch-Motor - Gunook

Video: Arduino Uno mit Spindel und Pitch-Motor - Gunook
Video: ChatGPT with Arduino Nano #arduino #chatgpt #technology #openAI #electronic 2024, November
Anonim
Image
Image
Verwendete Ressourcen
Verwendete Ressourcen

Heute sprechen wir über ein sehr wichtiges Thema der Mechanik und Mechatronik: die Elemente von Maschinen. In diesem Artikel gehen wir speziell auf die Spindeln ein und bieten einige interessante Funktionen und Anwendungen. Dennoch werden einige Möglichkeiten zur Berechnung der von einer Spindel verursachten Bewegung aufgezeigt und ein Versuchsaufbau vorgestellt.

Ich habe daher die folgende Baugruppe gemacht, die den Vorschub einer Spindel von 2 mm und einer anderen von 8 mm freilegt. Diese TR8-Spindeln, die ich verwende, werden häufig in kleinen Routern und 3D-Druckern verwendet, insbesondere auf der Z-Achse. Denken Sie daran, dass Sie durch die Beherrschung einiger Konzepte, an denen wir hier arbeiten werden, in der Lage sein werden, jede Art von Maschine zu konstruieren.

Schritt 1: Verwendete Ressourcen

  • Trapezspindel 8mm Durchmesser und 2mm Steigung
  • Trapezspindel 8 mm Durchmesser und 8 mm Steigung
  • 8x2 Spindel Flanschkastanie
  • 8x8 Spindel Flanschkastanie
  • Lager für Spindeln mit 8 mm Durchmesser
  • Lineare zylindrische Führung mit 10 mm Durchmesser
  • Zylinderrollenlager für 10mm Führungen
  • Halterungen für 10mm zylindrische Führungen
  • NEMA 17-Motoren
  • Wellenkupplungen
  • Arduino Uno
  • Treiber DRV8825
  • 4x4 Matrixtastatur
  • Display Nokia 5110
  • Diverse Kunststoffteile
  • Schrauben und Muttern
  • Holzsockel
  • Externes 12V Netzteil

Schritt 2: Über Spindeln - Was sind sie?

Über Spindeln – was sind sie?
Über Spindeln – was sind sie?

Spindeln sind Elemente von Maschinen, wie beispielsweise Schrauben. Das heißt, sie sind gerade Stäbe, die durch Fäden mit kontinuierlichen Stufen gebildet werden. Sie werden in Mechanismen verwendet, die eine lineare Bewegung und Positionierung erfordern. Sie können hohe Zug- und Druckkräfte ausüben und Drehmomente übertragen. Sie ermöglichen Bewegung mit automatischer Verriegelung. Sie können aus verschiedenen Materialien hergestellt werden, wobei Aluminium und Stahl am häufigsten vorkommen.

Da chinesische Unternehmen die Trapezspindeln herstellen, würde ich vorschlagen, dass Sie diese Art von Produkt anstelle der bekannten Mutternschraube kaufen. Das liegt an dem attraktiveren Preis und dem Widerstand, den ich für abscheulich halte.

Auf dem Foto habe ich die beste Spindel, die meiner Meinung nach hat, die Kugelumlaufspindel. Es besteht normalerweise aus einem sehr harten Stahl und die Kugeln drehen sich im Inneren der Kastanie. Neben der großartigen Präzision betone ich auch die Langlebigkeit, da dieser Spindeltyp Milliarden von Bewegungen reproduzieren kann, ohne die Mechanik zu beschädigen. Eine günstigere Variante, die wir hier verwenden, ist die Trapezspindel.

Schritt 3: Über Spindeln - Einzel- und Kugelgewinde

Über Spindeln - Einzel- und Kugelgewinde
Über Spindeln - Einzel- und Kugelgewinde

Die Kugelspindeln, im Foto links, haben halbkreisförmige Kanäle, in denen die Kugeln rollen. Sie sind relativ teurer und haben im Vergleich zu Einschraubenspindeln eine geringe Reibung, was zu einer viel höheren Ausbeute (Rollreibung) führt.

Die eingängigen Spindeln auf der rechten Bildseite haben in der Regel trapezförmige Profile, da diese Geometrie besser geeignet ist, Kräfte in axialer Richtung aufzubringen und eine reibungslose Bewegungsübertragung zu ermöglichen. Sie sind relativ kostengünstig und haben im Vergleich zu Kugelumlaufspindeln eine hohe Reibung, was zu einer geringen Ausbeute, dh Rutschreibung, führt.

Schritt 4: Über Spindeln - Anwendungen

Über Spindeln - Anwendungen
Über Spindeln - Anwendungen

Spindeln können auf jeden Mechanismus angewendet werden, bei dem eine lineare Bewegung erforderlich ist. Sie werden in der Industrie häufig in Maschinen und Prozessen eingesetzt.

Einige Anwendungen umfassen:

  • Lastenaufzüge
  • Pressen
  • Erdbeeren und Drehmaschinen
  • CNC-Ausrüstung
  • Verpackungsmaschinen
  • 3D-Drucker
  • Laserschneid- und Schneideausrüstung
  • Industrieller Prozess
  • Positionier- und Linearbewegungssysteme

Schritt 5: Über Spindeln - Parameter

Über Spindeln - Parameter
Über Spindeln - Parameter

Es gibt mehrere Eigenschaften einer Spindel, die bei der Konstruktion eines Mechanismus berücksichtigt werden müssen. Neben Durchmesser und Steigung sind die Druckfestigkeit, das Trägheitsmoment (Widerstand gegen Änderung des Rotationszustands), das Konstruktionsmaterial, die Rotationsgeschwindigkeit, der es ausgesetzt wird, die Arbeitsrichtung (horizontal oder vertikal), unter anderem die aufgebrachte Last.

Aber basierend auf bereits konstruierten Mechanismen können wir mehrere dieser Parameter intuitiv erahnen.

Lassen Sie uns ein Gemeinwohl anerkennen. Beginnen wir mit SCHRITT.

Schritt 6: Über Spindeln - Schritt (Weg und Geschwindigkeit)

Über Spindeln - Schritt (Weg und Geschwindigkeit)
Über Spindeln - Schritt (Weg und Geschwindigkeit)

Bestimmt die Länge, die die Mutter bei jeder Umdrehung zurücklegt. Dies ist normalerweise in mm / Umdrehung.

Eine Spindel von 2 mm pro Umdrehung bewirkt eine Verschiebung von 2 mm bei jeder Umdrehung, die die Spindel ausführt. Sie beeinflusst die Lineargeschwindigkeit der Mutter, da mit zunehmender Drehzahl die Anzahl der Umdrehungen pro Zeiteinheit und damit auch der zurückgelegte Weg zunimmt.

Wenn sich eine Drehung von 2 mm pro Umdrehung mit 60 U/min (eine Umdrehung pro Sekunde) dreht, bewegt sich die Mutter mit 2 mm pro Sekunde.

Schritt 7: Montage

Montage
Montage
Montage
Montage

In unserer Montage habe ich zwei Motoren und unsere Tastatur mit dem Display, das wie ein Taschenrechner aussah, da ich im 3D-Drucker eine Abdeckung dafür gemacht habe. Auf dem Nokia Display haben wir folgende Optionen:

F1: Crescent - Fuso geht von der aktuellen Position zu der Position, die ich bestimme

F2: Absteigend - Turn

F3: Geschwindigkeit - Kann ich die Pulsbreite ändern?

F4: ESC

Schritt 8: Montage - Materialien

Montage - Materialien
Montage - Materialien

A - 10 mm Linearführungen

B - Trapezspindeln der Stufen 2 und 8mm

C - Bohrbasis

D - Lager für Spindeln

E - Führungshalter

F - Kastanien

G - Lager

H - Kupplungen

I - Motoren

J - Diverse Kunststoffteile (Cursor, Motorhalterungen, Keile, Tastaturhalterung und Display

Schritt 9: Montage - Schritt 01

Montage - Schritt 01
Montage - Schritt 01

Nach dem Bohren des Sockels (C) montieren wir die beiden Motoren (I). Zur Befestigung verwenden wir Klammern aus dem 3D-Drucker (J). Ziehen Sie bei diesem Positionierungsschritt keine der Schrauben fest. Dies ermöglicht die notwendigen Anpassungen im Ausrichtungsschritt.

Schritt 10: Montage - Schritt 02

Montage - Schritt 02
Montage - Schritt 02

Positionieren Sie nach dem Bohren der Basis (C) die Führungsschienen (E) und die Lager (D). Detail für die Kunststoffscheibe (J), mit der die Höhen der Lager eingestellt werden.

Schritt 11: Montage - Schritt 03

Montage - Schritt 03
Montage - Schritt 03

Wir erstellen einen Cursor mit einem gedruckten Teil, um das Lager (G) mit der Mutter (F) zu verbinden. Wir haben zwei Cursor verwendet, einen rechts und einen links. Seine Funktion besteht darin, die Position auf einer Skala anzuzeigen, wenn wir die von der Spindel verursachte Verschiebung bestimmen möchten.

Schritt 12: Montage - Schritt 04

Montage - Schritt 04
Montage - Schritt 04
Montage - Schritt 04
Montage - Schritt 04

Führen Sie die Führung (A) und die Spindel (B) in das entsprechende Lager (D) und die Stütze (E) gegenüber dem Motor ein, dann setzen Sie die Führung und die Spindel in das Lager (G) und die Kastanie (F) ein und Spitze der Spindel setzen wir auch die Kupplung (H) ein. Wir nehmen sie beide, bis sie ihre Endpunkte (Gegenstütze und Motor) erreichen.

Ziehen Sie die Schrauben leicht an, um eine spätere Justierung zu ermöglichen. Wiederholen Sie den Vorgang mit der restlichen Führung und Spindel. Nachdem alle Komponenten positioniert sind, führen wir die Ausrichtung der Teile durch und schließen die mechanische Montage ab.

Schritt 13: Montage - Elektronik

Montage - Elektronik
Montage - Elektronik
Montage - Elektronik
Montage - Elektronik
Montage - Elektronik
Montage - Elektronik

Mit einer bedruckten Plastikhalterung haben wir das Nokia 5110 Display und eine 4x4 Matrixtastatur befestigt. Im unteren Bereich des Ständers befindet sich der Arduino Uno, der Treiber DRV8825.

Mit den vorhandenen Bohrungen im Sockel befestigen wir die Baugruppe.

Schritt 14: Elektrisches Schema

Elektrisches Schema
Elektrisches Schema

Der Schaltplan ist einfach. Wir haben den DRV8825 und die gleichen zwei 17-Spiegel, dh der gleiche Schritt, den wir an einen senden, geht zum anderen. Was sich ändert ist, dass ich in einem der Motoren eine 8mm-Spindel und in dem anderen eine 2mm-Spindel habe. Da liegt es auf der Hand, dass die erste mit 8mm Spindel schneller geht. Noch im Diagramm sind das Display und die 4x4-Tastatur, die Matrix sein muss.

Schritt 15: Quellcode

Einbindung von Bibliotheken und Erstellung von Objekten

Wir haben hier eine Lib, die ich gemacht habe, nämlich StepDriver.h. Es ist für die Treiber 8825, 4988 und auch TB6600 vorbereitet. Ich erstelle in diesem Schritt das Objekt DRV8825, das d1.

//Biblioteca responsável por capturar a tecla que foi pressionada no teclado#include //Biblioteca responsável pelos graficos do display #include //Biblioteca responsável pela comunicacao do display #include //Configuracao de pinos do Display // pin 6 - Serial clock out (SCLK) // Pin 5 - Serieller Datenausgang (DIN) // Pin 4 - Daten-/Befehlsauswahl (D/C) // Pin 3 - LCD-Chipauswahl (CS/CE) // Pin 2 - LCD-Reset (RST.)) Adafruit_PCD8544-Anzeige = Adafruit_PCD8544(6, 5, 4, 3, 2); // Biblioteca de motor de passo #include //Instancia o Treiber DRV8825 DRV8825 d1;

Konstanten und globale Variablen

In diesem Teil des Codes behandle ich die Matrix, die ich in einer anderen Videolektion (LINK KEYBOARD) gelehrt habe. Trotzdem spreche ich vom Keypad-Objekt, abgesehen von Entfernung und Geschwindigkeit.

konstantes Byte LINHAS = 4; //número de linhas do tecladoconst byte COLUNAS = 4; //número de colunas do teclado //definiere uma matriz com os símbolos que deseja ser lido do teclado char SIMBOLOS[LINHAS][COLUNAS] = { {'A', '1', '2', '3'}, { 'B', '4', '5', '6'}, {'C', '7', '8', '9'}, {'D', 'c', '0', 'e '} }; Byte PINOS_LINHA[LINHAS] = {A2, A3, A4, A5}; //pinos que indicam wie Linhas teclado byte PINOS_COLUNA [COLUNAS] = {0, 1, A0, A1}; //pinos que indicam as colunas do teclado //Instancia de Keypad, responsável or capturar a Teclapressionada Keypad customKeypad = Keypad(makeKeymap(SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); //variáveis resposnsáveis por armazenar o valor digitado char customKey; lange Distanz ohne Vorzeichen = 0; unsigned long velocidade = 2000;

Lesefunktion der Tastatur

In diesem Schritt haben wir den Code, der sich auf die Anzeige bezieht, die das auf- und absteigende Drucken funktioniert.

//Funcao responsavel por ler o valor do usuario pelo teclado------------------------------------- ---unsigned long lerValor() { //Escreve o submenu que coleta os valores no display display.clearDisplay(); display.fillRect(0, 0, 84, 11, 2); display.setCursor(27, 2); display.setTextColor (WEISS); display.print("VALOR"); display.setTextColor (SCHWARZ); display.fillRect(0, 24, 21, 11, 2); display.setCursor(2, 26); display.setTextColor (WEISS); display.print("CLR"); display.setTextColor (SCHWARZ); display.setCursor(23, 26); display.print("LIMPAR"); display.fillRect(0, 36, 21, 11, 2); display.setCursor(5, 38); display.setTextColor (WEISS); display.print("F4"); display.setTextColor (SCHWARZ); display.setCursor(23, 38); display.print("VOLTAR"); display.setCursor(2, 14); display.display(); String-Valor = ""; char tecla = falsch;

Looping warten auf die gedrückte Taste

Hier erklären wir die Loop-Programmierung, also wo Sie die Werte eingeben.

// Schleife infinito enquanto nao chamar oder return while (1) { tecla = customKeypad.getKey (); if (tecla) { switch (tecla) {//Se teclas de 0 a 9 forem pressionadas case '1': case '2': case '3': case '4': case '5': case '6': Fall '7': Fall '8': Fall '9': Fall '0': Valor += Tecla; display.print (tecla); display.display(); brechen; //Se tecla CLR foi pressionada case 'c': //Limpa a string valor valor = ""; //Apaga o valor display.fillRect (2, 14, 84, 8, 0); display.setCursor(2, 14); display.display(); brechen; //Se tecla ENT foi pressionada case 'e': //Retorna o valor return valor.toInt(); brechen; // Se tecla F4 (ESC) für den Druckfall 'D': return -1; Standard: Pause; } } //Limpa o char tecla tecla = false; } }

Motorantriebsfunktion

In diesem Schritt wird die Funktion "verschieben" bearbeitet. Ich erhalte die Anzahl der Impulse und die Richtung und mache dann ein "für".

//Funcao responsavel por mover o motor ------------------------------------void mover (unsigned long pulsos, bool direcao) { for (unsigned long i = 0; i < pulsos; i++) { d1.motorMove(direcao); } }

erstellen ()

Jetzt verschiebe ich das Display und die Treiberkonfiguration und füge sogar das Pinning in den Quellcode ein, um es einfacher zu machen. Ich initialisiere bestimmte Werte und beschäftige mich mit den Methoden, die die Einstellungen generieren.

Void setup () {//Configuracao wird angezeigt -------------------------------------- -------- display.begin(); display.setContrast(50); display.clearDisplay(); display.setTextSize(1); display.setTextColor (SCHWARZ); //Konfiguration des Treibers DRV8825 -------------------------------------------------- // Pin GND - Enable (ENA) // Pin 13 - M0 // Pin 12 - M1 // Pin 11 - M2 // Pin 10 - Reset (RST) // Pin 9 - Sleep (SLP) // Pin 8 - Schritt (STP.)) // Pin 7 - Richtung (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1.sleep (LOW); d1.reset(); d1.stepPerMm(100); d1.stepPerRound(200); d1.stepConfig(1); d1.motionConfig(50, Geschwindigkeit, 5000); }

loop () - 1. Teil - Zeichnungsmenü

void loop() {//Escreve o Menu do Programa no display ----------------------------------- display.clearDisplay(); display.fillRect(0, 0, 15, 11, 2); display.setCursor(2, 2); display.setTextColor (WEISS); display.print("F1"); display.setTextColor (SCHWARZ); display.setCursor(17, 2); display.print("CRESCENTE"); display.fillRect(0, 12, 15, 11, 2); display.setCursor(2, 14); display.setTextColor (WEISS); display.print("F2"); display.setTextColor (SCHWARZ); display.setCursor(17, 14); display.print("DECRESCENTE"); display.fillRect(0, 24, 15, 11, 2); display.setCursor(2, 26); display.setTextColor (WEISS); display.print("F3"); display.setTextColor (SCHWARZ); display.setCursor(17, 26); display.print("VELOCIDADE");

loop () - Teil 2 - Zeichnungsmenü

display.fillRect(0, 36, 15, 11, 2); display.setCursor(2, 38); display.setTextColor (WEISS); display.print("F4"); display.setTextColor (SCHWARZ); display.setCursor(17, 38); display.print("ESC"); display.display(); bool esc = false;

loop () - Teil 3 - Laufen

//Loop enquanto a tecla F4 (ESC) nao for pressionada while (!esc) { //Captura a Tecla pressionada do teclado customKey = customKeypad.getKey(); //Caso alguma tecla foi pressionada if (customKey) { //Trata a tecla apertada switch (customKey) { //Se tecla F1 foi pressionada case 'A': distancia = lerValor(); //Se tecla ESC foi pressionada if (distancia == -1) { esc = true; aufrechtzuerhalten. Else {//Aufheben eines Tela "Movendo" keine Anzeige display.clearDisplay(); display.fillRect(0, 0, 84, 11, 2); display.setCursor(21, 2); display.setTextColor (WEISS); display.print("MOVENDO"); display.setTextColor (SCHWARZ); display.setCursor(2, 14); display.print (Distanz); display.print("Passos"); display.display();

loop () - Teil 4 - Laufen

// Bewegen Sie den Motormover (Distanz, NIEDRIG); //Volta ao menu esc = true; } brechen; //Se tecla F2 foi pressionada case 'B': distancia = lerValor(); //Se tecla ESC foi pressionada if (distancia == -1) { esc = true; aufrechtzuerhalten. Else {//Aufheben eines Tela "Movendo" keine Anzeige display.clearDisplay(); display.fillRect(0, 0, 84, 11, 2); display.setCursor(21, 2); display.setTextColor (WEISS); display.print("MOVENDO"); display.setTextColor (SCHWARZ); display.setCursor(2, 14); display.print (Distanz); display.print("Passos"); display.display();

loop () - Teil 5 - Laufen

// Bewegen Sie den Motormover (Distanz, HIGH); //Volta ao menu esc = true; } brechen; //Se tecla F3 foi pressionada case 'C': velocidade = lerValor(); wenn (Geschwindigkeit == -1) { esc = wahr; aufrechtzuerhalten. Else {//Aufheben einer Tela "Velocidade" keine Anzeige display.clearDisplay(); display.fillRect(0, 0, 84, 11, 2); display.setCursor(12, 2); display.setTextColor (WEISS); display.print("VELOCIDADE"); display.setTextColor (SCHWARZ); display.setCursor(2, 14); display.print (Geschwindigkeit); display.print (char(229)); display.print("s");

loop () - Teil 6 - Laufen

display.fillRect(31, 24, 21, 11, 2); display.setCursor(33, 26); display.setTextColor (WEISS); display.println("OK!"); display.setTextColor (SCHWARZ); display.display(); //Configura nova velocidade ao motor d1.motionConfig (50, velocidade, 5000); Verzögerung (2000); //Volta ao menu esc = true; } brechen; //Se tecla F4 (ESC) für pressionada case 'D': //Se tecla CLR für pressionada case 'c': //Se tecla ENT für pressionada case 'e': //Volta ao menu esc = true; Standard: Pause; } } //Limpa o char customKey customKey = false; } }

Schritt 16: Über Spindeln - Maschinenkonfigurationen

Über Spindeln - Maschinenkonfigurationen
Über Spindeln - Maschinenkonfigurationen

In CNC-Maschinen wie 3D-Druckern und Routern beispielsweise muss das für die Positionssteuerung zuständige Programm wissen, wie die Bewegungen in Abhängigkeit von der Anzahl der an den Schrittmotor gegebenen Impulse erfolgen.

Wenn der Schrittmotortreiber die Anwendung von Mikroschritten zulässt, muss diese Konfiguration bei der Berechnung der erzeugten Verschiebung berücksichtigt werden.

Wenn beispielsweise ein 200-Schritt-Motor pro Umdrehung an einen auf 1/16 eingestellten Treiber angeschlossen ist, werden 16 x 200 Impulse für eine einzelne Umdrehung der Spindel benötigt, d. h. 3200 Impulse für jede Umdrehung. Wenn diese Spindel eine Steigung von 2 mm pro Umdrehung hat, werden 3200 Impulse im Mitnehmer benötigt, um die Mutter um 2 mm zu bewegen.

Tatsächlich verwenden Software-Controller oft einen Grund, um dieses Verhältnis anzugeben, die "Anzahl der Impulse pro Millimeter" oder "Schritte / mm".

Schritt 17: Marlin

Marlin
Marlin

Bei Marlin sehen wir zum Beispiel im Abschnitt @section motion:

/ **

* Standardachsenschritte pro Einheit (Schritte / mm)

* Überschreiben mit M92

* X, Y, Z, E0 [, E1 [, E2 [, E3 [, E4]

* /

#define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 3200, 100}

In diesem Beispiel können wir schlussfolgern, dass die X- und Y-Achse eine Genauigkeit von 80 Impulsen haben, um 1 mm zu bewegen, während die Z-Achse 3200 Impulse benötigt und der Extruder E0 100 benötigt.

Schritt 18: GRBL

GRBL
GRBL

Unten sehen wir die GRBL-Konfigurationsbefehle. Mit dem Befehl $ 100 können wir die Anzahl der Impulse anpassen, die erforderlich sind, um einen Versatz von einem Millimeter auf der X-Achse zu bewirken.

Im Beispiel unten sehen wir, dass der aktuelle Wert 250 Impulse pro mm beträgt.

Die Y- und Z-Achse können jeweils auf $ 101 und $ 102 eingestellt werden.

Empfohlen: