Forum: Mikrocontroller und Digitale Elektronik Digitale Ein/Ausgänge (3V3) schützen


von Markus L. (mlindb)


Lesenswert?

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

von Klaus H. (hildek)


Lesenswert?

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
von Klaus H. (hildek)


Lesenswert?

Nachtrag: Funktioniert das problemlos mit sehr kurzen Leitungen? Es 
könnte auch ein SW-Problem sein ...

von Steve van de Grens (roehrmond)


Lesenswert?

Kontrolliere, ob GND überall gleich GND ist.

von Falk B. (falk)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

Falk B. schrieb:
> Aber bei Flachbandkabel eher schwierig machbar ;-)

Gibt es fertig zu kaufen:
https://de.rs-online.com/web/p/flachbandkabel/1264924

von Steve van de Grens (roehrmond)


Angehängte Dateien:

Lesenswert?

Das wohl eines dieser "gehen sie bitte weg hier" Angebote.

von Klaus H. (hildek)


Lesenswert?

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 ...

von Falk B. (falk)


Lesenswert?

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.

von Markus L. (mlindb)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
von Rainer W. (rawi)


Lesenswert?

Klaus H. schrieb:
> Serienwiderstände sind selten falsch.

Wie willst du die Ausgänge sonst schützen?

von Markus L. (mlindb)


Lesenswert?

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.

von Markus L. (mlindb)


Lesenswert?

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..

von J. S. (engineer) Benutzerseite


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
von P. S. (namnyef)


Lesenswert?

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.

von J. S. (engineer) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.