Zum Inhalt springen

Gartenbahn-Projekt

Ansicht von 5 Beiträgen - 1 bis 5 (von insgesamt 5)
  • Autor
    Beiträge
  • #9182 Antworten
    Egbert
    Gast

    Hallo Stefan,

    ich bin absoluter Neuling in Arduino-Sachen. Ich möchte aber auf meiner Gartenbahn eine Strecke ein wenig automatisieren, d.h. die Bahn soll eine Runde fahren und wieder am Bahnhof anhalten, um dann nach einer Weile wieder anzufahren. Die Hardware (Read-Kontakte etc.) wäre nicht das Problem für mich. Jedoch die Programmierung … Für die Ansteuerung des Lok-Motors habe ich mir L 298N-Baustein beschafft. Und probiere nun mit einem Gleichstrommotor und dem Arduino-Board, eine Anfahrtrampe zu erzeugen. Ich dachte das dies mit einer for-Schleife so gehen könnte:

    int motor1_vw = 10;
    int motor1_rw = 9;
    int motor1_Speed = 8;
    void setup() {
    pinMode(motor1_vw, OUTPUT);
    pinMode(motor1_rw, OUTPUT);
    pinMode(motor1_Speed, OUTPUT);
    }
    void loop() {
    // motor1

    digitalWrite(motor1_vw, HIGH); // A = HIGH and B = LOW means the motor will turn right
    digitalWrite(motor1_rw, LOW);

    for (int i = 0; i < 250; i = i + 50) {
    analogWrite(motor1_Speed, i); // speed counts from 0 to 255
    delay (2000);
    }
    }
    Nach meiner Vorstellung müsste der Motor das Anfahren durch Hochzählen (i)auf die Maximaldrehzahl 250 in 50-er Schritten realisieren. Macht er aber nicht- er läuft gleich mit Maximaldrehzahl an… Ein weiteres Problem wäre für mich – wie ich aus der for-Schleife wieder herauskomme, d.h. die Maximaldrehzahl beibehalte bis dann durch einen Read-Kontakt das Abbremsen der Lok ausgelöst wird.
    Vielleicht kannst Du einem Anfänger einige Tipps geben.
    Vielleicht könnte das Projekt ja auch etwas für Deine Newsletter sein, die auch abonniert habe.
    Das Rampenproblem ist sicherlich schon oft erörtert worden- aber so richtig habe ich dazu nichts im Netz gefunden.
    Vielen Dank im Voraus.
    Viele Grüße
    Egbert

    #9183 Antworten
    Franz-Peter
    Gast

    Hallo Egbert,
    er L298 ist zwar ein ‘urgestein’ bei den H-Brücken und da gibt es inzwischen wesentlich bessere. Aber das ist erstmal nicht dein Problem.
    Dein Problem liegt darin, dass der Pin 8, den Du für die Geschwindigkeit verwenden willst, kein PWM-Pin ist. D.h. dass da analogWrite garnicht funktioniert.
    Welchen Arduino hast Du denn? Auf UNO/Nano funktioniert analogWrite nur auf den Pins 3,5,6,9,10 und 12.

    Gruß
    Franz-Peter

    #9480 Antworten
    Peter Strom
    Gast

    Hallo Egbert,
    habe gerade Deinen Post gesehen. Zur Spannungsrampe hast Du ja schon Rückmeldung. Da das Arduino-Hauptprogramm eine Endlosschleife ist, wird natürlich auch Deine for-Schleife immer wieder neu gestartet. Du brauchst eine Zusatzinformation, ob der Zug anfahren soll oder nicht. Ich zeigs Dir an ein paar Codefragmenten:

    bool Zug_steht;

    void setup()
    {
    Zug_steht = true; // bei Programmstart fährt der Zug erst einmal an
    }

    void loop()
    {
    if (Zug_steht)
    {
    for (… // Zug fährt an
    .
    .
    Zug_steht = false; //klar, er fährt ja jetzt
    }

    Sobald Du Zug_steht wieder auf true setzt, also in Deinem Fall nach Erkennen des Reedkontaktes und dem Ablauf der gewünschten Verweilzeit (die ich übrigens zufällig erzeugen würde, z.B. zwischen 30 und 90 Sekunden), wird er dann brav wieder anfahren.
    Viel Erfolg und Spaß mit Deiner Gartenbahn.
    Peter

    #9481 Antworten
    Peter Strom
    Gast

    Schade dass er Editor meine Einrückungen zur Coedstrukturierung gefressen hat, aber man versteht es auch so, hoffe ich.

    #9560 Antworten
    Stefan Hermann
    Administrator

    @Peter Strom: Ja, die Foren-Software ist wirklich schwierig. Das ist nur eines der Probleme :-D

Ansicht von 5 Beiträgen - 1 bis 5 (von insgesamt 5)
Antwort auf: Antwort #9480 in Gartenbahn-Projekt
Deine Information: