Hallo Leute, Folgende Situation: Auf einem PCB befindet sich ein Mikrocontroller (dsPic33), von dem 5 Pins direkt auf einen Pfostenstecker gelegt sind. Über ein Flachbandkabel mit einer Länge von ca. 30 cm sind diese mit einem weiteren PCB verbunden, wo mit diesen Leitungen 3 Stk Analogmultiplexer adressiert werden. Der analoge Ausgang der Multiplexer geht über das selbe Flachbandkabel zurück zum Controller, wo dieser über ein RC-Glied mit einem Analogeingang vom dsPic verbunden ist. Ich habe beobachtet, dass in diesem Bereich sporadisch Fehler auftreten z.B hat sich beim Controller schon mehrmals der ADC aufgehängt (Programm läuft normal weiter, aber der ADC Wert der ausgelesen wird, ändert sich nicht mehr) Meine Vermutung ist, dass es über die relativ langen Leitungen über das Flachbandkabel Einkopplungen von Störungen bzw. Spannungsspitzen gibt, die zu diesen Auffälligkeiten führen - zumal es ja eigentlich keine Schutzbeschaltung der Controllerpins gibt, die direkt auf das Flachbandkabel gehen. Die Geschwindigkeit der digitalen Signale liegt im Bereich von ca. 20 kHz. Um das Ganze unempfindlicher zu machen, hätte ich jetzt folgende Maßnahmen gesetzt: - Serienwiderstände auf der CPU Platine in die digitalen Ausgangsleitungen. - Eine ESD Suppressordiode auf den analogen Eingang am Controllerboard. - Am anderen Board, bei den digitalen Eingängen der Multiplexer ebenfalls TVS Dioden und ein RC-Glied (100R-1n)? Was meint ihr zu den Maßnahmen, bzw. sollte man die digitalen Ausgänge vom Controller noch über einen Pufferbaustein führen? Für Tipps wäre ich euch sehr dankbar! Viele Grüße, Max
Serienwiderstände sind selten falsch. Supressordioden sind überflüssig, nimm zwei normale Si-Dioden, eine nach VCC, eine nach GND - beide in Sperrichtung. Die sind aber in den ICs bereits drin. Ein RC-Glied kann O.K. sein, allerdings nur auf der Empfängerseite und abhängig von der Schaltfrequenz. Bei 20kHz kann die Zeitkonstante auch gerne Faktor 10 größer sein. Mit Masse verdrillte Leitungen sind auch nützlich.
:
Bearbeitet durch User
Nachtrag: Funktioniert das problemlos mit sehr kurzen Leitungen? Es könnte auch ein SW-Problem sein ...
Klaus H. schrieb: > Mit Masse verdrillte Leitungen sind auch nützlich. Aber bei Flachbandkabel eher schwierig machbar ;-) Ist dort aber nicht zwingend, schon gar nicht bei 30cm Leitung. Bestenfalls kann man die Masse direkt neben ein kritisches Signal legen, um die induktive Einkoppelfläche zu minimieren.
Falk B. schrieb: > Aber bei Flachbandkabel eher schwierig machbar ;-) Gibt es fertig zu kaufen: https://de.rs-online.com/web/p/flachbandkabel/1264924
Falk B. schrieb: > Aber bei Flachbandkabel eher schwierig machbar ;-) Ja, da hast du natürlich recht. Dafür kann man aber auch mehrere Adern (was meist kein Fehler ist) sinnvoll angeordnet mit Masse belegen. Das wirkt so ähnlich ...
Peter D. schrieb: >> Aber bei Flachbandkabel eher schwierig machbar ;-) > > Gibt es fertig zu kaufen: > https://de.rs-online.com/web/p/flachbandkabel/1264924 Was es nicht alles gibt! Aber mit 10Euro/m nicht so ganz massentauglich. Der OP und die meisten Leute mit Problemen mit Flachbandkabeln brauchen das nicht.
Vielen Dank für Eure Antworten! Bezüglich der Fehlerhäufigkeit: Grundsätzlich passieren die Fehler in relativ großen Zeitabständen - ca 1x pro Monat. Interessanterweise erhöht sich die Häufigkeit leicht in der kalten Jahreszeit. Meine Vermutung war daher eine Ursache in Richtung ESD Entladungen, da die Luft in den beheizten Räumen im Winter auf jeden Fall trockener ist als im Sommer was Aufladungen begünstigen würde. Bzgl. Softwarefehler: Ist natürlich definitiv auch nicht auszuschließen. Ich werde auch hierzu weitere Überlegungen anstellen, jedoch wäre es mir auch sehr wichtig, auch potentielle Schwachstellen in der Hardware zu identifizieren bzw. zu beheben.
Klaus H. schrieb: > Es könnte auch ein SW-Problem sein ... In 99,9% der Fälle ist es so, dass der Programmierer 1. externe Signale nicht entprellt und deshalb kurze EMV-Störimpulse unerwartete(!) Ereignisse auslösen und zudem 2. einen Eingang im Hauptschleifendurchlauf mehrfach einliest und deshalb "der obere Teil" des Programms einen anderen Eingangswert einliest und etwas anderes macht als "der untere Teil". > z.B hat sich beim Controller schon mehrmals der ADC aufgehängt Das ist sehr sehr seltsam, weil der Zustandsautomat eines ADC im µC eigentlich immer "fertig wird". Bestenfalls eine extrem schlecht geblockte Versorgung bringt den Automaten aus dem Tritt. Kann es sein, dass du den ADC einfach nur falsch bedienst? > Meine Vermutung ist Messen ist besser als vermuten. Kannst du die Vermutung "die Hardware ist störempfindlich" messtechnisch belastbar unterlegen? > Geschwindigkeit der digitalen Signale liegt im Bereich von ca. 20 kHz. Interessant für die EMV ist im Grunde nur die Flankensteilheit. Klaus H. schrieb: > Serienwiderstände sind selten falsch. Siehe die Bilder im Beitrag "Re: Signalproblem bei langem Kabel"
:
Bearbeitet durch Moderator
Klaus H. schrieb: > Serienwiderstände sind selten falsch. Wie willst du die Ausgänge sonst schützen?
Lothar M. schrieb: >> Meine Vermutung ist > Messen ist besser als vermuten. Kannst du die Vermutung "die Hardware > ist störempfindlich" messtechnisch belastbar unterlegen? Der Grund für meine Frage war, dass ich mir dachte, dass es nicht optimal ist, wenn Signale vom Mikrocontroller ohne irgendwelche Schutzbeschaltung von der Platine über ein 30cm Kabel zu einer anderen Platine geführt werden. Lothar, du hast ja auf deiner Seite auch beispielsweise sehr gut erklärt wie Abblockkondensatoren zur Entkopplung mit entsprechendem Layout eingesetzt werden sollten. Mir ging es darum, ob es Konventionen gibt, wie man I/Os so wie ich Sie beschrieben habe, entsprechend beschaltet um grundsätzlich gut hinsichtlich Störfestigkeit aufgestellt zu sein. Etwas salopp formuliert: Einen Abblockkondensator setze ich ja auch nicht nur dann ein, wenn ich in der konkreten Situation eine Störung herausmessen konnte, sondern weil es eine grundsätzliche sinnvolle Maßnahme zur Erhöhung der Störfestigkeit ist.
Vielleicht noch ergänzt: Wie gesagt schließe ich auch einen Softwarefehler in dem von mir beschriebenen Fehlerfall nicht aus. Sowohl Firmware als auch Elektronik an dieser Stelle wurden von einem meiner Vorgänger entwickelt, und man muss halt mal anfangen alles mögliche zu hinterfragen, um etwas optimieren zu können..
ESD sollte ohnehin immer berücksichtigt sein - ob das aber zu einer grundsätzlichen digitalen Fehlfunktion führt, würde ich bezweifeln. Es gibt aber Wandler, die einen overflow code als pattern senden, wenn sie in Sättigung gehen. Wenn das nicht implementiert ist, könnte die SW gfs stoppen.
Markus L. schrieb: > Einen Abblockkondensator setze ich ja auch nicht nur dann ein, wenn ich > in der konkreten Situation eine Störung herausmessen konnte, sondern > weil es eine grundsätzliche sinnvolle Maßnahme zur Erhöhung der > Störfestigkeit ist. Nicht mal vorrangig das, sondern weil er für die Funktion des damit gepufferten Bausteins nötig ist. Deshalb gilt bei fremden Designs mein erster Blick erst mal dieser Abblockung, und dann der Masseführung allgemein. Aber genau solche Effekte kann man messen. Wie im Link gezeigt. Man sieht evtl. nicht den eigentlichen Fehlerfall, aber man sieht, ob das Design inherent robust ist. Messen musst du übrigens nicht irgendwo auf der Signalleitung mit irgendeiner Masse, sondern mit der Tastspitze am IC-Pin und einer Massefeder zum nächsten GND-Pin.
:
Bearbeitet durch Moderator
Störfestigkeit beginnt (oder endet ;)) bei der Firmware: Man kann Eingänge per Software entprellen oder geeignet auf unplausible Messwerte/Daten reagieren (wegschmeißen, neu sampeln, extrapolieren, ...). Oft wirkt - wenn man die Rechenzeit hat - ein Medianfilter, das deutlich robuster gegen einzelne Ausreißer als beispielsweise ein Mittelwertfilter ist, Wunder. Das geht dann bei der Architektur der Firmware weiter. Beispielsweise indem man Mechanismen implementiert, die - wenn alle Stricke reißen - einen Reset auslösen, um die Firmware wieder in einen definierten Zustand zu bringen. Auch sollte man - vor allem bei Firmware, die sehr lange läuft - ein Gefühl dafür haben was der Stack so treibt, um eine geeignete Stack-Größe zu definieren. Man kann hier auch das Layout des Speicherbereichs optimieren: Wenn der Stack beispielsweise in den Datenbereich des RAMs hinein wächst und dort Daten verfälscht, ist völlig undefiniert was die Firmware danach macht. Einen solchen Stackoverflow kann man aber erkennen und geeignet darauf regieren und/oder verhindern, indem man beispielsweise seinen RAM so organisiert, dass der Stack nicht in Richtung Datenbereich wächst, sondern in Richtung Ende des Speicherbreichs. Gelangt der Stack dann tatsächlich mal am Ende des Speicherbereichs an, kann man u. U. einfach mit einer eingebauten Hardware-Exception darauf regieren und muss sich nicht selber etwas basteln.
P. S. schrieb: > Störfestigkeit beginnt (oder endet ;)) bei der Firmware: > Man kann Eingänge per Software entprellen also wenn du erst mal richtige Störungen auf der Leitung hast, dann hilft oft SW auch nicht mehr. Alles, was man draußen abfangen kann, sollte man i.d.R. auch dort behandeln. Gerade solche Übersteuerungen und auch Frequenzen obehalb des Nutzbandes, weil man sonst hoch abtasten muss, was unnötig CPU-Leistung wegfrißt. Kürzlich hatte ich das Thema wieder bei seriellen Bussen: Wenn man es schafft, das Protokoll so zu bearbeiten / zu wählen, dass die Kommunikation in einem bestimmten Spektralbereich abläuft, ist es sehr einfach, allenmöglichen Kram mit Bandfiltern rauszuhalten, der zu Pegel-Verschiegungen führt und das Signal für den Eingang unlesbar macht.
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.