Frage zu Arduino Library?

#3720649
Lesenswert?

Hallo, da ich einen neuen Schrittmotor mit 4096 Schritten pro Umdrehung 
schnell ausprobieren wollte habe ich auf die Schnelle ein Arduino Mega 
Board genommen um die fertien Progammteile zu verwenden.

stepper_One_Step_at_Time

der Lauf ist aber unerwartet ruppig.

Jetzt wollte ich mal zu den 4 Vollschritten die 4 Halbschritte 
hinzufügen, jemand eine Idee wo man das findet.

Habe eine Datei stepper.h .cpp ausfindig gemacht wo folgendes drinsteht
Step C0 C1 C2 C3
     1  1  0  1  0
     2  0  1  1  0
     3  0  1  0  1
     4  1  0  0  1
wird diese .h Datei überhaupt verwendet oder ist das eher eine 
Erklärung, spielen da noch andere Dateien rein.

Würde gerne die Schrittfolge so aussehen lassen

1010
1000
1001
0001
0101
0100
0110
0010

Habe mit dem Arduino noch nicht viel am Hut programmiere sonst die AVRs 
in .asm
Angehängte Dateien:
#3720664
Lesenswert?

Thomas O. schrieb:

> Jetzt wollte ich mal zu den 4 Vollschritten die 4 Halbschritte
> hinzufügen, jemand eine Idee wo man das findet.
>
> Habe eine Datei stepper.h .cpp ausfindig gemacht wo folgendes drinsteht
> Step C0 C1 C2 C3
>      1  1  0  1  0
>      2  0  1  1  0
>      3  0  1  0  1
>      4  1  0  0  1

Das ist aber doch ja wohl lediglich ein Kommentar. Das sollte man als 
Programmierer aber eigentlich schon erkennen können.

Die Schrittfolge ist in stepper.cpp in der Funktion
1
void Stepper::stepMotor(int thisStep)
2
...
ausprogrammiert.
Gast #3720670
Lesenswert?

In der .H Datei ist nur eine Erklärung als Kommentar. Ändern dort bringt 
gar nichts.
Die Implementierung ist in der .cpp Datei,
   void Stepper::stepMotor(int thisStep)
im Zusammenspiel mit
  void Stepper::step(int steps_to_move)

Dort sollte auf 8-Schritte und das Bitmuster geändert werden.
#3720676
Lesenswert?

Karl Heinz schrieb:

> Die Schrittfolge ist in stepper.cpp in der Funktion
>
1
> void Stepper::stepMotor(int thisStep)
2
> ...
3
>
> ausprogrammiert.


Auch musst du hier
1
void Stepper::step(int steps_to_move)
2
{  
3
....
4
      // step the motor to step number 0, 1, 2, or 3:
5
      stepMotor(this->step_number % 4);
6
...
eingreifen.

DAs ganze funktioniert offensichtlich so, dass die Klasse eine absolute 
Schrittnummer mitführt. Die Modulo Division errechnet daraus, welcher 
der 4 Motor-'Zustände' dieser absoluten Schrittnummer entspricht und die 
Funktion stepMotor stellt dann die für diesen Motor-'Zustand' 
notwendigen Ausgangspegel ein.
Wenn du die Halbschritte mit dazu nehmen willst, hast du dann 
logischerweise nicht mehr 4 unterschiedliche Zustände der 
Ausgangslsitungen sondern deren 8. Der Code muss darauf angepasst 
werden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren