Schrittmotorsteuerung für Drehscheibe
Re: Schrittmotorsteuerung für Drehscheibe
Hallo Forengemeinde,
um die Besonderheiten bei den unterschiedlichen Schrittmotoren aufzuzeigen und Re: Schrittmotorsteuerung für Drehscheibe übersichtlicher zu gestalten, eröffne ich ein neues Thema.
Der erste Teil handelt von der "billigsten" Ausführung: 28BYJ-48 ULN2003 STEPPER MOTOR DRIVER BOARD
Servus - Wolfgang
um die Besonderheiten bei den unterschiedlichen Schrittmotoren aufzuzeigen und Re: Schrittmotorsteuerung für Drehscheibe übersichtlicher zu gestalten, eröffne ich ein neues Thema.
Der erste Teil handelt von der "billigsten" Ausführung: 28BYJ-48 ULN2003 STEPPER MOTOR DRIVER BOARD
Servus - Wolfgang
Grüße aus der Heimat der E69
- Admin
- Administrator
- Beiträge: 1251
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: Schrittmotorsteuerung für Drehscheibe
Dafür ist wohl das Programm das Daniel probiert hat.
Ist natürlich nicht für die Treiber, die wir an den Nema 17, 23, 34 Motoren benutzen. Z.B. der TB6600, DM556, u.s.w.
Franz
Ist natürlich nicht für die Treiber, die wir an den Nema 17, 23, 34 Motoren benutzen. Z.B. der TB6600, DM556, u.s.w.
Franz
Re: Schrittmotorsteuerung für Drehscheibe
Ja genau, darum versuche ich zu entflechten.
Servus - Wolfgang
Servus - Wolfgang
Grüße aus der Heimat der E69
- Admin
- Administrator
- Beiträge: 1251
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: Schrittmotorsteuerung für Drehscheibe
Hi Daniel
wie schauts aus, hast du schon bischen Bewegung in deiner Drehscheibe
....oder tut sich noch nichts?
Franz
wie schauts aus, hast du schon bischen Bewegung in deiner Drehscheibe

Franz
-
- Beiträge: 13
- Registriert: Mo 20. Dez 2021, 11:09
- Kontaktdaten:
Re: Schrittmotorsteuerung für Drehscheibe
Hallo Franz,
bin erst jetzt wieder dazu gekommen. Allerdings hänge ich jetzt hier fest.
compilation terminated.
exit status 1
SSD1306Ascii.h: No such file or directory
Gruß Daniel
bin erst jetzt wieder dazu gekommen. Allerdings hänge ich jetzt hier fest.
compilation terminated.
exit status 1
SSD1306Ascii.h: No such file or directory
Gruß Daniel
Re: Schrittmotorsteuerung für Drehscheibe
Hallo Daniel,
das sind Bibliotheken welche für meinen Sketch benötigt werden.
Das ist der aktuelle Sketch:
das sind Bibliotheken welche für meinen Sketch benötigt werden.
Einfach über den Bibliotheksverwalter nachinstallieren.#include <MobaTools.h>
#include <Wire.h>
#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"
Das ist der aktuelle Sketch:
Schönen Tag - WolfgangCode: Alles auswählen
/* Dateiname: Drehscheibe_neu_2_1 by e69-fan Beispiel: Stepper_03 von den MobaTools / MoToStepper - attaching a bipolar stepper with step/dir and enable StepperMotor ACT 17HS4417L20P1X2 TB6600 Schrittmotor-Treiber-Modul 16 MicroStep - 3200 Pulse/Rev - S1 OFF / S2 OFF / S3 ON Current Control Setting: 1,5 Ampere S4 ON / S5 ON / S6 OFF max. Drehwinkel 370 Grad, dann zurück Referenzpunkt bei Position "Einfahrt" in Einzelschritten links/rechts setzen, Bestätigung mit LED Blinklicht AN während der Bühnendrehung optionale Infoausgabe an LCD-Display 20x4 // A4 =SDA; A5 =SCL; 5V Plus; Masse Danke an MicroBahner und Franz54 https://www.franzls-technik-forum.de https://arduino-fan.de/ */ #define MAX8BUTTONS #include <MobaTools.h> #include <Wire.h> #include "SSD1306Ascii.h" #include "SSD1306AsciiWire.h" #define I2C_ADDRESS 0x3C #define RST_PIN -1 SSD1306AsciiWire oled; // A4 = SDA, grün; A5 = SCL, blau; +5V, rot; Ground, schwarz; //----- individuelle Definitionen -------------------------------------------------- // // -----------Declarationen Blinklicht----------------- int LED_PIN = 2; // Blink-LED auf D2 byte LED = LOW; byte stopp = 8; byte fahrt = 8; unsigned long BLINKIO = 0; const int delayTime = 300; // HIGH und LOW Zeit dess Blinksignales unsigned long VorherMilles = 0; unsigned long AktuellMilles; // ---------------------------------------------------- //TMC2209 = 5,6,7 - TB6600 = 36,35,34 - DM556 = 32,31,30 const byte dirPin = 5; // orange const byte stepPin = 6; // lila const byte enaPin = 7; // grau const byte LinksPin = A1; // rot / 4 steps nach links const byte RechtsPin = A2; // grün / 4 steps nach rechts const byte RefPin = A3; // grau / RefPunkt setzen - RefLED leuchtet const byte RefLED = 13; // gelb / leuchtet wenn RefPunkt gesetzt const byte piezo = 3; // rot-weiß / ????????????????????????????????? const byte EinfahrtPin = 8 ; // grün / Einfahrt Gleis1A - Lok steht vorwärts const byte V_Ausfahrt_1bPin = 9 ; // gelb / Ausfahrt Gleis1B - Lok steht vorwärts const byte WendePin = 10; // blau / Wendung 180 Grad - Lok steht const byte SchuppenPin = 11; // grau / Lokschuppen - Lok steht const byte R_Ausfahrt_1bPin = 12; // orange / Ausfahrt Gleis1B - Lok steht rückwärts const byte potPin = A0; // Analog Poti Eingang int Umdrehungen = 0; int Umdrehung_Schritte = 3200; // Referenz zur Treibereinstellung Schritte je Umdrehung int Rampe = 200; // ----- Stepper einrichten ( 3200 Schritte / Umdrehung - 1/8 Microstep )------------------------------------------- // const int STEPS_REVOLUTION = 3200; // Schritte Auftrag für TCM2208 nur 1600 MoToStepper myStepper( STEPS_REVOLUTION, STEPDIR ); // Steps bei xxx pro Umdrehung // ----- Taster einrichten ----------------------------------------------------------------------------------------// enum { Button1 = 0, Button2, Button3, Button4, Button5, Button6, Button7, Button8 } ; // Den Tasternamen die Indizes 0...3 zuordnen const byte buttonPins[] = { LinksPin, RechtsPin, RefPin, EinfahrtPin, V_Ausfahrt_1bPin, WendePin, SchuppenPin, R_Ausfahrt_1bPin } ; // muss als byte definiert sein, damit ein enfaches sizeof funktioniert MoToButtons button( buttonPins, sizeof(buttonPins), 20, 500 ); // ----- speedPoti einrichten --------------------------------------------------------------------------------------// MoToTimebase speedIntervall; // Zeitinterval zum Auslesen des Speedpotentiometers int vspeed = 0; // Steppergeschwindigkeit in U/min*10 // ----------------------------------------- S E T U P ----------------- void setup() { // ------------------OLED Display -------------------------------------- Wire.begin(); Wire.setClock(400000L); #if RST_PIN >= 0 oled.begin(&Adafruit128x64, I2C_ADDRESS, RST_PIN); #else // RST_PIN >= 0 oled.begin(&Adafruit128x64, I2C_ADDRESS); #endif // RST_PIN >= 0 oled.setFont(Callibri11); // --------------------------------------------------------------------- pinMode(RefLED, OUTPUT); digitalWrite(RefLED, LOW); pinMode(LED_PIN, OUTPUT); oled.setCursor (0, 0); oled.print (F("Drehscheibe_neu_2_1")); oled.setCursor (0, 2); oled.print (F("Referenzpunkt ? ")); oled.setCursor (0, 4); oled.print (F("Gleis ? ")); oled.setCursor (50, 16); // 50er Einzug in Zeile 6 oled.print (F("-----")); //----- Stepper -------------------------------------------------------------------- // Umdrehungen = STEPS_REVOLUTION / Umdrehung_Schritte; myStepper.attach( stepPin, dirPin ); myStepper.attachEnable( enaPin, 10, LOW ); // Enable Pin aktivieren ( LOW=aktiv ) myStepper.setSpeed( 200 ); // 20 Umdrehungen je Minute myStepper.setRampLen( Rampe ); // Rampenlänge 300 Steps bei 20U/min speedIntervall.setBasetime( 100 ); // 100ms Tickerzeit } void loop() { BLINKIO = myStepper.stepsToDo(); AktuellMilles = millis(); if (AktuellMilles - VorherMilles >= delayTime) { VorherMilles = AktuellMilles; LED = !LED; if (BLINKIO == 0) { LED = 0; if (stopp < 8) { oled.setCursor (0, stopp); // Ausgabe Position für das Wort "Stopp" übergeben oled.print (F(" Stopp ")); // durch Leerzeichen mittig ausgerichtet stopp = 8; } } digitalWrite(LED_PIN, LED); } button.processButtons(); // Taster einlesen und bearbeiten if ( speedIntervall.tick() ) { // wird alle 100ms aufgerufen ( Tickerzeit = 100ms im setup() ) // Speed alle 100ms neu einlesen und setzen vspeed = map((analogRead(potPin)), 0, 1023, 20, 240); // Poti mappen auf 2 ... 240 Umdr/Min myStepper.setSpeed( vspeed ); // min speed =2 and max speed =180 rpm } // --------------------------- Referenzpunkt setzen ------------------------------------------------ // if (button.pressed(Button1) ) { // Taster Links gedrückt oled.setCursor (0, 2); oled.print (F("< Referenzpunkt ? ")); digitalWrite(RefLED, LOW); myStepper.doSteps( 4 ); // Stepper dreht 1x links } if ( button.released(Button1) ) { // Taster links losgelassen myStepper.rotate(0); // Stepper stoppt } if (button.pressed(Button2) ) { // Taster Rechts gedrückt oled.setCursor (0, 2); oled.print (F("> Referenzpunkt ? ")); digitalWrite(RefLED, LOW); myStepper.doSteps( -4 ); // Stepper dreht 1x rechts } if ( button.released(Button2) ) { // Taster Rechts losgelassen myStepper.rotate(0); // Stepper stoppt } if (button.pressed(Button3) ) { // Taster Ref gedrückt myStepper.setZero(); // Referenzpunkt gesetzt tone(3, 440, 300); // Bestätigungston piezo an PIN3, Tonhöhe, ? - Dauer digitalWrite(RefLED, HIGH); oled.setCursor (0, 2); oled.print (F("Referenzpunkt OK ")); } // --------------------------- Bühnendrehung ------------------------------------------------ // if ((button.pressed(Button4)) && (fahrt == 8)) { // Taster4 gedrückt: tone(3, 150, 1000); // tone(3, 440, 300); oled.setCursor (0, 4); oled.print (F("> Einfahrt Gleis 1A ")); fahrt = 6; disp(); stopp = 6; myStepper.write( 0 ); // dreht zur Einfahrt Gleis1A zurück // zur Startposition } if ((button.pressed(Button5)) && (fahrt == 8)) { // Taster5 gedrückt tone(3, 150, 1000); oled.setCursor (0, 4); oled.print (F("> Ausfahrt Gleis 1B ")); fahrt = 6; disp(); stopp = 6; myStepper.write( 50 ); // dreht zur Ausfahrt Gleis1B - vorwärts } if ((button.pressed(Button6)) && (fahrt == 8)) { // Taster6 gedrückt: tone(3, 150, 1000); oled.setCursor (0, 4); oled.print (F("< 180 Wendung ")); fahrt = 6; disp(); stopp = 6; myStepper.write( -180 ); // wendet die Bühne um 180 Grad } if ((button.pressed(Button7)) && (fahrt == 8)) { // Taster7 gedrückt: tone(3, 150, 1000); oled.setCursor (0, 4); oled.print (F("< Lokschuppen ")); fahrt = 6; disp(); stopp = 6; myStepper.write( -250 ); // dreht zur Abfahrt: Lokschuppen } if ((button.pressed(Button8)) && (fahrt == 8)) { // Taster8 gedrückt: tone(3, 150, 1000); oled.setCursor (0, 4); oled.print (F("< Ausfahrt Gleis 1B ")); fahrt = 6; disp(); stopp = 6; myStepper.write( -100 ); // dreht zur Ausfahrt Gleis1B - rückwärts } } void disp() { oled.setCursor (0, (fahrt)); oled.print (F(" ")); oled.setCursor (0, (fahrt)); // Position (Zeile) für das Wort "Fahrt" oled.print (F(" Fahrt ")); fahrt = 8; }
Grüße aus der Heimat der E69
-
- Beiträge: 13
- Registriert: Mo 20. Dez 2021, 11:09
- Kontaktdaten:
Re: Schrittmotorsteuerung für Drehscheibe
Hallo Wolfgang,
hatte immer das Falsche raus gesucht aus der Bibliothek. Jetzt
funktioniert er ohne Fehler. Werde heute Abend probieren.
Danke Dir..
Gruß Daniel
hatte immer das Falsche raus gesucht aus der Bibliothek. Jetzt
funktioniert er ohne Fehler. Werde heute Abend probieren.
Danke Dir..

Gruß Daniel
- Admin
- Administrator
- Beiträge: 1251
- Registriert: Mo 20. Apr 2020, 09:47
- Wohnort: 82441 Ohlstadt
- Kontaktdaten:
Re: Schrittmotorsteuerung für Drehscheibe
Ja, da bekommt man schnell mal die falsche Lib, weil es welche mit den selben Namen gibt, oder auch mal mit fast den selben Namen.
Aber schön wenn das Programm jetzt funktioniert. wenn du dann die Anschlüße auch passend hast, dann läuft das Ding.
Franz
Aber schön wenn das Programm jetzt funktioniert. wenn du dann die Anschlüße auch passend hast, dann läuft das Ding.
Franz
-
- Beiträge: 13
- Registriert: Mo 20. Dez 2021, 11:09
- Kontaktdaten:
Re: Schrittmotorsteuerung für Drehscheibe
So Ihr beiden,
habe kurz probiert, konnte nicht abwarten
Drehen usw. funktioniert auch. Rest werde ich wohl
heute abend oder Morgen probieren.
Gruß Daniel
habe kurz probiert, konnte nicht abwarten

Drehen usw. funktioniert auch. Rest werde ich wohl
heute abend oder Morgen probieren.
Gruß Daniel
- Dateianhänge
-
- canvas.png (419.35 KiB) 4582 mal betrachtet
- Franz54
- Beiträge: 56
- Registriert: Mo 20. Apr 2020, 10:12
- Wohnort: 82441 Ohlstadt / Garmisch
- Kontaktdaten:
Re: Schrittmotorsteuerung für Drehscheibe
Na also, schaut doch gut aus. Zu den MobaTools gibt übrigens auch eine gute Beschreibung, die man leicht verstehen kann.
Grüße
Franz
Grüße
Franz
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste