Themengruppen
Lampenselbstbau 06.02.16

Eine Zusammenfassung darüber, wie ich meine Mastleuchten bastelte. mehr...


PWM-Fahrregler V3 11.11.15

Zusammenfassung aller Beiträge zum Thema " PWM-Fahrpult V3 (PWM-V3)". mehr...


HObbex-Oberleitung 21.12.15

Zusammenfassung aller Blogbeiträge zum Thema "HObbex Oberleitung auf meiner Anlage" mehr...


Weichenlaternen 31.12.14

Eine Zusammenfassung darüber, wie ich meine beleuchteten Weichenlaternen bastelte. mehr...


DCC Lichtdecoder 07.10.16

Eine Zusammenfassung darüber, wie ich meinen eigenen DCC-Lichtdecoder bastelte. Szenen in denen die Licht-Decoder in der Anlage arbeiten: Decoder STR1 und STR2: Straßenszene mehr...

PWM-Fahrregler V3

Eine Zusammenfassung aller Beiträge zum Thema "PWM-Fahrregler V3".
"PWM-Fahrregler V3" ist die dritte Version meiner PWM-Fahrregler:
  • V1: rein analog, mit diskreten Bauteilen, ohne Microcontroller,
  • V2: mit PIC-Microcontroller für meine SaMoBa-Steuerung,
  • V3: mit PIC-Microcontroller als stand-alone Fahrregler mit LCD und Parameterspeicher

Fortsetzung folgt ...

Jetzt mache ich mal Pause auf der E-Baustelle, ich habe wieder Lust auf Landschaftsbau.
Fortsetzung folgt hier dann später, da ich mit dem Fahrpult noch nicht fertig bin, der Leistungsteil fehlt noch.

Okt 2015 ... PC-Interface Test

28.10.2015
In den letzten Tagen war ich fast am verzweifeln, ich verstand die Welt der seriellen Datenübertragung mit RS232/UART nicht mehr.

Es war mir ja sehr schnell gelungen, Daten vom PC zum Fahrregler zu senden und dort anzuzeigen. Aber die Datenübermittlung in der Gegenrichtung zum PC zurück wollte nicht gelingen. Ich hatte alle möglichen Monitorprogramme angeworfen und Testprogramme in dem Microcontroller geändert.

Heute fiel mir ein, es mal mit einem nagelneuen IC zu versuchen, und siehe da, es funktionierte. An dem Micro war der Sendekanal kaputt , der Empfangskanal war OK.
Hier ein Test:
Im Microcontroller werden die empfangenen Daten gleich wieder zum PC zurückgeschickt.
Gesendet hatte ich in diesem Fall "Bernds N-Welt www.bernd-koe.de" und das ist auch wieder zurück gekommen

Das PC-Testprogramm:
erstes UART Readback
rot: gesendeter Text
grün: zurückgeschickter Text


und am LCD wird's auch angezeigt.
DSC07140s
links im Bild: der PC-Anschluß über den USB-UART Adapter (Bauteil von ELV).

also, alles paletti, jetzt kann's weiter gehen.

Okt 2015 ... PC-Interface

Ich werde in das PWM-Fahrpult ein PC-Interface einbauen. Dann ist es einfacher die Parametersätze im EEPROM zu pflegen, zB neue Datensätze für neue Loks zu laden. Existierende Datensätze zu ändern ist ja jetzt schon möglich über die Menüsteuerung des Fahrpults.

Auf jeden Fall eröffnet so ein PC-Interface eine Menge neuer Möglichkeiten.

Das Teil gibt es bei ELV (...hier).
Damit ist es möglich, die Schnittstelle über ein eigenes Programm als virtuelles COM-Port anzusprechen, physikalisch wird es an die USB-Dose des PCs angeschlossen. Den benötigten Treiber gibt es für Windows ab Win 98.

DSC07129

Okt 2015 ... Handregler ist fertig

22.10.2015
Gut Ding will Weile haben .... es ist geschafft

Alles ist im Kasten, der Handregler-Teil funktioniert.
DSC07109s  DSC07117s  DSC07123s

Kleine Übersicht über meinen Testaufbau (rechtes Bild):
  1. der neue Handregler ist jetzt mit einem 8-poligen Flachband provisorisch an den Microcontroller angeschlossen,
  2. der Micro sitzt noch auf dem Steckboard, daneben ist (nicht gesteckt auf dem Bild) der Platz für den Programmierstecker,
  3. das Steckboard wird noch nicht demontiert. Alle Schaltungen, die jetzt im blauen Kasten sind, sind parallel auf dem Steckboard auch vorhanden und laufen mit,
  4. in dem Bild sind die Baugruppen markiert:
  • blau umrandet: das ist jetzt alles in blauen Handregler,
  • rot: das ist der zentrale Microcontroller,
  • grün: der 5V-Spannungsregler; versorgt wird alles mit einer 16-20V-Gleichspannung,
  • gelb: das wird die PWM-Leistungsstufe,
  • violett: das werden die Sensoren für Kurzschlußstrom und Motor-EMK für die Lastregelung,
  • alle nicht blau umrandeten Baugruppen kommen auf die Hauptplatine, die jetzt das nächste Ziel ist.

Nun ist die Leistungsstufe dran, Entwurf wieder zunächst auf dem Steckboard.

Okt 2015 ... Mechanisches

16.10.2015
Bezüglich der mechanischen Abmessungen müßte eigentlich alles passen
Die Montagelöcher für die Schrauben sind auch richtig zwischen und nicht auf den Leiterbahnen

Aber beim Löcherbohren hab ich gemerkt, dass einige Lötpunkte arg klein sind. Hoffentlich gibt's beim Teileeinlöten keine Probleme.
DSC07077s  DSC07078s
Der Huckepackstecker sitzt an der richtigen Stelle, auf der unteren eine "normale" Buchsenleiste, die obere Platine bekommt auf der Unter-/Kupferseite eine SMD-Stiftleiste.
DSC07080s  
DSC07081s   DSC07082s  

So langsam nimmt alles Formen an.

Die Taster sind eigentlich etwas zu lang, aber für den Prototyp soll's OK sein.
Jetzt ist das Bohren/Ausfräsen der Frontplatte dran für die Bedienelemente (LCD, Digitalpoti mit großem Knopf, 4 Taster und 4 LEDs)

Mit dem Layoutprogramm kann man sich eine Schablone, die zu den Positionen der Bauteile passt, ausdrucken.
Zum ersten Check werden die dazu wichtigen Teile auf die Platine gesteckt und die Löcher in die Schablone geschnitten und wenn's passt dann passt's später auch.
19.10.2015
hei, das war eine Friemelei, die Bauteile auf der Platine richtig in die Frontplatte ein zu passen.

Die Platine drunter ist noch nicht festgeschraubt, deshalb stimmt die Höhe der gelben LEDs im Bild nicht.
Friemelig war der Ausschnitt für das Display und dabei dass die Taster nicht klemmen, denn sonst geht später nix
DSC07099s

Eigentlich wollte ich das Display nicht so weit rausschauen lassen und einen schwarzen Rahmen mit Scheibe draufsetzen. Aber damit hätte ich die Platine nicht gut festschrauben können. Leider hat die Frontfläche beim Aussägen des Displayausschnitts einige Kratzer abbekommen...kann bei einem Prototypen passeren  ;-))

Okt 2015 ... Platinen Ätzen

15.10.2015
Heute war Ätzen der beiden Platinen für den Handregler angesagt.
Ich hatte noch gutes/neues fotobeschichtetes Platinenmaterial - Mai 2015.

Die letzten Platinen hatte ich vor mehr als einem Jahr "gebastelt", mußte nun also die Anlage wieder in Betrieb nehmen und die Chemikalien zum Entwickeln und Ätzen ansetzen.

Schritt 1: Layout ausdrucken
Ich nehme eine Laserdrucker, bei Einstellungen für das Drucken "Foto"-Qualität einstellen, damit werden die schwarzen Flächen gut schwarz deckend gedruckt. Gedruckt wird auf Transparentpapier - gibt's im Copyshop.

PWM-FP Handregler Ausdruck klein
Schritt 2: Platinen belichten und entwickeln
Ich nehme bereits fotobeschichtetes Basismaterial.
Unter einer UV-Lampe etwa 2min belichten, dann ins Entwicklerbad.
Jetzt sind die Konturen der Leiterbahnen schon gut zu erkennen.
PWM-FP-3
Schritt 3: Platinen ätzen
Meine Ätzmaschine hat mir schon gute Dienste erwiesen.
Bei 45 Grad Temperatur dauert das Ätzen etwa 5 min.
Gegen Ende sieht man, wie die letzten Kupferreste verschwinden und das grüne Basismaterial durchscheint.

PWM-FP-2PWM-FP-1
Schritt 4: erster Check
Und ein erster Gegenlichtcheck sagt, es ist gelungen

Die nächsten Schritte sind jetzt:
- Belichtungslack mit Aceton entfernen,
- Löcher bohren,
- Lötlack drübersprayen,
- bestücken,
- testen.
PWM-FP-5

Okt 2015 ... Lastregelung

9.10.2015

Da hat jemand einen stationären Decoder gebaut mit Lastregelung. Es geht also doch und ist nicht nur den eingebauten Decodern vorbehalten.
So etwas werde ich auch mal versuchen für mein digitales PWM-Fahrpult:


steinhartw.de/StatDeco/StatDecoDok.htm

Okt 2015 ... Digitales PWM Fahrpult (2)

8.10.2015
Ich hab in den letzten Tagen an der Menü-Steuerung des Handreglers mächtig rumgemacht. Nun hab ich eine brauchbare Version, die recht hübsch funktioniert.

Frequenzauswahl:
Ich hab in letzter Zeit einiges gelesen über die richtige Frequenzauswahl.
Es ist zu unterscheiden, ob der Motor aus dem Stand anlaufen soll oder ob er mit maximaler Kraft läuft, wenn er denn mal angelaufen ist.

Deshalb werde ich noch daran basteln und zZ bin ich auf diesem Trip:
  1. Zum Anlaufen wird eine niedere Frequenz ausgewählt. Damit kann am besten die Haftreibung des gesamten Antriebs (Getriebe, Lager) überwunden werden.
  2. Wenn die Reibung von Haftreibung in Gleitreibung übergegangen ist - das ist dann wenn der Motor dreht - wird automatisch in eine hohe Frequenz geschaltet (wie das Umschalten erfolgen soll, weiß ich noch nicht). In diesem Betriebsmodus treten keine Spannungslücken mehr auf und der Antrieb ist weniger empfindlich gegen äußere Störmomente, er läuft kraftvoller. Falls mir keine Lastregelung gelingt, ist dies das optimale, was wir tun können.

Es wird also pro Lok 2 Frequenzen geben, eine zum Anfahren und eine für "Streckenfahrt".
Eine andere Möglichkeit, um in den PWM-Modus ohne Lücken zu kommen, wäre auch die Pulshöhen zu Verringern. Aber ich denke, der höhere Frequenzbereich ist eh der schonendere Modus.
Dazu werde ich aber noch einige Tests machen, wenn der Handregler mal fertig ist und die Hauptplatine mit der Leistungsstufe dran ist.

Anfahrspannung:
Im 1:160 Forum wird das Thema gerade diskutiert. Ich werde noch einen neuen Parameter einführen, und zwar die minimale Anfahrspannung, natürlich lokspezifisch eingebbar.

Hier ein kleines Video von heute:

Sept 2015 ... es läuft

25.09.2015
Es läuft besser als ich geträumt hatte. Alles auf dem Steckboard scheint noch OK und an richtiger Stelle zu sitzen, denn das LCD zeigt Richtiges an.
Im FAHR-Modus wird dieses angezeigt:

2015-09 LCD1

Aus dem FAHR-Modus kommt man durch die EDIT-Taste in den EDITier-Modus.

Aus dem EDIT-Mode geht's mit der FAHR-Taste zurück in den FAHR-Mode. Dabei wird das Fahrpoti auf Null gestellt, damit der Zug nicht gleich losrennt.

untere reihe:
  • es fährt hier eine Lok mit dem Namen "BR01",
  • sie wird bis Fahrspannung 9V mit 66Hz und 9V Impulsen geschupst ... bei Fahrspg über 9V geht's weiter ungepulst mit reiner Gleichspg.
obere Reihe:
  • zeigt die aktuelle Fahrspannung als Balken mit verschiedenen Symbolen,
  • die Lok ist aktuell mit 11V Gleichspannung unterwegs, weil die PWM bei 9V am 100% Limit hängt,
  • Bereich oberhalb der aktuellen Fahrspg bis 16V wird mit .. angezeigt,
  • wenn gepulst wird, wird das Pulssymbol gezeigt, darüber bei Gleichspannung das = Symbol,
  • rechts der links/rechts Pfeil: die Fahrtrichtung; sie wird geändert durch Tastendruck auf das Fahrpoti,

Sept 2015 ... es geht weiter mit PWM

24.9.2015
Nach einem Jahr Pause mache ich weiter mit der Entwicklung des Super-PWM-Fahrpults.

Dazu hab ich 2 Motoren auf einem Holzbrettchen montiert, der eine Motor ist quasi der Lokmotor und der zweite Motor simuliert die Zuglast, indem ich ihm eine polarisierte Spannung aufschalte und damit Berg- und Talfahrten simulieren kann.
Die beiden Motorachsen sind mit einem 1mm Siliconschlauch verbunden;
alles auf Platinenresten montiert;
Stromkontakte zu den Motoren sind ehem. Stromabnehmer für Waggonbeleuchtung, aufgelötet auf die Platinen.
2015-09 motoren



 
Auf dem Steckboard ist die bisher entwickelte Steuerung noch vollständig. In den nächsten Tagen werde ich alles wieder zum Laufen bringen, das sollte schnell klappen.
2015-09 steckboard
2015-09 bruecke
Ich hatte eigentlich gedacht, dass ich für diesen Testaufbau als Leistungsstufe eine H-Brücke für den Lokmotor einsetze.
Habe dann aber herausgefunden, dass sich das mit dem Konzept wie und welche PWM-Spannungen das Fahrpult generieren wird, nicht vereinbar ist. Es muß ein Konzept werden bei dem ein Beinchen des Motors an Masse hängt. Bei H-Brücken sind die Motoranschlüsse aber nicht massebezogen. Unten im Bild die Platine mit der H-Brückenschaltung, die ich wieder abbaue.

Also wird unser Fahrregler - wie ich es eigentlich geplant hatte - ein Polwenderelais zur Drehrichtungsumkehr bekommen, das wäre bei einer Brückenschaltung nicht nötig gewesen.

Okt 2014 ... LCD mit 1-wire

Der erste Platinenentwurf mit den 1-Leitung Verbindungen zwischen PIC und den drei  Shiftregistern:

PWM-FP-1w  PWM-FP-1w-schaltung s
Die beiden Platinen des                   Schaltplan
Bedienteils

Okt 2014 ... LCD mit nur einer Leitung

Das PMP-Forum hat mir geholfen, die Anzahl der Leitungen zwischen PIC und LCD auf eine einzige Leitung zu reduzieren, im bisherigen Schaltungsentwurf waren es noch 3 Leitungen für das LCD.
Um die Funktionen der bisherigen 3 Leitungen zu erhalten sind 3 RC-Tiefpässe hinzu gekommen und im Programm ein neues trickreiches Timing für die Pulse auf der seriellen Leitung. Damit ist es möglich mit nur einem Datentransfer vor dem Shiftregister die 4 funktionellen Signale (für das Shiftregister Clock, Daten, Latch/Strobe und für das LCD den Enablepuls) wieder zurück zu gewinnen. Das Prinzip wird hier erklärt http://www.romanblack.com/shift1.htm , es ist jetzt nur ein 4. RC-Zweig mit einem Transistor für das LCD-Enable dazu gekommen.
Bei der bisherigen 3-Leitungen Variante hätte für den LCD-Enable Puls ein zweites Datenpaket geschickt werden müssen.


LCD1w-V2 klein mit c


2 Screenshots des Oscilloscops
links:
Signal am Latch-Pin des Shiftregisters; die steile 0-1 ansteigende Flanke  ist das Latch-Ereignis
rechts:
das Enable-Signal am E-Pin des LCD-Displays; die 1-0 fallende Flanke ist das Ena-Ereignis

Es muß sichergestellt sein dass das Latch- vor dem Enable-Ereignis eintritt, sonst übergibt das Shiftregister inkorrekte Daten an das LCD. Durch die Hardware-Komponenten und die 3 Dioden D2,3,4 in den RC-Netzwerken der Schaltung kommt das Ena-Ereignis 20..30 uSec nach dem Latch.....Bingo

Scope-Latch  Scope-Ena

hier der entscheidende Pascalcode für die Ausgabe auf der seriellen Leitung - wichtig das Timing mit den Delays.

***************************************************************
procedure SendNib(data:byte);
var ii: byte;
begin
{$IF defined (OSZI)}
  portc.1 :=1;  // trigger puls for scope
{$ENDIF}
  for ii:= 1 to 5 do
  begin
      rol(data); // shift left 1bit; und MSB wird ins LSB geschoben
      if data.0 then begin
      ser_out:=0; ser_out:=1; delay(15);            //short 1-Puls
      end
      else
      begin
      ser_out:=0; delay(5); ser_out:=1; delay(0);  //long 0-Puls
      end;
  end;
  //this pulse acts as latch for the shiftregister and ena for the LCD
  ser_out:=0; delay(60); ser_out:=1;  delay(5);
  {$IF defined (OSZI)}
  portc.1 :=0;     //reset scope trigger pulse
  {$ENDIF}
  end;
***************************************************************
Mit diesem Konzept ist es jetzt möglich das Shiftregister für die LEDs ebenfalls mit einer Leitung zu steuern. Das Lesen der Schalter wird vermutlich auch jetzt mit nur 2 Leitungen möglich sein (clock und Latch auf einer Leitung und die seriellen Lesedaten auf der anderen). Somit wird es möglich sein, die beiden Signale vom Impulsgeber-"Poti" wegen der benötigten Schnelligkeit bei zu behalten und trotzdem alles über einen nur 9-poligen Sub-D Stecker zum Bedienteil zu führen:
  • 2 Leitungen Stromversorgung +5V und Ground
  • 1 Leitung zum Steuern des LCD
  • 1 Leitung zum Steuern der 4 LEDs
  • 2 Leitungen zum Lesen des Shiftregisters der 5 Taster
  • 2 Leitungen direkt vom Impulsgeber (digitales Poti) zum PIC (nicht über das Shiftregister)
  • 1 Leitung Reserve
 

Sept2014 ... Handregler

Das PWM-Fahrpult V3 geht auf seinen Prototypen zu.

Ich hab mich entschlossen, einen Drehimpulsgeber mit Tastknopf statt des Drehpotentiometers ein zu bauen, es ist geeigneter für eine Menüsteuerung.

Das Fahrpult wird aus insgesamt 3 Platinen bestehen, davon 2 im Bedienteil - huckepack übereinander.
Der Microcontroller wird nun im Leistungsteil seinen Platz finden. Ich bekam den Tipp in meinem Internetforum. Somit kann ich später durch Steckplatinen Erweiterungen einbauen, wie zB ein PC-Interface oder kleine Anlagensteuerungen, wie zB eine Schattenbahnhofsteuerung.

Die Datenübertragung zwischen Bedienteil und Microcontroller ist nun seriell, je 1 serieller Output und 1 serieller Input - mit einer getrennten Clockleitung für jedes der 3 Seriell-Parallel Umsetzer ICs. Es gibt 3 Gruppen, das LCD-Display, die LEDs und die digitalen Schalter.
Die beiden Impulsleitungen des Impulsgebers leite ich direkt parallel zum Microcontroller, da sie schnell abgetastet werden sollen.

alles
Schaltplan - ohne den Leistungsteil

Platine1  frontplatte
Platine2

Dez 2013 ... Forum-Workshop

Im Forum MoBa-mit-Spass zeige ich in einer Art Workshop, wie ein PWM-Fahrpult mit PIC MicroControler entsteht.

Als erstes, es ist mir gelungen, ein LCD und eine Tastatur an einem PIC Port - in diesem Fall Port B - parallel zu betreiben; das spart Pins für andere Zwecke.
Der PIC Micro ist ein 16F870 und ich programmiere in PMP-Pascal.

LCD und Tastatur an PIC  PWM Schaltplan v2
Nun geht es weiter mit der PWM-Steuerung. Ich werde berichten.
Ich stelle mir vor, dass ich das fertige Fahrpult zum Download und Nachbau anbieten werde.

Mai 2013 ... PIC Pascal Compiler

Ich hab mir die Freeware PMP (PIC MicroPascal) installiert und werde mich mal mit Pascal auf PICs beschäftigen. Ich kenne Turbo Pascal ja schon ausgiebig.
Auf den ersten Blick gefällt mir PMP, ein sehr vertrautes, Turbo-Pascal ähnliches Erscheinungsbild der IDE.

shot1.png

PMP generiert Assembler-Files für dem MPLAB-Assembler von Microchip. Die MPLAB-IDE muß installiert sein, was bei mir der Fall ist.

Mit Hochsprachen Compiler-Systemen & IDEs ist es leichter möglich, einen Satz von Libraries in Form von Pascal-Units aufzustellen und zu pflegen. In meinem bisherigen Assembler-Projekt hab ich inzwischen zu viele wiederverwendbare(!) Subroutines, aber das Einbinden in die verschiedenen Programme erweist sich bei Assembler oft als fehlerträchtig, weil ich bisher noch nicht geschafft habe Subroutinenvariablen innerhalb der Subroutines einzukapseln, sondern ich mußte sie als COMMONs deklarieren, was gefährlich ist für größere Software-Projekte. Auch die Variablenübergaben rein und raus aus Unterprogrammen ist in Hochsprachen wesentlich einfacher als mit Assembler.

Außerden sind Arrays & Vektoren mit Assembler schwierig. Naja, IF-THEN-ELSE und DO-Loops lassen sich mit Hochsprache eben doch besser schreiben als in Assembler.

Ich werde jetzt beginnen, einige Vergleichstests von PIC-Assembler gegen PMP-Pascal zu machen und schauen wie sich der Code in Größe und Schnelligkeit unterscheidet...und es interessiert mich, wie PMP-Pascal die Variablen, Vektoren und insbesondere Unterprogramm- und UNIT-Variablen deklariert (sprich wo und wie im Speicher ablegt).