Forum: Mikrocontroller und Digitale Elektronik µC / I²C / Port Expander Potenziale entkoppeln


von Sebastian E. (sebert)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich nutze einen Port-Expander (MCP23018) an meinem ESP32, um die Anzahl 
der digitalen Ausgänge zu erhöhen. Der Port-Expander wird über I²C 
angesteuert und ich versorge ihn mit 3,3V. Das Masse-Potenzial ist mit 
dem vom ESP32 identisch.

Hinter dem Port-Expander nutze ich ein Darlington-Array (UDN2981A), um 
auch Lasten mit 100mA schalten zu können. Das Darlington-Array wird mit 
24V versorgt und liegt derzeit auf dem gleichen Masse-Potenzial wie der 
Port-Expander und der ESP32.


Kurz:

ESP32 >> I²C >> MCP23018 >> UDN2981A

Alles am gleichen Massen-Potenzial.

Um die Störanfalligkeit zu verringern würde ich die Lasten des 
Darlington-Array über eine separate Stromversorgung schalten (galvanisch 
getrennt über 2. Netzteil). Dazu müsste ich meiner Ansicht nach die 
Masse-Potenziale entkoppeln.

Jetzt sind mir folgende Lösungen eingefallen:

a) Zwischen Port-Expander-Ausgang und Darlington-Eingang Optokoppler 
setzen. Dann könnte ich die Masse vom Darlington-Array entkoppeln. 
Schlecht daran ist, dass ich 16 Ausgänge am Port-Expander habe. Das 
wären eine Menge Optokoppler und ein recht großer Bauraum, den ich 
bräuchte.

b) Schon vor dem Port-Expander das Potenzial vom I²C entkoppeln. Das 
dürfte mit Optokopplern problematisch ein, da es eine bidirektionale 
Verbindung ist und Optokoppler vermutlich zu langsam sind. In dem Thread 
hier wird der ADUM1250 erwähnt:
Beitrag "I2C-Bus über Optokoppler ansteuern - geht das?"

Nachteilig ist hier der relativ hohe Preis (derzeit über 10 Euro bei 
Reichelt). Fernerhin muss aber so der Port-Expander und das 
Darlington-Array nach wie vor an einer gemeinsamen Masse liegen, ich 
hätte hier lediglich den ESP32 sauber entkoppelt.

Ich bin kein Elektrotechniker und komme hier nicht so richtig weiter.

Gibt es so was wie Mosfet-Arrays, die ich statt des UDN2981A einsetzen 
könnte und die mein Entkopplungsproblem lösen? Oder habe ich da das 
gleiche Problem wie beim Darlington-Array?

Andere Lösungsmöglichkeiten?

Anbei zur Info auch mal der Schaltungsaufbau

von Carsten-Peter C. (carsten-p)


Lesenswert?

Hallo, eine Möglichkeit ist auf Seite 12 Fig. 12 beschrieben. 
https://www.reichelt.de/index.html?ACTION=7&LA=3&OPEN=0&INDEX=0&FILENAME=A200%2FDS_PCA9600.pdf
Ich würde die Trennung weiter Richtung Last setzen.
Gruß Carsten

von Sebastian E. (sebert)


Lesenswert?

Carsten-Peter C. schrieb:
> Hallo, eine Möglichkeit ist auf Seite 12 Fig. 12 beschrieben.

Das scheint dann den gleichen Effekt zu haben wie beim ADUM1250. Nur 
dass es vermutlich günstiger ist.

Carsten-Peter C. schrieb:
> Ich würde die Trennung weiter Richtung Last setzen.

Ja, das wäre definitiv besser. Denn mit der vorgeschlagenen Lösung von 
Dir hätte ich den MCP23018 und den UDN2981A immer noch auf derselben 
Masse liegen. Eine Trennung direkt vor dem UDN2981A wäre vermutlich am 
besten...

Gibt es dafür eine Lösung? Vielleicht Digitale Isolatoren? (leider recht 
teuer...)

von Peter D. (peda)


Lesenswert?

Ich nehme gern PhotoMOS, z.B. CPC1002N
Die können 60V/700mA und lassen sich mit 3,3V treiben.

https://www.mouser.de/ProductDetail/IXYS-Integrated-Circuits/CPC1002N?qs=h2iAtNzNjMSWxW51nm%252BAcA%3D%3D

von Carsten-Peter C. (carsten-p)


Lesenswert?

Hallo, vielleicht ist es eine Lösung, wie ich es bei meinem Dimmer 
gemacht habe.
Projekte & Code /4-fach Dimmer 2Stromstoßschalter Schaltuhr
Das ist aufwendiger, aber sehr störungssicher.
Gruß Carsten

von Max M. (Gast)


Lesenswert?

Sebastian E. schrieb:
> die Störanfalligkeit verringern
Must Du m.E. nicht.
Stabile Masse sollte reichen.

Sebastian E. schrieb:
> Potenzial vom I²C entkoppeln
SPI statt I2C.
Da kannst Du mit Optokopplern arbeiten.

von DerEgon (Gast)


Lesenswert?

Wie sieht es mit einem SPI-Portexpander aus? SPI lässt sich wesentlich 
einfacher galvanisch trennen als I²C.

von Wolfgang (Gast)


Lesenswert?

Sebastian E. schrieb:
> Um die Störanfalligkeit zu verringern würde ich die Lasten des
> Darlington-Array über eine separate Stromversorgung schalten (galvanisch
> getrennt über 2. Netzteil). Dazu müsste ich meiner Ansicht nach die
> Masse-Potenziale entkoppeln.

Hast du schon einmal darüber nachgedacht, einen geeigneten Aufbau zu 
wählen, so dass Schwankungen der Stromaufnahme nicht zu 
Potentialverschiebungen der Signale führen (Stichwort: Sternpunkt).

Gegen welche Störungen genau willst du schützen?
Normalerweise ist es günstiger, die Entstehung von Störungen direkt an 
der Quelle zu unterbinden.

von Sebastian E. (sebert)


Lesenswert?

Peter D. schrieb:
> Ich nehme gern PhotoMOS, z.B. CPC1002N
> Die können 60V/700mA und lassen sich mit 3,3V treiben.
>
> 
https://www.mouser.de/ProductDetail/IXYS-Integrated-Circuits/CPC1002N?qs=h2iAtNzNjMSWxW51nm%252BAcA%3D%3D

Im Prinzip eine gute Sache. Konnte allerdings keine Varianten finden, wo 
mehrere PhotoMOS in einem Gehäuse sind (oder maximal 2 davon).

Und ich habe weiterhin das Problem, dass ich den Port-Expander und das 
Darlington-Array nicht entkoppelt habe...

Max M. schrieb:
> Stabile Masse sollte reichen.

Was meinst Du mit "stabil"? Sternform statt Masseschleife?

DerEgon schrieb:
> Wie sieht es mit einem SPI-Portexpander aus?

Leider nur I²C möglich. Aber das Problem der Bidirektionalität lässt 
sich ja hier lösen. Das ist kein "Killer" für I²C.

Wolfgang schrieb:
> Gegen welche Störungen genau willst du schützen?

Ich schalte mehrere induktive Lasten (Schütze/Relais). Die sind alle mit 
Freilaufdioden abgesichert. Jeder Schütz zieht ca. 100mA (bei 24V).

Ich habe mehrere Netzteile im Einsatz, die von der Leistung her locker 
den 3-fachen Bedarf abdecken können. Das dürfte eine simple Maßnahme 
sein, um Schwankungen in der Spannung zu minimieren. Das sind Netzteile, 
die vermutlich ordentliche Elkos zur Stabilisierung drin haben.

Leider läuft über dieselbe Masse auch die Versorgung einer relativ 
empfindliche Messschaltung für Thermoelemente (MAX11410). Deshalb wollte 
ich hier alle möglichen Störquellen ausschalten und alles weitestgehend 
entkoppeln. (Thermoelemente selbst liegen natürlich nicht direkt auf der 
Masse...).

Max M. schrieb:
>> die Störanfalligkeit verringern
> Must Du m.E. nicht.

Kann ich mir den Aufwand wirklich sparen? Ich möchte nur nicht, dass ich 
ein Design wähle, das später nicht funktioniert. Gleich richtig machen 
ist sicherlich einfacher.

Habe ich also schätzungsweise überhaupt ein Problem oder bewerte ich das 
komplett über?

von Max M. (Gast)


Lesenswert?

Sebastian E. schrieb:
> bewerte ich das
> komplett über?

Keine Ahnung.
Was für ein Ereigniss könnte denn dazu führen das GND MCU von GND 
Portexpander unterschiedlich ist?
Denn deswegen willst Du ja trennen.

Sebastian E. schrieb:
> Max M. schrieb:
>> Stabile Masse sollte reichen.
> Was meinst Du mit "stabil"? Sternform statt Masseschleife?
Eine Form der Masseführung die sicherstellt das es keine 
Potentialunterschiede gibt die größer sind als der max. Spannungspegel 
um noch sicher Low zu Erkennen.

Was schaltest Du denn damit und wie weit sind MCU und Expander 
auseinander?

Sebastian E. schrieb:
> Leider läuft über dieselbe Masse auch die Versorgung einer relativ
> empfindliche Messschaltung für Thermoelemente
SPI Kram auf der Digitalseite ist unempfindlich.
Mehr als 10-12Bit ENOB bekommst Du eh nicht raus ohne einiges an 
Erfahrung.
Differentiel Messen.

von Sebastian E. (sebert)


Lesenswert?

Max M. schrieb:
> Eine Form der Masseführung die sicherstellt das es keine
> Potentialunterschiede gibt die größer sind als der max. Spannungspegel
> um noch sicher Low zu Erkennen.

Hatte noch nicht erwähnt, dass ich denselben GND auch dazu verwende, 
Analogsignale (0-10V) zu messen. Und das über einen ADC, mit dem ich 
single-ended, nicht differenziell messe. Auch deshalb ist es wichtig, 
dass ich eine stabile Masse habe

Max M. schrieb:
> Was schaltest Du denn damit und wie weit sind MCU und Expander
> auseinander?

Strecke zwischen Expander und µC ist denke ich recht unkritisch. Das 
mögliche Problem kommt hinter dem Darlington-Array. Dort schalte ich 
anschließend nämlich mehrere induktive Lasten (Relais mit Freilaufdiode) 
mit 100mA pro Relais. Also müsste ich meiner Ansicht nach das am besten 
das Darlington-Array entkoppeln. Damit ich den jedoch ansteuern kann, 
brauche ich zwischen Port Expander und Darlington-Array dasselbe 
Potenzial. Und es sind wie gesagt leider 16 Eingänge -- recht viel.

Würdest Du die Situation mit den Relais als unkritisch sehen? Notfalls 
muss ich es einfach ausprobieren, ob es stört oder nicht...

von Datenblattleser (Gast)


Angehängte Dateien:

Lesenswert?

Sebastian E. schrieb:
> Gibt es so was wie Mosfet-Arrays, die ich statt des UDN2981A einsetzen
> könnte und die mein Entkopplungsproblem lösen?

Gibt es, z.B. TBD62003A und TBD62004A, nützt hier aber nichts.

von Forist (Gast)


Lesenswert?

Carsten-Peter C. schrieb:
> Hallo, vielleicht ist es eine Lösung, wie ich es bei meinem Dimmer
> gemacht habe.
> Projekte & Code /4-fach Dimmer 2Stromstoßschalter Schaltuhr

Vielen Dank für den "Link"

von Forist (Gast)


Lesenswert?

Sebastian E. schrieb:
> Leider läuft über dieselbe Masse auch die Versorgung einer relativ
> empfindliche Messschaltung für Thermoelemente (MAX11410).

Üblicherweise trennt man dann Analog- und Digitalmasse.

Der MAX11410 hat nicht ohne Grund differentielle Eingänge.

von foobar (Gast)


Lesenswert?

Oh Mann, galvanische Trennung für die Ansteuerung von Relais - nur gut, 
dass keine Relais zur galvanischen Trennung vorgeschlagen hat ...

Halte im Layout die 5V- und 24V-GND schön getrennt (nicht nur 
elektrisch, auch räumlich), verbinde sie an einer Stelle und gut ist.

von Clemens L. (c_l)


Lesenswert?

Sebastian E. schrieb:
> Das sind Netzteile, die vermutlich ordentliche Elkos zur Stabilisierung
> drin haben.

Du solltest ordentliche Elkos so nah wie möglich bei den Relais haben.

> Alles am gleichen Massen-Potenzial.

N × 100 mA führt zu einem Spannungsabfall. Du solltest die Massen für 
Relais und den Rest als getrennte Potenziale betrachten und routen, auch 
wenn du sie am Netzteil zusammenführst. (Ebenso für empfindliche 
Analogsignale.)

von Sebastian E. (sebert)


Lesenswert?

Forist schrieb:
> Der MAX11410 hat nicht ohne Grund differentielle Eingänge.

Ich spreche nur von der Versorgungsspannung. Messungen werden natürlich 
differenziell an den Eingängen durchgeführt.

Clemens L. schrieb:
> Du solltest ordentliche Elkos so nah wie möglich bei den Relais haben.

Die Relais werden über das Darlington-Array geschaltet. Also müsste ich 
einen ordentlichen Elko direkt vor die Spannungsversorgung des 
Darlington-Arrays schalten. Die Relais sind dann relativ nahe am Array 
dran und der Weg ist kurz.

Clemens L. schrieb:
> N × 100 mA führt zu einem Spannungsabfall. Du solltest die Massen für
> Relais und den Rest als getrennte Potenziale betrachten und routen, auch
> wenn du sie am Netzteil zusammenführst.

Die Zuleitung auf der Platine habe ich mit 1mm Breite bei 35µm Dicke 
schon dicker ausgeführt. Führt bei fiktiven 1A über 300mm Strecke in der 
Zuleitung ungefähr zu einem Spannungsabfall von 0,15V, was hoffentlich 
OK ist (der Port-Expander läuft ohnehin über eine getrennte Zuleitung).

Masse führt dann von den Relais sternförmig direkt zum Netzteil (nicht 
über andere Bauteile).

Dann gibt es hoffentlich keine Probleme und ich spare mir erst mal den 
ganzen Aufwand mit galvanischer Trennung.

von Falk B. (falk)


Lesenswert?

Sebastian E. schrieb:
> Um die Störanfalligkeit zu verringern würde ich die Lasten des
> Darlington-Array über eine separate Stromversorgung schalten (galvanisch
> getrennt über 2. Netzteil).

Das ist Unsinn. Die allermeisten Schaltungen dieser Art brauchen keine 
galvanische Trennung.

von Falk B. (falk)


Lesenswert?

Sebastian E. schrieb:
> Hatte noch nicht erwähnt, dass ich denselben GND auch dazu verwende,
> Analogsignale (0-10V) zu messen. Und das über einen ADC, mit dem ich
> single-ended, nicht differenziell messe. Auch deshalb ist es wichtig,
> dass ich eine stabile Masse habe

Ja und? das schafft man auch ohne galvanische Trennung, Stichwort 
sternförmige Masseverdrahtung.

> Strecke zwischen Expander und µC ist denke ich recht unkritisch. Das
> mögliche Problem kommt hinter dem Darlington-Array. Dort schalte ich
> anschließend nämlich mehrere induktive Lasten (Relais mit Freilaufdiode)
> mit 100mA pro Relais.

Oh wie schrecklich!!! Das ist ja fast so anspruchsvoll wie Kernfusion!

> Also müsste ich meiner Ansicht nach das am besten
> das Darlington-Array entkoppeln.

Nö.

> Würdest Du die Situation mit den Relais als unkritisch sehen?

JA!

von Sebastian E. (sebert)


Lesenswert?

Falk B. schrieb:
>> Würdest Du die Situation mit den Relais als unkritisch sehen?
>
> JA!

Umso besser. Wenn's Probleme geben sollte, melde ich mich gerne wieder.

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.