Go Down

Topic: [gelöst] MoBaTools, A4988, keine Schrittausgabe (Read 99 times) previous topic - next topic

postmaster-ino

Aug 25, 2019, 12:03 pm Last Edit: Aug 25, 2019, 05:01 pm by postmaster-ino
Hi

Versuche mit gerade dabei, meinen unbekannten Mini-Steppern etwas Kraft rauszukitzeln.
Der anfängliche Test (Mini-Stepper per Widerstand direkt am Nano) und mit Angabe der Coil-Pins verlief gut - etwas schwach der Stepper, dreht aber, wie Er soll.
Nun wollte ich das Ganze auf den A4988 umbauen - einzig der Mode und die Erstellung des Stepper sollten hier unterschiedlich sein.
Code: [Select]
//Stepper4 Step1(40, HALFSTEP);
Stepper4 Step1(40, A4988);
...
  //Step1.attach( 7, 8, 9, 10 ); // Anschluß an Coil A, Coil B, Coil A, Coil B      z.B. 48BYJ-28 bei FULL/HALFSTEP
  Step1.attach(8, 7 );

Nichts passiert.
Mit
Code: [Select]
  while(1){
    digitalWrite(8,!digitalRead(8));
    delay(100);
  }

zuckelt der Motor 'rechts herum'.

In den MoBaTools die Debug-Meldungen aktiviert:
Code: [Select]

Attach4988, S=8, D=7
11:55:54.982 -> rampLen-new=0, ramplenParam=0
11:55:54.982 -> actRampLen=0, cXr-new=266, xCr-old=0
11:55:55.012 -> RampValues:, Spd=3000, rmpLen=0, tcyc=16, trest=133, acyc=20000
11:55:55.042 ->    - State=STOPPED, Rampsteps=0
11:55:55.073 -> attach: output=8, attachOK=1
11:55:55.103 -> rampLen-new=0, ramplenParam=65535
11:55:55.103 -> actRampLen=0, cXr-new=120, xCr-old=266
11:55:55.163 -> RampValues:, Spd=6666, rmpLen=0, tcyc=7, trest=100, acyc=20000
11:55:55.194 ->    - State=STOPPED, Rampsteps=0
11:55:55.224 -> rampLen-new=72, ramplenParam=72
11:55:55.254 -> actRampLen=72, cXr-new=660, xCr-old=120
11:55:55.254 -> RampValues:, Spd=6666, rmpLen=72, tcyc=7, trest=100, acyc=20000
11:55:55.315 ->    - State=STOPPED, Rampsteps=0

- State=STOPPED lese ich auch - aber warum oder anders - wie bekomme ich Da was 'augenfreundlicheres' hin?
Code: [Select]
/*  Demo zum Anschluß eines unipolaren Stepmotors 28BYJ-48
    Der Schrittmotor folgt den Bewegungen eines Potentiometer
*/
#include <MobaTools.h>
//Mini-Stepper aka eBay 352673071758
//hat Steps/U 40 HalfSteps
//10 u/sek (6000 10tel U pro Min) klappt noch :) bei 185 Ohm Serienwiderstand
//Rampe 20 Steps lang klappt noch, bei 'Mehr' sieht man aber 'mehr'
//Stepper stupide per Vorwiderstand 370 Ohm an 7 und 8, 9 und 10 per Drahtrücke
//(2x 370 Ohm parallal überlebt der Nano auch direkt)
//Coil A 7-9, Coil B 8-10
//hat aber nahezu NULL Kraft :) (Spulenwiderstand ~200 Ohm)
//  Stepper4 Step1(40);           // 40 HALFSTEP pro Umdrehung
//  Step1.attach( 7, 8, 9, 10 ); // Coil A, Coil B, Coil A, Coil B
//  Step1.setSpeed( 7200 );      // :10=r/Min :600=r/Sek
//  Step1.setRampLen(40);       // 40=1 Umdrehungen
//nur der nakte Stepper, ohne irgendwas als Abtrieb/Zeiger/o.Ä.
//bei setSpeed 7200 gab's Schrittverluste - Zahnrad 'lag an Papier an', damit man 'was hört'

//Stepper4 Step1(40, HALFSTEP);          // Schritte/Umdrehung, HALFSTEP ist default, wenn weg gelassen, Möglich auch FULLSTEP
Stepper4 Step1(40, A4988);          // A4988 für Takt+Richtung
const uint32_t diff = 2000;             //alle x ms die Soll-Position erhöhen

void setup() {
  Serial.begin(9600);
  //Step1.attach( 7, 8, 9, 10 ); // Anschluß an Coil A, Coil B, Coil A, Coil B      z.B. 48BYJ-28 bei FULL/HALFSTEP
  Step1.attach(8, 7 );
  Step1.setSpeed( 10000 );      // = in x10 U/Min
  Step1.setRampLen(72);       // Beschleunigung (120=3 Umdrehungen a 40)
}

void loop() {
  static uint32_t altmillis = millis() - diff;
  static int32_t winkel = 0;
  if (millis() - altmillis >= diff) {
    altmillis += diff;
    boolean lf = false;
    if (Step1.stepsToDo() == 0) {
      lf = true;
      winkel += 7200;
      Serial.print("Ziel:");
      Serial.print(winkel);
      Step1.write(winkel);               // Bewegung
      Serial.print(" ist:");
    } else {
      Serial.print('.');
    }
    long ziel = Step1.read();
    Serial.print(ziel);
    if (lf) Serial.println();
  }
}
 

Bei mir wird eine Warnung geworfen, da der Debug-Puffer nicht benutzt wird
(E:\Arduino\sketchbook\libraries\MobaTools\src/MotoDbg.h:165:17: warning: 'dbgBuf' defined but not used [-Wunused-variable])
In der MoToDbg.h wurden die zwei Zeilen aktiviert:
Code: [Select]

#define debugTP
#define debugPrint

Welche die obere Ausgabe bringen.

Wer weiß Rat?

MfG

*Edit*
Die zwei fehlenden Klammern am Ende ergänzt - kA, wo Die geblieben waren
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

MicroBahner

Hallo,
also wenn ich meinen kleinen Stepper ( hat auch 40 Steps/Umdr. ) an meine TestHW mit A4988 anschließe, und deinen Sketch aufspiele ( + die 2 fehlenden Klammern am Ende  ;)  ) rumpelt der sofort los.
Die einzige Änderung waren die beiden Pins im attach ( sind bei mir 6+5 ), sonst keinerlei Änderungen.
Gruß, Franz-Peter

MicroBahner

#2
Aug 25, 2019, 02:31 pm Last Edit: Aug 25, 2019, 02:34 pm by MicroBahner
Hallo,
noch ein kleiner Hinweis zu den debug-Optionen. Grundsätzlich benutze ich die beim Testen der Internas. Es ist aber nicht unbedingt gesagt, dass die in einer Release noch sicher funktionieren. Da können dann schonmal Änderungen drin sein, wo ich sie nicht gebraucht habe, was dann evtl. zu Fehlern führt wenn man sie aktiviert. Die sind also schon als reine Entwickleroptionen gedacht. Wer sie aktiviert, tut das auf eigene Gefahr, und muss mit allem rechnen  ;)   :smiley-twist:  :smiley-mr-green:

Wird debugTP aktiviert, werden Pins für die Analyse mit Oszi und Logik-Analyser aktiviert. Wenn man die zufällig im Sketch auch benutzt, kommt es zu Konflikten.
Gruß, Franz-Peter

postmaster-ino

Hi

Ich bin verwirrt.
Vorweg - Es klappt.
Warum? kA!
Hatte unter Anderem den hier von mir kopierten Sketch als neuen Sketch aufgespielt, bekam als Status - State=RAMPACCEL, Rampsteps=0
statt stopped.
Kommt bei dem anderen Fenster jetzt allerdings auch raus - nur zuckt hier Nichts.

Per VOR-Schleife konnte ich den Motor vor/zurück drehen, somit schien der Anschluss korrekt.

Unterm Strich scheint's floatende Pins gewesen zu sein.
Entgegen meinem Verständnis, daß die Pins MS1-MS3 offen LOW sind (Zitat: These three microstep selection pins are pulled LOW by internal pull-down resistors, so if we leave them disconnected, the motor will operate in full step mode. Quelle), surrte der Stepper los, sobald ich die Pins aktiv belegte.
Zwischendrin hatte ich noch Kommunikationsprobleme mit meinem Oszi - aus dem Nano wollten nur 0,5V raus kommen ... nachdem die Mess-Spitzen wieder auf 1:1 gestellt waren, kamen 4,7V

Der Anschluss ist korrekt, da per FOR-Schleife vorwärts/rückwärts verdreht werden kann.
Code: [Select]

void setup() {
  Serial.begin(9600);
  pinMode(7,OUTPUT);
  pinMode(8,OUTPUT);
  digitalWrite(7, HIGH);
  for (byte t = 0; t < 200; t++) {
    digitalWrite(8, !digitalRead(8));
    delay(50);
  }
  digitalWrite(7, LOW);
  for (byte t = 0; t < 200; t++) {
    digitalWrite(8, !digitalRead(8));
    delay(50);
  }
...

Auch hatte ich, nachdem Mal was lief, das Problem, daß meine eingestellten Steps/Umdrehung bei 360° keine ganze Umdrehung ergaben ... Mikro-Stepping muß ebenfalls fest verdrahtet sein und sollte, wenn man HalbSteps einträgt, auch auf Halbsteps stehen ...

So, bis zur Antwort war's ein langer Weg - zwischenzeitlich Besuch gehabt und bei Abfahrt Servo-Öl verloren ... Straße wieder halbwegs sauber ...

So: Läuft
Denke, zuvor hatte ich Kontakt-Probleme bzw. keine wirklichen PullDown am A4988 bei MS1, MS2, MS3, EN

Danke für's Gegentesten!

MfG

PS: Das mit der Oszi-Messung hatte ich auch gelesen, wenn mir die Pin-Nummern noch nicht unter kamen - danke für die Warnung und die Debug-Option wird gleich auch wieder daktiviert - fiel halt drüber und dachte mir ... 'schadet wohl weniger, als Es nutzt'.
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

MicroBahner

Gut. ich hatte den A4988 auch gleich auf Halfstep stehen. Mein kleiner Stepper hätte das Tempo in Fullstep auch nicht mitgemacht. Allerdings lasse ich die Mx Pins, die LOW sein sollen, auch einfach offen. Da hatte ich noch keine Probleme.
Hauptsache es funktioniert jetzt  8)
Gruß, Franz-Peter

postmaster-ino

Hi

Schadet ja nicht, wenn Einer Mal aufzeigt,wo man überall anecken kann ... ok, hätte Da jetzt auch drauf verzichten können oder eine rein lesende Durcharbeitung wäre mir auch nicht ungelegen gekommen ;)

Aber, so wie Du schreibst: Hautsache, Es funktioniert jetzt und Alle Anderen können aus meinen Fehlern Ihre Schlüsse ziehen.

Wobei mich das Verhalten meiner Mx-Pins schon arg wundert - aber wofür schickte mir der fC dutzende Dupont-Strippen, wenn Die Keiner verbauen will ... ;)

Bis zum neuen Problem verbleibe ich,
MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

Go Up