Forum: Mikrocontroller und Digitale Elektronik PWM-Blockfahrregler Modellbahn


von Tino E. (tinolino)


Lesenswert?

Hallo Forumgemeinde,

ich suche nach einer Lösung für ein Problem, dass mich seit einer Woche 
nicht weiter kommen läst! Es gibt sicherlich im Web einen Lösungsansatz, 
aber meine bisherigen Rechergen ergaben keine brauchbare Lösung.

Ich plane eine analog/digital Steuerung für meine Modellbahn (H0).

Kurz ein paar Fakten zur Realisierung:

Kommunikation über einen Multimaster Bus (RS485) PC sendet Kommandos an 
am Bus beteiligte µC (Atmega...) Die µC senden Statusänderungen an den 
PC zurück (Gleisbelegtmeldungen) Über die µC werden Weichen, Signale 
sowie auch mit PWM modulierte Fahrspannungen an das Gleis geschaltet. 
(Fahrstrassen) Die Anlage ist in viele einzelne Blöcke aufgeteilt. Jeder 
Block ist aufgeteilt in Fahrbereich, Brems/Beschleunigungsbereich und 
Haltebereich.
Die versorgung der Bereiche geschieht über einen PWM-Fahrregler. Die 
Bereiche sind nur für die Rückmeldung der Zugpossition im Block 
vorhanden. Die Geschwindigkeitsregelung wird dann jeweis vom PC über den 
µC gesteuert.

Soweit erst einmal zur Theorie!

Die Buskomunikation ist (Protokoll & Harsware) sind soweit fertig! Die 
Gleisbestztmeldung ist auch schon fertig geplant. Das schalten von 
Weichenservos ist auch fertig.

Mir bereitet nur der Fahrregler Probleme.

In einem Block kann maximal nur ein Zug verkehren. Das bedeutet das der 
Regler nur den Strom für einen Lok am Block bereitstellen muß. Ich denke 
mal 1,5 - 2 A müssten ausreichend sein. Ich habe mir einige H-Brücken 
angesehen, da diese zum einen die Möglichkeit bieten, PWM auf die 
Fahrspannung zu modulieren, als auch ein Drehrichtungswechsel am Motor 
vorzunehmen. Es gibt viele H-Brücken in dem Strombereich. Welche 
H-Brücke ist hier von Vorteil? Kann ich das überhaupt mit einer H-Brücke 
realisieren? Wie sieht es mit der Strombegrenzung aus? Und zu guter 
letzt: Was passiert wenn ich von einem Block in den anderen fahre? Die 
Software übergit die Fahrparameter (Tastverhältnis, Zugnummer, 
Fahrtrichtung) an den nächten in der Fahrstrasse befindlichen Block. 
Somit ist das Tastverhältniss zweier aufeinander folgender Blöcke 
gleich. Kommte es dennoch zu kurzschlüssen etc. beim wechsel in den 
nächsten Blog?

Da ich auf diesem Gebiet keinerlei Ahnung habe (TTL-Bastler u. 
Programmierer) wäre ich über ein paar Lösungsansätze oder Schaltungen 
dankbar.

Wie muss ich hier vorgehen??

Danke schon mal im vor raus!!!

Grüße aus Thüringen

Tino

von Max W. (max96)


Lesenswert?

Kurzschlüsse dürfte es geben, ich habe aber bei meiner Modellbahn 
gesehen, dass die Transistoren das nicht so kritisch sehen, weil die 
Kurzschlüsse nur sehr kurz andauern. Allerdings ist meine Steuerung 
analog. Das mit der H-Brücke kannst du machen. Wenn du sowieso einen uC 
verwendest, kannst du damit den Strom über einen Shunt Widerstand 
messen. Die H-Brücke kannst du aus 4 FETs und 2 Treibern wie IR2110 
bauen oder ein fertiges IC nehmen, je nachdem wie es dir lieber ist.
Ebenfalls Grüße aus Thüringen :-)

von Tino (Gast)


Lesenswert?

Hallo Max,

danke für die schnelle Antwort! Das hört sich ja schon mal gut an! Hast 
Du mirvielleicht ein Schaltungsbeispiel dazu? Gibt es dafür einen 
fertigen H-Brücken Baustein, oder muss ich das generell über einzelne 
FETs realisieren? Kannst Du mir das mit den Shunt-Widerständen noch 
genauer erklären?

Danke schon mal

und nochmal Grüße aus Thüringen (IK)

Tino

von Max W. (max96)


Lesenswert?

Der Klassiker wäre der L298, aber da gibt es bestimmt bessere 
Alternativen kannst ja mal nach "PWM Motortreiber IC" suchen. Zu dem IC 
guckst du dir dann die Beispielbeschaltung im Datenblatt an und bastelst 
dir daraus was eigenes. Der Shunt Widerstand ist ein Hochlastwiderstand 
mit 0,01-0,1 Ohm, den du zwischen GND und deine Vollbrücke hängst. 
Proportional zum Strom fällt an dem dann eine Spannung ab, die du mit 
deinem uC auswerten kannst. Das ist hier im Forumswiki alles ganz gut 
beschrieben.
Grüße

von Bochum (Gast)


Lesenswert?

Ringstmeier& Gahler aus Herne machen das seit25 Jahren....

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Tino Engelmann schrieb:
> Und zu guter
> letzt: Was passiert wenn ich von einem Block in den anderen fahre? Die
> Software übergit die Fahrparameter (Tastverhältnis, Zugnummer,
> Fahrtrichtung) an den nächten in der Fahrstrasse befindlichen Block.
> Somit ist das Tastverhältniss zweier aufeinander folgender Blöcke
> gleich. Kommte es dennoch zu kurzschlüssen etc. beim wechsel in den
> nächsten Blog?

Kurzschlüsse sind ein Thema. Dafür gibt es rückstellende 
PTC-Sicherungen. Diese sind in beide (!) Zuleitungen von der H-Brücke 
zum Gleis hin einzuschleifen. Aber es gibt noch ein anderes Thema: Wenn 
die PWMs aller beteiligten Fahrregler nicht miteinander synchron laufen, 
"springt" der Zug von einem Block in den anderen, da im Moment des 
Überfahrens die Radsätze mit gegeneinander verschobenen Pulsweiten 
beaufschlagt werden können. Du musst also bei allen Fahrreglern absolute 
Phasengleichheit der PWM sicherstellen, als auch das gleiche 
Tastverhältnis bei einer gerade gelegten Fahrstrasse. Wenn Du das 
beachtest, funktioniert die Sache tadellos.

von Tino (Gast)


Lesenswert?

Hallo und Danke für die schnelle Hilfe!
Wenn ich mir den Beitrag von Knut so ansehe wird mir klar, dass ich 
diese Art von Fahrstrassensteuerung mit meiner geplanten Hardware am Bus 
nicht funktionieren wird. Es ist mir zwar möglich das Tastverhältnis 
synchron zu übertragen, aber bei der PWM-Sync. werde ich Probleme 
bekommen.Eine andere Idee wäre, jeder Fahrstrasse einen Fahrregler 
zuzuweisen. Somit ist in der Fahrstrasse die Pwm und auch das 
Tastverhältnis in allen Blöcken syncron. Da ich ja für jede Zufahrt eine 
Fahrstrasse mit Start und Ziehlpunkt stelle, kann diese Fahrstrasse von 
einem einzigen Regler bedient werden. Wie ich das Schaltungstechnisch 
bewerkstelligen soll weiß ich noch nicht. Die Regler werden wohl zentral 
angeordnet um den Fahrstrom  auf der Anlage zu verteilen. Jetzt werden 
mir auch die Vorteile einer Digitalsteuerung mit Lokdecoder 
deutlich!!!!! Vielleicht entscheide ich mich auch noch um. Projekte wie 
OpenDCC zusammen mit Rocrail schreien förmlich danach nachgedacht zu 
wenden. Was habt Ihr dafür eine Meinung?????

Gruss Tino

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Tino schrieb:
> mit meiner geplanten Hardware am Bus
> nicht funktionieren wird. Es ist mir zwar möglich das Tastverhältnis
> synchron zu übertragen, aber bei der PWM-Sync. werde ich Probleme
> bekommen.

Wir haben das seinerzeit so gelöst, dass ein Masterregler einen 
Sync-Puls ausspuckt, der zu seiner PWM synchron ist. Dieser Puls wird 
von Slave-Reglern zur Timersynchronisation für ihre PWM herangezogen, 
weiß gar nicht mehr aber ich glaube 1x pro ms werden die Phasen 
verglichen und es wird nachgeregelt.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Tino schrieb:
> Jetzt werden
> mir auch die Vorteile einer Digitalsteuerung mit Lokdecoder
> deutlich!!!!!

Naja - die Nachteile liegen darin, dass sich eben nicht alle (alten) 
Modelle auf diese Technik umrüsten lassen. Im Mischbetrieb kann dann nur 
mit Blocksteuerung gefahren werden. Dies ist halt einzelfallabhängig und 
wird durch die Anzahl und das Alter der Leute und durch das Material 
bestimmt, welches da ausgerüstet werden soll.

von Thomas E. (thomase)


Lesenswert?

Tino schrieb:
> Was habt Ihr dafür eine Meinung?????
Ich hab mir sowas vor über 20 Jahren auch mal gebaut. 128 Kanäle, 64 
Stufen. War ein Riesen-TTL-Grab, das die Fahrdaten aus einem RAM mit 
einem Zählerstand verglichen und dann über 595er rausgeschoben hat. Die 
haben dann gemeinsam ihren Latch bekommen und alles war synchron. Also 
keine Überfahrproblematik.
Und natürlich NF-Einspeisung für die Beleuchtung.
Irgendwann habe ich dann alles auf Lokdekoder umgerüstet und das Gerät 
vor ein paar Jahren entsorgt.

Ich würde sowas nicht nochmal bauen. Aber das kann man auch erst sagen, 
wenn man das schon mal gemacht hat. Die Riesenkiste konnte man alleine 
kaum tragen. War schon geil.

Mit einem AVR schafft man vielleicht nicht ganz soviel Kanäle. Aber 
schwierig ist das nicht. Spart vor allen jede Menge Bauteile.
1 kleiner AVR, 2*8 595er
64 Kanäle, 64 Stufen
1
unsigned char nFahr[64];
2
unsigned char nDir[64];
3
unsigned char nPwm;
4
5
while(1)
6
{
7
  nPwm = 0;
8
  while(nPwm < 64)
9
  {
10
    for(unsigned char nInd = 0; nInd < 64; nInd++)
11
    {
12
       if(nFahr[nInd] > nPwm) PortPinF = 1; else PortpinF = 0;
13
       if(nDir[nInd]) PortpinD = 1; else PortpinD = 0;
14
       ShiftOut();
15
    }
16
  LatchUp();
17
  nPwm++;
18
}

Mal so aus dem Ärmel geschüttelt. Aber das müsste gehen.

mfg.

von Oliver (Gast)


Lesenswert?

Hi

Ich denke gerade selbst über sowas nach (allerdings Spur N). Die Ströme 
bewegen sich bei mir sicher unter 1A, so dass ich den derzeit den Si9986 
als H-Brücke favorisiere.

Von der Messung der Stromaufnahme via Shunt bin ich derzeit etwas 
abgekommen und experimentiere mit der Back EMF Methode: 
http://ww1.microchip.com/downloads/en/AppNotes/00905B.pdf
Man schaltet die PWM kurzzeitig (zweistellige Millisekunden soweit ich 
mich erinnere) aus und misst die von der Lok induzierte Spannung im 
Leerlaufbetrieb der H-Brücke. Vorteil: Weniger Verluste, Messergebnis 
ist proportional zur Geschwindigkeit (unabhängig von Zuglänge und 
Steigung).

Dass man die PWM Signale synchronisieren muss, davon gehe ich derzeit 
fest aus.

Oliver

von Tino E. (tinolino)


Lesenswert?

Hallo nocheinmal an alle und danke für die Antworten.

sorry das ich mich erst jetzt melde, ich war zur Weiterbildung im 
Schwabenländle.

Wäre es evtl. eine Mögichkeit eine Art Master-Takt an alle Slaves zu 
verteilen und diese per Software-PWM an die einzelnen Regler weiter zu 
leiten?
Somit wäre der PWM-Takt ert einmal syncron.
Ich liebäugel aber weiterhin mit einer Digitalsteuerung (OpenDCC). In 
Verbindung mit Rocrail wäre das eine gelungen Sache und erspart mir viel 
Programmierarbeit!

Habt ert einmal vielen Dank für die fachkundige Hilfe!

Gruß aus dem verschneiten Thüringen!

Tino

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Tino Engelmann schrieb:
> Wäre es evtl. eine Mögichkeit eine Art Master-Takt an alle Slaves zu
> verteilen und diese per Software-PWM an die einzelnen Regler weiter zu
> leiten?
> Somit wäre der PWM-Takt ert einmal syncron.

Der Master-Takt kann deutlich langsamer als die PWM selbst sein. Die 
Slaves synchronisieren sich sozusagen weich auf die Phase. Das kann man 
über kleine Additionen/Subtraktionen im Timer selbst machen oder gar 
über das OSCCAL-Register.

von Tino E. (tinolino)


Lesenswert?

Hallo Knut,

kannst Du mir das vieleicht noch ein wenig genauer erläutern. Ich weiß 
immer noch nicht genau wie ich den PWM-Takt an den Slaves syncronisieren 
soll!
Da ich aus der Basic-Ecke komme, habe ich bislang die µC mit Bascom 
Programmiert, aber ich glaube mich gut mit der µC Hardware und deren 
Beschaltung vertraut gemacht zu haben.
Ich brauche hier noch ein wenig Starthilfe!!

Gruß Tino

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Tino Engelmann schrieb:
> Ich weiß
> immer noch nicht genau wie ich den PWM-Takt an den Slaves syncronisieren
> soll!

Der Master gibt Phasengenau zum Start seines PWM-Timers ein Signal. Das 
kann auch eingeradzahliger Teiler sein. Wichtig ist nur, dass die Phase 
des Signalanstiegs genau mit Timerwert "0" zusammenfällt. Die Slaves 
sehen dieses Signal und vergleichen die Abweichung ihres eigenen Timers 
mit dem Signal. Durch Eintragen von Korrekturwerten in die Timerregister 
oder durch manipulieren von OSCCAL (wenn der Controller mit internem R/C 
läuft) wird die Abweichung schritweise aufgehoben. Dadurch laufen die 
PWMs nach kurzer Zeit synchron. Viele ATMEGAs unterstützen das Betreiben 
mit Uhrenquarz. Wenn dieser den R/C-Oszillator des Masters kalibriert, 
laufen alle Regler über diese Basisfrequenz. Somit hast Du dann auch 
genaue UART-Frequenz.

von Ralf G. (ralg)


Lesenswert?

Knut Ballhause schrieb:
> Der Master gibt Phasengenau zum Start seines PWM-Timers ein Signal. Das
> kann auch eingeradzahliger Teiler sein. Wichtig ist nur, dass die Phase
> des Signalanstiegs genau mit Timerwert "0" zusammenfällt. Die Slaves
> sehen dieses Signal und vergleichen die Abweichung ihres eigenen Timers
> mit dem Signal.

Vielleicht habe ich mal wieder was falsch verstanden...
So wie ich das hier rauslese, lässt sich damit die Frequenz des Timers 
kalibrieren. Wenn das so ist, dann reicht das aber nicht. Die 
'PWM-Perioden' müssen in allen Slaves gleichzeitig starten!

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ralf G. schrieb:
> Wenn das so ist, dann reicht das aber nicht. Die
> 'PWM-Perioden' müssen in allen Slaves gleichzeitig starten!

Ist doch logisch. Wenn alle Timer bei "0" synchronisieren, sind die 
einzelnen PWM phasengleich zueinander, und zwar an der führenden Flanke. 
Der PWM-Wert im OCR-Register generiert dann die 2. Flanke, die dann bei 
den Reglern einer Fahrstraße ebenfalls an der gleichen Position sein 
muss.

von Martin Beuttenmüller (Gast)


Lesenswert?

Guten Tag ...

@Oliver:
bitte die späte Meldung zu entschuldigen !
Der Si9986 ist (laut Datenblatt) für max. 13.2V ausgelegt.
Somit ist Vorsicht bei der Kombination mit "amtlichen"
Digitalsteuerungen geboten, da dort (soweit ich weiß) höhere
Spannungen möglich sind.

Zugausfälle sind beim "großen Vorbild" mittlerweile zum
Alltag geworden, qualmende Decoder sind doch etwas viel
"Modelltreue".

Liebe Grüße
Martin

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.