Arduino Easydriver @ 2 Steps/sek.

Grüß euch!

Ich habe eine parallaktische Teleskop- Montierung mit einem Schrittmotor (4 pin) und dem Easydriver erweitert.

Die Übersetzung (Schnecke - Schneckenrad) gibt mir bei 1/8 Microsteps eine Schrittgeschwindigkeit von 2 Steps/Sek. vor.

Jedoch läuft das ganze sehr unrund. Bei genauerem Mitzählen und zuhören, werden 4 Schritte mit sinusförmiger Intensität ausgeführt:

  1. Schritt: schwach
  2. Schritt: stärker
  3. Schritt: schwächer
  4. Schritt: schwach

danach "pausiert" der Schrittmotor.

Meine Versuche bisher:

#define step_pin 2
#define dir_pin 3

int dir;
int steps = 100;

void setup() {
  pinMode(step_pin, OUTPUT);
  pinMode(dir_pin,OUTPUT);
  digitalWrite(dir_pin, LOW); 
}
void loop(){
  digitalWrite(step_pin,HIGH);
  delay(250);
  digitalWrite(step_pin,LOW);
  delay(250);
}

bzw. mit der AccelStepper Lib:

#include <AccelStepper.h>

AccelStepper stepper(1,2,3);


void setup(){
   stepper.setMaxSpeed(6000);
     stepper.setAcceleration(12000);
  stepper.setSpeed(2);
}
void loop(){
  stepper.runSpeed();
}

Durch die Pause die der Stepper macht, ist keine kontinuierliche Nachführung möglich.

Hat sich schon jemand mit "ultra low speed" stepping beschäftigt?

Viele Grüße
Ernst

Welche Version des EasyDrivers setzt Du ein? Bitte poste ein Bild mit der Verdrahtung. Deine Beschreibung tönt nach normalem Verhalten, aber vielleicht fehlt einfach in der Beschreibung das zeitliche Verhalten. Eine runde Bewegung kriegst Du mit diesem zeitlichen Abstand nicht hin. Willst Du 2 Steps/sec. (=16 Microsteps/sec.) oder 2 Microsteps/sec. erreichen?

Tendenziell würde ich Dir eine Untersetzung empfehlen, damit Du mehr Steps kriegst, die Du dann schneller ausführen kannst. Damit wird die Bewegung runder.

Als Infos brauchen wir auch noch Modell des Motors und die Versorungsspannung.
Grüße Uwe

Grüß euch,

erstmal vielen Dank für die Antworten.

betreibe den Motor im 1/8 Schrittbetrieb und benötige 2 Microsteps pro Sekunde.

Weitere Daten:
Easydriver Version 4.4
Angeschlossen habe ich:
GND - Arduino GND
+5V - Arduino +5V
MS1 - Pin6
MS2 - Pin7
M+ - Vin
Dir - Pin 3
Step - Pin 2

Stepper:

Bipolar, 12V, 0,33A/Phase, 1,8° Schrittwinkel

Versorgung: Schaltnetzteil, 12V, 2A an der Versorgungsbuchse vom Arduino.

Bei höheren Drehzahlen, also 1U/s bzw. 1600steps/sek. läuft alles rund.

Habe mir bereits selbst einen Motortreiber in Form einer H- Brücke gebaut und das Arduino Motorshield probiert - jedoch habe ich immer das selbe Verhalten bei solch geringen "Drehzahlen".

Gibt es keine Lib wie die AccelStepper o.Ä. die das ausgleichen kann?

Dann komme ich um eine andere Untersetzung nicht herum, was ich mir eigentlich sparen wollte, da der mechanische Aufwand damit deutlich steigt.

Viele Grüße
Ernst

Gibt es keine Lib wie die AccelStepper o.Ä. die das ausgleichen kann?

Nein, denn das ist kein software-technisches Problem, sondern die Hardware kann nicht mehr. Schau Dir mal die Wikipedia-Seite zu Schrittmotoren (Schrittmotor – Wikipedia) an, die Animation zeigt Dir, wie ganze Schritte funktionieren. Mikroschritte erhältst Du, wenn Du Zwischenschritte einbaust, wo jeweils zwei benachbarte Wicklungen gleichzeitig aktiv sind, aber z.T. mit unterschiedlicher Stärke angesteuert werden.
Den Motor so in einer Mikroschrittposition zu halten ist nur sehr schwer möglich. Eigentlich werden Mikroschritte nur benutzt, um sanft anzufahren und abzubremsen, den Motor in einer solchen Position zu halten verbraucht nur unnötig viel Strom und ist fast nie stabil.

Vor allem funktionieren microscritte nur gut wenn der Strom vom Driver geregelt wird und nicht von der Induktivität des Motors. Darum sollte die Versorgungsspannung des Motors mindestens 4 mal die Nennspannung sein.
Grüße Uwe

Vielen Dank für die Antworten!

Also muss ich mir etwas mechanisches einfallen lassen