Erste Stufe:

da eine Roco Maus 2 vorhanden ist, bietet sich an die Anschlussbox 10761 als Booster an.

Verwendet wird ein MEGA 2560 und eine NodeMCU V3 als WiFi Modul.

15.4.2021

SW 4.89 aufgespielt. NodeMCU über RX2 TX2 am Arduino verbunden. WiFi in Heim WLAN eingebunden. Z21 Apps erkennen die Zentrale. 

Nächster Schritt: Warten auf Hardwarelieferungen 

15.2.2022

Mit der DCC Adresse 2 bewegt sich meine V100 Ost einige cm über die PG Zentrale. Angeschlossen ist ein interner Booster L 298. Steuerung über die Z21 App auf dem IPhone. Jetzt kann optimiert werden. 

Display funktioniert.

 

16.2.2022

Es funktioniert! Mit einem Node MCU mit der Software 4.95 und dem L298 funktioniert der Fahrbetrieb erstmals. Auslesen geht allerdings noch nicht.

Linksammlung ( wird laufend erweitert)

Digitale Modellbahn

 

L6203 Datenblatt

Open DCC Booster

Stückliste

Paterweb ( Tschechische Sprache )

 

 

Aufgebaut wird die Schaltung mit einem Arduino Nano und einem Motortreiber mit L298. Die beiden Endsensoren sind Reed Kontakte. In den entsprechenden Fahrzeugen ist ein Magnet befestigt, der die Reed Kontakte schaltet.

 

 

 [code]

// angelehnt an (c) Michael Schoeffler 2016, http://www.mschoeffler.de

const int enb = 6; // PWM pin 6

const int in3 = 7;

const int in4 = 8;

 

int sensorA = 14 ; // Analog Pin 0 Haltepunkt A

int sensorB = 15; // Analog Pin 1 Haltepunkt B

 

void setup() {

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

pinMode(enb, OUTPUT);

 

pinMode ( sensorA, INPUT ); //Sensor A und B als Input

pinMode ( sensorB, INPUT );

digitalWrite( sensorA , HIGH ); //Interne Widerst�nde setzen

digitalWrite( sensorB , HIGH );

 

}

void slow() {

analogWrite(enb, 128);

}

void fast() {

analogWrite(enb, 255);

}

void halt() {

analogWrite(enb, 0);

 

}

void loop() {

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

fast();

 

while (1) //Loop bis SensorA aktiviert ist

{

if ( digitalRead( sensorA ) == 0 ) //SensorA ist gegen 0 geschaltet

break ;

delay( 10 );

}

 

halt();

 

delay(5000);

 

// change of direction

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

fast();

 

while (1) //Loop bis SensorB aktiviert ist

{

if ( digitalRead( sensorB ) == 0 ) //SensorB ist gegen 0 geschaltet

break ;

delay( 10 );

}

halt();

 

delay(5000 );

}

[/code]

 

Den Arduino UNO mit L293 Motorshield habe ich auch verwendet. Funktioniert ebenso gut. Hier der Code:

  

 [code]

#include "AFMotor.h"

int sensorA = 14 ; // Analog Pin 0 Haltepunkt A

int sensorB = 15; // Analog Pin 1 Haltepunkt B

AF_DCMotor motor( 1 ); //

 

void setup()

{

pinMode ( sensorA, INPUT ); //Sensor A und B als Input

pinMode ( sensorB, INPUT );

digitalWrite( sensorA , HIGH ); //Interne Widerst�nde setzen

digitalWrite( sensorB , HIGH );

 

}

 

void loop()

{

motor.run( FORWARD );

motor.setSpeed( 200 );

while (1) //Loop bis SensorA aktiviert ist

{

if ( digitalRead( sensorA ) == 0 ) //SensorA ist gegen 0 geschaltet

break;

delay( 10 );

}

motor.run( RELEASE );

delay( 5000 ); // 5 Sekunden Wartezeit

 

motor.run( BACKWARD );

motor.setSpeed( 200 );

 

while (1) //Loop bis SensorA aktiviert ist

{

if ( digitalRead( sensorB ) == 0 ) //SensorB ist gegen 0 geschaltet

break;

delay( 10 );

}

motor.run( RELEASE );

delay(5000 ); // 5 Sekunden Wartezeit

 

 

}

 

[/code]