INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Schrittmotoren bewegen mithilfe eines Joysticks
08.12.2019, 12:31 (Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2019 12:34 von schaarva.)
Beitrag #1
Schrittmotoren bewegen mithilfe eines Joysticks
Hallo alle zusammen,

ich habe ein Problem:

Mein Programm soll bewirken, dass ich mit einem Joystick zwei Schrittmotoren steuern kann, aber irgendwas klappt nicht. Kann da jemand vielleicht mal darüberschauen?
Meine Idee:
1. Zuerst wird einmal gemessen. (ValueJOYQAlt und ValueJOYHAlt)
2. Anschließend wird nach einer kurzen Zeit ein zweites Mal gemessen. (ValueJOYQNeu und ValueJOYHNeu)
3. Aus diesen zwei Werten wird die Differenz gebildet und daraus der Betrag errechnet. (ValueJOYQDiff und ValueJOYHDiff)
4. Danach wird geprüft, in welche Richtung der Joystick bewegt wurde.
5. Zum Schluss werden die Schrittmotoren angesprochen und bewegt.
Mein Code:
Code:
#include <Stepper.h>

//Joystick (Quer-/Höhenruder)
#define JOYQ A1
#define JOYH A2
#define JOYB A3//Button
#define INTERVALL 500

//Stepper
#define STEPS_PER_REVOLUTION 360 //1x Umdrehung = 360°
#define STEPPER_SPEED 10

//Stepper - Querruder
#define STEPPERQ_PIN1 1
#define STEPPERQ_PIN2 2
#define STEPPERQ_PIN3 3
#define STEPPERQ_PIN4 4

//Stepper - Höhenruder
#define STEPPERH_PIN1 5
#define STEPPERH_PIN2 6
#define STEPPERH_PIN3 7
#define STEPPERH_PIN4 8

//Stepper erstellen
Stepper StepperQ(STEPS_PER_REVOLUTION, STEPPERQ_PIN1, STEPPERQ_PIN2, STEPPERQ_PIN3, STEPPERQ_PIN4);
Stepper StepperH(STEPS_PER_REVOLUTION, STEPPERH_PIN1, STEPPERH_PIN2, STEPPERH_PIN3, STEPPERH_PIN4);

int ValueJOYQAlt;
int ValueJOYHAlt;
int ValueJOYQNeu;
int ValueJOYHNeu;
int ValueJOYQDiff;
int ValueJOYHDiff;

void setup() {
  StepperQ.setSpeed(STEPPER_SPEED);
  StepperH.setSpeed(STEPPER_SPEED);

  pinMode(JOYQ, INPUT);
  pinMode(JOYH, INPUT);
}

void loop() {

  //1.
  ValueJOYQAlt = map (analogRead(JOYQ), 0, 1023, 0, STEPS_PER_REVOLUTION);
  ValueJOYHAlt = map (analogRead(JOYH), 0, 1023, 0, STEPS_PER_REVOLUTION);
  delay(INTERVALL);

  //2.
  ValueJOYQNeu = map (analogRead(JOYQ), 0, 1023, 0, STEPS_PER_REVOLUTION);
  ValueJOYHNeu = map (analogRead(JOYH), 0, 1023, 0, STEPS_PER_REVOLUTION);

  //3.
  ValueJOYQDiff = ValueJOYQAlt - ValueJOYQNeu;
  ValueJOYHDiff = ValueJOYHAlt - ValueJOYHNeu;

  if (ValueJOYQDiff < 0) {
    ValueJOYQDiff = ValueJOYQDiff * -1;
  }
  if (ValueJOYHDiff < 0) {
    ValueJOYHDiff = ValueJOYHDiff * -1;
  }

  //4. und 5.
  if (ValueJOYQNeu <= 180) {
    StepperQ.step(ValueJOYQDiff);
  }
  else {
    StepperQ.step(-ValueJOYQDiff);
  }

  if (ValueJOYHNeu <= 180) {
    StepperQ.step(ValueJOYHDiff);
  }
  else {
    StepperQ.step(-ValueJOYHDiff);
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2019, 13:46
Beitrag #2
RE: Schrittmotoren bewegen mithilfe eines Joysticks
So wie Du das geplant hast, dürfte das eine ziemlich ruckelige Angelegenheit werden, da alles blockierend abläuft. Was soll es denn werden, d.h. was willst Du damit letztendlich steuern? Und was funktioniert jetzt nicht so, wie Du dir das vorstellst? 'Irgendwas klappt nicht' ist eine sehr nichtssagende Fehlerbeschreibung.

Was mir schonmal auffällt, dass Du am Ende vom loop in beiden Fällen ( H/Q ) den gleiuchen Motor ansteuerst. Das ist sicher nicht so gewollt, und dürfte ein Copy/Paste Fehler sein Wink

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2019, 14:04 (Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2019 14:10 von schaarva.)
Beitrag #3
RE: Schrittmotoren bewegen mithilfe eines Joysticks
(08.12.2019 13:46)MicroBahner schrieb:  So wie Du das geplant hast, dürfte das eine ziemlich ruckelige Angelegenheit werden, da alles blockierend abläuft. Was soll es denn werden, d.h. was willst Du damit letztendlich steuern? Und was funktioniert jetzt nicht so, wie Du dir das vorstellst? 'Irgendwas klappt nicht' ist eine sehr nichtssagende Fehlerbeschreibung.

Was mir schonmal auffällt, dass Du am Ende vom loop in beiden Fällen ( H/Q ) den gleiuchen Motor ansteuerst. Das ist sicher nicht so gewollt, und dürfte ein Copy/Paste Fehler sein Wink

Oh, stimmt. Das in der loop habe ich übersehen. Außerdem ruckeln die Schrittmotoren nur ein bisschen herum und bewegen sich aber nicht. Gibt es denn eine bessere Möglichkeit, um Schrittmotoren mithilfe eines Joysticks auszurichten? Am Ende soll das, wenn es irgendwann mal fertig wird Smile, ein mit einem Joystick bewegbares Modellflugzeug werden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2019, 14:46
Beitrag #4
RE: Schrittmotoren bewegen mithilfe eines Joysticks
(08.12.2019 14:04)schaarva schrieb:  .....
Am Ende soll das, wenn es irgendwann mal fertig wird Smile, ein mit einem Joystick bewegbares Modellflugzeug werden.

Ich bin zwar nicht der Modellflug-Experte, aber aus meiner Sicht sind da Steppermotoren die falsche Wahl.
Was genau sollen die Steppermotoren in deinem Modell erledigen ?

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2019, 14:51 (Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2019 14:54 von schaarva.)
Beitrag #5
RE: Schrittmotoren bewegen mithilfe eines Joysticks
(08.12.2019 14:46)hotsystems schrieb:  
(08.12.2019 14:04)schaarva schrieb:  .....
Am Ende soll das, wenn es irgendwann mal fertig wird Smile, ein mit einem Joystick bewegbares Modellflugzeug werden.

Ich bin zwar nicht der Modellflug-Experte, aber aus meiner Sicht sind da Steppermotoren die falsche Wahl.
Was genau sollen die Steppermotoren in deinem Modell erledigen ?

Die Schrittmotoren sollen Teile des Modellflugzeuges bewegen. Die Standard-Servomotoren haben zu wenig Kraft, also habe ich es mit Schrittmotoren probiert, die ich noch zu Hause habe. Außerdem soll das Modellflugzeug nicht fliegen, sondern nur "Deko" sein.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2019, 15:01
Beitrag #6
RE: Schrittmotoren bewegen mithilfe eines Joysticks
(08.12.2019 14:51)schaarva schrieb:  Die Schrittmotoren sollen Teile des Modellflugzeuges bewegen. Die Standard-Servomotoren haben zu wenig Kraft, also habe ich es mit Schrittmotoren probiert, die ich noch zu Hause habe. Außerdem soll das Modellflugzeug nicht fliegen, sondern nur "Deko" sein.

Naja....da wären für mich schon die Servos die "Erste Wahl".
Immerhin fliegen damit auch große Modelle.

Also dass die nicht genug kraft haben, kann ich nicht glauben.
OK...die für ca. 1€ o.ä. reichen da nicht.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2019, 15:04 (Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2019 15:07 von MicroBahner.)
Beitrag #7
RE: Schrittmotoren bewegen mithilfe eines Joysticks
(08.12.2019 14:51)schaarva schrieb:  Die Standard-Servomotoren haben zu wenig Kraft,
Naja, das hängt ja wohl sehr vom verwendeten Servo ( und der Stromversorgung! ) ab. Da gibt es durchaus auch sehr kräftige.
Ich denke auch, dass für die Anwendung Schrittmotore nicht die richtige Wahl sind. Die brauchen immer erst eine Referenzfahrt, damit Du weist, wo die überhaupt stehen. Im Gegensatz zum Servomotor hat der Stepper keine integrierte Positionsrückmeldung.

(08.12.2019 14:51)schaarva schrieb:  Außerdem soll das Modellflugzeug nicht fliegen, sondern nur "Deko" sein.
Wie schwer sind denn da die Teile, die bewegt werden sollen, dass das ein Standard-Servo nicht schafft?

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.12.2019, 15:07
Beitrag #8
RE: Schrittmotoren bewegen mithilfe eines Joysticks
(08.12.2019 15:04)MicroBahner schrieb:  
(08.12.2019 14:51)schaarva schrieb:  Die Standard-Servomotoren haben zu wenig Kraft,
Naja, das hängt ja wohl sehr vom verwendeten Servo ( und der Stromversorgung! ) ab. Da gibt es durchaus auch sehr kräftige.
Ich denke auch, dass für die Anwendung Schrittmotore nicht die richtige Wahl sind. Die brauchen immer erst eine Referenzfahrt, damit Du weist, wo die überhaupt stehen. Im Gegensatz zum Servomotor hat der Stepper keine integrierte Positionsrückmeldung.

Auch wenn ich nach den Empfehlungen wahrscheinlich auf Servos umsteigen werde... Hat jemand trotzdem eine Idee, wie ich dass mit den Schrittmotoren hätte realisieren können?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Weiterverwendung eines Meßwertes juergen001 6 236 20.09.2020 11:24
Letzter Beitrag: juergen001
  Hochladen eines Sketches funktioniert nicht otti123 29 2.600 05.09.2020 15:33
Letzter Beitrag: hotsystems
  String, char - und wie die Trennung eines Inputs vornehmen rev.antun 1 502 11.05.2020 20:01
Letzter Beitrag: Tommy56
  Programmieren eines ATTiny 2313 Gerdchen03 33 2.822 16.01.2020 20:27
Letzter Beitrag: hotsystems
  Umwandlung eines Strings in ein time_t-Objekt jalu4601 1 548 02.01.2020 10:56
Letzter Beitrag: RolandF
  Den Wert eines PWM Pins auslesen - was mache ich falsch? Gelegenheitsbastler 8 1.433 25.11.2019 10:49
Letzter Beitrag: MicroBahner
  Servo in einem Bereich bewegen koksi_92 5 1.198 08.10.2019 11:28
Letzter Beitrag: MicroBahner
Lightbulb Abspielen einer Sounddatei durch Aktivierung eines Bewegungsmelders FeLu 6 1.239 03.09.2019 20:45
Letzter Beitrag: hotsystems
  Programmierung eines MIDI-Controllers Schraubfix 17 3.028 25.02.2019 12:24
Letzter Beitrag: Tommy56
  Programmierung eines Arduino Uno mit Motorshield Lancair4 8 1.792 24.02.2019 09:49
Letzter Beitrag: Lancair4

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste