Nema 17 Motor wackelt nur!

Hallo liebes Forum,
ich und zwei Freunde aus der Schule bauen als Schulprojekt einen Cocktailroboter.
dafür benutzen wir 3 NEMA 17 Motoren welche jeweils durch einen A4988 treiber angetrieben werden.
Jetzt habe ich einen Code geschrieben um die motoren zu testen. Leider wackelt jeder der derei Motoren nur herum und funktioniert nicht.
Als Netztteil habe ich ein Schulnetztteil welches bis zu 18 V und 5 A spenden kann.
Bitte helft mir.
Danke im Vorraus

Hallo,

ich würde jetzt mal tippen : Motor falsch angeschlossen.

mach mal ein Foto vom Aufbau und den Testsketch würden wir auch gerne sehen.

Heinz

Hier ist der Sketch.

sketch_dec14a.zip (3.65 KB)

benny001:
Hier ist der Sketch.

stell den mal hier ins Forum ein, das kannst Du in der IDE mit für´s Forum kopieren und dann einfügen machen.

zip´s will keiner so gerne öffenen

Heinz

char data;

int x1DIR = 2;
int x1STEP = 3;
int x2DIR = 4;
int x2STEP = 5;
int zDIR = 6;
int zSTEP = 7;

int stepsDo = 0;
bool dirDo = false;

int motorSpeed = 2500;
void setup() {
  stepsDo = 100;
  dirDo = false;
  xMOVE();
}

void loop() {
data = Serial.read(); 

if(data = 1) {
  
} 

if(data = 2) {
  
}

if(data = 3) {
  
}

if(data = 4) {
  
}

if(data = 5) {
  
}

if(data = 6) {
  
}

}


void xMOVE() {
  for(int stepsDone = 0; stepsDone<stepsDo; stepsDone++) {
    if(dirDo == false) {
      digitalWrite(x1STEP, HIGH);
      digitalWrite(x2STEP, HIGH);
      delayMicroseconds(motorSpeed);
      digitalWrite(x1STEP, LOW);
      digitalWrite(x2STEP, LOW);
      delayMicroseconds(motorSpeed);
    }
    else {  
      digitalWrite(x1DIR, HIGH);
      digitalWrite(x2DIR, HIGH);
      digitalWrite(x1STEP, HIGH);
      digitalWrite(x2STEP, HIGH);
      delayMicroseconds(motorSpeed);
      digitalWrite(x1STEP, LOW);
      digitalWrite(x2STEP, LOW);
      delayMicroseconds(motorSpeed);
    }
  }
}



void zMOVE() {
  for(int stepsDone = 0; stepsDone<stepsDo; stepsDone++) {
    if(dirDo == false) {
      digitalWrite(zSTEP, HIGH);
      digitalWrite(zSTEP, HIGH);
      delayMicroseconds(motorSpeed);
      digitalWrite(zSTEP, LOW);
      digitalWrite(zSTEP, LOW);
      delayMicroseconds(motorSpeed);
    }
    else {  
      digitalWrite(zDIR, HIGH);
      digitalWrite(zDIR, HIGH);
      digitalWrite(zSTEP, HIGH);
      digitalWrite(zSTEP, HIGH);
      delayMicroseconds(motorSpeed);
      digitalWrite(zSTEP, LOW);
      digitalWrite(zSTEP, LOW);
      delayMicroseconds(motorSpeed);
    }
  }
}

Ich muss 5 Minuten immer warten.

Hallo,

ich mach Euch jetzt mal einen Vorschlag. Benutzt eine vernünftige lib für Steppermotoren. Entweder die Mobatools oder accelStepper. Da kann man den passenden Treiber einstellen und die Beispiele laufen. Zudem hat das den Vorteil das Ihr auch mehrere Mototen gleichzeitig laufen lassen könnt.

Fangt mit einem Beispiel an nehmt erst mal nur einen Motor, damit Ihr das versteht und dann weiter step by step.

Heinz

Ok dankeschön, von der Spannung un den Ampere passt das aber oder also wenn maximal 2 gleichzeitig laufen?

benny001:
von der Spannung un den Ampere passt das aber oder also wenn maximal 2 gleichzeitig laufen?

Vermutlich schon. Aber um es genau zu sagen, müsste man euren Stepper kennen. Poste mal einen Link zu dem Motor, wo man die technischen Daten einsehen kann.
Und habt ihr den Strom am A4988 richtig eingestellet?

Hallo
@Franz-Peter gut das Du da bist , Du bist ja genau der richtige wenns dann ans Eingemachte geht :slight_smile:

Ob die Motoren nun laufen oder stehen ist fast egal , Strom ziehen die immer.

Im wesentlichen sollte der Sketch ja laufen , denke ich, aber Spass werded Ihr mit der Handmade Variante nicht bekommen. Ist allerdings gut geeignet um mal zu verstehen was da letztlich passiert.

Gruß Heinz

if(data = 1) {

}

Ich nehme mal an, das sollte eigentlich so aussehen:

if(data == '1') {
  
}

MicroBahner:
Und habt ihr den Strom am A4988 richtig eingestellet?

Was meinst du damit genau?

benny001:
Was meinst du damit genau?

Ob du den Treiber richtig eingestellt hast!

Tipp:
Darauf befindet sich ein Poti.
Das ist kein Zierrat.

Hallo,

suche mal nach dem Datenblatt für den Treiber, es handelt sich um einen Stromtreiber, Damit musst Du den Treiber auf den richtigen Motorstrom einstellen. Dazu gibts ein kleines Poti auf dem Treiber. Aber bitte nicht einfach drann rumdrehen.

@Franz Peter sind noch Grundlagen die kenne ich noch, muss mir auch mal einen richtigen Stepper zulegen damit ich mal uber das Nivou von dem kleinen 28ByJ rauskomme)

Heinz

gibt es da irgendeine eifnache anleitung?

Welche Motore habt ihr?

Nema17 ist die Größe des Lagerschildes und sagt gar nichts über die elektrischen Daten des Motors aus.

Netzteil xxV 5A müßte für einen Motor sicher reichen. wahrscheinlich auch für 2ten.

Anleitung:anleitung a4988 - Google Search

Grüße Uwe

Hallo,

google kaputt ?https://www.derpade.de/3d-drucker-a4988-motortreiber-stromstaerke-einstellen/

Kann man so etwas auch machen ohne dass mann so ein Messgerät hat?

Hallo,

naja wenn du die Spannung mit dem Figer messen kannst ja , Nein im Ernst ein Multimeter solltet Ihr schon haben wenn Ihr was bauen wollt. Die gibts aber doch schon für ein paar €.

Heinz

Beim Pololu-Treiber steht z.B. dabei, wie der Strom eingestellt wird. Leider verrätst Du uns weder was für elektrische Daten dein Motor hat, noch welches Treiber-Board Du verwendest. Beides ist aber wichtig für eine korrekte Einstellung des Stromes. Der Typ 'A4988' reicht zur Bestimmung nicht aus, man muss auch wissen, welche Strommesswiderstände verbaut sind.

P.S. Ohne ein Multimeter werdet ihr da nicht vernünftig weiterkommen.

Ok,
ich habe hier jetzt mal die Motoren und die treiber als Amazon link:

https://www.amazon.de/Longruner-Stepper-4-Führungen-Verbinder-Montagehalter/dp/B07FKLB6LY/ref=sr_1_18?__mk_de_DE=ÅMÅŽÕÑ&dchild=1&keywords=stepper+motor+set&qid=1601049481&sr=8-18

https://www.amazon.de/Longruner-Stepstick-Stepper-Driver-Printer/dp/B071P41ZBW/ref=sr_1_9?__mk_de_DE=ÅMÅŽÕÑ&crid=2Z9RZIN6XC740&dchild=1&keywords=stepper+motor+driver&qid=1608189817&sprefix=stepper+motor%2Caps%2C170&sr=8-9