Probleme bei Stepper Motoren

Hallo ,

Ich versuche jetzt schon seit mehreren Tagen meine Motoren zum laufen zu bringen, die wollen aber einfach nicht.

Jetzt hoffe Ich auf diesem Wege zum erfolg zu kommen.

Folgende Situation:

Ich baue einen 2D Plotter. Dieser besitzt drei Motoren. Einen Servo Motor und zwei Nema Stepper Motoren.

Steuer möchte Ich das ganze über einen Arduino UNO und ein CNC Shield.

Über die Arduino IDE kann ich den Servomotor ansteuern. Wenn Ich das Kommando "m3 s90" eingebe fährt er hoch und bei "m5" fährt er runter... soweit so gut.

Eigentlich müsste ich ja dann mit dem Kommando "G1 X100 F2000" den X-Achsen Motor dazu bringen, dass er sich 100mm bewegt. Außer ein paar komischen zucklauten passiert aber nichts...

Gepowert hab ich das ganze mit einem 12V/2A Adapter...

Beim ausprobieren ist mir aufgefallen, dass die Kühlrippen auf dem CNC Shield extrem heiß geworden sind und es so leicht angekokelt gerochen hat...

Meine aktuellen Einstellungen in der Software:

$0 = 10 (Step pulse time, microseconds)

$1 = 25 (Step idle delay, milliseconds)

$2 = 0 (Step pulse invert, mask)

$3 = 0 (Step direction invert, mask)

$4 = 0 (Invert step enable pin, boolean)

$5 = 0 (Invert limit pins, boolean)

$6 = 0 (Invert probe pin, boolean)

$10 = 1 (Status report options, mask)

$12 = 0.002 (Arc tolerance, millimeters)

$11 = 0.000 (Junction deviation, millimeters)

$13 = 0 (Report in inches, boolean)

$20 = 0 (Soft limits enable, boolean)

$21 = 0 (Hard limits enable, boolean)

$22 = 0 (Homing cycle enable, boolean)

$23 = 0 (Homing direction invert, mask)

$24 = 25.000 (Homing locate feed rate, mm/min)

$25 = 500.000 (Homing search seek rate, mm/min)

$26 = 250 (Homing switch debounce delay, milliseconds)

$30 = 1000 (Maximum spindle speed, RPM)

$27 = 1.000 (Homing switch pull-off distance, millimeters)

$31 = 0 (Minimum spindle speed, RPM)

$32 = 0 (Laser-mode enable, boolean)

$100 = 0.000 (X-axis travel resolution, step/mm)

$101 = 250.000 (Y-axis travel resolution, step/mm)

$110 = 500.000 (X-axis maximum rate, mm/min)

$102 = 250.000 (Z-axis travel resolution, step/mm)

$111 = 500.000 (Y-axis maximum rate, mm/min)

$112 = 500.000 (Z-axis maximum rate, mm/min)

$120 = 10.000 (X-axis acceleration, mm/sec^2)

$121 = 10.013 (Y-axis acceleration, mm/sec^2)

$122 = 9.956 (Z-axis acceleration, mm/sec^2)

$131 = 200.000 (Y-axis maximum travel, millimeters)

$130 = 200.000 (X-axis maximum travel, millimeters)

$132 = 200.000 (Z-axis maximum travel, millimeters)

Woran kann es liegen, dass sich die Motoren nicht bewegen?

Ich freu mich auf euere Antworten!

Liebe Grüße

Johannes (Korsar)

Wie soll das jemand ohne Sketch, ohne Schaltbild und ohne Daten der Motoren und den Link zum CNC-Shield (es gibt mehrere) beantworten können?

Wenn Du diese Infos nach reichst, könnte sich jemand finden.

Gruß Tommy

Alles klar, werd ich asap nachreichen :wink:

Hallo
Schrittmotoren laufen oft Strom-geregelt, dazu muss man den Treiber dann richtig einstellen.

Also Daten der Motoren Spannung ,Strom
Treiber Anleitung zum Einstellen der Strombegrenzung beachten.

Motoren einzeln mit einem Beispiel Sketch testen , am besten ausgebaut damit sie drehen können.

Wen du Pech hast ist das Shield hinüber, nur ohne zu wissen was benutzt wird ist ist das schwer zu sagen

Servo oder Schrittmotor?

Servo

Sooo hier ein bisschen genauer:

Angehängt sind die Spezifikationen des Motors und ein Schaltplan.


Mit folgendem Code habe ich es getestet:


// CNC Shield Stepper  Control Demo
// Superb Tech
// www.youtube.com/superbtech

const int StepX = 2;
const int DirX = 5;
const int StepY = 3;
const int DirY = 6;
const int StepZ = 4;
const int DirZ = 7;


void setup() {
  pinMode(StepX,OUTPUT);
  pinMode(DirX,OUTPUT);
  pinMode(StepY,OUTPUT);
  pinMode(DirY,OUTPUT);
  pinMode(StepZ,OUTPUT);
  pinMode( DirZ,OUTPUT);

}

void loop() {
 digitalWrite(DirX, HIGH); // set direction, HIGH for clockwise, LOW for anticlockwise
 digitalWrite(DirY, HIGH);
 digitalWrite(DirZ, HIGH);
 
 for(int x = 0; x<200; x++) { // loop for 200 steps
  digitalWrite(StepX,HIGH);
  delayMicroseconds(500);
  digitalWrite(StepX,LOW); 
  delayMicroseconds(500);
 }
delay(1000); // delay for 1 second

for(int x = 0; x<200; x++) { // loop for 200 steps
  digitalWrite(StepY,HIGH);
  delayMicroseconds(500);
  digitalWrite(StepY,LOW); 
  delayMicroseconds(500);
 }
delay(1000); // delay for 1 second

for(int x = 0; x<200; x++) { // loop for 200 steps
  digitalWrite(StepZ,HIGH);
  delayMicroseconds(500);
  digitalWrite(StepZ,LOW); 
  delayMicroseconds(500);
 }
delay(1000); // delay for 1 second

}

Und hier noch der Link zu dem CNC Schild welches ich benutze:

Kannst du mir erklären bzw. eine hilfreiche Internetseite o.Ä. zeigen, wie ich den
Treiber richtig einstellen kann?

Ich hab es genauso versucht wie du beschrieben hast, ich hab die Motoren ausgebaut und mit dem
unteren Sketch getestet.

Wurden der Treiber für die Schrittmotoren eingestellt?
Wie das geht steht dort
Alles über Schrittmotor-Treiber.
Ohne Einstellung kann passieren das der Motor oder Treiber flöten geht.

Sooo ich melde mich nochmal...
Mein Problem ist irgendwie leider immer noch nicht gelöst :confused:
Folgenden Stand habe Ich gerade:

Mit folgender Formel habe Ich Vref ausgerechnet:
(Alles über Schrittmotor-Treiber):

Vref = 1,5A (siehe Motor Datenblatt) * 8 * 0,1 = 1,2

Diesen Wert habe Ich beim Potentiometer eingestellt.

Dann gebe Ich folgenden Befehl in der Arduino IDE ein um den Motor zu testen:
G1 X100 F2000

Allerdings macht der Motor nur Ping Geräusche...

Woran kann das liegen?
LG
Korsar

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.