ich hab hier mal einen Sketch für meine Drehscheibe zusammengestellt. Da Ergebnis ist eher mittelprächtig. Der Billigstepper und die Treiberplatine sollten ausgetauscht werden. Die MobaTools sind nicht unbedingt Bedingung und könnten durchaus ersetzt werden.
Frage: Wie soll ich weiter vorgehen um die Drehscheibe einsetzen zu können?
Bitte um Hilfe.
Code: Alles auswählen
/* Drehscheibensteuerung für Feldbahn H0e Rev0
2020 /e69-fan
Drehbühnenstellung kann per Taster links/rechts bei jeder Position justiert werden
Positionen der Drehbühne: Pos2 / 360 Grad gedreht-Gleis 1a
Pos3 / vorwärts-Lokschuppen
Pos4 / vorwärts-Richtung Gleis 1b
Pos0 / 0 Grad Einfahrt Gleis 1a
Steppermotor und Treiber sollen durch NEMA17 https://www.pollin.de/p/schrittmotor-minebea-17pm-k374bn01cn-1-80-310690 ersetzt werden.
geeigneter Motortreiber muß noch definiert werden.
es müßten noch die Taster entprellt werden. - aber wie ???
*/
#include <MobaTools.h>
const int DownPin = 10; // weiß - Justiertaster - Down
const int UpPin = 11; // violet - Justiertaster - UP
const int ReferenzPin = 12; // gelb - Referenzpunkt setzen
const int Pos0 = A1; // grün 0 Grad Einfahrt von Gleis 1a
const int Pos1 = A2; // blau 360 Grad gedreht nach Gleis 1a
const int Pos2 = A3; // braun Lokschuppen, vorwärts
const int Pos3 = A4; // grau Ausfahrt von Gleis 1b
int tasterStatusDown, tasterStatusUp, tasterStatusRef, tasterStatusPos0, tasterStatusPos1, tasterStatusPos2, tasterStatusPos3;
MoToStepper stepper(4096); // Anzahl der Schritte des Motor´s ( 28BYJ-48 ) 2048
MoToTimer delayTime;
void setup() {
stepper.attach ( 4, 5, 6, 7 ); // Nr. der Pins für den Stepper
pinMode(DownPin, INPUT_PULLUP); // Schrittschalter schaltet nach Gnd
pinMode(UpPin, INPUT_PULLUP); // Schrittschalter schaltet nach Gnd
pinMode(ReferenzPin, INPUT_PULLUP); // RefernzPin schaltet nach Gnd
pinMode(Pos0, INPUT_PULLUP); // 0 Grad Einfahrt von Gleis 1a
pinMode(Pos1, INPUT_PULLUP); // 360 Grad gedreht nach Gleis 1a
pinMode(Pos2, INPUT_PULLUP); // Lokschuppen, vorwärts
pinMode(Pos3, INPUT_PULLUP); // Ausfahrt von Gleis 1b
stepper.setSpeed(15); // Betrieb-Geschwindigkeit in Rpm * 10
stepper.setRampLen(100); // Sanftes Anfahren und Anhalten
}
void loop() {
tasterStatusDown = digitalRead(DownPin);
tasterStatusUp = digitalRead(UpPin);
tasterStatusRef = digitalRead(ReferenzPin);
tasterStatusPos0 = digitalRead(Pos0);
tasterStatusPos1 = digitalRead(Pos1);
tasterStatusPos2 = digitalRead(Pos2);
tasterStatusPos3 = digitalRead(Pos3);
stepper.setSpeed(15); // Betrieb-Geschwindigkeit in Rpm * 10
stepper.setRampLen(100); // Sanftes Anfahren und Anhalten
// ------------------------------------ Justieren ----------------------------------- //
if (tasterStatusDown == LOW) {
stepper.setSpeed(10);
stepper.doSteps(1); // rot - 5 Steps nach links justieren
}
if (tasterStatusUp == LOW) {
stepper.setSpeed(20);
stepper.doSteps(-1); // grün - 5 Steps nach rechts justieren
}
if (tasterStatusRef == LOW) { // schwarz - Justage in Ordnung - Refernezpunkt setzen
digitalWrite(LED_BUILTIN, HIGH);
stepper.setZero();
delayTime.setTime(20);
digitalWrite(LED_BUILTIN, LOW);
}
// ------------------------------------ Betrieb ------------------------------------- //
if (tasterStatusPos0 == LOW && !delayTime.running() ) {
stepper.write(0); // 0 Grad Einfahrt von Gleis 1a
delayTime.setTime(10);
}
if (tasterStatusPos1 == LOW && !delayTime.running() ) {
stepper.write(-176); // 360 Grad gedreht nach Gleis 1a
delayTime.setTime(10);
}
if (tasterStatusPos2 == LOW && !delayTime.running() ) {
stepper.write(-40); // Lokschuppen, Vorwärts
delayTime.setTime(10);
}
if (tasterStatusPos3 == LOW && !delayTime.running() ) {
stepper.write(-150); // Ausfahrt von Gleis 1b
delayTime.setTime(10);
}
// --------------------------------------------------------------------------------------------------- //
}