PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welcher Schrittmotortreiber Nema 17



Langer711
30.12.2016, 11:09
Hallo Freunde...

Ich steh hier grad vor der Wahl eines geeigneten Schrittmotortreibers.
Verbaut ist ein Standard NEMA 17 Motor, 4 Leitungen. 1.5 A

Jetzt hab ich aktuell den TB 6560 dran, mit folgenden Problemen:

#1 bei niedrigen Drehzahlen vibriert der gesamte Aufbau, vermutlich Resonanz im Motor, dafür kann der Treiber ja nix :)
Dazu wird eine kleinere Übersetzung verbaut, dann kann der Motor in höherer Drehzahl laufen, sollte dann ok sein.

#2 Ich benötige die Möglichkeit, den Motor im Leerlauf drehen zu können, mit möglichst wenig Widerstand.

Mit Leerlauf ist gemeint:
Treiberschaltung spannungsfrei, Null Aktivität !
Jetzt muss ich der Motor frei drehen können.
Dabei entstehen durch Induktivität Spannungen, die den TB6560 verleiten, den Motor zu bremsen.


Das Bekloppte dabei...
Ich hab hier zwei baugleiche TB6560 Treiberplatinen.
Die Eine steuert gegen, die Andere nicht...

Gibts dafür eine Erklärung ?
Treiber
http://www.amazon.de/dp/B00JRWXI38

Motor
http://www.amazon.de/dp/B015ST2U5A

Beste Grüße

Der Lange

Geistesblitz
30.12.2016, 13:04
Ist vielleicht eine Stromabsenkung im Stillstand verbaut, die bei einem eingeschaltet ist und beim anderen nicht? Ansonsten kann man im Stillstand einfach das Enable-Signal umschalten, dass der Treiberausgang komplett abgeschaltet wird. Für die auftretenden Induktionsströme müsste man die Freilaufdioden des Treibers betrachten, die er doch wohl hoffentlich hat. Hast du auch die Mikroschritteinstellung eingestellt? Wenn du im Voll- oder Halbschritt fährst ist es kein Wunder, wenn der Motor bei geringen Drehzahlen rattert. Wimre sollte der TB6560 bis 16tel-Schritt können.

Langer711
31.12.2016, 09:59
Tach :)
Danke für die Antwort

Eine Stromabsenkung für den Stillstand ist verbaut und auf 20% eingestellt - funktioniert auch, das Haltemoment ist deutlich geringer, als während der Fahrt.

Mit Enabled, das will ich mal in Angriff nehmen...
Es könnte sein, das dann, wenn der Treiber unter Versorgungsspannung steht, die Induktionsspannungen den Treiber nicht erregen können, ja.
Das Enable Signal übernimmt dann die Abschaltung.

Ich hatte eigentlich geplant, die Versorgung abzuschalten und wollte dadurch erreichen, das die Motoren freigeschaltet werden.
Naja, dann halt über Enable...

Freilauf Dioden sind hoffentlich verbaut, aber so weit bin ich noch nicht in die Materie eingetaucht.

Microschritt Einstellung hab ich mal auf 1/8 gesetzt, da wurde es schon deutlich ruhiger.
Allerdings ist der kleine Arduino Nano dann auch ziemlich ausgelastet, was das generieren der Pulse angeht, wenn ich Drehzahl brauche :D

Jetzt übelege ich schon, von "blinkwithoutdelay" per micros() auf Tone() zu gehen...
Mal sehen, wie der damit zurechtkommt ;)


Der Lange

Langer711
31.12.2016, 12:06
sooo...
Die Ansteuerung über Tone() funktioniert für meine Verwendung optimal.
Ich benötige in meinem Fall keine Positionierung.

Aber ich brauche einen möglichst leichten Lauf, wenn keine Ansteuerung erfolgt.
Schrittmotoren lassen sich sehr sehr leicht drehen, wenn sie nicht angesteuert werden.

Anfangs hatte ich DC Getriebemotoren auf dem Plan.
Dazu dann ein Riemenantreib, dessen Spannkraft veränderbar sein sollte...

Alles kalter Kaffee, Schrittmotor funktioniert tadellos, bis auf das Rattern, welches nun über 1/8 Schritt erledigt ist.
Danke !!


Ok... bleibt das Problem des bremsenden Motors, bei steigender Drehzahl.
Vielleicht gibts ja noch andere Treibermodule, die sich hier besser eignen ?!

Ich wünsche Euch allen einen guten Rutsch ins neue Jahr !

bis neulich

Der Lange

Langer711
23.12.2018, 08:47
Guten Tag, Freunde

Ich möchte meine Projekt noch etwas weiter optimieren.
Den TB6560 kennen wir ja nun.
Durch das Mäuseklavier kann ich Teilschritte bis 1/16 einstellen.
Dazu kann ich bei Stillstand den Ruhestrom drosseln, alles gut.

Nun möchte ich aber den Strom individuell im Programm verändern.
Also Beim Beschleunigen/Verzögern meinetwegen den vollen Strom, wenn Drehzahl erreicht, z.B. 70%.
Haltestrom (Stillstand) nur 40%
Kurz: Ich möchte die Nema17 Stepper dynamisch bestromen, je nach Anforderung.

Das dann möglichst kompakt z.B. als Modul mit Kühlkörper, welches ich auf "meine" Platine löte/stecke.
Hat jemand so ein Modul schon irgendwo gesehen ?

Gruß
Der Lange

Edit / PS:
Anstatt den Arduino verwende ich mittlerweile den ESP8266.
Beim Arduino reichte der Arbeitstakt nicht aus, um bei 1/16 den Motor schnell zu drehen.
Daher hab ich den Umweg - mit allen Nachteilen - über tone() gewählt.
ESP ist deutlich flotter im Rennen und ermöglich auch höhere Drehzahlen bei 1/16 Steps ohne die tone() Krücke ;)

Moppi
23.12.2018, 11:06
Guten Tag und frohe Weihnachten!

Ich verwende auch einen ATmega328 (Arduino UNO) zum Ansteuern. Ich habe keine Probleme mit 16tel Steps bei der Geschwindigkeit. Allerdings verwende ich den A4988 (bis 1.5A). Welche Umdrehungszahl erreichst Du denn?

Treiber, bei denen man den Strom per Steuersignal regeln kann, sind mir noch nicht über den Weg gelaufen.
Meine Idee wäre, wenn da ein Trimpoti auf der Platine ist, zum Strom einstellen, dann kannst Du das auslöten und Drähte einlöten, um ein elektronisches Poti zu verwenden.
Zum Beispiel: https://www.reichelt.de/digital-potentiometer-257-steps-1-kanal-spi-dip-8-mcp-4151-104e-p-p91221.html

MfG
:Weihnacht

Langer711
23.12.2018, 11:57
Mahlzeit !
Ja, ebenfalls Frohes Weihnachtsfest :)

Die bisherige maximale Drehzahl bei akzeptablem Drehmoment für meinen Zweck muss ich jetzt schätzen.
Das sind etwa 1000-1500 U/min, also schon wirklich sehr hoch für einen Stepper :)
Ich hab das glaube ich bei 1/8 Schritt gemacht, also sagen wir 1250 * 200 * 8 / 60 = etwa 33 kHz aus dem Controller
Da war im loop kaum noch Zeit für was anderes :D


Mein Problem ist:
Einerseits soll der Motor natürlich langsam und präzise können.
Andererseits wünsche ich mir auch manchmal eine möglichst flotte Fahrt, dann aber nur wenige Sekunden, wobei die Präzision dabei fast egal ist
Der Lange

Moppi
23.12.2018, 12:16
Ich habe irgendwo gelesen, dass Vollschritte die meiste Kraft haben. Weiß nicht, ob das so stimmt, oder nicht auch einfach von der Frequenz abhängt. Aber sollte dem so sein, könnte man mit Vollschritten anfahren, bei höherer Geschwindigkeit auf 1/2, dann 1/4, dann auf 1/8 und schließlich auf 1/16 umstellen. Bei 1/16tel Steps sollte der Motor ja dann die geringste Kraft haben. Dann müsste man nur den Strom so anpassen, dass der Motor eben bei 1/16tel Steps und Vollgas nicht stehen bleibt und mit Vollschritten sollte dann ausreichend Kraft (Strom) vorhanden sein, beim Anfahren. Also quasi denselben Stromfluss, einmal für hohe Geschwindigkeit und weniger Kraft, bei 1/16 und einmal für mehr Kraft, bei Vollschritten.

MfG
:Weihnacht

Langer711
23.12.2018, 12:44
Das ist die eine Variante, richtig.
Ob nun bei Vollschritt ein höheres Drehmoment anliegt, kann gut sein.
Zumindest könnte man auf 1/4 z.B. gehen, wenn man schnellere Fahrt benötigt und auf 1/16 gehen, für höhere Präzision und bessere Laufruhe.

Bei diesem Treiber hätte man die Möglichkeit, dies über die Eingänge direkt aus dem MC umzuschalten:
https://www.watterott.com/de/Pololu-A4988-Schrittmotortreiber

Das man im Programm nicht von jetzt auf gleich auf volles Tempo beschleunigen kann, klare Sache.
Hier würde ich per Software den Takt langsam steigern, was sicherlich auch nicht trivial ist, aber es ist eine Möglichkeit.

Ich trau diesen Dingern aber keine Dauerbelastung zu.
Allein, wie die Kühlkörper da angebracht sind... da gibts bestimmt bessere Möglichkeiten.

Auch würde ich gerne den Strom variabel gestalten.
Dort die Potis auslöten und z.B. über einen digital-Poti arbeiten... ist schon etwas Aufwand.
Mal schauen, was der Markt sonst noch so bietet.
Der Lange


PS:
Habe soeben einen tmc2130 Treiber gefunden bei Amazon.
Der scheint zunächst identisch mit dem A4988 zu sein, also DIR + STEP für eigentliche Ansteuerung.

Aber:
es fehlt der Poti zur Stromeinstellung
Auch sind die Eingänge für Microsteps anders beschriftet, als seien es Kommunikations-Ports.

Es scheint, man kann hier über eine serielle Verbindung eine ganze Menge Informationen/Eonstellungen in den Chip schieben.
hier noch was von Github dazu:
https://github.com/teemuatlut/TMC2130Stepper

Sieht vielversprechend aus :)

Moppi
23.12.2018, 21:13
Aber nix zum Strom einstellen.
:Weihnacht

Langer711
23.12.2018, 21:28
Naja... bei GitHub steht ein Codebeispiel (hier mal auszugsweise)


#include <TMC2130Stepper.h>
TMC2130Stepper TMC2130 = TMC2130Stepper(EN_PIN, DIR_PIN, STEP_PIN, CS_PIN);

void setup() {
Serial.begin(9600);
TMC2130.begin(); // Initiate pins and registeries
TMC2130.SilentStepStick2130(600); // Set stepper current to 600mA
TMC2130.stealthChop(1); // Enable extremely quiet stepping

digitalWrite(EN_PIN, LOW);
}

void loop() {
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(10);
uint32_t ms = millis();
static uint32_t last_time = 0;
if ((ms - last_time) > 2000) {
if (dir) {
Serial.println("Dir -> 0");
TMC2130.shaft_dir(0);
} else {
Serial.println("Dir -> 1");
TMC2130.shaft_dir(1);
}
dir = !dir;
Serial.println(TMC2130.GCONF(), BIN);
last_time = ms;
}
}

über das delayMicroseconds() brauchen wir uns nicht unterhalten :D

Der Lange

Moppi
24.12.2018, 08:08
ok ... Hatte ich nicht gesehen, dass das noch eine Unterfunktion besitzt wo man den Strom mitgeben kann.
Na dann funktioniert es hoffentlich, wie Du Dir das vorstellst!

MfG
:Weihnacht