SAnD - Servo Ansteuerungs-Dekoder: Konfiguration

Diese Seite beschreibt die Konfiguration des SAnD-4 Dekoders über ein spezielles PC-Programm, den Hex_Manipulator. Um diese Möglichkeiten zu nutzen muss das erzeugte HEX-File in den PIC übertragen ("gebrannt") werden.

Adressen einstellen / Mapping einstellen / Kurvenform einstellen / Adressen lernen (Address learning function) / Endpositionen einstellen / Download / Variations-Möglichkeiten

 
Ein Servo hat naturgemäss eine ganze Menge Einstell-Möglichkeiten. Für die verschiedenen Ansteuerungen möchte der professionelle Anwender (und wer Servos einsetzen will, den kann man wohl zu dieser Gruppe zählen..) z.B. die Kurvenform anpassen.
Das Einstellen einer Kurve über CVs oder ähnliches möchte ich mir lieber gar nicht erst vorstellen (müssen), dies ist einfach nicht praktikabel. Da bei meinen Projekten ja alles ein bischen anders ist, habe ich an dieser Stelle auch eine ganz spezielle Möglichkeit: die Manipulation des HEX-Files, welches dann in den Dekoder-PIC gebrannt wird. Das geht natürlich nur, wenn man das HEX-File dann auch in den PIC übertragen werden (sprich "brennen") kann, aber diese Fähigkeit haben wohl inzwischen die meisten Anwender meiner Projekte.
 
Nun denn, hier geht es zum PC-Tool (mit dem man übrigens alle meine HEXen anpassen kann):
 
arrow Hex_Manipu - Manipulieren des HEX-Files
 
Zunächst muss das entsprechende HEX-File in den Manipulator geladen werden. Es erscheint jetzt dieser Blidschirm:
 
Sand 4 Hex Manipulator

zurück zum Anfang nach Oben

Adressen einstellen

Der Dekoder hat (bis zu) 8 Adressen. Die Adressen können hier eingestellt werden, aber auch später "am Gleis" über die normale Adress-Lern Routine geändert werden.
 
Sand 4 Hex Manipulator Adressen

 

zurück zum Anfang nach Oben

Mapping einstellen

Jetzt wird es schon ein bischen komplizierter: das sogenannte "Mapping" definiert, durch welche Adresse bei bestimmter Servo mit einer bestimmten Kurve gefahren wird.

 
Es wird zunächst definiert, welcher Servo zu berwenden ist:
 
Sand 4 Hex Manipulator Mapping 1

 
Anschließend kann bestimmt werden, was mit diesem Servo zu tun ist, also ob eine Kurve einmalig oder zyklisch (START LOOP) zu starten ist. Laufende Loops können mit der ABBRUCH-Funktion sofort gestoppt werden, während ein BEENDEN die Kurve noch beendet und dann die LOOP nicht wieder startet.
 
Sand 4 Hex Manipulator Mapping 1a

 
Jetzt wird noch definiert, welche der 4 Kurven denn nun verwenden ist:
 
Sand 4 Hex Manipulator Mapping 1b

 
Und nun noch, welcher Relais-Ausgang geschaltet werden soll:
 
Sand 4 Hex Manipulator Mapping 1c

 
Ich erkläre das am besten mal an ein paar Beispielen: Mal angenommen, Sie wollen Form-Signale (2-begriffig) stellen, und zwar an allen 4 Servos. Dann brauchen Sie ja im Prinzip 2 Kurven-Formen, nämlich je eine für "Hoch" und für "Runter". Dadurch kann man dann in der "Hoch"-Kurve auch das "Umfassen" realisieren. Nun würde sich dann das folgende Mapping ergeben:
 
Adresse 1 fährt Signal 1 hoch, also Kurve 1 an Servo 1
Adresse 2 fährt Signal 1 runter, also Kurve 2 an Servo 1
Adresse 3 fährt Signal 2 hoch, also Kurve 1 an Servo 2
Adresse 4 fährt Signal 2 runter, also Kurve 2 an Servo 2
Adresse 5 fährt Signal 3 hoch, also Kurve 1 an Servo 3
Adresse 6 fährt Signal 3 runter, also Kurve 2 an Servo 3
Adresse 7 fährt Signal 4 hoch, also Kurve 1 an Servo 4
Adresse 8 fährt Signal 4 runter, also Kurve 2 an Servo 4
 
könnse folgen? Gut! Dieses Mapping würde dann hier so aussehen, wobei wir die Einstellungen für die Relais ersteinmal ignorieren können:
 
Sand 4 Hex Manipulator Mapping 2

zurück zum Anfang nach Oben

Servo-Parameter einstellen

Es gibt noch ein paar Parameter, die Servo-Spezifisch sind:

 
Sand 4 Hex Manipulator Parameter 1

 
"Impuls-Zeit (MIN)" und "Impuls-Zeit (MAX)" stellen die End-Anschläge des Servos da. Hier können Werte eingetragen werden, wenn man diese schon kennt. Ansonsten würde man diese Parameter eher durch die Justage-Funktion (Endpositionen einstellen) ermitteln.
 
"keine Unterbrechung" führt dazu, eine der Servo während einer Bewegung nicht durch einen neuen Befehl unterbrochen werden kann. Dies ist eigentlich meistens sinnvoll, da ansonsten ziemlich wilde Servo-Bewegungen entstehen können.
 
"keine Wiederholung" führt dazu, die selbe Kurve nicht 2x hintereinander gefahren werden darf. Dies ist z.B. bei Weichen sinnig, denn wenn diese zuletzt von LINKS nach RECHTS gefahren wurde, dann muss sie ja erst wieder von RECHTS nach LINKS gefahren werden. Eine Wiederholung der Bewegung sähe ziemlich blöd aus.
 
"Spannung aus" führt dazu, dass nach Ablauf der Kurve die Versorgungs-Spannung des Servos abgeschaltet wird.
 
"Impulse aus" führt dazu, dass nach Ablauf der Kurve die Ansteuer-Impulse des Servos abgeschaltet werden.
 
Die letzten beiden Einstellungen haben folgenden Hintergrund: Wird ein Servo mit Impulsen versorgt, so versucht er, die Stellung zu halten. Dies kann dazu führen, dass der Servo ständig brummt, obwohl er eigentlich kar nichts zu tun hat. Also kann man die Ansteuer-Impulse abschalten. Dies wiederum mag nicht jeder Servo. Es gibt sog. "Fail-Save"-Servos, die gehen in einen sicheren Grund-Zustand, wenn die Ansteuerung weggenommen wird. Auch bei digitalen Servos kann das Abschalten der Impulse nicht helfen, weil diese sich die Soll-Stellung einfach merken und trotzdem nachregeln. Also hilft hier das Abschalten der Versorgungs-Spannung. Dies jedoch kann bei den Analogen Servos wiederum problematisch sein, weil diese beim Wieder-Einschalten der Spannung teilweise wilde Zuck-Bewegungen ausführen.
Fazit: Hier muss jeder je nach Anwendung und Servo die richtige Abschalt-Taktik rausfinden!

Kurvenform einstellen

Beim Mapping haben wir ja schon davon gesprochen das man bestimmte "Kurven fahren". Nun wollen wir mal zeigen, wie man so eine Kurve nun definiert. Zunächst einmal gibt es bis zu 4 Kurven, die man definieren kann. Die Auswahl, welche dieser Kurven gerade angezeigt und bearbeitet wird, erfolgt hier:
 
Sand 4 Hex Manipulator Curve 1

 
Dann gibt es noch 2 allgemeine Angaben je Kurve, nämlich die Anzahl der Punkte sowie ein "Stretch-Faktor", mit dem man den Ablauf einer Kurve langsamer machen kann. Diese werden hier eingestellt und die daraus resultierenden Zeiten angezeigt:
 
Sand 4 Hex Manipulator Curve 2

 
Sand 4 Hex Manipulator Curve 3

 
So, nun aber endlich zur eigentlichen Kurve! Die Kurve wird angezeigt und kann via Maus (Klick und Ziehen) angepasst werden. Ich denke dass mit dieser Darstellung jeder klarkommen sollte (wenn nicht: unten und oben in der Grafik entsprechen den beiden End-Positionen des Servos. Die Kurve wird von links nach rechts abgefahren, d.h. die einzelnen Punkte werden dem Servo nacheinander als Soll-Position übergeben).
 
Sand 4 Hex Manipulator Curve 4

 
Was gibt es sonst noch? Es können Kurve über einige mathematische Funktionen vorgegeben werden:
 
Sand 4 Hex Manipulator Curve 5

 
.. es gibt horizontale und vertikale Spiegel-Möglichleiten:
 
Sand 4 Hex Manipulator Curve 6

 
Eine Kurve kann in eine andere kopiert werden:
 
Sand 4 Hex Manipulator Curve 7

 
Eine Kurve und ein komplettes Setup kann geladen und gespeichert werden. Bei einer Kurve handelt es sich hier nur um die einzelne Kurve, bei einem Setup werden alle 4 Kurven und auch die dazugehörigen Parameter wie der Stretch-Faktor, das Mapping usw. geladen:
 
Sand 4 Hex Manipulator Curve 8

 

zurück zum Anfang nach Oben

Adressen lernen (Address learning function)

Durch den Druck auf den Programmier-Taster können die Adressen auch über den Lern-Mode angelernt werden. Zunächst fängt die LED 5 (Grün) im 1er Rhythmus an zu blinken, wodurch signalisiert wird, dass Adresse 1 gerade gelernt werden kann. Wird jetzt ein Schalt-Befehl (Weichen-Befehl) auf das Gleis gelegt, so wird diese Adresse abgespeichert. Automatisch geht es gleich weiter mit Adresse 2 (signalisiert durch 2er-Blinken). Dito dann für Adresse 3 bis 8.
Sollen Adressen beim Lernen übersprungen werden, kann man dies durch erneutes Drücken der Programmier-Taste erreichen. Der Lern-Vorgang kann jederzeit durch Wegnehmen der Versorgungs-Spannung beendet werden, bereits gelernte Adressen sind dann bereits gespeichert. Ein Abklemmen der Digital-Spannung hat diese Wirkung hingegen nicht.

zurück zum Anfang nach Oben

Justage-Modus: Endpositionen einstellen

Da die End-Positionen der Servos bei einigen Konstruktionen nach dem Einbau justiert werden muss, habe ich eine entsprechende Routine eingebaut. Hierfür muss am Programmier-Stecker eine Justage-Schaltung aus ein paar Tastern und Dioden angeschlossen werden, mit der die Justage durchgeführt wird:
 
arrow Sand Justage Platine
 
Die Routine wird durch Drücken des Programmier-Tasters während des Startens (also beim Anlegen der Versorgungsspannung für die Platine) aufgerufen.
 
Hier der Ablauf, um die Endpositionen zu justieren:
  1. während des Startens der Platine (=Anlegen der Versorgungs-Spannung) wird der Programmier-Taster oder der Taster SW3 auf der Justage-Platine gedrückt
  2. Jetzt wird der Servo 1 an die End-Position Nr. 1 gefahren (dies ist die Position, die der Servo mit dem 1 ms-Impuls anfährt. Ob dies der rechte oder der Linke Anschlag ist, ist Servo-Abhängig). Die LED 1 des Relais 1 ist jetzt an, die LED 5 blinkt langsam
  3. Jetzt kann man mit den Tasten SW1 und SW2 auf der Justage-Platine die Position verstellen, während Servo 1 entsprechend reagiert. Die Schrittweite beträgt hier 8 us.
  4. Durch Druck auf SW3 der Justage-Platine kommt man in die Einstellung der 2. End-Position (Vorgabe 2 ms). LED 5 blinkt jetzt deutlich schneller
  5. wie Punkt 3
  6. Nach erneutem Tastendruck geht das ganzs Spiel wieder von vorne los, aber diesmal für Servo 2, 3 und 4
  7. nach der Justage aller Servos (LED5 blinkt nicht mehr, LED1-4 idR. aus) befindet sich die Platine wieder im normalen Betriebs-Modus.
Zu beachten ist hierbei, dass ein Verstellen der End-Position 1 auch die End-Position 2 entsprechend verschiebt. Also wird die 1 ms-Grenze um +200 us vergrössert, so wird auch die 2 ms-Grenze um +200 us vergrössert. Dadurch ist es möglich, dass man im Arbeitsschritt 2 den kompletten Arbeitsbereich des Servos verschieben kann, ohne dass man auch die End-Position 2 ebenfalls neu justieren muss.
 
Man sieht: auch wer keine Relais verwendet, ist in dieser Situation gut beraten, die LEDs durch Bestückung von R40..R43 betriebsbereit zu halten.

zurück zum Anfang nach Oben

Download von Kurven

... hier erwarte ich DEINE Mitarbeit!
 
Wenn Du gelungene Kurven definiert hast, bitte mit Angabe zur Anwendung und des verwendeten Servos mailen!

zurück zum Anfang nach Oben

Variationsmöglichkeiten

Verwenden der Relais zur Rückmeldung der Weichenstellung

Der SanD besitzt 4 Relais. Wer diese nicht zur Polarisierung von Weichen benötigt (also z.B. die Märklin-Fahrer), kann damit eine Rückmeldung z.B. via S88 (oder andere Bus-Systeme) realisieren.
 
Zunächst definiert man hierfür die Relais-Stellung bei Kurve 1 (diese stellt z.B. die Bewegung nach RECHTS dar). Zu beachten: Es sind alle Relais-Balken gesetzt, bis auf den letzten. Dadurch wird das Relais ausgeschaltet, wenn die Kurve abgelaufen ist.
 
Sand 4 Hex Manipulator Rückmeldung 1

 
Und jetzt zu Kurve 2 (diese stellt z.B. die Bewegung nach LINKS dar). Zu beachten: Es sind keine Relais-Balken gesetzt, bis auf den letzten. Dadurch wird das Relais eingeschaltet und gehalten, wenn die Kurve abgelaufen ist.
 
Sand 4 Hex Manipulator Rückmeldung 2

 
Jetzt hat man folgendes realisiert: Das Relais schaltet am Ende der Bewegung nach RECHTS aus und nach Ende der Bewegung nach LINKS ein. Allerdings gibt es keinen Kontakt für IN_BEWEGUNG oder ähnliches, den es ist immer entweder der Rückmeldekontakt LINKS (= Relais angezogen) oder aber RECHTS (= Relais abgefallen) aktiv. Ein "3. Zustand" (also RECHTS / LINKS / Ich-bin-in-Bewegung-und-weder-Links-noch-Rechts) ist nun mal nicht mit einem Relais zu realisieren, da müsste man dann schon 2 dafür opfern.
Allerdings müsste PC-Steuerung ja wissen können: Wenn ich RECHTS sende und der Rückmelde-Kontakt noch nicht RECHTS anzeigt, dann ist der Servo auch nicht rechts. Entweder bewegt der sich noch, oder er hat den Befehl verpennt, oder....

Verwenden der Taster-Eingänge für die Servo-Bewegung

Auf der Justage-Platine sind ja 3 Taster vorhanden. Hier könnte man 2 davon zur Servo-Aktivierung verwenden (der 3. Taster SW3 auf der Justage-Platine stellt lediglich den Zustand "beide Taster gedrückt" dar und kann uns hier leider nicht dienen). Hier noch mal der Schaltplan der Justage-Platine:
 
Schaltplan SAND Justage

 
Die Taster SW1 und SW2 können also wie hier gezeigt an den SAND angeschlossen und zur Servo-Bedienung verwendet werden. Allerdings gibt es mit SW1 noch einen Haken: dieser Taster entspricht dem SW1 auf der Haupt-Platine SAnD und ist demnach eigentlich für die Adress-Lern Funktion reserviert.
 
OK. Jetzt genug der Vorrede, goto Praxis. Der Manipulator bietet (ab V0.43) diese Eingabe:
 
Sand 4 HEX Manipulator Taster

 
Hier kann ausgewählt werden, ob der SW1 für Servo-Bedienung oder für die "normalen" Aufgaben (Adressen Lernen und Starten des Justage-Modes während der Bootens) verwendet wird oder ob er für die Servo-Steuerung verwendet werden soll.
In diesem Beispiel nun soll SW1 für den Servo verwendet werden. Für jeden Taster gibt es nun 2 Auslöse-Punkte: öffnen und schließen. Tritt nun ein solches Ereignis ein, so reagiert der SanD einfach so, als wenn er die hier definierte Digital-Adresse empfangen hätte. Dadurch kann man z.B. beim Öffnen des Taster die Kurve 1 (= Weiche LINKS), beim Schließen die Kurve 2 (= Weiche RECHTS) abfahren. Somit sind dann z.B. 2 Weichen komplett via Taster (oder eigentlich wären es hier dann eher Schalter) steuerbar.

zurück zum Anfang nach Oben