Forum: Mikrocontroller und Digitale Elektronik Weichenansteuerung per ATTiny2313 und IRLZ34N


von Fabian B. (fanick)


Angehängte Dateien:

Lesenswert?

Hallo,

ich versuche per Leicht modifiziertem OpenDCC 
(http://opendcc.de/elektronik/HW1/opendecoder_hw_sch.html Variante 1) 
einige Modellbahn H0 Weichen (also im Prinzip Spulen) zu steuern.

Das funktioniert mit dem Schaltplan im Anhang schon ganz gut. Falls der 
Schaltplan zu undurchsichtig ist (habe einige Anschlüsse drin für das 
Board Design), dann kann ich auch nochmal ein Minimalbeispiel zeigen.
Ansonsten ist das Schema:
                        VCC
                         +
                         --------
                       .---.    | 1N4001
                       o   o    |
                       |\ /|    -
                Weiche | X |    ^
                       |/ \|    |
                       o   o    |
                       '---'    |
                         --------
                         |
                         |
                      ||-+
      AVR Pin         ||<-   IRLZ 34N
      -----o----------||-+
           |             |
           |             |
           |             |
           |   _       |
           ---|___|------o
                         |
              10k        |
                        GND


Mein Problem ist jetzt:
Ich steuere die Weichen mit 24V an, da sowohl neue wie auch recht alte 
Weichen verwendet werden sollen. Bei den älteren Weichen klappt alles 
problemlos, ich gebe einen kurzen Puls gesteuert über das DCC Signal, 
etwa 0,1 sec lang und die Weiche schaltet. Mit nur LEDs an den Ausgängen 
funktioniert alles auch unproblematisch.

Wenn ich jetzt als Last neue Weichen nutze, die nach dem Umschalten 
sperren, dann bleibt mein Port auf high. D.h. die Weiche wird geschaltet 
aber es liegt noch weiterhin Spannung an der Weiche an.
Das kann in meinen Augen nur daran liegen, dass am Gate noch Spannung 
anliegt, Drain-Source aber nicht mehr definiert ist. Wenn ich die Weiche 
von Hand zurückdrücke, wird der Pin wie erwartet auf low gesetzt.
Kann mir vielleicht jemand erklären was dort passiert, oder wie ich der 
Problematik aus dem Weg gehen kann?


Falls jemand an dem Programm interessiert ist, es ist unter 
http://opendcc.de/elektronik/opendecoder/opendecoder_sw_schalt.html zu 
finden.


Viele Grüße
fanick

von Michael (Gast)


Lesenswert?

Fabian B. schrieb:
> Wenn ich jetzt als Last neue Weichen nutze, die nach dem Umschalten
> sperren, dann bleibt mein Port auf high.

Was hat das mit dem Portzustand zu tun, wenn sich die Last am FET 
wegschaltet. Wenn der µC den Port auf Low schaltet, muss der das auch 
tun, zumal die Gate-Ableitwiderstände das auch noch unterstützen. Bist 
du sicher, dass sich der µC nicht wegen der langsamen 1N4007 weg hängt?

von Fabian B. (fanick)


Lesenswert?

Danke für deine Antwort!

Ich habe auch erwartet, dass der µC den Port auf low bekommt, bei LEDs 
und alten Weichen tut es das auch.

Ich tausche die Diode gleich zum Testen gegen eine MBR745 Schottky 
Diode, hoffe ja daran liegts nicht. Wäre ne teuere und platzraubende 
Lösung ;-)

von Drobel (Gast)


Lesenswert?

> Wenn ich jetzt als Last neue Weichen nutze, die nach dem Umschalten
> sperren, dann bleibt mein Port auf high. D.h. die Weiche wird geschaltet

Was bedeutet "nach dem Umschalten sperren"?

> aber es liegt noch weiterhin Spannung an der Weiche an.
> Das kann in meinen Augen nur daran liegen, dass am Gate noch Spannung

Hast du die Gatespannung nachgemessen?

> anliegt, Drain-Source aber nicht mehr definiert ist. Wenn ich die Weiche > von 
Hand zurückdrücke, wird der Pin wie erwartet auf low gesetzt.

Putzig.

von Drobel (Gast)


Lesenswert?

Hast du ein Bild von dem fraglichen Aufbau (Transistor und so)?

von Fabian B. (fanick)


Lesenswert?

Bild kann ich gleich anfertigen, leider nach und nach gewachsen und 
nicht ordentlich aufgebaut :-( Werd versuchen das etwas zu beschriften 
damit alles erkenntlich ist, also dauert etwas.


> Was bedeutet "nach dem Umschalten sperren"?

Die Spule schaltet nicht mehr durch, im Gleis wird einfach der Kontakt 
umgelegt. Ist eine sehr nützliche Sache ansich und verhindert 
durchbrutzeln der Spulen falls man versehentlich dauerhaft schaltet.


> Hast du die Gatespannung nachgemessen?
Ja, aber bin mir nicht mehr sicher ob das mit dem gleichen Aufbau war. 
Wiederhole ich gleich nochmal.

von Fabian B. (fanick)


Lesenswert?

Also, Schottky dioden eingesetzt, Aufbau geprüft, und Gatespannung 
gemessen:

Gleiches Verhalten, Gatespannung bleibt bei 5V und Mikrocontroller 
reagiert in der Zeit scheinbar nicht, erst nachdem ich die Weiche zurück 
gedrückt habe (also Kreislauf geschlossen). Ablockkondensator natürlich 
vorhanden.


Bild lade ich später hier noch.

von Michael (Gast)


Lesenswert?

Fabian B. schrieb:
> Mikrocontroller reagiert in der Zeit scheinbar nicht
Dann lass den µC mal parallel zu der Weichensteuerung mit einem Pin 
wackeln (LED blinken), damit du siehst, ob er überhaupt läuft.

von Drobel (Gast)


Lesenswert?

Fabian B. schrieb:

> Gleiches Verhalten, Gatespannung bleibt bei 5V und Mikrocontroller
> reagiert in der Zeit scheinbar nicht, erst nachdem ich die Weiche zurück
> gedrückt habe (also Kreislauf geschlossen).


Was bedeutet "Mikrocontroller reagiert nicht"? Kannst du feststellen, ob 
das Programm noch abgearbeitet wird (andere Weiche besser LED schalten)?

Du schriebst, dass die Spule der Weiche automatisch getrennt wird. D. h. 
beim Zurückdrücken wird die Spule wieder mit dem MOSFET verbunden.

Putzig.

von Pastor Braune (Gast)


Lesenswert?

> Die Spule schaltet nicht mehr durch, im Gleis wird einfach der Kontakt
> umgelegt. Ist eine sehr nützliche Sache ansich und verhindert
> durchbrutzeln der Spulen falls man versehentlich dauerhaft schaltet.

Kann nicht sein - die Weiche würde nie wieder schalten ;-)

also muss der Endschalter anders funktionieren ,
was für eine Weiche 'Firma + Typ ' ?

von Drobel (Gast)


Lesenswert?

Pastor Braune schrieb:
>> Die Spule schaltet nicht mehr durch, im Gleis wird einfach der Kontakt
>> umgelegt. Ist eine sehr nützliche Sache ansich und verhindert
>> durchbrutzeln der Spulen falls man versehentlich dauerhaft schaltet.
>
> Kann nicht sein - die Weiche würde nie wieder schalten ;-)

Zwei Spulen?

von Pastor Braune (Gast)


Lesenswert?

Ja wäre logisch - zwei Endschalter 2 Spulen
oder Drehmagnet und Wechselspannung
oder ....

von Fabian B. (fanick)


Lesenswert?

Genau, 2 Spulen sind einfach drin!

Typ und Hersteller dauert etwas bis ich das herausgefunden habe. Mache 
das nur für meinen Vater, aber es sind wirklich einfach 2 Spulen, von 
denen immer eine geschlossen ist und geschaltet werden kann.


Der "Programmierschalter" vom OpenDCC wird ganz normal in der Main 
dauerhaft abgefragt und den kann ich normalerweise jederzeit klicken, so 
dass eine LED leuchten sollte.
Das ist nicht möglich wenn die Weiche hängt, deswegen gehe ich davon 
aus, dass der ganze Mikrocontroller hängt. Gatespannung ist dabei 5V und 
durch den MOSFET fließt kein Strom.
Ich hatte gehofft das ist irgendein bekanntes Verhalten.

von Ulrich (Gast)


Lesenswert?

Das geschilderte Verhalten ist nicht normal. Irgendwie scheinen die 
neuen Weichen wohl mehr Störungen zu verursachen, die bis zum µC 
durchkommen. Das liegt vermutlich weniger an der gezeigten Schaltung, 
sondern eher am Aufbau, also wo sind Abblockkondensatoren und wie liegen 
die Leistungen.

An der Geschwindigkeit der Diode wird es nicht liegen, auch wenn die 
1N4007 beim Einschalten vielleicht etwas langsamer ist, sind das Zeiten 
im Bereich einiger ns und ein mehr an Spannung von höchstens 1-5 V, eher 
noch weniger - das ist für den MOSFET kein Problem.

von Fabian B. (fanick)


Angehängte Dateien:

Lesenswert?

Also danke an euch alle für eure Hilfe!

Im Anhang ist ein Foto des Aufbaus, steinigt mich oder kritisiert was 
ich noch deutlicher machen soll :-). Ich denke nicht dass ich was 
verschaltet habe, alles läuft sonst sehr gut. Hab einen 10µF Kondensator 
zur Pufferung drin und einen 100 nF Keramik Kondensator

Wenn ich in den nächsten Tagen keine andere Lösung finde, werde ich 
gucken, dass ich das Protokoll am Laptop zum Laufen bekomme. Dann kann 
ich das mal am Oszi in der Uni testen.

Edit: Kann bitte jemand das erste Foto (1.5MB) löschen? Hab es nochmal 
komprimiert.

von Dietrich L. (dietrichl)


Lesenswert?

Fabian B. schrieb:
> und einen 100 nF Keramik Kondensator

Der muss aber ganz nahe am µC sitzen.

Ansonsten ist dieser Ausbau perfekt dazu geeignet, sich jeden Dreck 
einzufangen und den µC abstürzen zu lassen :-(

Weitere Maßnahmen:
- 10..100nF am Reset-Pin
- GND der FETs an den Einspeisepunkt der Versorgung anschließen
- dto. GND der Versorgungsspannung der Weichen
(sternförmige Verdrahtung der GNDs)
- größere räumliche Trennung von µC und Weichen
- Snubber parallel zur Weiche
- ...

Gruß Dietrich

von Fabian B. (fanick)


Lesenswert?

Danke für die super Hinweise Dietrich, wüsste sonst gar nicht wie ich 
mit Ausnahme des Ablockkondensators anfangen soll zu optimieren.
Klar dass ein solcher Aufbau nicht ideal ist. Ich habe auf dem 
Schaltplan basierend schon ein Board erstellt, dass ich irgendwo 
fertigen lassen möchte. Dort sind natürlich die Wege viel kürzer und in 
der Praxis liegen die Weichen logischerweise etwas entfernt, so 1 bis 2 
m ungefähr. Zum testen hatte ich die Weiche einen halben Meter entfernt, 
bin schon davon ausgegangen, dass die Induktion von einer solchen Spule 
nicht ohne ist.

Aktuell sitzt der Ablockkondensator recht nah am VCC, vllt 1 cm 
entfernt. Werde also das ganze weiter umbauen, bzw mit Oszi nachprüfen 
was sich verändert.

Es ist für mich trotzdem seltsam, dass das mit den alten Weichen alles 
perfekt läuft. Ich habe da gefühlt Vorkriegs-Weichen genutzt, mit einem 
ordentlichen Peak von über 2A, für mehr als 0,1s.
Bei den neuen Weichen konnte ich mit der Messgenauigkeit meines billig 
Multimeters nicht mal vernünftig eine Stromstärke ausmachen bevor die 
Weiche umgeschaltet hat.


Ganz dumme Frage, ist es denn ein normales "Reset" Anzeichen wenn der 
Controller auf nix mehr reagiert und den letzten Zustand hält?


Viele Grüße
fanick

von Dietrich L. (dietrichl)


Lesenswert?

Fabian B. schrieb:
> Es ist für mich trotzdem seltsam, dass das mit den alten Weichen alles
> perfekt läuft. Ich habe da gefühlt Vorkriegs-Weichen genutzt, mit einem
> ordentlichen Peak von über 2A, für mehr als 0,1s.

Spekulation: Der Kontakt für die Funktion "nach dem Umschalten sperren" 
produziert beim Öffnen Funken. Die gibt es bei den alten Weichen nicht 
(daher die Idee mit dem Snubber (RC-Glied) direkt an der Weiche).

> Ganz dumme Frage, ist es denn ein normales "Reset" Anzeichen wenn der
> Controller auf nix mehr reagiert und den letzten Zustand hält?

Bei Reset müsste der µC eigentlich nur neu starten. Aber was Dein 
Programm dann allerdings genau macht, weißt nur Du...

Alternativ kann eine Störung bewirken, dass sich das Programm einfach 
nur "verläuft". Was es dann tut, ist unvorhersehbar.

Gruß Dietrich

von Hannes L. (hannes)


Lesenswert?

Dietrich L. schrieb:
> Aber was Dein
> Programm dann allerdings genau macht, weißt nur Du...

Es ist nicht sein Programm, sondern dass von Open-DCC.

Ich weiß nicht, welche Weichen verwendet werden, die H0-Weichen, die ich 
von damals kenne, waren für 16V Wechselspannung bestimmt und zogen etwa 
0,8A. Wenn man sie mit Gleichspannung betreibt, fällt der induktive 
Widerstand weg, da reichen meist 12V.

Ich hatte mit dem ersten Aufbau meines Eigenbau-Einzelweichendecoders 
für LGB-Weichen auch Probleme, da brach die Versorgung des Tiny13 
aufgrund unzureichender Entkopplung der Versorgung ein.

...

von Rolf H. (flash01)


Lesenswert?

mh...mit Interesse habe ich als alter Modelleisenbahner diesen
Thread studiert. Ich habe den 1. Kommentar 3x durchgelesen und es
bis jetzt immer noch nicht ganz verstanden. Aber das nur mal so!
Schon als ich die 24 Volt las dachte ich "oh Gott".
Ich muß zu meiner Schande gestehen, daß alle Weichen der Fa.
Fleischmann mit der Klappertechnik (also Relais) mit 12 V angesteuert
werden.
Insofern faszinierte mich dieser Schaltplan mit FETs.
Werde mir einen Test aufbauen und eine Weiche mal damit ansteuern.
Ich gehe hier auch von extremen Störspannungen aus die den AVR
durcheinander bringen.
Selbst mit den Relais arbeitet die Sache nicht ganz ohne Störungen
hat schon manchen Zusammenstoß gegeben.
Bei allem finde ich die Hardware interessant.

Grüße

Rolf

von Hannes L. (hannes)


Lesenswert?

Rolf H. schrieb:
> Bei allem finde ich die Hardware interessant.

Was ist daran so besonders? Es ist die übliche Decoderschaltung von 
Open-DCC, bei der der übliche ULN2803 durch arg überdimensionierte 
LL-FETs ersetzt wurde.

Ich benutze auch LL-FETs am AVR-Pin (ohne zusätzliche Treiberschaltung), 
bevorzuge aber den IRLU024N, da dieser nur halb soviel Gate-Kapazität 
hat und somit den AVR-Pin nicht so hoch belastet. In 
Gartenbahn-Lokdecodern (DCC, wie auch RC) werden sie am ATTiny13 mit PWM 
von 28,8 kHz betrieben, was sehr gut funktioniert.

...

von Rolf H. (flash01)


Lesenswert?

ich kenne die FETs mit der Bezeichnung "N-Kanal bzw. P-Kanal"
Was sind denn LL-FETs?
Das mit den ULN2803 ist ne gute Idee. Da sind doch 8 Treiber mit
Freilaufdiode im Chip, oder?
Werde sehen, daß ich von meiner Klappertechnik bald wegkomme.

Open-DCC ist mir auch was neues, bestimmt nichts für Spur H0

Grüße

Rolf

von Fabian B. (fanick)


Lesenswert?

Die OpenDCC Homepage bietet viele Informationen dazu: http://opendcc.de
Sollte auch alles bei Spur H0 unproblematisch sein, schließlich ist H0 
ja keine Gartenbahn.

Ich denke Hannes meint mit "LL-FETs" Logic Level FETs.
Ich habe leider wenig Erfahrung im Elektronik und Mikrocontroller 
Bereich und habe zwecks "Platz" sparen auf eine Treiberstufe verzichten 
wollen. Bei meinem Problem könnte natürlich auch eine galvanische 
Trennung die Lösung sein. Kann dem aber erst in den nächsten Tagen auf 
den Grund gehen.

Die Weichen die zum Teil gesteuert werden sehen wie gesagt aus wie 
Vorkriegsweichen ;-) Da benötigt man einen sehr starken Impuls für kurze 
Zeit, bei den 24V deutlich über 2A.


@Rolf H.: von Relais wollte ich Abstand nehmen. Die Spulen benötigen nur 
einen Impuls (0,1s ausreichend) und dafür ist ein MOSFET doch ideal. Der 
ULN2803 liefert max. 500 mA, für mich mit Sicherheit zu wenig.

von Helmut L. (helmi1)


Lesenswert?

Dietrich L. schrieb:
> Spekulation: Der Kontakt für die Funktion "nach dem Umschalten sperren"
> produziert beim Öffnen Funken. Die gibt es bei den alten Weichen nicht
> (daher die Idee mit dem Snubber (RC-Glied) direkt an der Weiche).

Das ist nicht nur eine Spekulation sondern das ist so. Hat auch mal 
sowas gebaut und die Endabschaltung der Weichen hatten die Stoerungen 
verursacht. Die Freilaufdiode nutz da recht wenig wenn im inneren Kreis 
der Stromfluss durch die Endabschaltung getrennt wird. Dann geistert mal 
wieder ein Stoerimpuls herum und laest sein uC abstuerzen.

von Hannes L. (hannes)


Lesenswert?

Rolf H. schrieb:
> ich kenne die FETs mit der Bezeichnung "N-Kanal bzw. P-Kanal"

Diese Klassifizierung gilt auch weiterhin.

> Was sind denn LL-FETs?

Das sind LogicLevel-FETs. Sie haben eine geringere Schwellenspannung für 
das Gate und lassen sich somit mit Pegeln von Logic-ICs oder von 
Mikrocontrollern zuverlässig ansteuern. Ein herkömmlicher FET schaltet 
mit 5V am Gate nicht richtig durch, was zu höherem RDS 
(Drain-Source-Widerstand) und damit zu höherer Erwärmung führt.

> Das mit den ULN2803 ist ne gute Idee. Da sind doch 8 Treiber mit
> Freilaufdiode im Chip, oder?

Richtig, allerdings haben sie aufgrund der Darlington-Schaltung einen 
recht hohen Spannungsabfall UBE.

Rolf H. schrieb:
> Open-DCC ist mir auch was neues, bestimmt nichts für Spur H0

Doch, gerade in Spur H0 wird viel mit Digitaltechnik gearbeitet. Da 
reichen aber FETs mit sehr kleinen SMD-Bauformen in den Lokdecodern.

Fabian B. schrieb:
> Bei meinem Problem könnte natürlich auch eine galvanische
> Trennung die Lösung sein.

Nein, Du wirst (wie bereits erwähnt) Freilaufdioden direkt an den 
Weichenspulen brauchen, die den Abreißfunken an den 
Endabschaltungskontakten löschen. Und Du wirst mit der Spannung herunter 
gehen müssen, 24V sind bestimmt zuviel. Versuche aber erstmal, die 
Weichen statt mit einer gegätteten Gleichspannung mit Halbwellen aus dem 
24V-Trafo zu betreiben (also nur eine Diode ohne Elko), kann sein, dass 
die Weichen damit besser zurecht kommen.

...

von Hannes L. (hannes)


Lesenswert?

Hannes Lux schrieb:
> werden sie am ATTiny13 mit PWM

Sorry, ich meine natürlich ATTiny2313.

...

von Rolf H. (flash01)


Lesenswert?

Hallo Hannes Lux,
danke für Deine Ausführungen, man lernt doch immer wieder was dazu.
Die Signale von Fleischmann haben nur eine Spule, das weis ich genau,
aber mit den Weichen bin ich mir jetzt nicht ganz sicher.

Grüße

Rolf

von Fabian B. (fanick)


Lesenswert?

Noch kurz zu meiner Auflösung des Problems (im Sommer hatte ich nicht 
weitergebaut):

Ich habe das Problem einfach ungelöst gelassen, mit verschiedenen 
Filtern ist das immer noch nicht 100% stabil gelaufen. Habe aber in 
unzähligen Testläufen feststellen können, dass das nur sehr selten 
auftritt und nur bei sehr sehr schnellen hin und her Schalten der Weiche 
(also im Bereich unter 300 ms).
Letztendlich habe ich das softwareseitig abgefangen :-(

Vielen Dank trotzdem für eure Hilfen!

von Stefanus (Gast)


Lesenswert?

Ich würde mir einfach eine hand voll Snubber 
(http://www.conrad.de/ce/de/product/452335/F-T-Kontakt-Entstoer-Kondensator-KONTENTSTOERUNG-01-UF-100-OHM01-F100-250-VAC?ref=searchDetail) 
kaufen  und parallel zu jeder Weiche so einen schalten, möglichst nache 
an der Weiche.
1
                 +---[===]---||---+
2
                 |                |
3
Common (12V) o---+------XXXXX-----+-----o Links
4
                 |
5
                 |
6
                 +------XXXXX-----+-----o Rechts
7
                 |                |
8
                 +---[===]---||---+

Außerdem würde ich so einen Snubber auch parallel zur Fahrspannung 
schalten. Das hilft sehr warscheinlich.

Wenns billiger sein soll, einen normalen 100nF Kondensator mit 100 Ohm 
in Reihe schalten.

von Fabian B. (fanick)


Lesenswert?

Ich wusste gar nicht, dass es solche fertigen Entstör Kondensatoren gibt 
:$

Hatte das bisher bereits mit dem 100nF+Widerstand ausprobiert, gefühlt 
war es besser, aber das Aufhängen ist trotzdem noch selten vorgekommen.

Werde mir mal Entstörkondensatoren anlegen und damit testen, ich will 
nicht wissen, wie viele Störspannungen auf den Signalen liegen. Mein 
Vater hat sich da wenig Mühe gegeben irgendwas zu optimieren.

von Rolf H. (flash01)


Lesenswert?

oh...Gott..schon wieder ein Jahr vorbei, aber ich bleibe am Ball!
Habe mich intensiv mit dem Timer1 vom Atmega8 beschäftigt.
(ADC und PWM) sogar ein Servotester ins Leben gerufen.
Ein gesundes NEUES JAHR an:
Fabian
Hannes Lux
Spess
und Karl Heinz

Grüße

Rolf

Übrigens..meine Fleischmann-Weichen laufen mit einem zusätzlichen
Relais, was die 12 V nur kurz zuschaltet.

von Thomas (kosmos)


Lesenswert?

100nF zw. Reset und Gnd wurde ja schon gesag, ich würde möglichst nah am 
100nF Kerko zw VCC und GND noch eine Drosselspule mit 100µH davorsetzten 
dann dürfte der µC nicht mehr hängen bleiben.

Die gennante Methode mit einer LED die im Tak blinkt kannst du auch 
einfacher machen. Einfach am Start des Programms die LED z.B. 1 Sekunde 
lang blinken lassen und dann die Weiche erst umstellen, wenns dann 
wieder blinkt hat entweder dein µC resetet oder dein Programm ist wegen 
eines Überlaufs wieder am Anfang gelandet.

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.