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