RE: Arduino MobaTools: V2.3.1 released

#651 von Domapi , 14.04.2023 20:34

Den Kondensator kannst du getrost weg lassen.
Ebenso kann man R3 weglassen und dafür R4 = 1,2 kOhm verwenden.

Weiterhin können R1 und R2 entfallen. Statt dem R2 muss dann allerdings der Pullup-Widerstand für den Arduino-Pin aktiviert werden.


Viele Grüße
Martin

- Mein Trennungsbahnhof: viewtopic.php?f=64&t=152275
- Drehscheibensteuerung auf Arduinobasis "LocoTurn": https://wiki.mobaledlib.de/anleitungen/b...v10/150_inhalte


Ritschie hat sich bedankt!
 
Domapi
CityNightLine (CNL)
Beiträge: 1.633
Registriert am: 22.09.2015
Ort: Nämberch
Gleise Ohne Pickel
Spurweite H0
Steuerung Mit Hirn und Verstand
Stromart DC, Digital


Arduino MobaTools: V2.5.0 Beta

#652 von MicroBahner , 14.08.2023 22:15

Hallo an die Freunde der MobaTools,
derzeit entwickle ich eine neue Version der MobaTools. Folgendes sind die neuen 'Features' :

  • Der ATmega 4809 ( Nano Every, UNO WiFi Rev2 ) wird nun unterstützt.
  • Der ESP32 Core V2.x konnte nicht verwendet werden, da es zu Kompilierfehlern kam. Das sollte beseitigt sein.
  • Beim Stepper darf nun auch die Geschwindigkeit auf 0 gesetzt werden ( .setSpeedSteps(0); ). Der Stepper fährt mit Rampe bis zum Stillstand. Wenn entsprechend konfiguriert, wird er auch abgeschaltet. Die derzeit aktive Zielposition geht aber nicht verloren. Wird die Geschwindigkeit wieder heraufgesetzt, wird die Fahrt dorthin fortgesetzt. Das Ziel darf auch während des Stillstands geändert werden.
  • Beim Lesen der aktuellen Steprate ( .getSpeedSteps(); ) wird über ein Vorzeichen auch die Drehrichtung übermittelt. Bisher war das Ergebnis vorzeichenlos.
  • Auch unipolare Stepper (4-Pins) können nun per attachEnable im Stillstand abgeschaltet werden. Ein eigener EnablePin ist nicht erforderlich, es werden einfach alle 4 Ausgänge abgeschaltet (LOW). Das funktioniert auch, wenn die Stepper über SPI/Schieberegister angesteuert werden.
  • Bei den Servos gibt es eine neue Methode um die Geschwindigkeit festzulegen. Mit .setSpeedTime( time ); wird die Zeit (in ms) vorgegeben, die das Servo benötigt, um sich von 0° auf 180° zu bewegen.

Die Doku ist entsprechend aktualisiert.

Wer Lust hat kann die V2.5.0 Beta schonmal testen. Derzeit sind mir keine Fehler mehr bekannt, aber das könnt ihr ja evtl. ändern
Das Zip-file kann hier heruntergeladen werden.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


spurxfan, Bodo, gerald bock, fneurieser, soldier555 und GerdR haben sich bedankt!
 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog

zuletzt bearbeitet 14.08.2023 | Top

Arduino MobaTools: V2.5.0 freigegeben

#653 von MicroBahner , 14.09.2023 16:08

Ich habe die V2.5.0 nun freigegeben, und sie wird im Bibliotheksmanger der Arduino IDE angeboten.

Fehler können natürlich weiterhin hier gemeldet werden, dann gibt's halt eine 2.5.1

P.S. Auch die Startseite habe ich mal aktualisiert


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


soldier555, GerdR, Running.Wolf, spurxfan, apras, gerich und MobaPro59 haben sich bedankt!
 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog

zuletzt bearbeitet 14.09.2023 | Top

Arduino MobaTools: V2.6.0 freigegeben

#654 von MicroBahner , 02.12.2023 09:57

Hallo an alle MobaTools Nutzer.

Es gibt eine neue Version 2.6.0
Wesentliche Neuerung ist die Unterstützung der neuen UNO R4 Boards:

  • UNO R4 Minima and UNO Rev4 Wifi werden unterstützt
  • stepper.read() kann die aktuelle Winkelposition nun auch in Winkelbruchteilen zurückmelden ( z.B. 1/10° ). Im Prinzip so wie auch bei der Winkelvorgabe in stepper.write().


Die Version kann wie gehabt über den Bibliotheksverwalter installiert/aktualisiert werden.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


fbstr, ModellbahnTom, gerald bock und apras haben sich bedankt!
 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog

zuletzt bearbeitet 02.12.2023 | Top

RE: Arduino MobaTools: V2.6.0 freigegeben

#655 von Matthias W. , 09.02.2024 22:47

Hallo,

ich arbeite noch nicht all zu lange mit Arduino und bin vor kurzem auf die MobaTools gestoßen.
Dadurch konnte ich ein paar kleinere Projekte umsetzten die dank der dortigen Funktionen super funktionieren
Auf diesem Wege ein rieeeeeesiges Dankeschön an Franz-Peter für diesen unbezahlbahren Einsatz!!!
Momentan "plagt" mich jedoch ein Problem, dass ich nicht zum lösen bringe...
Der Aufbau ist mit einem Uno, einem Stepper, einem Taster und einer Lichtschranke für den Nullpunkt des Steppers.
Wenn der Taster für die Bewegungen auf LOW geht, soll der Stepper einen Arm nach unten bewegen. Geht der Taster wieder auf HIGH geht der Arm nach oben.
Für eine spätere Nachjustierung des unteren Punktes habe ich einen Justagetaster. Sobald dieser gedrückt wird, fährt der Arm langsahm nach unten bis der Justagetaster wieder losgelassen wird.
Der Punkt, an dem der Arm sich beim Loslassen der Justagetasters befindet, soll der neue untere Endpunkt sein.
Das Probelm: wenn ich den Aruino mit Strom versorge, bewegt sich der Arm nach drücken des Tasters wie gewünscht. Wenn ich nun nachjustiere, wird der untere Endpunkt korrekt übernommen.
Wenn ich allerdings den Uno von der Stromversorung trenne und wieder anstecke, dreht sich der Stepper nicht zu den abgespeicherten minus-Steps, sondern ins plus mit der korrigierten Stepperzahl....
Beim erneuten Nachjustieren beginnt das Spiel von Vorne...
Ich vermute, dass das mit dem von Franz-Peter erwähnten übermitteln des Vorzeichens aus # 652 zu tun hat. Allerdings bin ich nicht schlau geworden, ob das Vorzeichen nun mitglelesen wird oder ob das Vorzeichen selbst gesetzt werden muss.

Wo habe ich hier den Knoten - könnte mir da jemand helfen?

Vielen Dank vorab und schöne Grüße
Matthias

p.S.: Ich habe versucht den Code hier ins Forum zu stellen - habe dies aber nur mit Einfügen geschafft und das ist ja offensichtlich nicht richtig .... hier könnte ich auch noch Hilfe gebrauchen ...


Matthias W.  
Matthias W.
Regionalbahn (RB)
Beiträge: 26
Registriert am: 20.06.2023
Ort: Westösterreich
Spurweite H0
Stromart DC

zuletzt bearbeitet 10.02.2024 | Top

RE: Arduino MobaTools: V2.6.0 freigegeben

#656 von MicroBahner , 12.02.2024 09:56

Hallo Matthias,

Zitat von Matthias W. im Beitrag #655
Ich vermute, dass das mit dem von Franz-Peter erwähnten übermitteln des Vorzeichens aus # 652 zu tun hat.


Das kann ich mir nicht vorstellen, denn das dort erwähnte Vorzeichen bezieht sich ja nur darauf, wenn man die momentane Geschwindigkeit ausliest.


Zitat von Matthias W. im Beitrag #655
p.S.: Ich habe versucht den Code hier ins Forum zu stellen - habe dies aber nur mit Einfügen geschafft und das ist ja offensichtlich nicht richtig

Ohne deinen Sketch zu sehen, kann man leider gar nichts sagen. Das mit dem 'Einfügen' ist schon richtig, aber der Code muss in Code-Tags eingeschlossen werden.
Am einfachsten geht das, wenn Du mit der rechten Maustaste in das Codefeld der IDE klickst, und dann im Pop-Up Menü 'Für Forum kopieren' auswählst. Dann in deinen Post einfügen, und der Code wird korrekt dargestellt. Leider ist die jetzige Forensoftware nicht so optimal für die Darstellung von Programmcode, aber es ist halt nicht in erster Linie ein Programmierforum.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


fbstr hat sich bedankt!
 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog

zuletzt bearbeitet 12.02.2024 | Top

RE: Arduino MobaTools: V2.6.0 freigegeben

#657 von Matthias W. , 12.02.2024 14:46

Hallo Franz-Peter,

vielen Dank für Deine Antwort und Hilfe!
Ich habe bereits probiert, den Code unter dem Reiter Bearbeiten mit der Auswahl "für Forum kopieren" hier ins Forum zu stellen - hat jedoch nicht funktioniert ...
Und wenn ich mit der rechten Maustaste auswählen will, habe ich keine Auswahlmöglichkeit "frü Forum kopieren" .... mal schauen ob es so klappt.
Hier der Code, der wie beschrieben Probleme macht:


#include <MobaTools.h>
#include <EEPROM.h>

#define STEPS 4096 // Anzahl der Schritte des Motores ( 28BYJ-48 )

const byte Geschwindigkeit = 70; // Geschwindigkeit vom Stepper
int untererEndpunkt = -540;
const long obererEndpunkt = -20;


const byte endschalterPin = 2; // Zur Feststellung der Endposition - der Schalter verbindet den Pin mit GDN, wenn der Stepper die Lichtschranke erreicht hat
const byte Taster = 4; // Lichtschranke für Referenz
const byte JustageTaster = 18;


MoToStepper stepper(STEPS, FULLSTEP); // Einrichten des Steppers

void setup() {

stepper.attach(8, 9, 10, 11); // Nr. der Pins für den Stepper
pinMode(endschalterPin, INPUT_PULLUP); // Lichtschranke schaltet nach Gnd
pinMode(Taster, INPUT_PULLUP); // Taster für Stepperbewegung schaltet nach Gnd
pinMode(JustageTaster, INPUT_PULLUP);


stepper.setSpeed(10); // Geschwindigkeit in RPM*10
stepper.rotate(1); // Die Drehrichtung muss hin zum Schalter sein! 1 = gegen den UZS, -1 = im UZS
while (digitalRead(endschalterPin) == HIGH); // Warten bis der Endschalter anspricht
stepper.stop(); // anhalten
delay(500);
stepper.setZero(); // Momentane Position als Nullpunkt einrichten
stepper.writeSteps(obererEndpunkt); // zum oberen Endpunkt bewegen

untererEndpunkt = EEPROM.read(0); // Initialisierung der Stepper-Positionen aus dem EEPROM
}

void loop() {

// ------------------------- Justage -------------------------------

if (digitalRead(JustageTaster) == LOW) {
while (digitalRead(JustageTaster) == LOW) {
stepper.setSpeed(3); // Geschwindigkeit in RPM*10
stepper.doSteps(-5); // Langsames Weiterdrehen des Steppers während Justage
}
untererEndpunkt = stepper.readSteps(); // Speichern der neuen Position in der Variablen
EEPROM.write(0, untererEndpunkt); // Speichern der neuen Position im EEPROM Nummer "0"
}

// ------------------------ normaler Ablauf -------------------------

if (digitalRead(Taster) == LOW) {
stepper.setSpeed(Geschwindigkeit/2);
stepper.writeSteps(untererEndpunkt); // zum unteren Endpunkt bewegen

}

if (digitalRead(Taster) == HIGH) {
stepper.setSpeed(Geschwindigkeit);
stepper.writeSteps(obererEndpunkt); // zum oberen Endpunkt bewegen

}

}



Vielen Dank vorab und schöne Grüße
Matthias

Angefügte Bilder:
Sie haben nicht die nötigen Rechte, um die angehängten Bilder zu sehen

Matthias W.  
Matthias W.
Regionalbahn (RB)
Beiträge: 26
Registriert am: 20.06.2023
Ort: Westösterreich
Spurweite H0
Stromart DC

zuletzt bearbeitet 12.02.2024 | Top

RE: Arduino MobaTools: V2.6.0 freigegeben

#658 von MicroBahner , 12.02.2024 16:35

Hallo Matthias,
ok, Du nutzt die IDE 2.x - da funktioniert das mit dem 'Kopieren für Forum' so nicht. Ich benutze die v2 IDE eigentlich fast nie, da die mir noch zu viele Macken hat . Meine Anleitung bezog sich auf die 1.8.9 IDE

Nun zu deinem Problem. Das dürfte an deiner Verwendung der EEPROM Lib liegen.

1
 
      EEPROM.write(0, untererEndpunkt);              // Speichern der neuen Position im EEPROM Nummer "0"
 



EEPROM.write schreibt immer nur ein einzelnes Byte, dein 'untererEndpunkt' ist aber ein int, und damit 2 byte lang. Das gleiche gilt dann auch für EEPROM.read(). Auch da wird nur ein einzelnes byte gelesen.

Versuch es stattdessen mal mit EEPROM.put() und EEPROM.get() - das funktioniert auch mit 'int'. Die Syntax bei get ist aber anders als beim read - siehe in der Arduino Referenz:
https://docs.arduino.cc/learn/built-in-libraries/eeprom/


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


h0-m-jk und Matthias W. haben sich bedankt!
 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduino MobaTools: V2.6.0 freigegeben

#659 von Matthias W. , 12.02.2024 18:56

Hallo Franz-Peter,

Tip-top, jetzt funktioniert es so wie es soll - vielen Dank!
Eine Frage hätte ich noch: mit dem Unipolaren Stepper und dem Befehl myStepper.attachEnable(uint16_t delay); (oder im Falle des gezeigten Sketches stepper.attach ....) müssten ja die Stepperpins nach der Bewegung abzuschalten sein.
Wo genau beim Sketch muss ich diesen Befehl einfügen? Ich habe zwar die MobaTools Beschreibung auf Seite 8 gelesen, hab´s aber offensichtlich nicht kappiert ....


Besten Dank und Gruß
Matthias


Matthias W.  
Matthias W.
Regionalbahn (RB)
Beiträge: 26
Registriert am: 20.06.2023
Ort: Westösterreich
Spurweite H0
Stromart DC


RE: Arduino MobaTools: V2.6.0 freigegeben

#660 von MicroBahner , 12.02.2024 21:23

Hallo Matthias,
super, dass es jetzt funktioniert.

Zitat von Matthias W. im Beitrag #659
Wo genau beim Sketch muss ich diesen Befehl einfügen?

Den musst Du nur einmal im setup() einfügen - z.b. nachdem Du auch die Pins mit attach zugeordnet hast. Ein wirkliches 'attach' ist es bei den unipolaren Steppern nicht, da ja kein spezieller Pin zugeordnet werden muss. Bei den STEPDIR Steppern ist das anders , die brauchen einen eigenen HW Pin dafür. Ich wollte den Namen aber nicht ändern, als ich die Funktion auf die unipolaren Stepper erweitert habe.

Das Abschalten macht dann die Lib automatisch mit der entsprechenden Verzögerung wenn der Motor anhält, bzw. beim Einschalten entsprechend bevor wieder der erste Schriit ausgeführt wird. Da musst Du im Sketch nichts mehr machen.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


h0-m-jk und fneurieser haben sich bedankt!
 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduino MobaTools: V2.6.0 freigegeben

#661 von Matthias W. , 14.02.2024 20:14

Hallo Franz-Peter,

ich habe den Befehl im setup() eingefügt - der Sketch lässt sich aber nicht kompilieren - habe ich offensichtlich falsch gemacht.
Könntest Du mir eventuell zeigen, wie ich den Befehl schreiben muss damit dieser passt??

Und gehe ich richtig in der Annahme, dass wenn die Pins dann nach der Bewegung stromlos geschalten werden, auch die LED´s auf der Motor-Platine ausgehen müssten?
So habe ich den Befehl eingefügt:


void setup() {

stepper.attach(14, 15, 16, 17); // Nr. der Pins für den Stepper
stepper.attachEnable(uint16_t delay);
pinMode(endschalterPin, INPUT_PULLUP); // Lichtschranke schaltet nach Gnd
pinMode(Taster, INPUT_PULLUP); // Taster für Stepperbewegung schaltet nach Gnd
pinMode(JustageTaster, INPUT_PULLUP);


stepper.setSpeed(10); // Geschwindigkeit in RPM*10
stepper.rotate(1); // Die Drehrichtung muss hin zum Schalter sein! 1 = gegen den UZS, -1 = im UZS
while (digitalRead(endschalterPin) == HIGH); // Warten bis der Endschalter anspricht
stepper.stop(); // anhalten
delay(500);
stepper.setZero(); // Momentane Position als Nullpunkt einrichten
stepper.writeSteps(obererEndpunkt); // zum oberen Endpunkt bewegen

EEPROM.get(0, untererEndpunkt); // Initialisierung der Stepper-Positionen aus dem EEPROM
}


Beseten Dank und schöne Grüße
Matthias


Matthias W.  
Matthias W.
Regionalbahn (RB)
Beiträge: 26
Registriert am: 20.06.2023
Ort: Westösterreich
Spurweite H0
Stromart DC


RE: Arduino MobaTools: V2.6.0 freigegeben

#662 von MicroBahner , 15.02.2024 14:28

Hallo Matthias,

Zitat von Matthias W. im Beitrag #661

1
 
  stepper.attachEnable(uint16_t delay);
 



Was Du da eingefügt hast, ist ( fast )ein Funktions-Prototyp, aber kein Funktionsaufruf. Da, wo das uint16_t delay steht, musst Du die von dir gewünschte Verzögerungszeit einfügen. Also z.B.

1
 
  stepper.attachEnable(100);
 


für eine Verzögerung von 100ms zwischen Ein/Ausschalten des Steppers und der Bewegung.

Und ja, die Leds gehen aus, wenn der Motor stromlos ist.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog

zuletzt bearbeitet 15.02.2024 | Top

RE: Arduino MobaTools: V2.6.0 freigegeben

#663 von Matthias W. , 15.02.2024 17:00

Hallo Franz-Peter,

das ist ja nett ausgedrückt

Zitat von MicroBahner im Beitrag #662
Was Du da eingefügt hast, ist ( fast )ein Funktions-Prototyp, aber kein Funktionsaufruf.


Den Befehl stepper.attachEnable(100); hatte ich auch schon probiert, da sich der Sketch nur so kompilieren ließ. Probehalber nahm ich eine 1 Sekunde Verzögerung. Heraus kommt jedoch fogendes:
beim Betätigen des Auslösetasters ist eine Sekunde Pause, dann dreht sich der Stepper wie gewollt - die Pins an der Treiberplatine beiben jedoch an.
Wenn der Taster wieder losgelassen wird, ist wieder eine Sekunde Pause und dann die Bewegung - auch hier bleiben die Pins bzw. die LED´s anschließend an
(darum meine Frage, ob die LED´s der Motorplatine ausgehen müssen). Das bleibt auch so, wenn der Uno kurz stromlos gemacht wurde.
Bei mir ist so die Pause vor den Bewegungen und nicht vor dem Abschalten der Pins....

Schöne Grüße
Matthias


Matthias W.  
Matthias W.
Regionalbahn (RB)
Beiträge: 26
Registriert am: 20.06.2023
Ort: Westösterreich
Spurweite H0
Stromart DC


RE: Arduino MobaTools: V2.6.0 freigegeben

#664 von MicroBahner , 15.02.2024 22:05

Hallo Matthias,

Zitat von Matthias W. im Beitrag #663
Bei mir ist so die Pause vor den Bewegungen und nicht vor dem Abschalten der Pins....

Das muss sowohl als auch sein. Bei meinem Testaufbau ist das so, und die Led's gehen auch aus, wenn der Stepper steht.
Kannst Du mal bitte ein Schaltbild deines Aufbaus, und den aktuellen Sketch posten?


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduino MobaTools: V2.6.0 freigegeben

#665 von Matthias W. , 15.02.2024 22:47

Hallo Franz-Peter,

hier der Sketch:

```cpp
#include <MobaTools.h>
#include <EEPROM.h>

#define STEPS 4096 // Anzahl der Schritte des Motores ( 28BYJ-48 )

const byte Geschwindigkeit = 70; // Geschwindigkeit vom Stepper
int untererEndpunkt = -540;
const long obererEndpunkt = -20;


const byte endschalterPin = 3; // Zur Feststellung der Endposition - der Schalter verbindet den Pin mit GDN, wenn der Stepper die Lichtschranke erreicht hat
const byte Taster = 4; // Lichtschranke für Referenz
const byte JustageTaster = 18;


MoToStepper stepper(STEPS, FULLSTEP); // Einrichten des Steppers

void setup() {

stepper.attach(14, 15, 16, 17); // Nr. der Pins für den Stepper
stepper.attachEnable(1000);
pinMode(endschalterPin, INPUT_PULLUP); // Lichtschranke schaltet nach Gnd
pinMode(Taster, INPUT_PULLUP); // Taster für Stepperbewegung schaltet nach Gnd
pinMode(JustageTaster, INPUT_PULLUP);


stepper.setSpeed(10); // Geschwindigkeit in RPM*10
stepper.rotate(1); // Die Drehrichtung muss hin zum Schalter sein! 1 = gegen den UZS, -1 = im UZS
while (digitalRead(endschalterPin) == HIGH); // Warten bis der Endschalter anspricht
stepper.stop(); // anhalten
delay(500);
stepper.setZero(); // Momentane Position als Nullpunkt einrichten
stepper.writeSteps(obererEndpunkt); // zum oberen Endpunkt bewegen

EEPROM.get(0, untererEndpunkt); // Initialisierung der Stepper-Positionen aus dem EEPROM
}

void loop() {

// ------------------------- Justage -------------------------------

if (digitalRead(JustageTaster) == LOW) {
while (digitalRead(JustageTaster) == LOW) {
stepper.setSpeed(3); // Geschwindigkeit in RPM*10
stepper.doSteps(-5); // Langsames Weiterdrehen des Steppers während Justage
}
untererEndpunkt = stepper.readSteps(); // Speichern der neuen Position in der Variablen
EEPROM.put(0, untererEndpunkt); // Speichern der neuen Position im EEPROM Nummer "0"
}

// ------------------------ normaler Ablauf -------------------------

if (digitalRead(Taster) == LOW) {
stepper.setSpeed(Geschwindigkeit/2);
stepper.writeSteps(untererEndpunkt); // zum unteren Endpunkt bewegen

}

if (digitalRead(Taster) == HIGH) {
stepper.setSpeed(Geschwindigkeit);
stepper.writeSteps(obererEndpunkt); // zum oberen Endpunkt bewegen

}

}

```

und ein Foto vom Aufbau habe ich angehängt - ist sehr provisorisch, funktioniert aber soweit .... ich hoffe das reicht so. Wenn ich den Aufbau aufzeichnen soll, bitte melden!
Die Nummer 1 ist die Stromversorgung von 5 V für den Stepper und die beiden Lichtschranken (Taster und Justagetaster).
Die Nummer 2 sind die Lichtschranken (grün/blau/lila als Taster - orange/braun/rot als Justagetaster)
Nummer 3 ist die Motorplatine des Steppers (28BYJ-48 mit der Platine ULN2003) - hier sieht man die LED´s die an bleiben.
Die Lichtschranke für den setZero() habe ich an die Stromversorgung vom Uno angeschlossen, da diese Kabel etwas kürzer sind.

Besten Dank für Deine Bemühungen und schöne Grüße
Matthias

Angefügte Bilder:
Sie haben nicht die nötigen Rechte, um die angehängten Bilder zu sehen

Matthias W.  
Matthias W.
Regionalbahn (RB)
Beiträge: 26
Registriert am: 20.06.2023
Ort: Westösterreich
Spurweite H0
Stromart DC

zuletzt bearbeitet 16.02.2024 | Top

RE: Arduino MobaTools: V2.6.0 freigegeben

#666 von MicroBahner , 17.02.2024 23:00

Hallo Matthias,
so, jetzt habe ich die Ursache gefunden.
Hier:

1
2
3
4
5
6
7
8
9
10
11
12
13
 
// ------------------------ normaler Ablauf -------------------------
 
if (digitalRead(Taster) == LOW) {
stepper.setSpeed(Geschwindigkeit/2);
stepper.writeSteps(untererEndpunkt); // zum unteren Endpunkt bewegen
 
}
 
if (digitalRead(Taster) == HIGH) {
stepper.setSpeed(Geschwindigkeit);
stepper.writeSteps(obererEndpunkt); // zum oberen Endpunkt bewegen

}
 


ruftst Du ständig

1
 
stepper.writeSteps()
 

auf. Und das verhindert das Abschalten.

Ich muss da mal genauer nachschauen. Wenn writeSteps nicht tatsächlich zu einer Bewegung führt, sollte das Abschalten trotzdem funktionieren.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog

zuletzt bearbeitet 17.02.2024 | Top

RE: Arduino MobaTools: V2.6.0 freigegeben

#667 von MicroBahner , 18.02.2024 09:30

Hallo Matthias,
ein Problem an deinem Code ist, dass Du nicht berücksichtigst, dass die MoToStepper Aufrufe nicht blockierend sind, und die eigentliche Stepperbewegung im Hintergrund abläuft. Für deinen Taster brauchst Du deshalb eine 'state change detection'. D.h. Du musst den Zeitpunkt des Drückens und Loslassens erkennen, und nicht einfach statisch abfragen. Das geht z.B. so:
Du definierst eine weitere globlae Variable:

1
2
3
 

byte tasterState = HIGH; // globale Variable für den Tasterzustand
 
 



und dann:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 

// ------------------------ normaler Ablauf -------------------------
 
if (digitalRead(Taster) == LOW && tasterState == HIGH) {
tasterState = LOW;
stepper.setSpeed(Geschwindigkeit / 2);
stepper.writeSteps(untererEndpunkt); // zum unteren Endpunkt bewegen
}
 
if (digitalRead(Taster) == HIGH && tasterState == LOW) {
tasterState = HIGH;
stepper.setSpeed(Geschwindigkeit);
stepper.writeSteps(obererEndpunkt); // zum oberen Endpunkt bewegen
}
 
 


Dann werden die if-Blöcke nicht ständig bei jedem loop() durchlaufen, sondern nur jeweils 1x beim Drücken bzw. Loslassen.

Ähnliches gilt auch für die Justage:

1
2
3
4
5
 
while (digitalRead(JustageTaster) == LOW) {
stepper.setSpeed(3); // Geschwindigkeit in RPM*10
stepper.doSteps(-5); // Langsames Weiterdrehen des Steppers während Justage
}
 
 


das doSteps(-5); kann nie wirklich ausgeführt werden, weil Du es in der while-Schleife im µs Takt immer wieder neu aufrufst.
So wäre es besser:

1
2
3
4
5
6
7
8
9
10
11
12
13
 
  // ------------------------- Justage -------------------------------
 
if (digitalRead(JustageTaster) == LOW) {
stepper.setSpeed(3); // Geschwindigkeit in RPM*10
stepper.rotate(-1); // Langsames Weiterdrehen des Steppers während Justage
while (digitalRead(JustageTaster) == LOW );
stepper.stop();
untererEndpunkt = stepper.readSteps(); // Speichern der neuen Position in der Variablen
EEPROM.put(0, untererEndpunkt); // Speichern der neuen Position im EEPROM Nummer "0"
stepper.setSpeed(Geschwindigkeit);
stepper.writeSteps(obererEndpunkt); // zum oberen Endpunkt bewegen
}
 
 



Der komplette überarbeitete Sketch in WokWi.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


Matthias W., gerald bock und fneurieser haben sich bedankt!
 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog

zuletzt bearbeitet 18.02.2024 | Top

RE: Arduino MobaTools: V2.6.0 freigegeben

#668 von Matthias W. , 18.02.2024 19:50

Hallo Franz-Peter,

zuerst einmal ein riesiges Dankeschön, dass du dir die Zeit nimmst um mir und hoffentlich ein paar mitlesenden zu helfen!
Ich habe den Sketch umgeschrieben und so funktioniert es tadellos. Ich habe vor längerer Zeit auch noch einen Sketch für eine Seilbahnsteuerung gemacht, bei der die Gondeln ja länger stehen bleiben und das Abschalten auch von Vorteil ist.
Auch hier konnte ich das erfolgreich umsetzen, was mich richtig gefreut hat!!

Zitat von MicroBahner im Beitrag #667
Der komplette überarbeitete Sketch in WokWi.


Danke auch für den fertigen Sketch - an dem konnte ich mich sehr gut orientieren und diese Simulation habe ich so noch nie gesehen - die ist ja echt der Hammer!

Besten Dank und schöne Grüße
Matthias


MicroBahner hat sich bedankt!
Matthias W.  
Matthias W.
Regionalbahn (RB)
Beiträge: 26
Registriert am: 20.06.2023
Ort: Westösterreich
Spurweite H0
Stromart DC


RE: Arduino MobaTools: V2.6.0 freigegeben

#669 von MicroBahner , 19.02.2024 10:47

Hallo Matthias,
super dass es jetzt funktioniert, und ich etwas helfen konnte

Zitat von Matthias W. im Beitrag #668
diese Simulation habe ich so noch nie gesehen - die ist ja echt der Hammer!


Ja, WOKWi ist schon eine coole Sache. Hat natürlich seine Grenzen, und kann echte HW nicht ersetzen. Aber für einen ersten Test ist das schon super praktisch.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog

zuletzt bearbeitet 19.02.2024 | Top

RE: Arduino MobaTools: V2.6.0 freigegeben

#670 von BJS-1952 , 05.03.2024 05:05

Hallo Franz-Peter

Mit deiner Moba Tools habe ich in Vergangenheit schon viele Bewegungen auf meiner Modellbahn realisieren können
und möchte mich nochmals für deine Arbeit bedanken.
Bisher habe ich bei jedem Projekt immer nur einen Arduino verwendet.
Bei meinem neuen Projekt benötige ich mehrere Servos und stehe vor dem Problem, die verschiedene Servos einen Namen zuzuordnen.
Meine Bitte an dich, kannst du mir mitteilen, wie ich die einzelne Servos einen Namen geben kann, oder wo ich einen Sketch finde,
aus dem ich mich schlau machen kann.

Danke im Voraus
Gruß Bernd


BJS-1952  
BJS-1952
RegionalExpress (RE)
Beiträge: 62
Registriert am: 16.12.2018
Ort: Kernen i.R.
Spurweite H0
Stromart Digital


RE: Arduino MobaTools: V2.6.0 freigegeben

#671 von MicroBahner , 05.03.2024 09:28

Hallo Bernd,
wenn Du mehere Servos verwenden willst, geht das auch nicht viel anders als mehrere Variablen einzurichten:

1
2
 
MoToServo Servo1;
MoToServo Servo2;
 


Du könntest Sie sogar als Array einrichten:

1
 
MoToServo myServos[4];  // 4 Servos einrichten 
 



Du musst dann natürlich auch noch jeden Servo konfigurieren ( z.B. mit attach(pinNr) den jeweiligen Anschlußpin festlegen ).

Bei Arrays z.B. so:

1
2
3
4
5
6
7
8
9
10
11
12
 
const byte servoPins[] = { 2, 3, 4 };
byte servoSpeed[] = {10, 10, 10 };
byte servoPos[] = {10, 10, 10 };
const byte servoAnz = sizeof(servoPins);
MoToServo myServo[servoAnz];
void setup() {
for ( byte i = 0; i < servoAnz; i++ ) {
myServo[i].attach(servoPins[i] );
myServo[i].setSpeed( servoSpeed[i] );
myServo[i].write( servoPos[i] );
}
}
 


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog

zuletzt bearbeitet 05.03.2024 | Top

RE: Arduino MobaTools: V2.6.0 freigegeben

#672 von BJS-1952 , 06.03.2024 02:49

Hallo Franz-Peter

Herzlichen Dank für die ausführliche Antwort, mit der ich weitermachen kann.

Gruß Bernd


BJS-1952  
BJS-1952
RegionalExpress (RE)
Beiträge: 62
Registriert am: 16.12.2018
Ort: Kernen i.R.
Spurweite H0
Stromart Digital


RE: Arduino MobaTools: V2.6.0 freigegeben

#673 von Kali , 11.04.2024 15:35

Hallo an Alle,

ich bin bei Arduino ein totaler Anfänger, habe mir für mein Smartphone ein Drehregler gebastelt was soweit ganz gut ging mit hier und da was abgucken. Nun aber komme ich nicht weiter, ich möchte eine Segmentdrehscheibe ansteuern, habe dazu, zum testen, von den Mobatools den Sketch "Stepper_Reverencen" auf meinen Arduino Uno verschnitt geladen und mit einem Steckboard einen Testaufbau zusammengesteckt. Ein anderer Sketch zum Testen ob der Motor läuft wurde erfolgreich probiert. Nun zu meinen Problem, der Sketch "Stepper_Reverencen" funktioniert nur zum Teil. Ich kann die Referentfahrt machen und die Taster doppelbelegung ausführen mit Motor links rechts und Stop, was aber nicht geht sind die normalen Taster damit ich die Positionen anfahren kann. Als Stepdriver nutze ich den DRV8825.

Nach diesem Prinzip anfangs aufgebaut und getestet, was funktioniert hat:
https://starthardware.org/stepper-motor-mit-dem-drv8825-steuern/

Ich habe dann bei Wokwi die Schaltung endeckt, dort im Simulator funktioniert sie ja, aber bei mir nicht.
https://wokwi.com/projects/390427919821726721

Ich weiß das dort ein andere Treiber genutzt wird und dieser etwas anders angeschlossen ist.

Vielleicht kann mir hier jemand helfen.

Schöne Grüße
Stefan


Schöne Grüße
Stefan

Tillig Elite Gleis
Digitalsystem ECoS 50200, Switchpilot Servo
Datenformat: DCC mit ABC-Bremsstrecken
Decoder: ESU Lokpilot und Loksound 4,5
ESU-Programmer


Meine Kreation in Spur Z: Ommi 51 - Muldenkippwagen


 
Kali
InterRegio (IR)
Beiträge: 191
Registriert am: 14.01.2011
Ort: Jena
Gleise Tillig Standart / Elite
Spurweite H0, Z
Steuerung Ecos 2
Stromart DC, Digital


RE: Arduino MobaTools: V2.6.0 freigegeben

#674 von MicroBahner , 12.04.2024 09:37

Hallo Stefan,

Zitat von Kali im Beitrag #673
Ich kann die Referentfahrt machen und die Taster doppelbelegung ausführen mit Motor links rechts und Stop, was aber nicht geht sind die normalen Taster damit ich die Positionen anfahren kann.

Was funktioniert denn da nicht, bzw wie verhält es sich? Wenn alles andere funktioniert, ist das schon recht seltsam. Wenn beim Doppelklick der Motor läuft, und Du ihn auch mit Doppelklick anhalten kannst, sollte die HW eigentlich in Ordnung sein.

Die WOKWI Variante entspricht ja exakt dem Beispiel, nur das da jemand die Kommentare komplett auf Englisch übersetzt hat.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduino MobaTools: V2.6.0 freigegeben

#675 von Kali , 12.04.2024 11:42

Hallo Franz-Peter,

mir ist gestern im Bett noch ein Gedanke durch den Kopf geschossen, könnte es was mit den angegebenen Schritten und dem Poti zutun haben? Bei Doppelklick wird das Poti ja ignoriert, angegeben sind 800 Schritte pro Umdrehung bei 1/4 Microstep. Bei einem vollen Step wären es ja 200 Schritte. Nun habe ich, durch die 200, wohl überlesen, dass mein Motor nur 20 Schritte pro Umdrehung macht (Hat dann noch ein Getriebe 1/16).
Wären ja aber dann bei 1/4 Mstep 80 Schritte die ich angeben müsste oder?

Danke

Grüße
Stefan


Schöne Grüße
Stefan

Tillig Elite Gleis
Digitalsystem ECoS 50200, Switchpilot Servo
Datenformat: DCC mit ABC-Bremsstrecken
Decoder: ESU Lokpilot und Loksound 4,5
ESU-Programmer


Meine Kreation in Spur Z: Ommi 51 - Muldenkippwagen


 
Kali
InterRegio (IR)
Beiträge: 191
Registriert am: 14.01.2011
Ort: Jena
Gleise Tillig Standart / Elite
Spurweite H0, Z
Steuerung Ecos 2
Stromart DC, Digital


   

Innenbeleuchtung für Fleischmann 742080 BR 642
Alte Märklin Transformator ersetzen

  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz