INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 4 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Schrittmotor Steuerung
14.02.2019, 08:35 (Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2019 13:21 von Franz54.)
Beitrag #25
RE: Schrittmotor Steuerung
Ich habe hier mal ein grasses Beispiel einer Rampe getestet. Die geht im Tempo runter bis 3 Millisek pro Polwechsel, was bei 3200 Schritten je Umdrehung sehr langsamm ist und die hohe Geschwindigkeit macht dann die 150 Microsekunden Polwechsel. Die Rampe braucht in dem Fall fast eine Umdrehung. Habe auf 32000 Schritte eingestellt, also 10 Umdrehungen, von denen die Motoren 8 mit Vollgas fahren, die erste und die letzte Umdrehung sind die beiden Rampen.

Code:
/*
  Einstellungen am TB6600 für 6400 Schritte pro Umdrehung
  und für den Nema 17 Motor mit 1,0 bis 1,2 Amp.
  Dippschalter 6   5   4   3   2   1
  Stellungen   0n  off on  off off off
  und für den Nema 17 Motor mit 1,5 bis 1,7 Amp.
  Dippschalter 6   5   4   3   2   1
  Stellungen   off on  on  off off off
*/
#include <Wire.h> // Kommunikation mit Arduino IDE
#include <LiquidCrystal_I2C.h> // LCD Display

// LCD Display´s haben Adresse 0x27 oder 0x3F !!
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#define BAUD (115200)
//------Steuerung für den ersten Schrittmotor------------------
word x1 = 0;
word schritte1 = 32000;
byte richtung1 = HIGH;
byte schrittposition1 = 1;
// Der Microwert für pwzeit & whzeit nicht unter 200 !
unsigned long pwablauf1 = 0;// Pulswechselablaufzeit1
unsigned long whablauf1 = 0;// Wiederhohlablaufzeit1
unsigned long rampenstart1 = 3000;
unsigned long rampenende1 = 150;
word rampenrichtung1 = 1;
unsigned long mini1 = rampenstart1;
unsigned long maxi1 = rampenende1;
byte enabl1 = 6;
byte dir1 = 5;
byte puls1 = 4;
//--------------------------------------------------------------
//------Steuerung für den zweiten Schrittmotor------------------
word x2 = 0;
word schritte2 = 32000;
byte richtung2 = HIGH;
byte schrittposition2 = 1;
// Der Microwert für pwzeit & whzeit nicht unter 200 !!
unsigned long pwablauf2 = 0;// Pulswechselablaufzeit2
unsigned long whablauf2 = 0;// Wiederhohlablaufzeit2
unsigned long rampenstart2 = 3000;
unsigned long rampenende2 = 150;
word rampenrichtung2 = 1;
unsigned long mini2 = rampenstart2;
unsigned long maxi2 = rampenende2;
byte enabl2 = 10;
byte dir2 = 9;
byte puls2 = 8;
//--------------------------------------------------------------
//------Steuerung für den dritten Schrittmotor------------------
word x3 = 0;
word schritte3 = 32000;
byte richtung3 = HIGH;
byte schrittposition3 = 1;
// Der Microwert für pwzeit & whzeit nicht unter 200 !!
unsigned long pwablauf3 = 0;// Pulswechselablaufzeit3
unsigned long whablauf3 = 0;// Wiederhohlablaufzeit3
unsigned long rampenstart3 = 3000;
unsigned long rampenende3 = 150;
word rampenrichtung3 = 1;
unsigned long mini3 = rampenstart3;
unsigned long maxi3 = rampenende3;
byte enabl3 = 45;
byte dir3 = 44;
byte puls3 = 43;
//--------------------------------------------------------------
void setup()
{
  Wire.begin();
  lcd.begin(20, 4);  // initialize the lcd for 20 chars 4 lines, turn on backlight
  lcd.backlight();   // LCD Beleuchtung ein
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Motor1 ");
  lcd.print(schritte1);
  lcd.print(" Schritte");
  lcd.setCursor(0, 1);
  lcd.print("Tempo1 ");
  lcd.print(rampenstart1);
  lcd.print("-");
  lcd.print(rampenende1);
  lcd.print(" Micro");
  lcd.setCursor(0, 2);
  lcd.print("Motor2 ");
  lcd.print(schritte2);
  lcd.print(" Schritte");
  lcd.setCursor(0, 3);
  lcd.print("Tempo2 ");
  lcd.print(rampenstart2);
  lcd.print("-");
  lcd.print(rampenende2);
  lcd.print(" Micro");
  Serial.begin(BAUD);
  //----------Steuerpins für den ersten Treiber aktivieren-------
  pinMode(enabl1, OUTPUT); // Enable1
  pinMode(dir1, OUTPUT); // Step1
  pinMode(puls1, OUTPUT); // Dir1
  digitalWrite(enabl1, LOW); // Set Enable1 low
  //---------------------------------------------------------------
  //----------Steuerpins für den zweiten Treiber aktivieren--------
  pinMode(enabl2, OUTPUT); // Enable2
  pinMode(dir2, OUTPUT); // Step2
  pinMode(puls2, OUTPUT); // Dir2
  digitalWrite(enabl2, LOW); // Set Enable2 low
  //---------------------------------------------------------------
  //----------Steuerpins für den dritten Treiber aktivieren--------
  pinMode(enabl3, OUTPUT); // Enable3
  pinMode(dir3, OUTPUT); // Step3
  pinMode(puls3, OUTPUT); // Dir3
  digitalWrite(enabl3, HIGH); // Set Enable3 low
  //---------------------------------------------------------------
}

void loop()
{
  //---------------------------------------------------------------------
  //----------Treiber 1 aktivieren------------------------------------
  //---------------------------------------------------------------------
  digitalWrite(enabl1, HIGH); // Set Enable high
  digitalWrite(dir1, richtung1); // Set Dir
  if (x1 < schritte1)    // Ziel noch nicht erreicht?
  {
    //----------------------Motor 1----------------------------------------
    //---------------------Schritt 1---------------------------------------
    if ((schrittposition1 == 1) && (micros() - whablauf1 >= mini1)) {
      digitalWrite(puls1, HIGH); // Step auf high
      schrittposition1 = 2;  // Steuerung für Schritt 1 einstellen
      pwablauf1 = micros(); // Timer für Schritt 1 starten
    }
    //----------------------Motor 1----------------------------------------
    //---------------------Schritt 2---------------------------------------
    if ((schrittposition1 == 2) && (micros() - pwablauf1 >= mini1)) {
      digitalWrite(puls1, LOW); // Step auf low
      schrittposition1 = 1;  // Steuerung für Schritt 0 einstellen
      whablauf1 = micros(); // Timer für Schritt 0 starten
      x1++;
      //-----------------------------------------------------------------
      //-----------------Rampensteuerung Motor1--------------------------
      if (x1 <= rampenstart1) {
        rampenrichtung1 = HIGH;
      } else {
        rampenrichtung1 = LOW;
      }
      if (rampenrichtung1 == HIGH) {
        if (mini1 > maxi1) {
          mini1 = mini1 - 1; // Rampe für Motor 1 Gas geben
        }
      }
      if (rampenrichtung1 == LOW) {
        if (x1 + rampenstart1 > schritte1) {
          mini1 = mini1 + 1; // Rampe für Motor 1 bremsen
        }
      }
      //-----------------------------------------------------------------
    }
  }
  //-------------------------Motor 1-------------------------------------
  //----------------------Ziel erreicht ?--------------------------------
  if (x1 == schritte1) {
    x1 = 0;
    richtung1 = !richtung1; // Dir Richtung wechseln
    mini1 = rampenstart1; //Rampe für Motor 1 Neustart
  }
  //---------------------------------------------------------------------


  //---------------------------------------------------------------------
  //----------Treiber 2 aktivieren------------------------------------
  //---------------------------------------------------------------------
  digitalWrite(enabl2, HIGH); // Set Enable high
  digitalWrite(dir2, richtung2); // Set Dir
  if (x2 < schritte2)    // Ziel noch nicht erreicht?
  {
    //----------------------Motor 2--------------------------------------
    //---------------------Schritt 1-------------------------------------
    if ((schrittposition2 == 1) && (micros() - whablauf2 >= mini2)) {
      digitalWrite(puls2, HIGH); // Step auf high
      schrittposition2 = 2;  // Steuerung für Schritt 1 einstellen
      pwablauf2 = micros(); // Timer für Schritt 1 starten
    }
    //----------------------Motor 2--------------------------------------
    //---------------------Schritt 2-------------------------------------
    if ((schrittposition2 == 2) && (micros() - pwablauf2 >= mini2)) {
      digitalWrite(puls2, LOW); // Step auf low
      schrittposition2 = 1;  // Steuerung für Schritt 0 einstellen
      whablauf2 = micros(); // Timer für Schritt 0 starten
      x2++;
      //-----------------------------------------------------------------
      //-----------------Rampensteuerung Motor2--------------------------
      if (x2 <= rampenstart2) {
        rampenrichtung2 = HIGH;
      } else {
        rampenrichtung2 = LOW;
      }
      if (rampenrichtung2 == HIGH) {
        if (mini2 > maxi2) {
          mini2 = mini2 - 1; // Rampe für Motor 1 Gas geben
        }
      }
      if (rampenrichtung2 == LOW) {
        if (x2 + rampenstart2 > schritte2) {
          mini2 = mini2 + 1; // Rampe für Motor 1 bremsen
        }
      }
      //----------------------------------------------------------------
    }
  }
  //-------------------------Motor 2------------------------------------
  //----------------------Ziel erreicht ?-------------------------------
  if (x2 == schritte2) {
    x2 = 0;
    mini2 = rampenstart2; //Rampe für Motor 2 Neustart
    richtung2 = !richtung2; // Dir Richtung wechseln
  }
  //--------------------------------------------------------------------

  //---------------------------------------------------------------------
  //----------Treiber 3 aktivieren------------------------------------
  //---------------------------------------------------------------------
  digitalWrite(enabl3, HIGH); // Set Enable high
  digitalWrite(dir3, richtung3); // Set Dir
  if (x3 < schritte3)    // Ziel noch nicht erreicht?
  {
    //----------------------Motor 3--------------------------------------
    //---------------------Schritt 1-------------------------------------
    if ((schrittposition3 == 1) && (micros() - whablauf3 >= mini3)) {
      digitalWrite(puls3, HIGH); // Step auf high
      schrittposition3 = 2;  // Steuerung für Schritt 1 einstellen
      pwablauf3 = micros(); // Timer für Schritt 1 starten
    }
    //----------------------Motor 3--------------------------------------
    //---------------------Schritt 2-------------------------------------
    if ((schrittposition3 == 2) && (micros() - pwablauf3 >= mini3)) {
      digitalWrite(puls3, LOW); // Step auf low
      schrittposition3 = 1;  // Steuerung für Schritt 0 einstellen
      whablauf3 = micros(); // Timer für Schritt 0 starten
      x3++;
      //-----------------------------------------------------------------
      //-----------------Rampensteuerung Motor3--------------------------
      if (x3 <= rampenstart3) {
        rampenrichtung3 = HIGH;
      } else {
        rampenrichtung3 = LOW;
      }
      if (rampenrichtung3 == HIGH) {
        if (mini3 > maxi3) {
          mini3 = mini3 - 1; // Rampe für Motor 1 Gas geben
        }
      }
      if (rampenrichtung3 == LOW) {
        if (x3 + rampenstart3 > schritte3) {
          mini3 = mini3 + 1; // Rampe für Motor 1 bremsen
        }
      }
      //----------------------------------------------------------------
    }
  }
  //-------------------------Motor 3------------------------------------
  //----------------------Ziel erreicht ?-------------------------------
  if (x3 == schritte3) {
    x3 = 0;
    mini3 = rampenstart3; //Rampe für Motor 3 Neustart
    richtung3 = !richtung3; // Dir Richtung wechseln
    delay(5000);
  }
  //--------------------------------------------------------------------

}

Franz

Edit: Ich habe das Höchsttempo auf 150 micros Polwechselzeit geändert. Bei den vorher benutzten 50 micros gingen Schritte verloren.

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.02.2019, 14:18 (Dieser Beitrag wurde zuletzt bearbeitet: 18.02.2019 16:57 von Franz54.)
Beitrag #26
RE: Schrittmotor Steuerung
Ich habe als Treiber für den dritten Motor einen A4988. Und auch der dritte Nema 17 ist ein anderer Hersteller aber von den Werten her der selbe Motor 1,8° / 1,7 Ampere. Der Treiber A4988 macht nur Microschritte bis höchstens 1600 pro Umdrehung. Ich wollte jetzt mal alle drei Motoren absolut gleich laufen lassen, und habe zu dem Zweck die beiden TB6600 Treiber auch auf diese 1600 eingestellt. Auch den Schritt-Takt habe ich gleich eingestellt. Ich hatte natürlich die Vorstellung, dass dann alle drei gleich schnell laufen. Aber die beiden Motoren mit den TB6600 Treibern lief etwa doppelt so schnell. Der Takt war für alle drei Motoren 2000 microsek. Takt. Also habe den dritten Motor auf 1000 microsek. eingestellt. Dann waren die beiden anderen immer noch ein bischen schneller. Erst bei 866 microsek. war in etwa Gleichauf. Also mit gemischten Treibern kamm man auf keinen Fall etwas bauen, wo Abstimmung zwischen den Geschwindigkeiten der z.B. X&Y Achse sein muss. Ausserdem kann der TB6600 bis 6400 Schritte pro Umdrehung fahren und der A4988 kann nur bis auf 1600 Schritte je Umdrehung runter.

Franz

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.02.2019, 13:20
Beitrag #27
RE: Schrittmotor Steuerung
Hallo Franz,
Würdest du denn nach deinen Erfahrungen jetzt bei einen kompletten neuanfang
lieber gleich alle Achsen mit dem TB6600 machen ?

Ich hatte auch schon mal geliebäugelt irgend wann wenn ich mehr Zeit habe,
eine kleine Portalfräse zu bauen.
Das ist jedoch noch unter absolut unwichtig bei mir abgelegt.

Nur würde es Sinn machen den bewährten Treiber A4988 zu nehmen,
oder von Anfang an direkt den TB6600 ?
Gruß, Markus

Immer in Stress
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.02.2019, 17:43 (Dieser Beitrag wurde zuletzt bearbeitet: 19.02.2019 22:07 von Franz54.)
Beitrag #28
RE: Schrittmotor Steuerung
Ja, die A4988 sind keine Alternative mehr für mich. Und die TB6600 kosten ja auch nicht die Welt.
Die A4988 werden mit diesen kleinen Kühlblechen auch ganz schön heiß. Da hätte ich kein Vertrauen dazu. Ausserdem die Microschritte bis 6400 Schritte für eine Umdrehung sind auch bestimmt bei einigen Anwendungen sehr wichtig, weil es da ja um kleine Schritte geht, dass eine Schräge oder ein Bogen nicht aus einer Sägezahnlinie zusammengesetzt wird, sondern eine saubere, glatte Linie entsteht.

Franz

PS: Ich besorge mir jetzt mal den neuen Treiber DM542T. Der macht noch wesentlich kleinere Schritte. Da will ich mal sehen ob der bis 6400 Schritte kompatiebel ist zu dem TB6600.
Oder den "DM556" der macht auch noch einen wesentlich höheren Strom. Ich glaube 5,6 Ampere. Das reicht dann auch für größere Motoren, mindestens bis zum Nema 34 oder mehr. Muß ich mal schauen. Rolleyes

EDIT: für den Nema 34 reicht der DM556 gar nicht. Der braucht 6 Ampere Sad Schade.

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2019, 19:27 (Dieser Beitrag wurde zuletzt bearbeitet: 20.02.2019 19:28 von Franz54.)
Beitrag #29
RE: Schrittmotor Steuerung
Ich habe mir den "DM556 2-Phasen Schrittmotor Treiber Controller 42/57 Schrittmotortreiber 24V-50V" jetzt noch bestellt. Kommt leider aus Hongkong, also kommt erst zwischen 13. und 25. März Shy

Aber dafür nur 16,- Euro. Rolleyes

Franz

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.02.2019, 22:08 (Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2019 22:12 von Franz54.)
Beitrag #30
RE: Schrittmotor Steuerung
(15.01.2019 15:06)Franz54 schrieb:  Ich habe nen Stress mit dem AccelStepper.
Wenn ich einen A4988 Treiber damit betreibe ist alles Easy. Wenn ich den TB6600 mit dem AccelStepper betreibe gibt es ein Problem.
Der A4988 Treiber braucht auf Enable einen Minus um Aktiv zu werden.
Der TB660 Treiber braucht auf Enable einen Plus um aktiv zu werden.
Gut das ist kein Problem, den Pin steuert nicht die Lib. sondern den hat man selber in der Hand.
Jetzt ist da aber auch noch den "Step". Der Step braucht auch beim A4988 einen Minus, also Minus Impulse.
Beim TB6600 brauche ich am Step plus Impulse. die werden aber von der Lib. gesteuert. Und in den Konfigurationen kann ich zwar sagen auf welchen Pin ich den Step haben will (AccelStepper stepper(1,5,4);//initialise accelstepper for a two wire board, pin 5 step, pin 4 dir), aber ich finde nichts, womit ich die Polung des Step Impulse einstellen kann Confused Da müßte ich in die Lib eingreifen. Das gefällt mir aber nicht, weil ich sie gerne Orginal lassen möchte.
Daher die Frage, gibt es eine AccelStepper Lib, die am Step pin nen Plus ausgibt, oder die in dem Punkt Konfigurierbar ist Huh

Servus
Franz

Hallo Gemeinde,
da muss ich noch was richtig stellen. Ich habe hier im Beitrag #3 behauptet, dass man die Steuereingänge nur mit GND Impulsen steuern kann. Das war Unsinn. Man kann bei diesen Treibern TB6600 und ähnliche die Steuereingänge beschalten wie man will. Der Enable, der Dir, sowie auch der Pul / Step Eingang kann in jeder Polung betrieben werden. Ich kann z.B. beim Pul+ Steppeingang mit Plus Impulsen reingehen, dann muss man nur am Pul- Eingang einen GND als Gegenpotential fest anlegen. Genauso gehts mit Dir und mit Enable. Jeder von diesen drei Steuereingängen hat jeweils einen VCC und einen GND Eingang.

Also kann man diese Treiber auch mit der AccelStepper Lib. Steuern. Das ist mir vor ein paar Wochen aufgefallen, aber ich hatte es hier noch nicht richtig gestellt
BlushBlush
Franz

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.02.2019, 20:16 (Dieser Beitrag wurde zuletzt bearbeitet: 27.02.2019 21:53 von Franz54.)
Beitrag #31
RE: Schrittmotor Steuerung
Hier habe ich mal noch ein Programm für drei Motoren mit AccelStepper ausprobiert. Ich bin noch ein wenig am Testen was damit geht. Die Treiber stehen zur Zeit auf 3200 Schritte je Umdrehung. Komischerweise muss ich aber die Zielentfernung im Programm auf 1600 Schritte einstellen, dass der Motor nur eine Umdrehung fährt und dann umkehrt. Confused

Code:
// MultiStepper.pde
// -*- mode: C++ -*-
//
// Shows how to multiple simultaneous steppers
// Runs one stepper forwards and backwards, accelerating and decelerating
// at the limits. Runs other steppers at the same time
//
// Copyright (C) 2009 Mike McCauley
// $Id: HRFMessage.h,v 1.1 2009/08/15 05:32:58 mikem Exp mikem $

#include <AccelStepper.h>

/*AccelStepper mystepper(1, pinStep, pinDirection);
  Ein Schrittmotor gesteuert von einem dedizierten Treiber.
  AccelStepper mystepper(2, pinA, pinB);
  Ein bipolarer Schrittmotor, der von einer H-Bridge-Schaltung gesteuert wird.
  AccelStepper mystepper(4, pinA1, pinA2, pinB1, pinB2);
  Ein unipolar Schrittmotor, gesteuert durch 4 Transistoren.
*/
AccelStepper stepper1 (1, 4, 5); //Pul=4, Dir=5
AccelStepper stepper2 (1, 8, 9); // Pul=8, Dir=9
AccelStepper stepper3 (1, 31, 32); //Pul=31, Dir=32

void setup()
{
  stepper1.setMaxSpeed(1600.0);
  /*
    Legt die maximale Geschwindigkeit fest. Die höchste Geschwindigkeit scheint 1200 zu sein. Der Standardwert ist sehr langsam, so dass dieser konfiguriert werden muss. Wenn Sie durch die Einstellung von Position gesteuert wird, beschleunigt sich der Stepper mit dieser maximalen Geschwindigkeit und verlangsamt sich, wenn er das Ziel erreicht.
  */
  stepper1.setAcceleration(800.0);
  /*
     Legt die zu verwendende Beschleunigung in Schritten pro Sekunde fest.
  */
  stepper1.moveTo(1600);
  /*
     Zielposition einstellen. Die run () Funktion wird versuchen, den Motor (höchstens einen Schritt pro Aufruf) von der aktuellen Position zur Zielposition zu bewegen, die durch den letzten Aufruf dieser Funktion festgelegt wurde. Achtung: moveTo () berechnet auch die Geschwindigkeit für den nächsten Schritt neu. Wenn Sie versuchen, konstante Geschwindigkeitsbewegungen zu verwenden, sollten Sie setSpeed () nach dem Aufruf von moveTo () aufrufen.
  */
  stepper2.setMaxSpeed(1600.0);
  stepper2.setAcceleration(800.0);
  stepper2.moveTo(1600);

  stepper3.setMaxSpeed(800.0);
  stepper3.setAcceleration(300.0);
  stepper3.moveTo(1600);
}

void loop()
{
  // Richtungsänderung am Ziel
  if (stepper1.distanceToGo() == 0)
    stepper1.moveTo(-stepper1.currentPosition());
  if (stepper2.distanceToGo() == 0)
    stepper2.moveTo(-stepper2.currentPosition());
  if (stepper3.distanceToGo() == 0)
    stepper3.moveTo(-stepper3.currentPosition());

  stepper1.run();
  stepper2.run();
  stepper3.run();
  /*
     Aktualisiert den Motor wenn ein Schritt fällig ist, um die Zielposition zu erreichen.
     Sie müssen diese so oft wie möglich aufrufen, aber mindestens einmal pro
     Mindestschrittzeitintervall, vorzugsweise in Ihrer Hauptschleife. Beachten Sie,
     dass jeder Aufruf von run () höchstens einen Schritt ausführt, und zwar nur dann,
     wenn ein Schritt fällig ist, basierend auf der aktuellen Geschwindigkeit und der
     Zeit seit dem letzten Schritt.
  */
}

Franz

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.03.2019, 22:47 (Dieser Beitrag wurde zuletzt bearbeitet: 15.03.2019 00:39 von Franz54.)
Beitrag #32
RE: Schrittmotor Steuerung
(20.02.2019 19:27)Franz54 schrieb:  Ich habe mir den "DM556 2-Phasen Schrittmotor Treiber Controller 42/57 Schrittmotortreiber 24V-50V" jetzt noch bestellt. Kommt leider aus Hongkong, also kommt erst zwischen 13. und 25. März Shy

Aber dafür nur 16,- Euro. Rolleyes

Franz

Der Treiber ist vor zwei Tagen angekommen. Ich habe ihn mit meinem Programm mit drei Motoren Nema 17 angeschlossen.

Zwei Motoren mit dem den TB6600 Treibern und den dritten Motor mit dem DM556 Treiber. Alle drei Treiber auf 3200 Schritte pro Umdrehung eingestellt, und mit den gleichen Takten gesteuert. Der einzige Unterschied ist, dass der DM556 Treiber erst ab 24 Volt arbeitet. Aber das ist auch kein Problem. So habe ich die TB6600 auf 12 Volt belassen, und den DM556 mit 24 Volt beschalten. Alle drei Motoren laufen absolut gleich und alle drei werden kaum warm. Also alles Easy. Man kann natürlich auch alle drei Treiber mit 24 Volt beschalten. Auch kein Problem.

Ich habe in mein Testprogramm noch was eingebaut, dass die Treiber, wenn die Motoren stehen, den Enable aktivieren. Dann werden die Motoren im Stand nicht mehr bestromt, und sind somit im Stand frei drehbar. Auch nicht schlecht, wenn man die Bremse in der Ruhestellung nicht braucht. Hat den Vorteil, dass die Motoren kalt bleiben, weil sie im Stand nicht unter Spannung stehen.

Es gibt beim DM556 noch einen DIP Schalter (Schalter4), da steht "Strom halbieren" und in der anderen Stellung "voller Strom". Ich nehme an das ist zum Standstrom halbieren. Das muss ich morgen mal testen. Rolleyes

Also alles in allem, der Treiber DM556 gefällt mir auch sehr gut. Da gibt es zwei Varianten. Der eine kostet über 50,- Euro und ist sofort zu haben, der andere kostet 16,- Euro und kommt mit Wartezeit aus China. Ich habe hier zum Testen die China Variante. Big Grin

Achtung, die Anschlüsse zwischen TB6600 und DM556 sind verschieden, also nicht an der selben Stelle. Man kann also in dem Fall nicht einfach zum Treiber tauschen die Stecker umstecken, wenns auch auf den ersten Blick so aussieht, sondern man muss umklemmen, dass es wieder passt!!

Franz

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Fünf Phasen Schrittmotor? Holzwurm56 1 567 05.02.2019 13:49
Letzter Beitrag: Chopp
  Schrittmotor a4988 Problem iceweasel7 15 3.358 02.01.2018 16:16
Letzter Beitrag: iceweasel7
  12V Schrittmotor mit Arduino ansteuern niggo 4 3.207 21.06.2017 11:09
Letzter Beitrag: Binatone
  Bluetooth-Steuerung mit elegoo uno funktioniert nicht Matthias_Arduino 0 2.022 01.11.2016 19:47
Letzter Beitrag: Matthias_Arduino
  Welcher Schrittmotor ? Welches Motorshield? Binatone 0 1.386 22.09.2016 12:22
Letzter Beitrag: Binatone
  Schrittmotor ruckelt beim Start und im laufenden Betrieb - Arduino+Motor Shield grt35a 3 3.312 21.09.2016 06:56
Letzter Beitrag: Bitklopfer
  Steuerung eines Schrittmotor und eines Lüfters auf einem Shield phischmi 7 1.863 18.08.2016 20:58
Letzter Beitrag: phischmi
  Nema 17 Schrittmotor läuft an a4988 nicht fagus 9 3.385 04.08.2016 20:12
Letzter Beitrag: fagus
  Garagentor,- und Beleuchtungs - Steuerung ardu1n1x 2 2.737 13.07.2016 16:17
Letzter Beitrag: ardu1n1x
  Android App für RGB Steuerung heino_m 5 1.423 08.05.2016 10:20
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste