SELECTRIX SX-Bus Stationär-Spur-N Decoder mit Drehzahlregelung.

Der Einbau der kleinen D&H-Decoder in alte N-Lokomotiven, speziell Arnold und Fleischmann,
ist nicht immer problemlos, manchmal auch gar nicht gewünscht.

Schön wäre es aber, wenn diese Lok's lastunabhängig und auch sehr langsam fahren könnten.
Dampflok's im "Kriechgang" durchs Betriebswerk und auf Bergstrecken sehen einfach
gut aus.

So kam ich auf den Gedanken, einen lastgeregelten Decoder, extern Lok, an das Gleis anzu-
schließen. Siehe da, es funktioniert!  Überraschend ist auch, dass diese Methode mit allen
Analog-Lok's aus  meinem Fundus ( 15 ) fast gleich gute Fahreigenschaften liefert.
Als Fahrstromquelle wird die SELECTRIX Gleisspannung verwendet, direkt am Decoder
angeschlossen, die Motoranschlüsse sind mit dem Gleis(abschnitt) verbunden. Die
Zusatzfunktionen, Licht und Horn sind natürlich nicht wirksam.

Ich wollte aber eine separate Spannungsversorgung verwenden und den SX-Datenbus
zur Ansteuerung. Ergo Eigenbau.

Lastregelung:

Der Zweck der Lastregelung in Decodern ist, die eingestellte Geschwindigkeit möglichst
konstant zu halten.
Was man also braucht, ist eine Drehzahlregelung, eine "Mimik" zum automatischen
Anpassen der Motorspannung an die Belastung. Dazu braucht die Regelei:

1.  Den Soll-Wert, der die Geschwindigkeit vorgibt.
2.  Den Ist-Wert, wie schnell sich das Motörchen dreht.
3.  Die Differenz der beiden Werte.
4.  Das Stellglied, zum Verändern der Motorspannung.
5.  Den "Regler", der aus der Differenz die Stellgröße bildet.

Selbstverständlich kann eine solche Regelschaltung auch in einem "Analog-Fahrpult"
verwendet werden, wenn man den Sollwert mit einem Potentiometer vorgibt und für die
Fahrtrichtung einen Umschalter nimmt.

Der Sollwert ist die vorgegebene Fahrstufe, im SELECTRIX-System von 0 bis 31 in
beiden Richtungen.
Diese Zahl sagt erstmal nichts über die tatsächliche Geschwindigkeit, die Motordrehzahl aus.
Vernünftigerweise steht " 0 " für Stillstand und " 31 " für "Volldampf" und dazwischen liegt
die Drehzahlkennlinie. In der Modellbahnpraxis ist das keine lineare Funktion sondern eine
Kennlinie, nach der die Geschwindigkeit um einen konstanten Faktor von Stufe zu Stufe ver-
ändert wird, z.B. um 15%, wobei die Mindestgeschwindigkeit der Basiswert ist. Diese wird
von der Motorbauart, dem Getriebe und der Minimallast bestimmt und ist der Wert, bei dem
der Motor noch geregelt "rund" dreht. Höher-polige Motoren sind da im Vorteil, Schwungmassen helfen
dem Rundlauf auch.

Ganz entscheidend ist aber die Form der Motorspannung für den Anlauf. Deshalb verwenden
"edle Fahrtrafo's" eine gepulste Motorspannung zu Verbesserung des Anlaufverhaltens.
 Mit welcher Frequenz die PWM ( Puls-Weiten-Modulation ) arbeitet muss, bestimmt die
Motorbauart bzw. die elektrischen und mechanischen Kennwerte des Motors, Widerstand
der Wicklung, Induktivität und Trägheitsmoment des Systems Motor-Last.

Für die Standard DC-Motoren der N-Lokomotiven ( 3 oder 5 polig) sind das einige Hundert Hz,
Glockenankermotoren (eisenlos) benötigen bis zu 20 KHz wegen der geringen Induktivität.

Meine Regelsoftware verändert nicht nur das Puls-Pausenverhältnis der Motorspannung,
sondern auch die Frequenz. Bei kleinen Drehzahlen gibt die höhere Frequenz den besseren
Rundlauf.

Drehzahlkennlinie:

Im ATtiny2313 sind 4 10-Bit PWM Ausgänge verfügbar. Der Vergleichswert kann also
max. HEX 3FF = 1024 sein. Als Mindestwert verwende ich 10. Die PWM-Werte errechnen
sich z.B. so:
PWM-Wert  = 100 EXP 1/Fahrstufenanzahl EXP Fahrstufe x 10;
( siehe .asm Datei )
Die Spannung am Siebkondensator C4, wird mit dem Spannungsteiler R8-R7 angepasst.

Der Ist-Wert gibt die aktuelle Drehzahl wieder. Hochwertige Drehzahlregelungen werden mit
präzisen Tachogeneratoren ausgestattet deren Kennwert: Volt / Umdrehung exakt bekannt ist.

Für den Modellbahnmotor interessiert die absolute Drehzahl eigentlich nicht und deshalb
kann die Gegen-EMK ( ElektroMotorischeKraft ) als Messgeber verwendet werden.

Jeder Permanentmagnet-Motor kann auch als Generator verwendet werden. Der drehende
Motor liefert an seinen Anschlusspolen eine Spannung die der Drehzahl proportional ist.
Der generatorische Wert, die Volt pro Umdrehung, ist motorabhängig.

Der Motor an einer PWM-Spannungsquelle ist nur in der Pulszeit bestromt, in der Pausenzeit
bietet sich die Chance, die EMK zu messen. Allerdings muss man mit dem Messen nach dem
Ausschalten eine kleine Weile warten bis die Spannung "gültig" ist. Die Induktivität "L" des
Motors und sein ohmscher Innenwiderstand "R" bestimmen diese Wartezeit. Die Zeitkonstante
ist Tk = L / R. Mein Testmotor z.B. L = 5mH R = 25 Ohm, 0.005 / 25 = 0.0002 Sek.
Sehr angenähert bedeutet das, dass nach dem Einschalten der Strom erst nach etwa 3xTk
also ca. 0.6Millisek. konstant wird. Dieser Strom "möchte" nach dem Abschalten weiterfließen,
was er aber nur kann, wenn ein Stromkreis vorhanden ist. Dafür sorgen die Freilaufdioden und
schützen die Schaltelemente vor "unendlich" hohen Spannungsspitzen. Nach ungefähr 3xTk
ist der Strom abgeklungen und es stellt sich an den Motorklemmen die generatorische Spannung
ein, deren Größe der Drehzahl des (auslaufenden) Motors entspricht.
Leider ist das keine "reine" Gleichspannung sondern eine "wellige" wegen den Polen und
Bürsten des Motors. "Schaurig" diese Messspannung, und ohne geeignete Glättung ziemlich
unbrauchbar. Dafür verwende ich in meiner Schaltung ein Siebglied, einen Ladewiderstand und
den Siebkondensator C5. Mit einem Analogschalter wird dieses Siebglied mit der EMK-Quelle
während der Messzeit verbunden. In der Pulszeit und Abklingzeit ist der Schalter offen.

Ich habe schon von Schaltungen gehört, in denen die Glättung durch mehrfache Messung
mit Analog-Digitalwandler und Mittelwertbildung realisiert wird. Mir ist die Low-Tec Methode
lieber, auch weil ich das Ergebnis gut per Osci beobachten kann.

Die Differenz zwischen Ist- und Sollwert wird in hochwertigen Drehzahlreglern zur Erzeugung
der Stellgröße verwendet. Dazwischen liegt der eigentliche Regler mit seinem Verhalten, von
rein Proportional "P" bis "PID" (proportional-integrierend-differenziell). Das ist schwierig in der
Dimensionierung, und führt leicht zu unerwünschtem Schwingen, der Motor "pumpt".

Meine Methode arbeitet mit einem einfachen Spannungskomparator, d.h. es gibt nur die
Zustände "zu schnell" und "zu langsam", was auch der Wirklichkeit entspricht, denn die
exakt richtige Drehzahl ist das unerreichbare Ziel aller Regler.

Der Regler reagiert auf diese beiden Zustände mit Beschleunigen und Bremsen durch Verändern
der Impuls-Pausen-Zeit. Bei "zu schnell" sofort wirksam durch nicht mehr Einschalten bis
"zu langsam", bei "zu langsam" integrierend durch Steigerung der Einschaltdauer. Und schon
schwingt's und pumpt's nicht.

Die H-Brücke besteht aus 4 Schaltern und dem Motor. Solche Vollbrücken werden in der
Automotive-Industrie zu Millionen für Kleinmotoren verbaut, Scheinwerfereinstellung,
Heizungsklappen, Sitzverstellung und Drosselklappe sind Beispiele dafür. Diese Bauelemente
erfüllen höchste Ansprüche an Sicherheit der Funktion und Lebensdauer und haben deshalb
den Rundumschutz eingebaut :
Gegen Überspannung, Kurzschluss, Überlast, Übertemperatur..., teilweise mit Rückmeldung
an den Zentralrechner des Autos zwecks Diagnose-Stecker und Fehlerprotokoll.

Leider sind diese Produkte nicht ohne weiteres für meinen Regel-Decoder verwendbar, weil der
Motor mit diesen Modulen entweder beidseitig abgeschaltet  oder kurzgeschlossen wird.
Für die Messung der EMK ist aber als Bezugspotential GND = 0V notwendig, d.h. einer der
beiden LowSide Schalter muss geschlossen bleiben, die 3 anderen müssen offen sein.

Weil ich auf den Vollschutz der Schalter nicht verzichten will, verwende ich "Smart-Produkte"
die auch mit Logikpegel aus dem Microprozessor direkt gesteuert werden können. Weil es bei
meinem Stationärdecoder nicht auf die Baugröße ankommt, habe ich "handliche" lieferbare
und preisgünstige Typen gewählt. Infineon LowSide BTS117, HiSide BSP452.

Schaltungsbeschreibung:

Für die Ist-Wert-Erzeugung ist zuerst ein 1:1 Spannungsteiler, R1-R2, über dem Motor notwendig
damit in beiden Drehrichtungen eine positive Spannung anliegt. Während dem EIN-Impuls
liegt hier 1/2 Betriebsspannung, zuviel für die 5V Elektronik. Deshalb der Spannungsteiler R3-R4
gegen GND (auch 1:1 ). Dies ist der eigentliche Messpunkt für die EMK. Mit Ladewiderstand R9
zum Analogschalter. Zum Schutz des Analogschalters dient die Zenerdiode D1 4V7. Als
Schalter kann man ein "Edelteil" verwenden oder aber 1/4 des Uralt-CMOS-Schalters
HEF4066 von Philips o.ä.
Am Ausgang des Analogschalters ist direkt der Siebkondensator C5 und der Komparatoreingang
des Micro ( ATtiny2313, Pin13 ) angeschlossen.

Für die Sollwerterzeugung verwende ich die PWM-Funktion des Micro. Im Programmspeicher
ist eine Wertetabelle hinterlegt, die der Fahrstufenkennlinie entspricht.
Aus dem decodierten LOK-Steuerwort wird die Fahrstufe extrahiert und ein Offsetpointer
in die Speedtabelle erzeugt. Dieser indizierte Wert wird dem PWM-Timer übergeben.
Der Ladewiderstand und ein weiterer Siebkondensator bilden die Soll-Spannung, die
an den 2.-ten Komparatoreingang angeschlossen ist ( ATtiny2313, Pin12 ).

Die Steuereingänge der Smart-Switches sind direkt mit den Ausgängen des Micro verbunden,
ebenso die SX-Bus-Signale Takt und Daten.

Programmbeschreibung:

Das Programm besteht aus dem Reglerteil und der SX-Decodierung. Der Decoderteil entspricht
dem des Servo-Decoders und ist lediglich in der Initialisierung dem ATtiny2313 angepasst und
es wird eine komplette Unteradresse decodiert.
Das Prinzip der Offline Programmierung im ATMEL STK500 habe ich wieder verwendet.

Der Reglerteil ist im Quellprogramm komplett kommentiert.

Testaufbau:

Nachdem es auf die Baugröße weniger ankommt als auf vernünftige Messmöglichkeiten habe
ich ein 2.54 mm Lochrasterplatine mit 100x50 mm gewählt und die Bauelemente so angeordnet
wie in der Schaltung gezeichnet.


Part Value         Device Package

C1   47µF           CPOL- EUE5-8.5
C2   4.7µF          CPOL-EUE5-8.5
C3   4.7µF          CPOL-EUE5-8.5
C4   1µF             CPOL-EUE5-8.5
C5   47nF           C5/4.5 C5B4.5
C6   10nF           C5/4.5 C5B4.5
D1   4V7             BZV10 DO34Z7
IC1  ATtiny2313 DIL20
IC2   4066N       DIL14
IC3   7812T       TO220H
IC4  7805T        TO220H
M1   LSP10       Lötöse
M2   LSP10       Lötöse
R1   4k7             R-EU_0207/10
R2   4k7             R-EU_0207/10
R3   4k7             R-EU_0207/10
R4   4k7             R-EU_0207/10
R5   15k             R-EU_0207/10
R6   15k             R-EU_0207/10
R7     3k             R-EU_0207/10
R8  15k              R-EU_0207/10
R9    1k              R-EU_0207/10
R10 10k             R-EU_0207/10
R11 15k             R-EU_0207/10
R12 15k             R-EU_0207/10
R13 15k             R-EU_0207/10
T3     BTS117    TO220BV
T4     BTS117    TO220BV
T1     BSP452    BSP452
T22   BSP452    BSP452
X3     MAB5SH  MAB5SH

Materialkosten ca.€ 8.-
Protyp-PCB   ca. 20.- € 

Natürlich ist der Nachbau kein "Anfängerprojekt", der Hobbyelektroniker hat das "Ding"
in 2 Stunden gebaut und programmiert, die Bauelemente gibt es z.B. bei Fa. Reichelt.

Abbildungen :

Die Schaltungs-Skizze



Der Testaufbau






Eines der Testobjekte




Die Motorspannung bei Fahrstufe 20




Messwerte mit der ARNOLD 2545 Br 36
 

Fahrstufe  Speedwert  U-Soll [mV]  Geschw. [km/h]
  0   0   0  0
  1   10   8.5   1,2
  2   14   11.8   2,0
  3   16   13,4   2.2
  4   18   15,1   2.7
  5   21   17,5   3
  6   24   20   3.6
  7   28   23,3   4,5
  8   33   27,4   5,3
  9   38   31,5   5,9
  10   44   36,4   7
  11   51   42,2   8,8
  12   59   48,8   9,9
  13   69   57   12
  14   79   65   13,7
  15   92   75,8   16,1
  16   107   88   18
  17   124   102   20,7
  18   144   118   24,7
  19   167   137   28,4
  20   194   160   30,5
  21   225   185   38,4
  22   261   216   44,5
  23   302   250   50
  24   351   290   61
  25   407   336   71
  26   472   390   82
  27   548   452   94
  28   635   524   109
  29   737   608   124
  30   855   705   150 !!
  31   992   818   170 !!!



Messwerte mit der ARNOLD 2276 BR96 Mallet

  1   10   8,6   1,4
  5   21   17,6   2,4
  10   44   36,5   6,6
  15   92   75,8   14
  20   194   160   28,5
  25   407   336   60
  30   855   706   123 !!
  31   992   818   141 !!!



;** Geschwindigkeitstabelle im Programm-Memory **
;** sp(n) = 100 EXP 1/32 Exp n x 10 **
;**************************************************************************
speed:
.DW 0, 10, 14, 16, 18, 21, 24, 28, 33, 38
.DW 44, 51, 59, 69, 79, 92,107,124,144,167
.DW 194,225,261,302,351,407,472,548,635,737,855, 992
.DW 1023, 1023

Die Werte für den PWM Timer sind auf 10Bit = 1023 begrenzt.

Download Quellprogramm :        StatDeco.asm

Jonathan Bohmer, im Mai 2007