Weichenansteuerung per ATTiny2313 und IRLZ34N

OP #3059940
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
Angehängte Dateien:
Gast #3059957
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?
Gast #3059964
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.
OP #3059979
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.
OP #3060058
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.
Gast #3060084
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.
Gast #3060093
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 ' ?
Gast #3060100
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?
OP #3060238
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.
Gast #3060391
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.
OP #3060572
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.
Angehängte Dateien:
#3060992
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
OP #3061095
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
#3061277
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
#3061609
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.

...
#3063744
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
#3063875
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.

...
#3064091
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
OP #3064103
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.
#3064111
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.
#3064540
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.

...
OP #3467869
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!
Gast #3467899
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.
OP #3467914
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.
#3468294
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.
#3468345
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren