RE: DCC++ auf dem Arduino Mega mit dem L298P Motor Shield

#1 von Kameltreiber , 07.11.2020 10:58

Hallo Stummis,

ich bin kürzlich über Rocrail auf die Möglichkeit gestoßen die Modellbahn Digital mittels eines Arduino Uno oder Mega und DCC++ zu steuern. Den Vorteil den ich für mich darin sehe ist, dass man beim Mega die freien digitalen Pins als Gleisbelegtmelder nutzen kann und so recht günstig auf einem kleinen Bahnhof einen automatisierten Betrieb realisieren kann.

Hierfür habe ich mir auf Ebay ein entsprechendes Motor Shield mit L298P Motortreiber bestellt, was allerdings vom Pinout nicht dem teuren originalen Arduino Motor Shield entspricht, welches auch nur noch schwer zu bekommen ist: https://www.ebay.de/itm/L298-Keyes-L298P...EwAAOSwMYtcUy39

Daher habe ich im Sketch in der "DCCpp_Uno.h" die Pins den Motor Shield entsprechend der Produktbeschreibung auf Ebay angepasst:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
#define MOTOR_SHIELD_NAME "ARDUINO MOTOR SHIELD"
 
//#define SIGNAL_ENABLE_PIN_MAIN 3
//#define SIGNAL_ENABLE_PIN_PROG 11
#define SIGNAL_ENABLE_PIN_MAIN 11 // Ausgang A
#define SIGNAL_ENABLE_PIN_PROG 10 // Ausgang B
 
//#define CURRENT_MONITOR_PIN_MAIN A0
//#define CURRENT_MONITOR_PIN_PROG A1
#define CURRENT_MONITOR_PIN_MAIN A2 // Ausgang A
#define CURRENT_MONITOR_PIN_PROG A3 // Ausgang B
 
//#define DIRECTION_MOTOR_CHANNEL_PIN_A 12
//#define DIRECTION_MOTOR_CHANNEL_PIN_B 13
#define DIRECTION_MOTOR_CHANNEL_PIN_A 13
#define DIRECTION_MOTOR_CHANNEL_PIN_B 12
 



Durch das abweichende Pinout des Motor Shield musste ich ebenfalls noch die PWM Pins für das DCC Signal ändern. Da ich fürs erste das Programmiergleis nicht benötigte, habe ich dieses auskommentiert und dem DCC Signal des Hauptgleis den PWM Pin 2 des Arduino Mega zugeordnet. Um das DCC Signal nun auf den Gleisausgang zu bekommen, habe ich natürlich auf dem Motor Shield noch eine Brücke vom Pin 2 zum Pin 13 für den Motorausgang A gesteckt.


Mein Problem ist jetzt, dass bis auf Fahrstrom an und aus nichts funktioniert. Sobald ich die Brücke zum Pin 2 ziehe, fährt die Lok analog los sobald ich den Fahrstrom eingeschaltet habe. Wenn ich die Brücke wieder stecke bleibt die Lok auch bei eingeschalteter Spannung stehen und wartet auf ihren Fahrbefehl über DCC, welchen sie aber anscheinend nicht korrekt empfängt. Am Motor Shield leuchten bei gesteckter Brücke zu Pin 2 beide LED des Motorausgang A, also scheint hier auch ein Signal vom DCC Pin anzuliegen.
Ich habe die Konfiguration sowohl mit Rocrail als auch mit JMRI getestet, welche beide auch eine Verbindung zur "Zentrale" aufbauen können. Der Fehler bleibt aber bei beiden exakt identisch.

Ich habe leider keine Ahnung wo ich das Problem noch suchen soll. Liegt das Problem am Motor Shield oder doch am Code auf dem Arduino, an dem ich aber eigentlich bis auf die Pins nichts weiter verändert habe?

Vielleicht hat hier jemand ja schon ähnliche Erfahrungen gemacht und kann mir bei der Lösung meines Problems helfen.


Viele Grüße

Alexander


Kameltreiber  
Kameltreiber
S-Bahn (S)
Beiträge: 14
Registriert am: 29.12.2019


RE: DCC++ auf dem Arduino Mega mit dem L298P Motor Shield

#2 von MicroBahner , 11.01.2021 10:57

Hallo Alexander,

Zitat

Durch das abweichende Pinout des Motor Shield musste ich ebenfalls noch die PWM Pins für das DCC Signal ändern. Da ich fürs erste das Programmiergleis nicht benötigte, habe ich dieses auskommentiert und dem DCC Signal des Hauptgleis den PWM Pin 2 des Arduino Mega zugeordnet. Um das DCC Signal nun auf den Gleisausgang zu bekommen, habe ich natürlich auf dem Motor Shield noch eine Brücke vom Pin 2 zum Pin 13 für den Motorausgang A gesteckt.

Meinst Du da diesen Codeabschnitt:

1
2
3
4
5
6
7
8
 

#elif defined ARDUINO_AVR_MEGA2560
 
#define ARDUINO_TYPE "MEGA"
 
#define DCC_SIGNAL_PIN_MAIN 12 // Arduino Mega - uses OC1B
#define DCC_SIGNAL_PIN_PROG 2 // Arduino Mega - uses OC3B
 
 

Die Pins darfs Du nicht einfach ändern, da sie fest den Timerausgängen OC1B und OC3B zugeordnet sind. DCC++ verwendet genau diese Timerausgänge, das kannst Du nicht durch Ändern dieser defines beeinflussen.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.734
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Spurweite H0
Steuerung Eigenbau
Stromart Analog


RE: DCC++ auf dem Arduino Mega mit dem L298P Motor Shield

#3 von franz_H0m , 17.01.2021 10:52

Hallo Alexander,

hast Du es hinbekommen?


Grüße, Franz

Mitglied bei den Lundarallarna.
Avatar: MAN-Zugmaschine der Ottensener Industriebahn (Foto: Dr. Ullrich Huckfeld).


 
franz_H0m
InterCity (IC)
Beiträge: 551
Registriert am: 02.11.2008
Ort: Lund, Sweden
Gleise Tillig/Eigenbau
Spurweite H0m
Steuerung z21PG DCC
Stromart Digital


   

Hole Lokomotiv-Status von der Master CS2 -> will aber nicht!
MobaLedLib: Diskussion zur Verbesserung und Neustrukturierung der Dokumentation zur MobaLedLib

  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
disconnected Foren-Chat Mitglieder Online 87
Xobor Einfach ein eigenes Forum erstellen
Datenschutz