Forum: Mikrocontroller und Digitale Elektronik Frage zu Arduino Library?


von Thomas (kosmos)


Angehängte Dateien:

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

: Bearbeitet durch User
von Karl H. (kbuchegg)


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.

von PittyJ (Gast)


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.

von Thomas (kosmos)


Lesenswert?

habe mal die .ccp mit Notepad++ geöffnet nun sehe ich klarer, weils 
damit strukturiert ist. Denke das ich hier ansetzten muss.

von Karl H. (kbuchegg)


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.

von Thomas (kosmos)


Lesenswert?

so hat sich überschnitten, danke bin jetzt auch darauf gekommen und 
werde in kürze die abgeänderte Datei bereitstellen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.