Go Down

Topic: Modellbahn steuern (Read 17011 times) previous topic - next topic

volvodani

Für die ersten Schritte müsste das eigentlich funktionieren.
Für die Tests würde ich die Richtungsauswahl und die Schritauswahl in den void setup() bringen da diese ja nur einmal gesetzt werden muss. Und den Takt kann man erstmal so erstellen. Die Geschwindigkeit des Stepper kannst du über interval ändern.
Ich würde das mit Blink Without Delay machen.

Code: [Select]

int Drehrichtung = 11; //CW / CCW
int Schritte = 10; //Halbschritte, Vollschritte
int Takt = 9; //Clock
int State = LOW;             // State Speicher für den Ausgangzustand
long previousMillis = 0;        // Speichert die Zeit seit dem letzten wechsel
long interval = 1000;           // interval für jeden Schritt (millisekunden)
unsigned long currentMillis = millis();


void setup(){
  pinMode(Drehrichtung, OUTPUT);
  pinMode(Schritte, OUTPUT);
  pinMode(Takt, OUTPUT);
  digitalWrite(Drehrichtung, LOW);  //ist das jetzt im Uhrzeigersinn oder gegen ? <==Testen
  digitalWrite(Schritte, HIGH); //sind das jetzt Vollschritte ? <== Testen
 
}

void loop()
  if(currentMillis - previousMillis > interval) {
    previousMillis = currentMillis;   
    State=!State;
    digitalWrite(Takt, State);
}



Und den Rest würde ich jetzt mit Learning bei Doing machen :-)

Gruß
Daniel
So ist das Leben:
Manchmal bis du das Denkmal, manchmal die Taube!

lgrube96


Für die ersten Schritte müsste das eigentlich funktionieren.


Meinste da mit jetzt meinen Sketch ?

Da ich im Moment noch auf den L297 warte, hab ich erstmal Leds an das Arduino angeschlossen, und habe deinen Sketch mal hochgeladen. Also es ist eigentlich alles richtig, nur der Takt funktioniert nicht. Müsste die Led nicht blinken ? weil das tut sie nämlich nicht...

Und den Rest würde ich jetzt mit Learning bei Doing machen :-)


Werd ich versuchen :D

Gruß
Lorenz

guntherb


Müsste die Led nicht blinken ? weil das tut sie nämlich nicht...

Und den Rest würde ich jetzt mit Learning bei Doing machen :-)


Werd ich versuchen


Die LED sollte Blinken.
Das tut sie nicht, weil ein Fehler im Code ist.

Ist aber gleich eine gute Übung, den Fehler zu finden.
Wenn du den nicht findest, solltest du dir vielleicht erst mal ein einfacheres Projekt suchen.

Gunther

Hinweis: wo werden die Zeit-Variablen gesetzt?

Grüße
Gunther

sth77

#168
Aug 07, 2012, 03:27 pm Last Edit: Aug 07, 2012, 03:28 pm by sth77 Reason: 1
Der Sketch von Volvodani funktioniert so noch nicht, da fehlt irgendwo in der loop die Aktualisierung über die millis(). Schau dir dazu das Beispiel BlinkWithoutDelay an, da ist das schöner erklärt als ich das je könnte. ;)

[edit]: Hatte guntherbs Posting nicht zuende gelesen. Wir meinen wohl das gleiche...
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

lgrube96

Boah ich kanns kaum fassen, ich hab den Fehler gefunden  :smiley-mr-green:
@guntherb: Danke für den Hinweis ! ;)

So funtkioniert das zum Mindest bei mir...
Code: [Select]
void loop(){
unsigned long currentMillis = millis();
 if(currentMillis - previousMillis > interval) {
   previousMillis = currentMillis;  
   State=!State;
   digitalWrite(Takt, State);
}
}



Ich kann jetzt leider nicht genau begründen, warum das in den loop teil muss, villeicht weil das dann nicht immer wiederholt wird ?! Keine Ahnung...:/

@sth77: Vielen Dank aber ich hab es ohne diese "Anleitung" geschafft, falls mir das jemand glaubt...aber begründen kann ich das dadurch nicht wirklich s.o.

Gruß
Lorenz


sth77

Ja, man muss ja immer einen Vergleich zum vorangegangenen Zeitpunkt haben, daher gehört diese Aktualisierung in die loop(). Hast du richtig gemacht, glaube ich dir auch, dass du selbst drauf gekommen bist. :D
Der Schrittmotor wird bei einem Intervall von 1000 Millisekunden (=1 Sekunde) schrecklich langsam drehen, der hat ja selbst mehrere hundert Schritte.
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

lgrube96

Das ist gut, danke ;)
Joa mal schauen ich probier das dann mal aus wenn der l297 da ist.

Dann hab ich noch ne Frage zu dem Schrittmotor, da steht in dem Datenblatt http://www.auf-vertrieb.business.t-online.de/pdf/UHM.pdf
In der Zeile Voltage: 12 - 230 V.
Kann der Schrittmotor mit 230 V betrieben werden ?! Find ich selber ein wenig mysteriös :D
Nebenbei, ich mach das auf jedenfall nicht...:D

Gruß
Lorenz

sth77

Ich glaube ja noch nicht einmal, dass es überhauprt ein Schrittmotor ist...
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

lgrube96

Biste dir da sicher ? Warum glaubst du das denn ?

Bloß nicht :/

michael_x

Werden Schrittmotoren mit Wechselstrom betrieben und haben 3 Pole zur Drehrichtungsumkehr ???

sth77

Ich bin kein Motorexperte, aber das Ding scheint doch der Benennung nach ein Synchronmotor zu sein. Ich lasse mich aber gern eines besseren belehren.

Hast du den übereifrig bestellt? ;) Wenn ja, sollte noch immer das Fernabsatzgesetz greifen. ;)
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

lgrube96

Ouh stimmt  :~, hab das erst gar nicht gelesen.
Und ich hab gerade gemerkt, dass das das falsche Datenblatt ist ! Den Schrittmotor den ich habe, hat nämlich nur 4 Ausgänge...

Das Problem liegt daran, da der Motor schon länger in einer Kiste lag und keine Modellnummer draufsteht, weiß ich nicht genau welcher das genau ist.
Den hab ich mal vor Jahren von meinem Vater bekommen :D Der hat gesagt, wenn ich mich noch erinnern kann, dass sei ein Schrittmotor.

Ich hab nochmal nach einem Datenblatt gesucht und das gefunden (denke das ist das passend) http://www.auf-vertrieb.business.t-online.de/pdf/UBB.pdf

So dann kann es ja doch weitergehen  :)

Gruß
Lorenz

lgrube96

Hallo zusammen,

So, jetzt bin ich ja mit eurer Unterstützung mit der Modellbahnsteuerung fertig.
Ich will mich nochmal bei allen bedanken ! ;)

Jetzt warte ich noch auf den L297...in der Zwischenzeit muss ich wohl wieder ein neues Projekt planen :D (nicht wundern, ich muss immer was zu tun haben  :smiley-mr-green: )...
Ich denke das geht in Richtung moving Head, werde dafür auf jedenfall auch ein Threas starten !

Gruß
Lorenz

volvodani

Oh man in der Eile vergessen.
vor der if
currentmillis()=millis();

;) Das kommt vom schreiben ohne Testen. Schande über mein Haupt.


===> und das nach 3 Jahren Programmierung   =(
So ist das Leben:
Manchmal bis du das Denkmal, manchmal die Taube!

Go Up