Benutzung eines PoStep25-256 Schrittmotortreibers

Hallo,

ich war sehr lange nicht aktiv in diesem Forum, aber jetzt brauche ich dediziert Hilfe.

Ich habe einen Arduino UNO Rev 3 und will mit ihm einen Schrittmotor steuern.

Als Schrittmotortreiber habe ich den PoStep25-256. Als Schrittmotor habe ich einen ACT Motor Nema 17 0.9° (400 Steps pro Umdrehung).

Stromversorgung ist 12 Volt DC 2.5 Ampere.

Leider tut sich gar nichts. Der Motor macht nicht den kleinsten Zucker, er wird nicht mal warm.

Was ist falsch - ich habe keine Ahnung - bin allerdings auf dem Gebiet der Elektronik sehr schwach.

Hier mein Schaltplan:

// Script PoStep25256       = das ist das momentane Script
const int ARDPIN11  = 11;           // the Arduino pin connected to the IDC Enable ( 1 ) auf PoStep25
const int ARDPIN09  = 9;            // the Arduino pin connected to the IDC Dir    ( 3 ) auf PoStep25
const int ARDPIN10  = 10;           // the Arduino pin connected to the IDC Step   ( 5 ) auf PoStep25

bool      connectionUp   = false;  // whether connection is up (true) or down (false)
int         moveCount      = 0;

void setup()
{
// put your setup code here, to run once:
pinMode(ARDPIN09,OUTPUT);
pinMode(ARDPIN10,OUTPUT);
pinMode(ARDPIN11,OUTPUT);

while(!Serial)
{
; // wait until port is connected, needed for native USB
}
Serial.begin(9600);

if(connectionUp == false)
{
Serial.println("connectionUp: false");
while (Serial.available() <= 0)
{
d

lay(1000);
}
}
else
{
Serial.println("connectionUp: true");
}
digitalWrite(ARDPIN11,LOW);
Serial.println("setup ended");
}

void loop()
{
    moveCount = moveCount +1;
    digitalWrite(ARDPIN11,HIGH);
    digitalWrite(ARDPIN10,HIGH);
    delay(200);
    Serial.println(moveCount); 
    Serial.print(" step moved. ");
}

An welcher Stelle wird ARDPIN09 bespaßt? Ohne STEP keine Schritte :wink:

Der Motor
ACT Nema 17 Schrittmotor 17HM5424 0.9° 2.4V 0.8A 48mm
ist mt dem Treiber kompatibel.

Das Datenblatt des Treibers gibt wenig her.

Die Einstellung 2A (auf Schaltplan) ist sicher falsch. Du mußt 0,5A einstellen, um den Motor nicht zu überhitzen.

Die Namensgebung der Pins ist suboptimal.

const int ARDPIN11  = 11;           // the Arduino pin connected to the IDC Enable ( 1 ) auf PoStep25
const int ARDPIN09  = 9;            // the Arduino pin connected to the IDC Dir    ( 3 ) auf PoStep25
const int ARDPIN10  = 10;           // the Arduino pin connected to the IDC Step   ( 5 ) auf PoStep25

Wennschon
pin_11_En, pin_09_Dir und pin_10_Step.

So weißt Du, was die Pins machen. Aber wo die Pins angeschlossen werden müssen, ist im Programm nicht wichtig. Das kannst Du in der Definiton als Kommentar schreiben und im Sketch nur Dir, Enable und Step.

Wie bereits geschrieben Du mußt eine Rechteckspannug an Step generieren um den Motor zu bewegen.
sowas wie

 digitalWrite(step,LOW);
 pause
 digitalWrite(step,HIGH);
 pause

Grüße Uwe

 while (!Serial)
  {
    ; // wait until port is connected, needed for native USB
  }
  Serial.begin(9600);

Was soll while (!Serial), vor Serial.begin, KI hat dir geholfen? Das ist unwirksam.
Bei UNO V3 brauch man das nicht.
Drücke mall in der IDE STRG +T,:wink:

Hmm... Ist enable High oder Low aktiv?

Seite 4

Grüße Uwe

Ist GND nur mit Pin 10 des IDC-Steckers verbunden?
Das klappt nur, wenn die Pins 2,4,6,8,10 auf der Platine untereinander verbunden sind.
Bitte das einmal durchmessen und ansonsten die Pins 2,4,6,8 ebenfalls mit GND verbinden.
(Zumindest interpretiere ich das DaBla so...)

Hallo derGeppi

danke für den Hinweis. Ich messe das mal durch.
Hab allerings gerade sehr wenig Ziet, da Meine Frau in Krankenhaus musste - Knieoperation.

Der richtige Anschluss ist aber nur die halbe Miete.

Daher auch die anderen Hinweise zur Einstellung der Stromstärke beachten und wie man im Sketch (a) den Treiber über den enable-Pin aktiviert (b) die Drehrichtung über den direction-Pin bestimmt und (c) über den step-Pin einen Puls ausgibt, damit ein Schritt gemacht wird.

Daher hier mal ein Minimal-Beispiel (Quelle: ein Schrittmotor-Tutorial), das einen Motor erst 5000 Schritte in eine Richtung machen lässt, dann eine Pause und dann nochmal 5000 Schritte in die andere Richtung, bevor es wieder von vorne los geht:

int Index;

const int ENA_PIN = 11;     // Enable     - IDC 1
const int DIR_PIN =  9;     // Direction  - IDC 3
const int STP_PIN = 10;     // Step/Pulse - IDC 5
  
void setup()
{
pinMode(ENA_PIN, OUTPUT); //Enable
pinMode(DIR_PIN, OUTPUT); //Direction
pinMode(STP_PIN, OUTPUT); //Step

digitalWrite(ENA_PIN,HIGH);    // Schrittmotor-Treiber aktivieren
}

void loop() {
  digitalWrite(DIR_PIN,HIGH);         // Drehrichtung vorwärts

  for(Index = 0; Index < 5000; Index++) {
    digitalWrite(STP_PIN,HIGH);
    delayMicroseconds(500);
    digitalWrite(STP_PIN,LOW);
    delayMicroseconds(500);
  }
  delay(1000);

  digitalWrite(DIR_PIN,LOW);          // Drehrichtung rückwärts

  for(Index = 0; Index < 5000; Index++) {
    digitalWrite(STP_PIN,HIGH);
    delayMicroseconds(500);
    digitalWrite(STP_PIN,LOW);
    delayMicroseconds(500);
  }
  delay(1000);
}

Wenn das funktioniert, kann man sich das Leben mit einer passenden Library noch leichter machen, was das Setzen von Geschwindigkeit, Beschleunigungs-Rampen und auszuführenden Schritten/zu fahrende Wege betrifft.

Hallo derGeppi,

Vielen Dank für den Hinweis. Als unerfahrener Mensch in Bezug auf Stepper Motoren ist das für mich sehr wichtig.

Ich habe inzwischen den Versuch, den PoStep25-256 zu nutzen aufgegeben und mich wieder dem L298N zugewandt.
Das tut aber auch (noch ) nicht.
Ich werde Dein Beispiel mal verwenden und einen neuen Versuch mit dem PoStep25-256 versuchen.
Übrigens: die IDC Pins 2, 4, 6, 8 und 10 sind miteinander verbunden und sind alle "Ground".
Es sollte also reichen, nur IDC Pin 10 mit Arduino Ground zu verbinden.

Das würde ich nicht machen. Der L298N hat keine Strombegrenzung, was deinem Motor ganz bestimmt nicht gut tut. Der ist tatsächlich besser in der Ansteuerung von zwei Gleichstrommotoren aufgehoben.

Nimm lieber einen "der üblichen verdächtigen" Schrittmotor-Treiber, die außer der Strombegrenzung die Schrittauflösungen on board einstellbar haben:

  • kleine Module z.B.: DRV8825 oder A4988
  • oder aus dem verlinkten Tutorial: TB6600 (etwas platzeinnehmend, aber dip-Schalter für Einstellungen und gut erreichbare Schraubanschlüsse)

Aber bleib doch erstmal bei deinem vorhandenen Treiber, der ist geeignet und funktioniert auch nicht viel anders als die anderen Treiber. ENA,DIR,STP werden bei allen gleich angesprochen, höchstens die HIGH/LOW - Logik kann vertauscht sein.

Hallo der Greppi

hier ein Bild von meiner Digitalisierungshardware zum Einzelbildscannen eines Super 8 Filmes mit einem Digitalmikroskop.

OK, ich nehme den L298N (links direkt neben dem Arduino Bord) zur Steuerung meines DC Wickelmotors (hinter der große Filmspule)
und den Postep25-256 (ganz vorne - wenn ich ihn ans Laufen kriege).

Stimmt nicht ganz.
Alleine schon und man kann ihn auch nicht mit so einer kleinen Motorspnnung betreiben, daß der genannte Motor Spannunggetrieben werden könnte. (min Motorspannung = 7V, Motornennspannung = 2,4V
In Verbindung mit einem L297 wird der L298 ein Stromtreiber.
Es funktioniert, aber wieso sollte man 50 Jahre alte Technologie verwenden?
Also wie vorgeschlagen DRV8825, A4988, TMC2209, auch Dein PoStep25-256.

Grüße Uwe

Habe mir bei Reichelt einen TB6600 bestellt, auch wenn der etwas mehr Platz braucht.
Ich hoffe, das war nicht falsch.

Hier nochmals meine Hardware. Der Schrittmotor soll pro Request ein Filmbild weiter transportieren um es dann mit dem Digitalmikroskop aufzunehmen und für die Videogenerierung abzuspeichern.

Auf dem Bild sind alle mir zur Zeit zur Verfügung stehende Schrittmotor Treiber (Trinamic, PoStep25-256 und L298N ) auf dem Bild. PoStep25-256 ist gerade eingeschaltet und mit dem Arduino verbunden. Es kommt dann demnächst noch der TB6600 dazu.

Gruß und bis jetzt herzlichen Dank für alle Beiträge

Wolfgang

Ich glaube in deinem Aufbau ist ein Denkfehler.
Wie willst du den festen Schrittwinkel den dein Schrittmotor macht exakt mit dem Bildabstand abgleichen?
Der Aufbau wird früher oder später eine Positionsverschiebung der Bilder unter dem Mikroskop ergeben.

Da wäre ein Getriebemotor (kein Schrittmotor) besser geeignet. Die Positionierung des Bildes müsste dann über die Perforation am Filmstreifen geschehen.

Wenn das Zahnrad für die Perforation pro Bild genau ein halbe oder ganze Umdrehung für ein Bild braucht, dürfte es auch mit dem Schrittmotor funktionieren.

Hat sich denke ich erledigt, ist zwar nicht gut erkennbar auf dem Bild, aber die direkt angetriebene Rolle hat wohl 16 pins am Umfang (sieht jedenfalls so aus), und zwischen jedem Bild ist eine Perforation, also sollte er mit 25 Schritten / Bild hinkommen.

Hallo volvodidi,

das hast Du auf dem Bild richtig erkannt (auch wenn es ein wenig undeutlich war):
Das Zahnrad hat 16 Zähnchen und jedes Zähnchen greift in ein Perforationloch ein.

Einen Getriebemotor habe ich anfangs auch in Betracht gezogen, aber da ereicht man die erforderliche Positionierungsgenauigkeit nicht und die Position wandert auch langsam in eine Richtung weg.
Beim Schrittmotor geht das deutlich viel besser, aber auch da gibt es kleine Ungenauigkeiten.
Mal ist das Bild zu weit oben mal zu weit unten (Positionierungsgenauigkeit ist 4 mm * 0.05)
d.h. die Positionsschwankung ist etwa +- 0.2 mm und das Bild wackelt um das Zentrum hin und her.
Da die Position durch das Transportloch bestimmt wird, scanne ich das Loch bei jedem Bild mit und schneide dann das Bild mittels der erfassten Tranportlochposition genau aus.
Das gibt eine sehr stabile Bildlage.

Hallo uwefeld und derGreppi

Mit dem übermittelten Scrippt spricht der Motor über den PoStep25-256 an, läuft aber ziemlich rauh und wechselt ab und zu unmotiviert die Richtung.
Man muss vermutlich noch mit der Stromstärke, der Spannumg und den Delays etwas herumexperimentieren.
Aber das wichtigste: er spricht auf die Signale an.

Gruß Wolfgang

Warum nicht eine Gabellichschranke nehmen impulse zählen gleichstrom Motor stoppen, mit Schritmotor wird das ungenaun wenn keine Referenz stattfindet

Mit der Stromstärke-Einstellung am Treiber hast du da wenig Spielraum, nach 0.5A kommt schon 1A, was eigentlich zu viel ist.
EDIT: gerade gesehen, es gibt dieses Model auch mit einem angegebenen Strom von 2.4A (bei Reichelt), eventuell hast du diesen? Edit2: obwohl das Datenblatt dort auch wieder 0.8A sagt... komisch...
Alle Kabel zum Schrittmotor stabil angeschlossen? Eventuell ein Fehler bei der Zuordnung A'-A / B'-B? gerne mal schwarz/grün bzw. rot/blau untereinander im ausgeschalteten Zustand (!) tauschen.
DIR-Kabel wackelt nicht?
Ja, zu kurze Delays (hohe Geschwindigkeiten) können sich auf das Drehverhalten des Schrittmotors auswirken.
Das Netzteil hat die Eingangs erwähnten 2.5A? Auf dem Bild sieht mir das nach 1.25A aus..., muss das noch den zweiten Motor mit versorgen? (Ich seh grad, der Stepper-Treiber wird von einem anderen Netzteil versorgt..)
Eventuell senken Halb- oder Viertelschritte (Einstellung am Treiber) statt ganze Schritte die Geräuschkulisse beim Fahren etwas (dementsprechend die zu machenden Schritte verdoppeln/vervierfachen).