Moin, moin.
Habe da mal eine Frage: Ich möchte vom ATmega aus ein Relais schalten.
Dazu benutze ich einen Transistor FMMT 458 TA. Die Schaltspannung an
Relaisspule und Transistor beträgt 10-16V. Die Basis des Transistors ist
mit einem 1k Vorwiderstand mit dem µC verbunden. Die ersten
Schaltvorgänge (ca. 20, variiert aber) funktionieren problemlos (200ms
an, 200ms aus), und irgendwann bleibt der Transistor durchgesteuert.
Dachte erst, dass die 0.6V, die vom µC-Pin im Output Low - Zustand
geliefert werden, diesen Effekt verursachen. Habe daher den Pin im
Low-Zustand zum "Input ohne Pullup" gemacht, sodass wirklich 0.0V am Pin
anliegen. Hat das Verhalten aber nicht geändert. Erst ein 10k Widerstand
gegen GND zwischen Basis und Vorwiderstand scheinen diesen Effekt
größtenteils zu verhindern (hin und wieder, aber deutlich seltener,
bleibt der Transistor dennoch durchgeschaltet).
Kann mir das jemand erklären? Ich dachte immer, ein Transistor schaltet
nur durch, wenn ein Strom durch die Basis fließt... Ist ja schließlich
kein FET, der kapazitiv funktioniert...
Danke für alle Hinweise,
Christian
@Holger: Freilaufdiode ist vorhanden
@Vorname: Jupp, bin sicher. Der Transistor bleibt durchgeschaltet und
versorgt die Relaisspule mit Strom (nachgemessen).
@Falk: Bereits intensiv gelesen und genau nach erster Abbildung
aufgebaut (Controller schaltet NPN-Transistor-Basis über Vorwiderstand).
Das führt zu oben genanntem Effekt. Erst ein Widerstand gegen Masse
zwischen Basis und Basiswiderstand verbessert das... Und genau das
verstehe ich nicht.
>Erst ein Widerstand gegen Masse>zwischen Basis und Basiswiderstand verbessert das... Und genau das>verstehe ich nicht.
Hat der µC etwa pnp-Ausgänge? Bei ner SPS ist sowas üblich, aber beim
µC?
Was ist das für einer?
>Dachte erst, dass die 0.6V, die vom µC-Pin im Output Low - Zustand>geliefert werden, diesen Effekt verursachen.
Zeig doch mal deinen Schaltplan (oder wenigstens den Auszug).
Irgendwoher müssen die 0,6V doch kommen.
Der uC liefert im Low-Zustand nichts!
Laut DB schafft er es nur nicht, mehr als 20mA auf GND zu schalten, wenn
der Ausgang unter 0,7V bleiben soll!
>Habe daher den Pin im Low-Zustand zum "Input ohne Pullup" gemacht, sodass >wirklich 0.0V am Pin anliegen. Hat das Verhalten aber nicht geändert.
Ein Eingang als Ausgang?
Das geht sowieso schief, da "floated" die Basis so herum, nimmt sich
irgendwoher einen kleinen Strom und schaltet deinen Transistor nicht
mehr ganz ab.
>...wirklich 0.0V am Pin anliegen...
Im Fehlerfall?
Gemessen? Geschätzt?
Ist zwar etwas ungebäuchlich, 16V mit einem 400V-Typ zu schalten. Aber
auch der wird mit Relais als Last bei offener Basis dicht machen, d.h.
entweder ist da was falsch angeschlossen oder er wird falsch
angesteuert.
@Matthias: Ist ein ATmega128
@Lothar: Teil-Schaltplan der Relaissteuerung im Anhang.
>Der uC liefert im Low-Zustand nichts!>>...wirklich 0.0V am Pin anliegen...>Im Fehlerfall? Gemessen? Geschätzt?
Ich werde heute Abend noch einmal nachmessen, aber ich bin der Meinung,
ich hätte im Normalbetrieb am Basiswiderstand prozessorpinseitig 0.6V
gemessen. Werde das heute Abend noch einmal kontrollieren. Möglich, dass
ich da versehentlich die Basisseite gemessen habe, und der Controllerpin
wirklich 0.0V hatte...
Kann es sein, dass sich an der Basis "von selbst" eine gewisse Spannung
einstellt, und der Widerstand von 1k zu groß ist, als dass der
Controller ihn mit einem auf Low geschalteten Ausgang abführen könnte?
Chris wrote:
> Kann es sein, dass sich an der Basis "von selbst" eine gewisse Spannung> einstellt,
Nein.
Die Schaltung ist in Ordnung und sollte so funktionieren. Wenn das
dennoch nicht funktioniert, dann weil irgendwas anders ist als
abgebildet.
@Andreas: War der günstigste SMD-Transistor, den ich auf den ersten
Blick bei Reichelt finden konnte. Sollte eigentlich auch mit geringeren
Spannungen funktionieren...
@Andreas: Danke für den Tip. Dummerweise muss man bei Reichelt scheinbar
schon wissen, was man sucht. "Transistor NPN" findet diesen Typ leider
nicht :-(
@Lothar: ATmega ist auf der selben Masse. Ein Schaltregler bringt die
Spannung, die auch die Relais schalten lässt, auf Controllerverträgliche
5,2V. Es sind keine Steckverbindungen zwischen Relaistreiber und ATmega.
Im Anhang ist nochmal das komplette Board ohne die Widerstände gegen
Masse, die ich nachträglich eingelötet habe.
PS: Nicht lachen... es ging darum, das Board schnell fertig zu bekommen,
und nicht die Anzahl der Durchkontaktierungen zu begrenzen oder es
anderweitig "hübsch" zu machen... ;-)
>anderweitig "hübsch" zu machen...
Ja, das ist ein liebliches Detail mit dem Q8 und dem R40 ;-)
Der Schaltplan ist ok, die Platine fraglich.
Sind da noch irgendwelche "unrouted signals" mit drauf?
Ich bin mir noch nicht so richtig sicher, ob deine Masse tatsächlich so
flächig ist, wie sie aussieht. Da sind ein paar prächtige Einschnitte im
Masseverlauf. Kontrolliere das doch mal mit der "show" Fonktion von
EAGLE.
Eine Grundregel fürs Layout ist:
Jede Signalleitung hat einen Strom und einen Rückstrom. D.h. irgendwie
muss der Ansteuerstrom auch zurück, am besten in der Nähe der
Signalleitung. Das geht z.B.
- mit einer Masse-Innenlage
- oder mit einer Massestrippe parallel zum Signal
Bei dir ist weder noch....
Und: niemals Signale unter der Spule des Schaltreglers durchführen
:-O
Am besten nicht mal in der Nähe des Schaltreglers.
@Andreas: Hier noch einmal in höherer Auflösung.
@Lothar: Keine unrouted signals. Die Masseflächen, die in der Abbildung
dargestellt sind, sind auch tatsächlich mit Masse verbunden.
>Eine Grundregel fürs Layout ist:>Jede Signalleitung hat einen Strom und einen Rückstrom
Ist das denn bei einer Schaltfrequenz der Relais von max. 5Hz relevant?
>Und: niemals Signale unter der Spule des Schaltreglers durchführen>:-O>Am besten nicht mal in der Nähe des Schaltreglers.
Jetzt wo Du's sagst :-C Da hätte ich auch selbst mal drauf kommen
können...
Habe ein Problem mit dem Schaltregler auch schon vermutet und den
5V-Teil über 4 Akkus (4.8V) betrieben, das Problem bleibt aber nach wie
vor das gleiche.
200ms an, 200ms aus, Schalthäufigkeit 2,5Hz.
Transistoren von Zetex sind eh was Anderes.
Setze mal in eine Stufe einen bedrahteten BCxxx ein und laß es laufen.
Hast Du vorher mit Oszi gemessen?
Ansonsten sollte man nicht davon ausgehen, daß alle Transistoren sich
gleich verhalten. Ist doch ein Unterschied, ob einer für 400V oder nur
50V Uce hergestellt wird. Dann muß er auch entsprechend beschaltet
werden.
Wenn sonst nichts hilft...
... könnte deshalb sein, daß Rb mit 1k noch zu hoch ist, es kann auch
sein, daß die Basis eine (ebenfalls niederohmige) Ausräumhilfe
braucht=Rbe, was Du ja als Verbesserung bemerkt hast.
Melde Dich dann wieder.
>>Transistoren von Zetex sind eh was Anderes.
Hmm, was sagt das Datenblatt?
400V Transistor, wie bereits bemerkt ziemlich fehldimensioniert für 12V
Relais.
Ein genauer Blick zeig aber auch noch so unschöne Dinge wie.
Static Forward
Current Transfer Ratio
hFE
100 IC=1mA, VCE=10V
100..300 IC=50mA, VCE=10V*
15 IC=100mA, VCE=10V*
Kann es sein, dass das Ding bei hohen Strömen massiv mit der
Stromverstärkung einknickt? Und dass die ersten paar Schaltspiele nur
bei kaltem Transistor funktionieren, dann aber auf grund des hohen
Stroms es zur Erwärmung und damit absinken der Stromverstärkung kommt?
Der Verweis auf den Normaltypen BC846 bzw. BC847 ist schon sehr
vernünftig.
MFG
Falk
> 200ms an, 200ms aus, Schalthäufigkeit 2,5Hz.
Flüchtigkeitsfehler... Sorry.
> Hast Du vorher mit Oszi gemessen?
Bisher noch nicht. Was genau kann ich da messen? Ich nehme an, du meinst
den Rückgang der Spannung an der Basis während der Offzeit? Die besagten
2,5Hz dienten nur als Maximum-Beispiel wegen der Masserückleitungen. Das
Problem tritt auch auf, wenn 200ms an, dann 60 Sekunden aus. Nach ein
paar Schaltvorgängen bleibt der Transistor durchgesteuert, und zwar über
die gesamten 60 Sekunden (vmtl. auch länger). Werde heute Abend Oszi mal
dranklemmen und nachmessen, was da genau passiert.
> Setze mal in eine Stufe einen bedrahteten BCxxx ein und laß es laufen.> ... Ist doch ein Unterschied, ob einer für 400V oder nur> 50V Uce hergestellt wird
Werde ich machen. Bin mal gespannt, ob's was hilft.
Ich glaube eher, dass da was in der Software faul ist.
Poste doch mal deinen Code.
>>Transistoren von Zetex sind eh was Anderes.
Jetzt weiss ich immer noch nicht, was das besondere an Zetex
Transistoren sein soll, 400V Typen gibts auch noch von anderen
Firmen.
(SleepMs macht einen oder mehrere Aufrufe von _delay_ms, falls > 262.14
ms)
Wenn sich alles schön gleichmäßig anhört, klappts. Sobald einer der
Transistoren durchgesteuert bleibt, hört man das schön am fehlenden
Klackern des entsprechenden Relais. Das tut dann quasi gleich im Ohr weh
;-)
@Falk: @Volker: Ich glaube, dass der Code ok ist. Momentan sieht es so
aus:
(SleepMs macht einen oder mehrere Aufrufe von _delay_ms, falls > 262.14
ms)
Wenn sich alles schön gleichmäßig anhört, klappts. Sobald einer der
Transistoren durchgesteuert bleibt, hört man das schön am fehlenden
Klackern des entsprechenden Relais.
@Falk: Die Relais, die ich verwende (Finder Subminiatur-Relais 12V),
haben 400 Ohm Spulenwiderstand und sollten laut Datenblatt bei 18V ca.
45mA benötigen. Das wäre, zumindest was die Verstärkung der Transistoren
angeht, noch in einem sicheren Rahmen. Ich werde aber trotzdem die
Transistoren mal gegen passende BC-Typen tauschen. Mal sehen, ob ich
davon noch welche in meiner Bastelkiste habe. Melde mich, ob's dann
besser funktioniert.
@ Falk
>dass das Ding bei hohen Strömen massiv mit der Stromverstärkung einknickt...>...absinken der Stromverstärkung kommt...
hfe hatte ich auch schon gesehen,
aber der schaltet ja nicht nicht ein.
Will sagen: er schaltet nicht aus.
Beim BC847 kippt hfe bei höheren Strömen auch ganz hübsch nach unten
weg. Die bekannten 100-300 gelten bei 2mA Kollektorstrom, das packt
dieser FMMT auch noch. Und bei Erwärmung steigt hfe....
@ Chris
>..durchgesteuert, und zwar über die gesamten 60 Sekunden...
Und geht dann wieder aus???
Sind da noch Interrupts unterwegs?
> Und geht dann wieder aus???
Nein. Ein paar Zyklen klappts, dann bleibt das erste Relais für den Rest
der Laufzeit angezogen. Wie oben beschrieben hört man das, da die
anderen Relais noch eine weile fleißig weiterklackern, bis auch sie
später angezogen bleiben usw. Die bleiben dann angezogen, bis ich den
Strom abziehe und neu einstecke. Dann geht das Spiel von vorne los.
Interrupts sind keine konfiguriert...
Die +12V Leitung ist schlecht verlegt und entkoppelt,
mach da mal ein paar Kondensatoren rein, natürlich in
der Nähe der Relais.
Was sagt denn eine testweise angeschlossene LED am Portpin des
ATMEGA? Blink die dann weiter oder bleibt die auch stehen?
Also, die Basiswiderstände müßten schon bei 5 V Betriebsspannung bei
Verwendung eines BC547 mindestens 4700 Ohm betragen.
Man fährt den Transistor gnadenlos in die Sättigung sonst.
@Volker / Andreas: Der Controller läuft weiter. Eine Status-LED blinkt
kontinuierlich im "Solltakt" des Relais mit. Das sieht so weit richtig
aus.
@Wolf: Nur ein Relais anzusteuern habe ich auch schon probiert. Ist dann
genau der selbe Effekt.
Ich habe die Transistoren nun gegen bedrahtete BC337er getauscht. Die
sind mit 800mA Kollectorstrom zwar etwas überdimensioniert, davon hatte
ich aber noch einige in meiner Bastelkiste herumliegen. Damit
funktioniert alles einwandfrei. Liegt also scheinbar an den
Transistoren.
Danke an alle, die sich mit meinem Problem beschäftigt haben.
Gruß,
Christian
> Man fährt den Transistor gnadenlos in die Sättigung sonst.> Und was stört dich daran?
Das ist eine ineffiziente Schaltungsdimensionierung.
Erhöhter Stromverbrauch, die die Treiberschaltung(MCU) auf bringen muss.
Auch die Basisvorwiderstände im Artikel: "Relais mit Logik ansteuern"
sind diese Widerstände pauschal, viel zu niedrig.
Für die Relaisansteuerung kann man locker 10k nehmen(ein B>100
vorausgesetzt).
Vizequistore wrote:
> Für die Relaisansteuerung kann man locker 10k nehmen(ein B>100> vorausgesetzt).
Wenn es nicht stört, dass dann auch mal 0,5V im Transistor draufgehen.
Bei 12V ist das kein Problem, bei 5V ist mir ein gesättigter Schalter
lieber. Und man sollte dann auch das Datasheet vom konkret verwendeten
Exemplar verwenden, weil bei kritischer Dimensionierung schon wichtig
ist, ob beim gleichen Typ der Hersteller A ein B>=100 und der Hersteller
B ein B>=70 garantiert.
Chris,
würde mich interessieren, ob Du noch Messungen an dem FMMT-Transistor
durchgeführt hast und nicht mehr tolerierbare Unterschiede oder
verwunderliche Werte festgestellt hast.
> Da hätte ich jetzt aber ein mulmiges Gefühl im Bauch...
Habe ich auch. Aber ich habe den Relais gestern Abend und heute morgen
gelauscht, und keine Aussetzer oder Hänger mehr heraushören können. Ich
hoffe mal, dass das ganze jetzt ok ist.
> würde mich interessieren, ob Du noch Messungen an dem FMMT-Transistor
durchgeführt hast
Da Gerät + Software am 1.8. fertig sein muss, bin ich etwas unter
Zeitdruck und hatte das Oszi nicht mehr dran gehabt. Die Transistoren
habe ich vorsichtig ausgelötet. Bei nächster Gelegenheit baue ich die
mal auf die Ersatzplatine und messe noch einmal mit dem Oszi nach. Bin
auch gespannt, was da genau schief gegangen ist...