Arduino TB6600 NEMA23 Steuerung

Hallo und frohe Ostern.

Ich bin 53 Jahre alt und begeisteter Holz(Hobby)Handwerker.
Ich würde gerne mit den oben genannten (vorhanden) Teilen ein grobes Gewinde auf ein 50mm großes Stück holz fräsen.
Hierzu habe ich leider meine Probleme da ich mit der programmierung des UNO nicht klarkomme.
Was habe ich bis jetzt:

  • Die Hardware ist aufgebaut, einen NEMA 23 (3A, 1,8°) mit dem Treiber und mit dem UNO verbunden,
  • Eine M18 Gewindestange über eine Kadanwelle mit dem Nema verbunden,
    Die Gewindestange treibt einen Linearantrieb mit einen Schlitten an auf der meine Oberfräse zum fräsen des Gewindes ins Holz sitzt.
  • Je ein Entschalter vorn und hinten verbaut um den Motor nicht zu weit laufen zu lassen.

Ich bin leider blutiger Laie, kann aber LIBs einspielen oder bekomme auch Sachen zum laufen.

Leider gibt das Netzt nicht allzuviel Preis über Schrittmotorensteuerung.

Warum drechsele ich kein Gwewinde?
Zum einen habe ich keine Drechselbank und zum anderen könnte ich mir vorstellen das ich das nicht paralel hin bekommen würde.

Gibt es jemanden hier den ich um Rat bitten könnte?
Ist es möglich über dieses Portal auch Bilder hoch zu laden?

Gruß Uli

Hey Uli,
Willkommen bei uns im Forum!
Für Schrittmotoransteuerungen mit einem step-dir Interface, wie z.b. die TB6600 gibt es div. Arduino Bibliotheken. Empfehlen kann ich da zb accelstepper (https://www.arduino.cc/reference/en/libraries/accelstepper/).
Da kannst du ja Mal ein bisschen reinlesen und dich sonst nochmal melden :slight_smile:

Ja, Bilder kannst du hier auch hochladen, bin gerade am Smartphone, aber am PC gibt es über dem Textfeld glaube ich ein entsprechendes Symbol.

Hallo Leon,

den Abschnitt mit dem AccelStepper habe ich im englischsprachigen Forum ( www.makerguides.com/tb6600-stepper-motor-driver-arduino-tutorial/ ) gelesen und auch Dank Googleübersetzer einigermaßen verstanden. Aufgebaut habe ich Ihn und es funktioniert auch.

Gelernt habe ich nun das die Anschlüsse am TB6600 entweder über GND (Sig: ENA-, DIR- und PUL-) oder über Vcc (ENA+,DIR+,PUL+) an den UNO passieren, da erklärt schonmal einige Fehler die ich zuvor in der Schaltung hatte.

Jetzt kann ich mit der Beispielsoftware aus dem oberen Link und dem AccelStepper den Schrittmotor sanft anfahren.

Sorry, ich hab da 1000 Fragen zu und ich hoffe ich stelle mich nicht zu anfägerhaft an.

Zuerst: Kann ich hier den Code veröffentlichen, ich weis nicht ob das hier gerne gesehen ist da er ja geklaut ist.

Verstanden habe ich den Teil mit der Drehzahl noch nicht,
Verstanden habe ich das jeder Motor anders ist, meiner ist ein NEMA23 mit 3A und 1,8°.
Beim TB6600 habe ich die Mikroschalter auf (SW1-3) on-off-off = 200 Pulse (bei SW4-6 auf off-on-off für 3A) stehen , das sollte doch dann die schnellste Umdrehungen sein.
Betreiben tue ich den TB6600 mit 24V.

Ich habe zusätzlich zum Code hinzugefügt:
" #define enaPin 4"
für die Geschwindigkeit (hoffe ich)
bei den anderen Programmen muste ich die Speps immer im Programm eintragen, also eigentlich 200, hier finde ich den Punkt leider nicht im Programm.

Der Motor dreht schnell und bremst auch- bzw hat einen sanften Anlauf, dieses hängt glaube ich mit Voreinstellung des TB6600 Mirkoschaltern zusammen.
Laute Geräusche vom Motor beim anfahren oder abbremsen ist wohl normal bei der Einstellung, ich verändere mal den Wert auf (SW1-3) auf 800 Steps.
Die Geräusche bleiben und ich glaube die Drehzahl hat sich nicht geändert.

Eigentlich brauche ich den Sanftablauf nicht und ich glaube in einer anderen Schaltung gestern drehte der Motor auch schneller, wo kann ich das im Programm einstellen?

sorry zu viel Text, ich danke schonmal vorab für den Support!


Hier 2 Bilder was ich schon aufgebaut habe.

Gruß und schönes RestWE!

Uli

Ich denke den Code kannst du hier ruhig reinstellen :man_shrugging:
Edit: accelstepper ist unter gpl3 lizenziert, alles was die bib verwendet also auch und darf damit veröffentlicht werde
Mit sw1-3 kannst du das Mikrostepping des Treibers einstellen, also in wie viele Schritte ein Vollschritt unterteilt wird. Mit der von dir genannten Konfiguration (Off on off) kommt man laut Datenblatt auf 800 steps/Umdrehung. Mit on on off dürftest du das Mikrostepping ausschalten können und so auf 200steps/Umdrehung kommen.

Kommst du aus dem Raum Gütersloh?
Wenn ja könnte man sich das auch Mal bei uns im Space angucken.

Jein, ich wohne 50m (!) von der Stadtgrenze entfernt, ich komme aus Ummeln, kennst du den Bootsshop am Kreisverkehr Richtung Isselhorst?

Ich habe festgestellt das je kleiner die Mikrosteps am TB6600 werden um so lauter werden die Geräusche vom Motor.

Ne, da kenne ich mich nicht so aus, aber dann wäre es ja vielleicht tatsächlich eine Möglichkeit sich im Space zu treffen?
Laut Gesundheitsamt gelten wir als öffentlicher Raum, weshalb bei uns die ‚normalen‘ Regeln + Maske gelten. Zu zweit wäre also von der Seite aus Ok.

Das Stepper bei geringeren Mikrostepping lauter sind ist ziemlich üblich. Was brauchst du denn für eine Drehzahl?

Ja, ein Treffen wäre natürlich Toll.

Der Nema23 treibt eine M18 Gewindestange an, auf der Welle ist eine Mutter die den Schlitten mit der Oberfräse ist.

Bei der Steigung von 15mm auf dem Holz sollte eine Drehzahl von ca 200-400 U/min genügen.

Die Drehzahl sollte kein Problem sein. Zeig am besten Mal deinen Code und schreib dazu was noch nicht läuft wie du es dir vorstellst.
Wann hast du denn Zeit, PN?

1 Like

Moin,

hier zB das Beispiel (gibt es hier ein Textfester für die Codes, es liest sich besser?):

/* Example sketch to control a stepper motor with TB6600 stepper motor driver, AccelStepper library and Arduino: acceleration and deceleration. More info: https://www.makerguides.com */

// Include the AccelStepper library:
#include <AccelStepper.h>

// Define stepper motor connections and motor interface type. Motor interface type must be set to 1 when using a driver:
#define dirPin 2
#define stepPin 3
#define motorInterfaceType 1

// Create a new instance of the AccelStepper class:
AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);

void setup() {
  // Set the maximum speed and acceleration:
  stepper.setMaxSpeed(1000);
  stepper.setAcceleration(500);
}

void loop() {
  // Set the target position:
  stepper.moveTo(8000);
  // Run to target position with set speed and acceleration/deceleration:
  stepper.runToPosition();

  delay(1000);

  // Move back to zero:
  stepper.moveTo(0);
  stepper.runToPosition();

  delay(1000);
}

Gruß Uli

Dankeschön lieber Admin!

1 Like

Das meiste ist Markdown

1 Like

Also, ein Sanftanlauf und stoppen ist nicht nötig.

Ich würde gerne verstehen wie ich was programmieren muss und wäre über eine Hilfe dankbar.

Hier das Aufgebanbuch wie ich mir die Holzschraube und Mutter dafür vorstelle:

  • am Anfang sollten die Endschalter angefahren werden damit man nicht in einen Blockhalter fährt und einen Crash produziert. Die Schalter sind auf einer Schiene so das auch gleich die Fräßfläche eingegrenzt werden kann.
  • ein Inkrementengeber (ich habe schon den KY-040 Encoder) und eine kleine Anzeige ( Gosear 0,96 Zoll I2C IIC SPI serielle 128 x 64 OLED) könnte die Drehzahl einstellen und anzeigen als Ausgabe. Die LIB habe ich für beide schon eingespielt und zum laufen gebracht.
  • die M18 Gewindestange für den Vorschub (siehe Bild oben) ist 70cm lang zur Herstellung eines langen Gewindes
  • für die Drehzahl der Schraube hätte ich einen 2ten Nema23 & Treiber TB6600 (baugleich) den ich über die Anzeige und einen 2ten Encoder steuern kann um die Gewindesteigung anzupassen.
  • eine 50mm bzw. 70mm Schraube und Mutter soll gefräßt werden. Die Steigung wäre 15mm da ich gerne ein Doppelgewinde fräsen würde, es hat den Vorteil das bei gleichem Drehmoment der Schraube ein doppelt so schneller Verfahrweg möglich ist.

Im Prinzip ist das Herstellen der Mutter ähnlich nur Negativ wie bei der Schraube.
Eine Vorrichtungsumbau dafür wäre kein Problem ich müsste natürlich wegen der Steigung die Drehzahlen einstellen und anpassen.

Gruß Uli

Sorry, ich habe ein bisschen verplant, dass wir hier auf einem Arduino unterwegs sind und solche Sachen nicht wirklich effizient umgesetzt werden.
400 U/min sind hier leider etwas zu schnell. Laut Doku kann AccelStepper maximal 1000 steps/Sekunde. Bei 200 steps/U sind das 300 U/min.

Ohne eine Beschleunigungsrampe wird es bei 300 RPM schwer. Schrittmotoren müssen, wie auch Synchronmotoren, ‚langsam‘ auf die Zielgeschwindigkeit gebracht werden, da sie sonst außer tritt fallen können. So eine Beschleunigungsrampe muss nicht besonders lang sein, aber ohne wird es wahrscheinlich nicht gehen.

Es müsste wahrscheinlich nochmal geprüft werden, ob die 1000 Steps/s auch mit zwei Motoren erreicht werden können. Bei einer eher niedrigen Geschwindigkeit geht das aber vermutlich.

Die Bibliothek AccelStepper stellt auch eine Methode für eine konstante Rotation zur Verfügung( setSpeed()).

OK, das mit dem langsam dimmen und hochdrehen lassen des Motors habe ich begriffen, dann macht das natürlich Sinn.

Eben im Chat kam die Frage nach einem Doppelgewinde, an einem alten Nussknacker kann man das Prinzip gut erkennen:


Hier seht ihr das Doppelgewinde, es sind praktisch 2 Gewindegänge, Vorteil ist halt der schnellere Verfahrweg durch die Steigungsverdoppelung und die doppelte Kraft die nun auf 2 Flanken verteilt wird.

Hey Uli,
ich habe nochmal ein bisschen über die 2-gängigen Gewinde nachgedacht. Während durch die Steigungsverdopplung ein schnelleres Öffnen/Schließen auf jeden Fall möglich ist, kann eine doppelte Kraft glaube ich nicht übertragen werden. Die Fläche, auf die sich die Kraft verteilt, ist ja die eine Seite der einen bzw. der beiden Flanken. Eine Fläche der Flanke ist dabei näherungsweise Zahnhöhe x Ganglänge. Die Ganglänge bei einem 2-gängigen Gewinde ist dabei ja nur halb so lang wie bei einem 1-gängigen (zumindest wenn die Steigung verdoppelt werden soll). Die Fläche einer Flanke eines 2-gängigen Gewindes ist folglich nur halb so groß, wie die eines 1-gängigen Gewindes. Folglich ist die Gesamtfläche bei 1- und 2-gängigen Gewinden gleichgroß. Somit lassen letzten Endes keine größeren Kräfte übertragen.
Hinzu käme, dass durch die höhere Steigung die Selbsthemmung reduziert wird. Das könnte für deine Anwendung vielleicht ein Problem darstellen, da du die Selbsthemmung ja brauchst, um deine Werkstücke einzuspannen. (https://de.wikipedia.org/wiki/Gewinde#Mehrgängige_Gewinde)

Falls du das Holz dafür ‚opfern‘ würdest wäre es sicherlich interessant beide Möglichkeiten auszuprobieren und zu gucken, ob die Theorie ‚Bestand‘ hat! :slight_smile:

Moin Leon,

die Kraftübertragung bei einem Doppelgewinde geht ja nicht nur auf einen Gewindegang sondern auf beide und sollte somit gleich sein.
Anders ist es natürlich bei der Selbsthemmung da die Steigungen ja viel größer sind, das hatte ich noch nicht bedacht.
Da ich die 2D CNC ja dann fertig habe werde ich auf jeden Fall beide Möglichkeiten versuchen, das sollte mit der Drehzahlvorwahl möglich sein.
Ich werde auf jeden Fall ein Trapetzgewinde verwenden damit möglichst viel Gewindefläche im Einsatz ist. Die Muttern werden aus 50mm starken Voll-Hartholz sein und ich hoffe das bei einer 15mm Steigung dann 2,5 Gewindegänge im Einsatz sind.

Es ist ein spannedes Projekt und ist vielleicht auch für Euch mal interessant, besten Dank das Ihr mithelft und wirklich gute Tips gebt!

Gruß Uli

Moin,

Zum fräsen der Mutter muss ich den Fräskopf umlenken um in dem Bohrloch zu fräsen.
Meine Oberfräse kann ich von der Drehzahl auf 7500-10000 U/min runterregeln aber wie Drehzahlfest sind die 3D Drucker Riemen mit 15mm Breite?
Der Riemen ist ein HTD-5M, 375mm lang.

Ich habe einen neuen 5mm Fräser mit 2 Lagern bestückt und eingeklebt mit hochfesten Schraubensicherungslack, die Befestigung der Riemenscheibe habe ich von M3 auf M5 (2x) vergrößert.


Gerade baue ich eine Gabel für die beiden Lager die den Fräser führen, da der Halter nicht auf Dauer belastet ist hält es hoffentlich und wird mit Splitterschutz betrieben.

Gruß Uli