Hallo zusammen,
ich bin gerade dabei eine kleine Schaltung zu bauen in Relais beschaltet
werden sollen (8 Stück).
Da ich welche rumliegen hatte habe ich zur Ansteuerung ein NXP BSH108
N-MOSFET verwendet. Ein Relais-Kontakt liegt auf 5V, das MOSFET zwischen
dem Anderen Kontakt und Masse (+Freilaufdiode!). Das Gate habe ich
direkt an einen IO-Pin von meinem Microcontroller (NXP LPC11C24)
geklemmt. An dem Gate ist außerdem noch 10k gegen Masse geschaltet
(damit das Relais im RESET nicht schaltet).
Einen Vorwiderstand am Gate habe ich mir gespart, da
a) die Gate-Kapazität mit 6nC sehr klein ist
b) sehr kleine Schaltfrequenzen zu erwarten sind
c) der MOSFET direkt am µC positioniert ist
d) ich das schon immer so mit dem BSH108 gemacht habe.
Leider ist es nun aber so, dass meine IO-Pins nach der Reihe abrauchen
(HIGH-Pegel erst 3.3V, dann 0.6V, dann 0.0V). Zunächst habe ich das nur
an den Pins beobachtet die auch mit einem AD-Eingang gemultiplext sind,
nun ist aber auch ein anderer ausgefallen.
Hat jemand eine Idee warum das so ist? Sollte das wirklich schon der
Umladestrom vom Mosfet sein der hier meine IO grillt?
Also, wie man da Ding beschaltet weiß ich. Und das funktioniert auch,
wenn ich manuell 3V3 aufs Gate gebe schalten die Dinger 1A durch.
Dasselbe gilt für die 5 Kanäle die NICHT mit einem AD-Kanal gemultiplext
sind (der eine war ein Fehlalarm - kalte Lötstelle) - hier arbeitet
alles wie es soll. Nur die Kanäle die mit nem AD gemultiplexed sind sind
hinüber. Hab man einen MOSFET rausfefluppt, da kommen nur noch 0,7V
raus.
Lukas schrieb:> Hat jemand eine Idee warum das so ist?
Wie kommst du auf die Idee, daß sich ein BSH108 von den 3.3V eines
LPC11C24 voll durchsteuern lässt ? Der hat schlechtestensfalls schon
3.2V Threshold-Voltage.
Ich denke, der BSH108 brennt durch und nimmt dann den uC-Pin mit.
Kontrollieren also ob die BSH108 überhaupt noch funktionieren, und nimm
nächstens mal Transistoren, die auch bei 2.9V/2.5V schon durchschalten,
wie IRLML2502
Michael B. schrieb:> Lukas schrieb:>> Hat jemand eine Idee warum das so ist?>> Wie kommst du auf die Idee, daß sich ein BSH108 von den 3.3V eines> LPC11C24 voll durchsteuern lässt ? Der hat schlechtestensfalls schon> 3.2V Threshold-Voltage.
Ja, im schlechtesten Fall bei -55°C ;-)
Bei 25°C sind es im schlechtesten Fall 2V, normal 1,5V die erreiche ich
locker. Abgesehen davon wird nur ein Id von 38mA geschaltet.
> Kontrollieren also ob die BSH108 überhaupt noch funktionieren
Jepp, wie gesagt schaltet der prima wenn ich 3,3V dran halte.
> und nimm nächstens mal Transistoren, die auch bei 2.9V/2.5V schon> durchschalten, wie IRLML2502
Liegt es doch an dem Umladestrom, habe ich damit eine schlechtere Wahl
getroffen, da die Gate-Kapazität höher ist.
Geiz ist geil, wir sparen wo wir nur können - koste uns das Einsparen
der Gatewiderstände auch gleich den ganzen µP ...
Mann mann mann, wo lernt man heutzutage so ein Hardwaredesign?
Ralf D. schrieb:> Mann mann mann, wo lernt man heutzutage so ein Hardwaredesign?
Das ist es nicht!
Es liegt am Denken.
Beispiel:
Erste Annahme, Wahrscheinlichkeit 0,8
Darauf aufbauend, zweite Annahme, Wahrscheinlichkeit 0,8
Nächste Annahme... gleiches Muster
Also:
Dreistufige, logische Gedankenkette, Gesamtwahrscheinlichkeit eines
Treffers: 50%
Schlussfolgerung:
Ab 3 Stufen wird das Denken unsinnig.
;-)
Sorgfalt und Disziplin können das Problem mildern.
> Geiz ist geil, wir sparen wo wir nur können - koste uns das Einsparen> der Gatewiderstände auch gleich den ganzen µP ...>> Mann mann mann, wo lernt man heutzutage so ein Hardwaredesign?
Danke, sowas wollte ich jetzt hören. Mir tut weder der µC noch die
Widerstände weh. Auch habe ich keine Schmerzen ne neue Platine zu
bestellen. So ist das mit dem Hobby halt. Spaß kost.
In diesem Layout hab ich die Widerstände einfach vergessen, vorgesehen
war eigentlich ein BC846. Da der Widerstand im Layout aber vergessen
gegangen ist, hab ich eben (wie zuvor schon am PWM-Output des LPC1758)
einfach den MOSFET versucht - evtl. könnte man sich ja zunächst die
Kosten für ein neues Layout sparen. Anscheinend auf diesem Weg keine
Gute Idee.
> Sorgfalt und Disziplin können das Problem mildern.
Da hast du grundsätzlich recht - als Hobbybastler hab ich dafür leider
nicht immer Zeit.
Lukas schrieb:> Mir tut weder der µC noch die> Widerstände weh. Auch habe ich keine Schmerzen ne neue Platine zu> bestellen. So ist das mit dem Hobby halt. Spaß kost.
Naja -man muß aber nicht mit Macht die Bauelemente kaputtmachen -da
stecken Arbeitszeit und Mühe von Leuten (und Automaten) dahinter. Mit
ein wenig Überlegung und ohne zu überstürzen geht's besser.
Lukas schrieb:> -als Hobbybastler hab ich dafür leider> nicht immer Zeit.
Bist Du auf der Flucht oder ist das ein Hobby?
;-)
MfG Paul
;-)
Ein Hobby. Das Problem ist folgendes: Neben Beruf, Familie und Eigenheim
ist nicht viel Luft. Da hab ich alle 6 Monate mal die Gelegenheit mich
mit meinem Hobby zu beschäftigen. Da muss man zunächst etwas Zeit
investieren zu rekapitulieren wo man das letzte mal aufgehört hat. Wenn
man das mit der nötigen Sorgfalt erledigt um eine 100% Erfolgsgarantie
zu haben, bleibt ganz schnell keine Zeit mehr um Fortschritt zu
erzielen... Mal sehen, vielleicht hab ich im Winder ja etwas mehr Zeit
dafür.
Aber mal zum Topic: kleine MOSFETs ohne Vorwiderstand an µC zu bauen ist
durchaus keine Seltenheit, auch in kommerziell vertriebener Elektronik -
ich hab grad das Gefühl ich hätte einen der trivialsten Fehler der
Elektrotechnik überhaupt begangen. Das der Gate-Umladestrom gerade bei
größeren MOSFETs und vor allem höheren Schaltfrequenzen ein Problem ist
weis ich ja. Wie lässt sich beurteilen ob man nun einen Vorwiderstand
brauch oder nicht?
Wie muss ein Vorwiderstand in meinem Fall für den BSH108 dimensioniert
sein? Die Berechnung für einen normalen Tansistor ist ja simpel, für
einen MOSFET tu ich mich da etwas schwer... Gefühlt müssten es so
300-500Ohm tun. Kann das jemand mit einer Formel untermauern?
Lukas schrieb:> Aber mal zum Topic: kleine MOSFETs ohne Vorwiderstand an µC zu bauen ist> durchaus keine Seltenheit
CMOS ist auch dafür ausgelegt, sonst könnte man CMOS-Ausgänge nicht
direkt mit CMOS-Eingängen verbinden.
Gate-Widerstand braucht man meistens nur um Schwingungen zu
dämpfen/verhindern.
Ganz zum Thema zurück: Wie ist das Layout? Lange Leiterbahnschleife
Gate->IO-Pin->GND->Source?
Nein, die Leiterbahnen sind zwischen 1 und 6cm lang. Masse ist über eine
Plane auf der Rückseite ebenfalls ordentlich. Hab auch mal das Scope
drangehalten, schwingen tut da nix. Ich schau mal ob ich morgen auf der
Arbeit mal nen Screenshot machen kann.
Lukas schrieb:> das MOSFET zwischen> dem Anderen Kontakt und Masse (+Freilaufdiode!)
Das hört sich an, als ob die Freilaufdiode parallel zum FET geschaltet
wäre!?
Die muss aber parallel zur Relais-Wicklung, also zwischen (+) und dem
anderen Kontakt! Und natürlich mit (K) an (+).
Hi
Manchmal hilft es, wenn man den Strom vom Gate mal misst. Du sagst ja
selbst, das Gate direkt gesteuert schaltet das Relais. aber wie hoch ist
dein Gate-Strom? Setz da mal an. Ansonsten können wir ja mal weiter
raten.
gruß oldmax
Thomas E. schrieb:> Das hört sich an, als ob die Freilaufdiode parallel zum FET geschaltet> wäre!?> Die muss aber parallel zur Relais-Wicklung, also zwischen (+) und dem> anderen Kontakt! Und natürlich mit (K) an (+).
Und da ist sie auch. Wollte nur erwähnen das ich eine habe. Die Hälfte
der Relais sind sowieso Halbleiter-Relais, da gibts auch keine Diode.
oldmax schrieb:> Hi> Manchmal hilft es, wenn man den Strom vom Gate mal misst. Du sagst ja> selbst, das Gate direkt gesteuert schaltet das Relais. aber wie hoch ist> dein Gate-Strom? Setz da mal an. Ansonsten können wir ja mal weiter> raten.
Hmmm. Ja. Aber wie soll ich den ohne Vorwiderstand vernünftig messen? Es
kann sich ja nur um den Einschaltstrom handeln, nach dem Umschalten ist
der Strom beim MOSFET ja 0.
Da hast du recht. Den muss ich aber grad mal etwas anpassen, sonst
findet man darauf nichts. Leider hab ich nur die freie Eagle-Version, da
passt meine Schaltung nur ganz knapp mit viel drücken rein. Deshalb hab
ich auch die Widerstände vergessen, ist einfach nicht mehr übersichtlich
genug. Ich hab exemplatisch mal 2 der Relais (1xMechanisch, 1x
Halbleiter) herausgezogen deren µC-IOs kaputt gegangen sind.
Lukas schrieb:> Hmmm. Ja. Aber wie soll ich den ohne Vorwiderstand vernünftig messen? Es> kann sich ja nur um den Einschaltstrom handeln, nach dem Umschalten ist> der Strom beim MOSFET ja 0.
Aber nur wenn es richtig verschaltet ist.
Von nichts gehen deine IO Pins nicht kaputt.
Also hilft immer: messen statt vermuten, wissen statt meinen.
Kein Schaltplan, kein Bild der Platine von oben/unten, also musst du
halt selbst die Ursache suchen.
Da das Halbleiterrelais keine Induktionsspannung erzeugt, der Pin am uC
aber auch kaputt ist, sehe ich derzeit nur die 12V als Ursache. Es
scheint, als ob die Masseleitung von den Relais oder die Entkopplung der
12V von den 3V3 unglücklich ist.
Dazu würde aber auch das Layout gebraucht, um das zu beurteilen. Wäre
hilfreich, wenn du das auch einmal postest. Aber bitte nicht nur einen
Teil davon, sondern komplett.
Die Lagen bitte einmal übereinander und einmal separat (top/bottom). Als
PDF wäre wünschenswert.
Gerade, wenn die Gatecharge so klein ist, ist es doch überhaupt kein
Problem, da Widerstände reinzuhängen. Damit ist sichergestellt, das
weder der MOSFet auf den MC rückwirkt, noch der MC sich am Ladestrom des
MOSFet Gate aufhängt.
Und wenn da nur Relais geschaltet werden, ist die Schaltzeit auch kein
Thema.
Nimm den µC mal weg und hänge dein Messgerät im Messbereich Spannung 20V
an Masse und dein (vermeintliches?) Gate. Was misst du für eine
Spannung? Ich kenne jetzt die Daten dieses µC nicht, aber die meisten
halten sogar einen Kurzschluss am I/O Pin aus.
Wenn die abrauchen dann könnten da die 12V der Relaisversorgung
anstehen.
Wenn du keine Spannung misst, dann stelle das Messgerät auf den
Strombereich und Messe was für ein Strom zwischen Gate und Masse bzw
3,3V fliesst.
Das nennt sich systematische Fehlersuche statt probieren und vermuten.
;-)
Es könnte auch sein, dass beim Abschalten des MOSFETs über die Kapazität
Drain-Gate ein hoher Strom in den IO-Pin fließt. Dann kann natürlich
auch eine Spannung bis zu 12V anliegen. Das kann den dann auch killen.
Daher fummle da einen Widerstand mit z.B. 10K in SMD rein.
Felix A. schrieb:> Da das Halbleiterrelais keine Induktionsspannung erzeugt, der Pin> am uC> aber auch kaputt ist, sehe ich derzeit nur die 12V als Ursache. Es> scheint, als ob die Masseleitung von den Relais oder die Entkopplung der> 12V von den 3V3 unglücklich ist.
Die 12V sind die Versorgungsspannung, daraus werden über einen LT3973
Schaltregler 5V und von den 5V mit einem ADP2108 3,3V erzeugt. Die
Spannungen habe ich schon alle auch beim Umschalten und unter Last
nachgemessen, das sieht alles gut aus.
> Dazu würde aber auch das Layout gebraucht, um das zu beurteilen. Wäre> hilfreich, wenn du das auch einmal postest. Aber bitte nicht nur einen> Teil davon, sondern komplett.> Die Lagen bitte einmal übereinander und einmal separat (top/bottom). Als> PDF wäre wünschenswert.
Muss heut abend mal schauen ob ich dazu Zeit finde.
Matthias S. schrieb:> Gerade, wenn die Gatecharge so klein ist, ist es doch überhaupt kein> Problem, da Widerstände reinzuhängen.
Ein Widerstand verschleiert nur den Fehler, es muß auch ohne gehen.
Erst wenn ich die Platine verlasse, sehe ich Schutzwiderstände vor.
Lukas schrieb:> In diesem Layout hab ich die Widerstände einfach vergessen, vorgesehen> war eigentlich ein BC846.
Du hast also den Basiswiderstand für den BC846 vergessen, deshalb dann
einen MosFet eingebaut und hast Dich dann gefreut, dass der
10k-Pulldown, der für einen bipolaren Transistor gar nicht notwendig ist
(aber sehr wohl für einen MosFet), schon im Layout vorgesehen war?
Kannst Du Dir irgendwie vorstellen, dass mir diese Räuberpistole
spanisch vorkommt?
Jetzt sag nicht, Du hättest den Pulldown nachträglich "luftverdrahtet".
Das hättest Du auch mit dem Basiswiderstand am ursprünglich vorgesehenen
Transistor machen können.
Man kann das Problem sogar prima simulieren.
Im Anhang die Schaltung. Resultat: je nach Mosfet und nach
Anstiegs-/Abfallzeit kann der Strom aus dem Controllerpin (V1) größer
+-20mA werden. Es könnte die Fähigkeit deines Controllers übersteigen.
Ergo: da gehört entweder ein Widerstand rein oder du verlangsamst anders
die Anstiegs- und Abfallzeiten.
Da ist natürlich ein Fehler im Schaltplan: die SPule wird durch den
Mosfet direkt an 12V gelegt, was weder Mosfet noch Spule in Realitas
überleben würden (wenn das Netzteil das hergibt).
Der Andere schrieb:> Nimm den µC mal weg und hänge dein Messgerät im Messbereich> Spannung 20V> an Masse und dein (vermeintliches?) Gate. Was misst du für eine> Spannung? Ich kenne jetzt die Daten dieses µC nicht, aber die meisten> halten sogar einen Kurzschluss am I/O Pin aus.> Wenn die abrauchen dann könnten da die 12V der Relaisversorgung> anstehen.> Wenn du keine Spannung misst, dann stelle das Messgerät auf den> Strombereich und Messe was für ein Strom zwischen Gate und Masse bzw> 3,3V fliesst.>> Das nennt sich systematische Fehlersuche statt probieren und vermuten.> ;-)
Ich soll die Gate-Spannung messen, und falls da keine ist (was der Fall
ist) den Strom messen?? Ich habe gelernt, dass ein Strom nur fließt wenn
auch eine Spannung da ist... Mit einem Multimeter werde ich den Strom
hier nicht sehen. Ich denke ich muss mir tatsächlich einen Vorwiderstand
einbauen und dann mit dem Scope messen.
BTW: Es ist noch kein FET kaputt gegangen. Nur die µC IO.
Frank M. schrieb:> Jetzt sag nicht, Du hättest den Pulldown nachträglich "luftverdrahtet".> Das hättest Du auch mit dem Basiswiderstand am ursprünglich vorgesehenen> Transistor machen können.
Genau so ist es aber. Einen Widerstand zwischen die Beinchen eines SOT23
zu löten ist sehr viel einfacher als einen zwischen das Pad und das
Beinchen. Geht alles, ist aber ein ganz schönes gefriemel.
Felix A. schrieb:> Man kann das Problem sogar prima simulieren.>> Im Anhang die Schaltung. Resultat: je nach Mosfet und nach> Anstiegs-/Abfallzeit kann der Strom aus dem Controllerpin (V1) größer> +-20mA werden. Es könnte die Fähigkeit deines Controllers übersteigen.>> Ergo: da gehört entweder ein Widerstand rein oder du verlangsamst anders> die Anstiegs- und Abfallzeiten.
Danke für deine Analyse, das wird das Problem sein.
> Da ist natürlich ein Fehler im Schaltplan: die SPule wird durch den> Mosfet direkt an 12V gelegt, was weder Mosfet noch Spule in Realitas> überleben würden (wenn das Netzteil das hergibt).
Das widerum versteh ich nicht. Die Spule wird auf 12V gelegt, und das
soll doch auch genau passieren !? Oder meinst du die Simu?
In der Simu.
Die Spule hat bei einer DC-Messung 0 Ohm, also ein Kurzschluss. Dein
relais hat einen Spulenwiderstand von 100 ... 500 Ohm?
In der Simu funktioniert es, weil die Bauteile nicht kaputt gehen. Ist
aber ansich trotzdem falsch.
Ändert aber nichts am Strom aus dem/in den Controllerpin.
Ich hatte mal den Fall, dass die Spannungsänderung am Drain des Mosfet
auf das Gate und dann den Controller durchschlug. Das dachte ich hier
auch zuerst, konnte ich in der Simu mit einem dem BSH108 ähnlichen
Mosfet aber nicht bestätigen.
Peter D. schrieb:> Ein Widerstand verschleiert nur den Fehler, es muß auch ohne gehen.
Was heisst 'verschleiert den Fehler'? Immerhin bleibt mir so der
Austausch eines MC erspart. Das der MOSFet hier auf Kante betrieben wird
und bei 3,3V nicht voll durchsteuert, ist ja anscheinend die
Hauptbaustelle, aber trotzdem muss ich nicht jedesmal einen MC opfern.
der gezeigte Schaltungsschnipsel sieht nicht so verkehrt aus. Im Layout
kann allerdings noch was schief gehen, was man dem Schaltplan nicht
ansieht.
Lukas schrieb:> Leider ist es nun aber so, dass meine IO-Pins nach der Reihe abrauchen> (HIGH-Pegel erst 3.3V, dann 0.6V, dann 0.0V). Zunächst habe ich das nur> an den Pins beobachtet die auch mit einem AD-Eingang gemultiplext sind,> nun ist aber auch ein anderer ausgefallen.
Wie tritt der Fehlerfall ein? Beim ersten Schalten des Relais? Oder
kommt nach mehrstündigem Betrieb mal der eine mal der andere FET?
Sind die FETs nach dem Ausfall ebenfalls defekt oder funktionieren die
weiter? Kannst du den FETs im Normalbetrieb anmerken, dass sie sich
aufheizen oder bleiben sie völlig kalt?
Da die IOs mit ADC als alternate function stärker betroffen sind: nutzt
du in deiner Software die ADCs? Kann in der Programmierung irgendwas
faul sein? Kannst du mal ein Minimalprogramm ausprobieren das nichts
anderes macht, als alle paar Sekunden das Relais umzuschalten und stirbt
deine Hardware damit ebenfalls?
Lukas schrieb:> Danke für deine Analyse, das wird das Problem sein.
glaube ich nicht: das ist ein Simulationseffekt der in der Relität nicht
so auftritt. Die Begrenzung des Stromfluss durch den IO-Pin und durch
den Widerstand der Relaisspule wurden nicht mitsimuliert. Selbst wenn
dieser Ausfall an einem Leistungsrelais vielleicht denkbar wäre, dann
kann es an deinem Halbleiterrelais mit 533Ohm Vorwiderstand sicher nicht
zum Fehler führen. Welche (elektromechanischen) Relais benutzt du
eigentlich?
Matthias S. schrieb:> Was heisst 'verschleiert den Fehler'?
Irgendwas an deiner Schaltung ist faul (und zwar etwas, was man den
bisher gezeigtem Schaltplan nicht ansieht). Mit einem Widerstand
veränderst du zwar wahrscheinlich die Fehlerhäufigkeit, aber trotzdem
bleibt damit was faul in deiner Schaltung.
Matthias S. schrieb:> Was heisst 'verschleiert den Fehler'?
Ups, die Frage kam ja gar nicht vom TO. Ich denke Peter wollte darauf
hinweisen, dass der eigentliche Grund für den Ausfall gefunden werden
muss.
@Achim
Es ist kein Simueffekt, sondern einer, den man selbst mit Oszilloskop
und einem kleinen Serienwiderstand messen kann.
Es geht auch nicht um den Strom durch das Relais. Der Controller muss
den im Bild sichtbaren Strom beim Schalten treiben, und zwar in beide
Richtungen. Das kann den schon töten. Und wie geschrieben liegt es an
der Anstiegs-/Abfallzeit.
Ein Erhöhen des Spulenwiderstandes ändert an dem Pin-Strom nichts.
Erst auf dem Schaltplan habe ich gesehen, dass da ein ARM verwendet
wird, kein AVR.
Beim AVR hätte ich gesagt: Der steckt das weg.
Aber die ARM sind oft viel empfindlicher.
Auch die Freilaufdiode...
Da könne man vielleicht auch eine schnellere verwenden.
Achim S. schrieb:> Irgendwas an deiner Schaltung ist faul (und zwar etwas, was man den> bisher gezeigtem Schaltplan nicht ansieht). Mit einem Widerstand> veränderst du zwar wahrscheinlich die Fehlerhäufigkeit, aber trotzdem> bleibt damit was faul in deiner Schaltung.
Da is sicher was am Aufbau falsch, 10-Ohm statt 10k, Diode /
Transistor verkehrt eingebaut, ....
Felix A. schrieb:> Im Anhang die Schaltung. Resultat: je nach Mosfet und nach> Anstiegs-/Abfallzeit kann der Strom aus dem Controllerpin (V1) größer> +-20mA werden. Es könnte die Fähigkeit deines Controllers übersteigen.>> Ergo: da gehört entweder ein Widerstand rein oder du verlangsamst anders> die Anstiegs- und Abfallzeiten.
Das ist doch Bullshit. Ein µC-Ausgang hat viel mehr als 1R äquivalenten
Innenwiderstand, eher so 50R. Der begrenzt den Spitzenstrom schon
allein, ganz ohne Serienwiderstand. Und die Ströme die bei max. Ratings
stehen, gelten alle für den statischen Fall, nicht für kurze Impulse.
Ganz allgemein können CMOS-Ausgänge kapazitive Lasten bis einige 100pF
ganz problemlos direkt treiben. Wäre das nicht so, dann dürfte man auch
keine CMOS-Eingänge an CMOS-Ausgänge schalten.
So lange man kein Trum von Leistungs-MOSFET mit einigen nF Gatekapazität
anschließt und/oder mit einigen 10kHz umschaltet, braucht man keinen
Gatewiderstand. Also zumindest nicht als Schutz für den µC. Aus
EMI-Sicht kann so ein Widerstand natürlich schon sinnvoll sein.
Daß der TE seine µC-Ports zerschießt, liegt ziemlich sicher nicht an
der Schaltung. Also nicht an der Schaltung die er (im gefühlt 100. Post
dann endlich mal) gezeigt hat. Vermutlich hat er etwas ganz anderes
gebaut. MOSFET verpolt. Oder statt dessen Bipolartransistoren bestückt.
Oder irgendein Fehler im Aufbau. Alles nichts was man per Ferndiagnose
finden könnte. Und da der TE zu systematischer Fehlersuche unfähig (oder
doch zumindest unwillig) zu sein scheint, wird er es alleine wohl auch
nicht rausfinden. PP - persönliches Pech!
Lukas schrieb:> In diesem Layout hab ich die Widerstände einfach vergessen, vorgesehen> war eigentlich ein BC846.
Dann baust Du halt einen DTC114 oder PDTC143 oder vergleichbares ein.
Diese Informatiker-Transistoren haben die Basisvor- und
ableitwiderstände integriert und lassen sich bei moderaten
EMV-Anforderungen ohne jegliche externe Beschaltung verwenden.
Lukas schrieb:> Zunächst habe ich das nur> an den Pins beobachtet die auch mit einem AD-Eingang gemultiplext sind,
Sind alle VSS, VDD, VSSA, VDDA auch angeschlossen?
Wie ist VDDA mit VDD verbunden?
Wie ist GND mit den FETs verbunden?
Wieviel mA ziehen die Relais an den 12V?
Was schalten die Relais (I, U)?
Wie gesagt, den fehlenden Gatewiderstand halte ich nicht für die
wirkliche Ausfallursache.
Peter D. schrieb:> Lukas schrieb:>> Zunächst habe ich das nur>> an den Pins beobachtet die auch mit einem AD-Eingang gemultiplext sind,>> Sind alle VSS, VDD, VSSA, VDDA auch angeschlossen?> Wie ist VDDA mit VDD verbunden?> Wie ist GND mit den FETs verbunden?> Wieviel mA ziehen die Relais an den 12V?> Was schalten die Relais (I, U)?>> Wie gesagt, den fehlenden Gatewiderstand halte ich nicht für die> wirkliche Ausfallursache.
Der µC hat nur VSS, VDD und VCC. Alle VDD sind an 3,3V angeschlossen,
VCC an 5V. Das mechanische Relais (Finder 34.51.7.012) zieht 38mA, das
elektrische ca 20mA. Die Relais schalten erst mal gar nichts, da ist nur
ein Varistor dran.
@Achim S.: Die IOs sind direkt hinüber gewesen.
Axel S. schrieb:> Und da der TE zu systematischer Fehlersuche unfähig (oder> doch zumindest unwillig) zu sein scheint, wird er es alleine wohl auch> nicht rausfinden. PP - persönliches Pech!
Diese Aussage finde ich unfair - hier gibt es 2 mögliche
Interpretationen:
1. Du denkst, das Problem ist trivial genug das man kein Posting hier
machen muss. In diesem Fall würde ich dich bitten deine Kommentare in
Postings zu machen die deinem Fachlichen Anspruch genüge tun.
2. Du hast das Gefühl ich nehme die gegeneben Ratschläge nicht an. Dazu
habe ich oben erwähnt, dass ich heute Abend schaue ob ich Zeit dazu
habe. Ein paar Dinge habe ich ja schon getestet, den Rest werde ich
sicher nachholen.
Teo D. schrieb:> Da is sicher was am Aufbau falsch, 10-Ohm statt 10k, Diode /> Transistor verkehrt eingebaut, ....
Dagegen spricht, dass die Schaltung an 5 von 8 Pins problemlos läuft und
auch die ausgefallenen 3 Relais beim Beschalten der Gates mit 3,3V
ordentlich arbeiten. Dabei habe ich zumindest mit dem Multimeter über
einen Widerstand gemessen, dass kein Strom ins Gate fließt (0,3V an
einem 1K widerstand, das sind 0,3mA die über den 10k Widerstand nach GND
abfließen).
Axel S. schrieb:> Das ist doch Bullshit. Ein µC-Ausgang hat viel mehr als 1R äquivalenten> Innenwiderstand, eher so 50R. Der begrenzt den Spitzenstrom schon> allein, ganz ohne Serienwiderstand. Und die Ströme die bei max. Ratings> stehen, gelten alle für den statischen Fall, nicht für kurze Impulse.
Ich habe im Datenblatt mal nachgelesen. Es gibt in der Tat kein Maximum
für die Ströme, die aus dem oder in den Pin fließen dürfen (außer die
100mA maximaler Supplycurrent, die das begrenzen). Das bedeutet aber
auch, dass ein Strommpuls, z. B. beim Einschalten der 12V die maximal
erlaubte Spannung am Pin überschreiten und den Latchup auslösen KANN.
Angenommen, die 12V werden vom Netzteil genommen, so kann im ersten
Augenblick beim Einstecken die 3,3V-Spannung fehlen und über die
Mosfet-Kapazitäten ein Strompuls kommen, der den Latchup auslöst.
Zum Latchstrom, bei dem der Latchup eintritt, steht hier im DB dazu:
-0,5*VDD < Vi < 1,5*VDD max 100mA
Da das Layout unbekannt ist, kann natürlich auch eine gewisse
Induktivität in Kombination mit der Gatekapazität und der
Rise-/Fall-time von 3ns bis 5ns zu einem Schwingen führen, das den
Latchup auslöst.
Ich persönlich glaube nicht daran, dass ein anderer Teil der Schaltung
hier die Ursache sein kann, da es eben immer nur die Pins vom AD-Port
betrifft. Ich würde daher vorschlagen, trotzdem einen Serienwiderstand
zwischen Pin und Mosfet zu schalten. Stirbt der Pin dann nicht (sofort),
lässt sich per Oszilloskop zumindest messen, was am Pin los ist. Man
muss ja nicht noch mehr Pins killen und was anderes ist an denen ja
nicht angeschlossen.
Felix A. schrieb:> Axel S. schrieb:>> Das ist doch Bullshit. Ein µC-Ausgang hat viel mehr als 1R äquivalenten>> Innenwiderstand, eher so 50R. Der begrenzt den Spitzenstrom schon>> allein, ganz ohne Serienwiderstand. Und die Ströme die bei max. Ratings>> stehen, gelten alle für den statischen Fall, nicht für kurze Impulse.>> Ich habe im Datenblatt mal nachgelesen. Es gibt in der Tat kein Maximum> für die Ströme, die aus dem oder in den Pin fließen dürfen (außer die> 100mA maximaler Supplycurrent, die das begrenzen).
Dann musst du nochmal hinschauen. Es ist ein Kurzschlussstrom angegeben
45 mA gegen Masse, 50 mA gegen Vdd. Und das geht dauerhaft solange der
Gesamtstrom nicht überschritten wird. D.h. der uC kann beliebige
Kapizitäten laden, halt nur langsam. (Zu langsam für Leistungs-MOSFETs).
Der Pin kann demnach nur durch einen Überspannungsspike kaputgehen, z.B.
kapzitive Kopplung Gate/Drain oder durch ein schlechtes Layout. Es ist
durchaus denkbar dass Pins mit Analogfunktion beim LPC einen Tick
empfindlicher sind.
Felix A. schrieb:> Der Strom beim auf Masse ziehen wird nicht begrenzt. Oftmals auch nicht> beim auf 3,3V hochziehen.
Das ist eine Binsenweisheit aus der TTL Steinzeit. Gilt für moderne CMOS
ICs schon lange nicht mehr.
Felix A. schrieb:> Das bedeutet aber> auch, dass ein Strommpuls, z. B. beim Einschalten der 12V die maximal> erlaubte Spannung am Pin überschreiten und den Latchup auslösen KANN
Nein. Alle CMOS-Ausgänge begrenzen den Strom schon durch die
Abschnürcharacteristik der MOSFETs.
Es gibt einen garantierten Strom (beim AVR 20mA) den liefern sie auf
jeden Fall und einen maximalen Strom (beim AVR 40mA) den liefern die
auch bei Kurzschluss nie, weil dazwischen der Abschnürbereich des
MOSFETs einsetzt.
Beim LPC11C24 sind das wohl 4mA und 100mA, also ein weiter Bereich.
Die 100mA kann man nur erreichen, wenn man von aussen eine Spannung
anlegt, die höher als VCC bzw. niedriger als GND ist, und DANN gibt, daß
man nicht mehr reinschicken darf. Raus kommen so viel sowieso nicht.
Der LPC11C24 hat 5V tolerante I/O, also keine Diode vom Ausgang zu VCC;
sondern eine UBEreverse-Strecke vom Ausgang nach Masse. Insgesamt sind
die normalen I/O recht robust, ESD ist angegeben.
So, hier nun Layouts mit dem gesammten Schaltplan. Ist wie schon erwähnt
entwas unübersichtlich, es geht um die Transistoren Q3, Q6 (Top) und Q7
(Bottom, direkt unterhalb von SW2).
Im Schaltplan ist hier wie schon beschrieben der BC846B vorgesehen, der
Vorwiderstand ist vergessen worden. Der Klemmwiderstand für den BSH108
ist einfach händisch zwischen die Pins am SOT23 gelötet.
Ich habe auch versucht zu messen. Habe einen 1 Ohm Widerstand unter das
Beinchen gelötet und versucht einen Spannungsabfall zu messen. Dabei
habe ich ein Interessantes Phänomen betrachtet: Sobald ich die Masse des
Aktiven Tastkopfes an das eine Ende des Widerstands gehalten und dann
eingeschaltet habe, hat das Relais bein einschalten diverse male
geschaltet. Leider musste ich den Platz wieder räumen, ich hatte auch
keine passende Software auf dem Prozessor um die Ausgänge verzögert zu
schalten, deshalb kein Bild.
Die Spannung am Gate ist aber eher nach einer umgekehrten e-Funktion
angestiegen. Ich schau ob ich gleich im Keller noch mal was aufnehmen
kann, hab an meinem aber weder aktive Tastköpfe noch ein Interface für
Screenshots dran.
Danke, das ist in Summe ziemlich informativ.
Wenn man sich anschaut, welchen Weg der Strom nehmen muss, um zu deinen
Molex-RJ45-Buchsen zu kommen, dann ist leider schon gut sichtbar, dass
deine Masseanbindung für hohe Frequenzen alles andere als niederohmig
ist.
Und ohne alle Wege verfolgt zu haben, gilt das wohl auch für DC-Ströme.
Im Grunde genommen bedeutet diese Anbindung eine recht hohe
Induktivität. Kombiniert mit der hohen Schaltgeschwindigkeit (trotz des
auf 45mA begrenzten Stromes) könnte es zu Schwingungen beim Ein- und
Ausschalten kommen, die so groß sind, dass es den Pin reißt.
Genaueres wird aber nur mit einem Oszilloskop zu sehen sein.
Ich würde weiterhin vorschlagen, einen Widerstand zwischen Pin und
Mosfetgate zu schalten. Es ist ja der einzige Pfad, über den der Pin
zerstört werden kann.
Digitaltransistor wurde schon genannt, möchte das nur noch mal betonen.
>Dann baust Du halt einen DTC114 oder PDTC143 oder vergleichbares ein.
viel Erfolg
hauspapa
Das könnte auch gehen. Allerdings wird der ebenfalls schnell
durchgeschaltet, was wiederum zu Schwingern führen könnte so das denn
die Ursache für die sterbenden Pins ist.
Felix A. schrieb:> Genaueres wird aber nur mit einem Oszilloskop zu sehen sein.
Wie genau könnte ich das feststellen? Das Problem mit meinen passiven
Tastköfen ist ja, das deren Kapazität schon in der Größenordnung meiner
Gate-Kapazität liegt. Wie messe ich da wo am besten um sowas sehen zu
können? (Man will ja was dabei lernen...)
Ich denke wenn ich nun eh schon Vorwiderstände einbauen muss werde ich
die BC846B nehmen, dann spare ich mir den Widerstand nach GND. Ist zwar
etwas fummelei, aber das kann ich auf der Arbeit unterm Mikroskop
machen.
@rheydrich: sowas hat hier nix zu suchen.
Sein Kommentar (und der in nem anderen Thread) wurden schnell gelöscht,
alles gut, einfach nicht darauf reagieren.
Bezüglich der Tastköpfe wäre das kein Problem. Du hast da vermutlich
auch einen 1:10-Teiler-Einsteller dran, oder?
Dann Umstellen auf 1:10 und dann vom Tastkopf über einen Vorwiderstand
(z.B. 1k) an das Gate. Ich würde aber trotzdem dazu raten, ERST einen
Widerstand zwischen Gate und Controllerpin zu schalten und danach erst
am Gate (dann ohne Vorwiderstand am Tastkopf) zu messen.
Wenn du über einen 1k am Tastkopf misst, flacht sich die Kurve ab, es
könnte vielleicht sogar gar nichts zu sehen sein. Aber zumindest
belastest du den Pin dann nicht noch extra.
Nebenbei bemerkt:
wenn da über den Mosfet zu deinem Pin Spannungsspitzen durchdringen, ist
der Tastkopf mit seiner Kapazität sogar eine kleine Verbesserung.
Lukas schrieb:> Aber mal zum Topic: kleine MOSFETs ohne Vorwiderstand an µC zu bauen ist> durchaus keine Seltenheit, auch in kommerziell vertriebener Elektronik -> ich hab grad das Gefühl ich hätte einen der trivialsten Fehler der> Elektrotechnik überhaupt begangen.
Ähemm.. ja.
Wenn du schon so wenig Zeit für's Hobby hast, dann versuche doch zu
allererst, dein Zeugs zu durchdenken. Das hilft.
So, nun stell dir vor, du hast dein relais (oder SSR) eingeschaltet und
nun schaltest du es aus. Also Pin auf Low. Was passiert? Nun in beiden
Fällen schnippt die Spannung am Drain in die Höhe. Beim echten Relais
mit konstantem Strom, beim SSR mit dem Strom, der durch den
Vorwiderstand geliefert wird. Sagtest du 30..40 mA? OK, über die
Gate-Drain-Kapazität landet eben dieser Strom direktemang im µC-Pin -
allerdings deutlich gemildert durch den Miller-Effekt. Ich vermute mal
ganz stark, daß dieser Strom auf Dauer für den Low-Ausgangstransistor
des µC-Pins ein bissel zu viel ist und folglich wird selbiger gebraten.
Das war's dann. Bei einem Transistor, der eine deutlich niedrigere
Schwellspannung hat als dein BSH108 fällt dieser Effekt geringer aus und
die Überlebenschancen für den Pintreiber steigen.
Was kann denn so ein Ausgang nach Low ziehen? Ich schätze, mehr als 8 mA
sind das nicht, vielleicht 4..6 mA. Bei manchen µC kann man sowas auch
noch per SW einstellen. Also solltest du deinen Widerstand zwischen Pin
und Gate so dimensionieren, daß im schlimmsten Falle vielleicht 1 mA
oder so in's Pin gedrückt wird, meine Schätzung wären 47k oder
wenigstens 33k.
Also: rechne dir sowas lieber zuvor durch. Ich habe beim Basteln
übrigens funktionierende Ergebnisse viel lieber als abgerauchte.
W.S.
Achso, vergessen: Das ist gemessen zwischen dem Gate von Q1 und dem
VSS-Pin 41 am µC. Zwischen dem IO vom µC ist ein 1k Widerstand, außerdem
sind 10k vom µC IO nach Masse geklemmt.
W.S. schrieb:> So, nun stell dir vor, du hast dein relais (oder SSR) eingeschaltet und> nun schaltest du es aus. Also Pin auf Low. Was passiert? Nun in beiden> Fällen schnippt die Spannung am Drain in die Höhe. Beim echten Relais> mit konstantem Strom, beim SSR mit dem Strom, der durch den> Vorwiderstand geliefert wird. Sagtest du 30..40 mA? OK, über die> Gate-Drain-Kapazität landet eben dieser Strom direktemang im µC-Pin -> allerdings deutlich gemildert durch den Miller-Effekt.
Ähhm. Nein.
Zum einen ist der der Drainstrom irrelevant, denn der wird ja von der
Freilaufdiode übernommen. Relevant ist der Sprung der Drainspannung von
nahezu 0 auf reichlich 12V. Der wird über die Drain-Gate-Kapazität in
der Tat auf das Gate zurückgekoppelt. Allerdings ist da auch noch die
Gate-Source-Kapazität. Die bildet mit der Millerkapazität (Drain-Gate)
einen kapazitiven Spannungsteiler. Es kommen also gar nicht die vollen
12V am Gate an. Konkret hat der BSH108 C_rss=50pF und C_iss=190pF.
Teilerfaktor ca. 5. Von den 12V kommen also nur ca. 2.5V am Gate an.
OK, ein bisschen mehr, denn das Gate ist noch nicht ganz auf 0 entladen
wenn der FET abschaltet. Trotzdem: davon stirbt der LPC nicht.
Könnte es evtl. sein, dass softwareseitig der IO-Pin nicht (immer) aktiv
als Ausgang geschalten wird? Dass der Ausgang dadurch zeitweise als
hochohmiger, offener Eingang definiert ist und dadurch zerstört wird.
Nur mal so ein Gedanke.
Hallo,
ich kenne genügend Leute die Mosfets jeder Art direkt an einen µC
bammeln. Auch wenn ich das nicht machen würde. Laut Datenblatt zum NXP
LPC11C24, kann dieser nach + und Masse pro Pin satte 100mA liefern. Und
der Peakstrom darf ein 25fach höherer sein. Die meisten AVR's können nur
20-40mA maximal.
Der fehlende Widerstand kann nicht das Problem sein.
Nimm mal den µC raus, bau dir einen Taktgen. den Du mit einen bipolaren
an den Mosfet hängst mit kleinen Shuntwiderstand zum Gate, messe den
Spannungsabfall am Oszi darüber und damit indirekt den Strom und guckst
was da passiert.
Wegen allgemeinen Mosfet Gate Vorwiderstand am µC. Das ist ganz einfach.
Man muß nur den maximalen Kurzschlussstrom begrenzen. Deine 100mA würde
ich nun nicht ansetzen. Sagen wir 20mA lassen wir zu. Dein µC wird mit
3,3V versorgt. Also 3,3V geteilt durch 20mA ergeben 165 Ohm. Nimmste 160
Ohm zwischen µC Pin und Gate. Fertig.
Edit:
sehe gerade, das von Felix schon eine sinnvolle Antwort kam
@Lukas:
deine Oszi-Messungen sehen überhaupt nicht seltsam aus, sondern könnten
als Lehrbuchbeispiel genutzt werden, wie ein MOSFET-Gate beim Umschalten
aus einer strombegrenzten Quelle umgeladen wird. Mit den Messungen ist
nun auch geklärt, dass hohe Spitzenströme aufgrund schneller
Umladeprozesse nicht fürs Sterben der IOs verantwortlich sind (denn das
Umladen läuft bei dir nicht im 10ns-Bereich ab sondern im 1µs-Bereich).
Deshalb nochmal ein paar grundsätzliche Fragen, die auch oben schon
gestellt aber (soweit ich gelesen habe) noch nicht beantwortet wurden.
Wie tritt der Fehler auf? Immer beim Einschalten der Versorgung (bzw.
beim vorherigen Ausschalten)? Oder läuft die Schaltung beim Einschalten
erst mal korrekt los aber verabschiedet sich dann während des Betriebs?
Oder kannst du den Ausfall an einem bestimmten Betriebsfall festmachen
(wenn z.B. 2 Relais fast gleichzeitig umgeschaltet werden)?
Kannst du Softwareprobleme völlig ausschließen? Ich habe grade keine
richtig gute Idee, wie Softwareprobleme aussehen sollten, die zur
Zerstörung der IOs führen, aber um es auszuschließen wäre eine
abgespeckte Prüfsoftware nicht schlecht, die stur alle paar Sekunden ein
Relais umschaltet. Tritt der Fehler dann auch noch auf?
Was für eine Last schalten deine Relais? Kann von dort (trotz der
galvanischen Trennung) eine Störung auf die IOs zurückkommen? Wird der
µC auch zerstört, wenn du die Last von den Relais abklemmst und nur die
Relais selbst umschaltest?
Ulrich F. hat (imho zurecht) angemerkt, dass dass bei einigen ARM die
IOs empfindlicher sein können als bei diversen althergebrachten
8bittern. Im Datenblatt des LPC11C22 ist z.B. beschrieben, dass der
Latchup-Current (der zu einer Zerstörung des IOs führt) mit 100mA gerade
mal doppelt so groß wie der Kurzschlussstrom (50mA). Dieser Abstand kann
durch nicht optimales Design der Versorgung evtl. noch verkleinert
werden. In deinem Design sind die Stützkondensatoren für Vdd nicht
wirklich optimal. (Ich habe auch schon schlimmere Layouts gesehen, die
zuverlässig funktionierten, aber Fakt ist dass bei dir die µC sterben
und dass das eine Ursache haben muss).
Beim µC Pinout sind immer ein Pärchen von Vdd und Vss Pins so
nebeneinander gelegt, dass gerade ein SMD Keramikkondensator dazwischen
passt. Genau so solltest du die Stützkondensatoren auch anschließen. Bei
dir ist zwar der Abstand des Stützkondensators zum Vdd-Pin in Ordnung.
Der Strom vom anderen Ende des Stützkondensators zum Vss-Pin muss aber
einen ziemlich langen Weg über "weit entfernte" vias gehen, ehe er am
Vss-Pin ankommt. Die damit verbundene parasitäre Induktivität könnte zu
deinem Problem beitragen. Kannst du versuchen, mit einer fliegenden
Verdrahtung 100nF Kerkos direkt an die Vdd-Vss Pinpärchen des µC
anschließen und schauen, ob das hilft? Für die fliegende Verdrahtung
können es bedrahtete Kerkos sein (Anschlussbeine ganz kurz abschneiden
und direkt auf die Pins des µC löten.)
Also, leider kann ich dazu keine präzise Aussage machen. Ich habe die
Schaltung aufgebaut und die Funktion war beim ersten Nachmessen der
Gate-Spannungen am FET nicht mehr gegeben. Meine Software schaltet die
Relais (mit kleinem zeitlichen Versatz nacheinander) in der Init-Routine
alle ein. Diese sind dann mindestens 20ms eingeschaltet bevor sie wieder
ausgeschaltet werden. Leider kann ich nicht sicher sagen, ob ich vor dem
Messen noch mal die Spannung weggenommen habe.
Ich habe mir am Scope mal die Spannung am Gate beim Ein- und Ausschalten
der Spannungsversorgung angesehen. Hin und wieder waren da ein paar
kleinere Schwinger beim einschalten zu sehen, aber alle im Bereich < 1V.
Ich gehe dabei davon aus, dass das ein Prellen beim einstecken der Kabel
war.
Eine Zerstörung duch die geschaltete Last kann ich in jedem Fall
ausschließen, wie oben erwähnt war und ist da nichts angeschlossen.
Software-Probleme wären jetzt fatal - das ist eher mein Fachgebiet. Ich
habe aber schon immer beim Initialisieren zusammen mit den Relais auch
eine LED an Pin1_4(AD4) eingeschaltet, die arbeitet nach wie vor
tadellos. Wüsste jetzt nicht was ich da noch prüfen könnte.
Alle weiteren vorgeschlagenen Tests werden definitiv in einem weiteren
zerstörten µC enden - das würde ich mir gerade gern sparen, mir gehen
die CPUs aus. Und wie lange die Pads den ständigen Wechsel mitmachen
weiß ich auch nicht.
Ich habe mir nun vorgenommen (wie oben erwähnt), die MOSFETs wieder
rauszuwerfen und die ursprünglich eingeplanten BC846B mit
reingefriemeltem 10k Vorwiderstand einzubauen. Damit sollte ich Ruhe
haben.
Oder hast du noch eine andere Idee wie ich mein Problem zerstörungsfrei
eingrenzen könnte? Da ich die zerstörenden Spannungen/Ströme noch nicht
gefunden habe, kann ich bei einer Veränderung der Schaltung/des Layouts
auch nicht sagen ob die Ursache verschwunden ist wenn ich meine
Schaltung so präpariere, dass nichts mehr kaputt geht...
Lukas schrieb:> Ich habe mir nun vorgenommen (wie oben erwähnt), die MOSFETs wieder> rauszuwerfen und die ursprünglich eingeplanten BC846B mit> reingefriemeltem 10k Vorwiderstand einzubauen. Damit sollte ich Ruhe> haben.
Da der Mechanismus der zur Zerstörung der IO-Pins führt nach wie vor
nicht aufgeklärt ist, halte ich das für eine gewagte Annahme.
Systematische Fehlersuche sieht anders aus.
Wie wäre es dann mit derselben Messung an einem Nicht-AD-Pin, die nicht
kaputt gehen?
Da den Tastkopf direkt dran und dann mal Spannung einschalten (durch
Einstecken der Kabel, dann Pin toggeln lassen und wieder ausschalten.
Selbe Außenbeschaltung, also wenn der Fehler bei den Mosfets liegen
sollte, sollte er dort sichtbar sein.
Lukas schrieb:> Oder hast du noch eine andere Idee wie ich mein Problem zerstörungsfrei> eingrenzen könnte?
ich würde mir speziell den Ein- und Ausschaltvorgang noch genauer
anschauen (also nicht das Schalten der Relais sondern das
Ein/Ausschalten der Versorgung): wie laufen welche Versorgungen hoch,
kommt es währenddessen zu seltsamen Spannungen am IO. Den "typischen"
Schaltprozess des Relais hast du ja mit dem Oszi angeschaut, und da ist
nichts dabei, was ich als gefährlich ansehen würde.
Falls es nochmal zu einem Ausfall kommen sollte während du grade dabei
bist: bitte die Versorgung anlassen und nachfühlen, ob der µC im Bereich
der IO spürbar aufgeheizt wird (würde ich erwarten, wenn ein Latchup bei
dem Defekt eine Rolle spielt).
Und fürs nächste Design würde ich dem Layouter vorgeben: die Gesamlänge
der Leitung zwischen Pufferkondensator und Vss/Vdd Pinpaar darf nicht
mehr als 8mm betragen.
Na sicher, solange hier Vorschläge zur Problemfindung sind werde ich
mich da natürlich bemühen. Ich habe nun folgende Messung gemach:
MOSFET BSH108 an Q1 eingebaut, 10k von Gate nach GND, kein
Vorwiderstand.
Messung zwischen dem Pin P3_1 und VSS-Pin 41 am µC (direkt angelötet).
1: Spannung einschalten
2: MOSFET eischalten
3: MOSGET ausschalten.
Beim Spannung Abschalten ist selbst ein 0,5V Trigger nicht gekommen.
Das Einschalten sieht hier erheblich schlechter aus als bei meiner
Messung zuhause (mit UND ohne Vorwiderstand). Zu erwähnen ist, dass das
Scope natürlich vor dem verdinden der Spannung auch keinen Massebezug
hat.
Das wird mein Problem sein?
Ein derartiger Puls kann natürlich durch Einstrahlung in die Schleife,
gebildet aus Tastkopf und Massekabel + Masseklemme kommen. Daher ist
eine Messung, bei der die Masse mit einem Draht von der Masse an der
Tastkopfspitze aus ganz kurz verbunden wird, viel besser.
Mich wundert etwas die Aussage, dass das Scope vor dem Verbinden der
Spannung keinen Massebezug hat. Wie meinst du das genau?
Ich versorge dne Schaltung ja über die RJ45 Buchse mit Stom. Beim
Einschalten stecke ich den Stecker da rein. Ich verbinde also nicht nur
die 12V, sondern auch die Masse gleichzeitig.
Wegen der Schleife beim messen: Das ist sicher richtig. Wenn ich nachher
noch mal Zeit hab mess ich das noch mal mit nem aktiven Tastkopf den ich
näher mit einer kleineren Schleife platzieren kann.
So, nun noch mal mit ner Massenadel direkt am Tip vom Probe. Hab ca. 25
Einschaltvorgänge gemessen, bei der hälfte ist gar kein Trigger
gekommen, häufiger im Bereich ~5V - das hier war absolutes Max.
Ich würde durch Abschätzen sagen, dass die Schwingung etwa 260MHz
Frequenz aufweist (ca. 13 Schwinger in 50ns -> 260 Schwinger in 1us).
Es wird auch nicht geklippt, weil (wie ich jetzt vermute) die
Schutzdioden da vielleicht nicht schnell genug sind oder das Schwingen
zwar auf dem Oszilloskop sichtbar ist, aber aus Sicht des
Mikrocontrollers vielleicht nicht am Pin anliegt.
Dennoch, sollten diese Pulse die IO-Pins tatsächlich treffen, wäre es
zumindest vorstellbar, dass die AD-Ports da vielleicht deutlich
empfindlicher reagieren und zerstört werden.
Eine (vor)letzte Prüfung wäre toll: einen Widerstand (z. B. 1k) zwischen
IO-Pin und Gate vom Mosfet und dann mal am IO-Pin dieselbe Messung
machen. Wenn dann das Schwingen deutlich kleiner wird, dann ist das ein
"reales" Schwingen. Bleibt es in dieser Höhe, dann misst du da wohl
einen anderen Effekt am Pin.
Eine letzte Idee wäre es, mal den Stromanstieg zu begrenzen, indem du
einen Widerstand mit 1..10Ohm (falls der Stromverbrauch der Schaltung
klein genug ist) in die +12V-Leitung zum Netzteil schaltest und dann die
Spannung anlegst. Die hohen Frequenzen, durch das plötzliche Anlegen der
Spannung, werden so etwas bedämpft, da der Strom nun nicht mehr derart
hoch werden kann. Daraufhin müssten die Schwingungen weniger/kleiner
werden.
Vielleicht werden die IO-Pins beim Einschalten zerstört. Abhilfe (wenn
auch keine sonderlich gute Lösung) wäre dann ein Softstart (sofern
realisierbar).
So, hatte noch mal die Gelegenheit zu messen.
Als erstes habe ich eine Messung mit 13,2 Ohm Widerstand in der 12V
Leitung. Damit habe ich keinen Peak mehr über 2V gemessen, meistens gar
kein Trigger (0,5V)
Danach habe ich den Widerstand aus der 12V Leitung wieder entfernt, und
einen 1k Widerstand als Gate-Vorwiderstand eingebaut. Hier waren noch
Peaks zu sehen, aber nicht mehr in der Höhe wie ohne Vorwiderstand.
(Max. 7 Volt).
Mit dem Ergebnis hab ich dann mal versucht die Masseführung meines µC zu
verbessern. Ich habe die VSS-Verbindungen direkt vom Pin an den
Blockkondensator gelötet um die Wege zu verkürzen. Mit dieser
Modifikation habe ich dann noch mal gemessen, nun ohne Gate
Vorwiderstände. Die Peaks die ich jetzt messen kann sind fast genau so
wie mit dem Gate Vorwiderstand, bei ca. 20 Messungen war kein Peak über
6V dabei.
Ich persönlich denke, dass du damit dann die wahrscheinliche Ursache
gefunden hast. In der Folge sollten da zur Sicherheit die
Gate-Vorwiderstände (oder Basis-Vorwiderstände, wenn du NPN-Transistoren
einsetzen willst) eingebaut werden und beim Einschalten der Spannung
eine Form von Softstart implementiert werden.
Ferner ist aber auch noch wichtig, vorher die Unterschiede besagter
AD-Pins zu den normalen IO-Pins zu klären, da die AD-Pins ja um einiges
empfindlicher zu sein scheinen. Allerdings kann ich da kaum helfen, da
mir die Zeit für ein ausführliches Datenblattstudium fehlt.
Vielleicht gibt es ja noch weitere Ideen/Anregungen, was die Ursache
angeht. Insofern erstmal viel Erfolg.
Die Peaks sind mit Strombegrenzung und Gatewiderstand deutlich kleiner
geworden. Ursache dürfte somit ein nicht EMV-gerechtes Design sein.
Warum die AD-Pins sterben und die normalen nicht, sollte sich aus dem
Datenblatt nun ermitteln lassen. Dazu habe ich aber wie geschrieben
nunmal nicht die Zeit (obwohl ich das gerne machen würde).