Forum: Analoge Elektronik und Schaltungstechnik Filter in Datenleitung?


von Dominik (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Ich habe einen Akku, mit desses BMS (BatterieManagementSystem) ich gerne 
über SMBus kommunizieren will (wer SMBus nicht kennt, ist quasi I2C mit 
leichten Änderungen in der Spezifikation). Diese Kommunikation schlägt 
fehl, sobalt ich den Motor aktiviere. Aber mal von vorne:

Meine Schaltung ist ein selbst entwickelter Motorcontroller, der direkt 
vom Akku mit 58V max, 40A max versorgt wird. Der Akku hat 2 Grounds: 
einen BMS_GND vom BMS und einen Leistungsground (AkkuGND). Zwischen 
diesen hängt laut Hersteller ein Shunt mit 1mOhm.
Die Spannungsversorgung vom Motorcontroller wird aus den 58V erzeugt.

Nun zu meinem Problem: Ist die Leistungsstufe nicht aktiv, funktioniert 
die Kommunikation zum Akku noch super. Wird diese aktiv, sind so viele 
Störungen auf den SMB-Leitungen dass keine Kommunikation mehr möglich 
ist.

Zu den 2 verschiedenen Grounds: Auf meiner Platine habe ich natürlich 
auch 2 verschiedene Grounds: einen PowerGND(Leistungsteil) und einen 
DigitalGND(Prozessor und Peripherie sowie Encoder). Diese beiden sind an 
1 Punkt auf der Platine miteinander verbunden.
Nach meinem Verständis nach darf ich an meiner Platine den BMS_GND 
NICHT(!) anhängen, weil ich ja sonst einen GND-Schleife erzeugen würde 
und der Leistungsstrom nicht nur über PowerGND zu AkkuGND, sonder auch 
über den Pfad PowerGND-DigitalGND-BMS_GND am Shunt vorbei zum Akku 
zurückfließen könnte.

Welche Möglichkeiten habe ich, um den I2C mit weniger Störungen zu 
betreiben?
Meine Ideen waren bis jetzt:

1) Der zu befürchtende DC-Spannungsversatz ist ja nur sehr gering. Darum 
hatte ich die Idee, mittels einem Filter (siehe Anhang) die  hohen 
Störfrequenzen rauszufiltern und den SMBus mit nur 20Khz zu betreiben. 
Aber irgendwie geht sich das mit den Schaltschwellen und Anstiegszeiten 
laut SMB-Spezifikation grad nicht aus.

2) Den SMB_GND beinhart auf den DigitalGND hängen (ev. mit Widerstand, 
dass sich der Strom in Grenzen hält)?
Hab ich mal mit Bauchweh bei wenig Last probiert, und die Kommunikation 
hat darauf funktioniert. Gut ist mir aber (wegen GND-Schleife und nicht 
definiertem Return-Pfad) nicht dabei.

3) Galvanischer Transciever
So wie ich es verstanden habe eher umständlich, weil man für den Pullup 
auf der galvanisch getrennten Seite wieder eine extra 
Spannungsversorgung auf SMB_GND bezogen braucht. Kommt mir sehr viel 
Aufwand vor für eine 20kHz Datenleitung.

4) DEINE Idee/KnowHow!
Ich bin ja sicher nicht der erste, der so ein Problem hat und ich bin 
mir sicher, dass es dafür elegante Lösungen gibt. Freu mich schon, was 
neues zu lernen!

LG Dominik

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wenn du wirklich den POWER_GND zur Speisung des MC benutzen musst 
(warum?), dann hilft dir wohl am besten ein galvanisch getrennter DC/DC 
Wandler, der aus den 58V die Speisung für den MC produziert. Dann ist es 
kein Problem, BMS_GND als Signalbezug für die SMBus Kommunikation zu 
benutzen.
Aber ich würde vermutlich POWER_GND ausschliesslich für den 
Leistungskreis reservieren und BMS_GND als GND des MC zu nehmen.

von Guest (Gast)


Lesenswert?

Das klingt für mich nach massiven EMV Problemen durch falsches Design 
des Leistungsteils. Hast du die Leistungsstufe EVM gerecht designed? Ich 
meine jetzt nicht nur getrennte GND sondern auch möglichst wenig 
Kapazitive und Induktive Kopplung an stellen mit hohem dU/dt und dI/dt 
etc.

Was ist mit Versorgungsfiltern Pi- oder T-Filter?

Ansonsten ist I2C bzw. SMBus nicht grade die ideale Schnittstelle für 
störbehaftete Umgebung und je nach Leitungslänge macht es das auch nicht 
besser. Bei sowas würde ich persönlich eher auf was robustes wie CAN 
gehen das differentiell überträgt. Vermutlich steht dir sowas am BMS 
nicht zur Verfügung aber eine SMB CAN Brücke ist ja jetzt nicht so 
aufwendig.

von Dieter (Gast)


Lesenswert?

Mache bitte eine Skizze mit allen Leitungen zwischen den Teilen.

von K. S. (the_yrr)


Lesenswert?

Dominik schrieb:
> hatte ich die Idee, mittels einem Filter
Dieser "Filter" hat eine cut-off frequenz von ca. 600Hz bzw. 1.5kHz 
(vereinfacht 2.6k + 100nF bzw. 1k + 100nF), das kann nicht 
funktionieren. falls der Pullup nicht einige 10k oder größer ist, 
erreichst du auch keine gültigen low Pegel, nicht mal bei den maximal 
möglichen 100Hz Datenrate. bei z.b. 4k7 Pullup ist dein neuer "low" 
pegel nur noch >0.4VCC, das ist in keiner Spezifikation gültig.

Dominik schrieb:
> Meine Schaltung ist ein selbst entwickelter Motorcontroller, der direkt
> vom Akku mit 58V max, 40A max versorgt wird. Der Akku hat 2 Grounds:
> einen BMS_GND vom BMS und einen Leistungsground (AkkuGND). Zwischen
> diesen hängt laut Hersteller ein Shunt mit 1mOhm.

1mOhm * 40A = 40mV maximaler GND Verschub, da sollte es für IIC bei 3V3? 
5V? relativ egal sein auf welchen GND du dich beziehst.

was passiert wenn du den BMS GND/ SMBus GND einfach garnicht anschließt, 
immerhin hast du nur maximal 40mV Potentialveschub, da springt noch 
nichtmal eine Schutzdiode an. Wenn das Signal nicht völlig gestört ist, 
sind die Pegel auch um 40mV verschoben noch gültig. Einziger Nachteil 
ist, dass die paar µA bis mA vom Bus auch durch den Shunt fließen (wenn 
du den Bus auf Low ziehst, wenn der Akku es machst fließt der am Shunt 
vorbei), aber das wirst du wohl verkraften können, da der ganze Strom 
vom µC durch den Shunt geht.

Wenn du ganz vorsichtig sein willst zum Testen einige 100 Ohm (<< als 
der Pullup) in die Datenleitung plus extra Schutzdioden nach VCC und 
GND, das sollte aber völlig unnötig sein.

Dominik schrieb:
> Nach meinem Verständis nach darf ich an meiner Platine den BMS_GND
> NICHT(!) anhängen
Das passt so.

Dominik schrieb:
> Wird diese aktiv, sind so viele
> Störungen auf den SMB-Leitungen dass keine Kommunikation mehr möglich
> ist.
kling mehr nach eingekoppelter Störung. Außer dein Filter ist drin, dann 
kannst du die Leitung auch gleich durchknipsen.

Matthias S. schrieb:
> Wenn du wirklich den POWER_GND zur Speisung des MC benutzen musst
> (warum?)
Dann wäre noch diese Frage zu klären. Und weiterhin, passt die Spannung 
vom Akku SMBus und deinem Controller zusammen? was für ein Pullup ist 
dort verbaut?

: Bearbeitet durch User
von Dominik (Gast)


Angehängte Dateien:

Lesenswert?

Matthias S. schrieb:
> Wenn du wirklich den POWER_GND zur Speisung des MC benutzen musst
> (warum?),

Mein Gedankengang war folgender: Wenn ich SMB_GND zur Versorgung des MC 
verwende, kann ich DigitalGND und PowerGND auf der Platine nicht 
zusammenhängen, sonst habe ich eine Groundschschleife.
DigitalGND und PowerGND nicht auf der Platine zusammenhänge, gibts ein 
Problem am Gatetreiber. Der hat nur 1 GND, und jede Spannungsdifferenz 
zwischen den GNDs würde sich aus Sicht des Gatetreibers auf dem 
PWM-Signal (das ja auf MC-DigitalGND bezogen ist) wieder finden. Da 
fürcht ich mich ehlichgesagt vor einem Shoot-Through. Dabei sei noch 
erwähnt, dass die Leistungselektronik 130A schafft (Versorgungsbedingt 
nur bei kleinen Drehzahlen).
Auch die Idee mit den galvanisch getrennter Versorgung für den  MC geht 
imho nur bei speziellen Gate-Treibern.


Guest schrieb:
> Das klingt für mich nach massiven EMV Problemen durch falsches Design
> des Leistungsteils. Hast du die Leistungsstufe EVM gerecht designed? Ich
> meine jetzt nicht nur getrennte GND sondern auch möglichst wenig
> Kapazitive und Induktive Kopplung an stellen mit hohem dU/dt und dI/dt
> etc.

Ja, da hast du wsl. Recht. Hast du eine gute Literaturempfehlung für EMV 
Design(generell / speziell auf diesen Anwendungsfall)?

Guest schrieb:
> Was ist mit Versorgungsfiltern Pi- oder T-Filter?

Ich nehme an, du sprichst von Filtern in der Leitung zwischen Akku und 
Leistungsteil.
Die werde ich sehr wahrscheinlich einbauen müssen, aber macht das mein 
Problem wirklich besser? Wenn ich die Schaltung nur mit AkkuGND 
versorge, macht ein Filter in der Versorung einen 
Spannungsabfall(hochfrequent) zwischen Power/DigitalGND auf der Platine 
und AkkuGnd (und somit auf SMB_GND) am Akku. Die Spannung, die am Filter 
abällt sehe ich dann 1:1 auf der Datenleitung bezogen auf DigitalGND 
wieder.
Deso mehr Input ich bekomme, desto mehr sehe ich mich in einer 
Zwickmühle: Eigentlich müsste ich die Schaltung mit SMB_GND und AkkuGND 
getrennt versorgen. Das geht aber nur, wenn ich andere Gate-Treiber 
verwende.

Guest schrieb:
> Vermutlich steht dir sowas am BMS nicht zur Verfügung

so is es.

K. S. schrieb:
> Dieser "Filter" hat eine cut-off frequenz von ca. 600Hz bzw. 1.5kHz
> (vereinfacht 2.6k + 100nF bzw. 1k + 100nF), das kann nicht
> funktionieren. falls der Pullup nicht einige 10k oder größer ist,
> erreichst du auch keine gültigen low Pegel, nicht mal bei den maximal
> möglichen 100Hz Datenrate. bei z.b. 4k7 Pullup ist dein neuer "low"
> pegel nur noch >0.4VCC, das ist in keiner Spezifikation gültig.

Oje, das ist das falsche Bild mitgegangen. Statt den 100n sollte ein 
220p hin, und der GND wo 220p steht sollte GND2 heißen. sorry.
Damit wär die Grenzfrequenz bei ca. 230kHz (laut LTspice).
Die von dir beschriebenen Probleme sind natürlich trotzem richtig. Der 
Pegel laut Spezifikation ist zwar 0.8V (bei SMB fix und nicht proportial 
zu VCC), aber high-ziehen des Bus geht durch den Pullup  viel zu 
langsam.

K. S. schrieb:
> Dominik schrieb:
>> Wird diese aktiv, sind so viele
>> Störungen auf den SMB-Leitungen dass keine Kommunikation mehr möglich
>> ist.
> kling mehr nach eingekoppelter Störung. Außer dein Filter ist drin, dann
> kannst du die Leitung auch gleich durchknipsen.

Nein, schon ohne meinen Filter... Wie dein Vorschreiber auch schon 
angemerkt hat, hab ich sicher ein EMV Problem. Wie gesagt, für Resourcen 
für EMV design von Leistungsendstufen wäre ich sehr dankbar.

K. S. schrieb:
> was passiert wenn du den BMS GND/ SMBus GND einfach garnicht anschließt,
> immerhin hast du nur maximal 40mV Potentialveschub,

Genau so ist es jezt gerade.

Dieter schrieb:
> Mache bitte eine Skizze mit allen Leitungen zwischen den Teilen.
sry für die Qualität, hat schnell gehen müssen :)

Danke für eure Hilfe!

von Dieter (Gast)


Lesenswert?

Da gibt es sicherlich auch noch eine Pluspolleitung, die hier fehlt. Die 
Interne Verbindung beim unteren Block, die ist wohl unbekannt.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Dominik schrieb:
> Auch die Idee mit den galvanisch getrennter Versorgung für den  MC geht
> imho nur bei speziellen Gate-Treibern.

Die Gatetreiber müssen nicht speziell sein. Um alle Probleme mit 
Erdschlüssen zu umgehen, betreibe ich die Endstufen meines Umrichters 
über Optokoppler:
https://www.mikrocontroller.net/articles/3-Phasen_Frequenzumrichter_mit_AVR

Bei Netzverbindung ist das ja nur logisch. Aber es würde deine Probleme 
genauso lösen.

von Guest (Gast)


Angehängte Dateien:

Lesenswert?

Bist du dir sicher das dein GND verrauscht ist? Hast du das mal 
gemessen? Ich würde eher vermuten das deine Versorgungsspannung stark 
gestört ist und der µC und alles was damit zusammenhängt das nicht so 
schön finden. In der Regel hat man durch die hohen Pulsströme und 
Spannungsflanken an der Endstufe Spikes auf der Versorgung der GND 
bekommt davon nicht allzu viel mit wenn man nicht grade eine riesige 
kapazitive Koppelung hat.

Ich habe leider grade keine passende Literatur parat, nur was ich so an 
Erfahrung weitergeben kann. Zumindest was mir jetzt spontan so einfällt 
um die Uhrzeit.

Ich sehe jetzt nicht ganz das Problem bei einer Masse Verschiebung von 
40mV, selbst wenn es 100mV sind sollte das den Gate Treiber wenig 
interessieren. Ich würde für den Steuerungsteil den normalen Power GND 
nehmen das sollte, wenn du dir wie gesagt nicht super viel kapazitiv 
einkoppelst kein Problem sein. Du kannst die GNDs mit einem Ferrit 
verbinden, wenn du dich dann wohler fühlst ;)

Die größte Spannungsänderung und damit Störquelle hast du an den PWM 
Signalen vom Gate Treiber zu den FETs/IGBTs, da hier hohe Ströme zum 
Umladen der Gates fließen und sich die Gate Spannung dementsprechend 
schnell ändert. Zudem natürlich auch an den Ausgängen der Motorphasen da 
dort die Spannung mit steilen Flanken geschaltet wird. Du solltest es 
vermeiden dort Masse Flächen zu haben in die sich Störungen einkoppeln 
können.

Decoupling ist ebenso wichtig. Du solltest auf der Versorgungsschiene zu 
den einzelnen Halbbrücken entsprechend dimensionierte Kondensatoren mit 
niedrigem ESR (Poymer / Kerko) haben. Am besten nah an den Brücken und 
auch am Anschluss mit möglichst kleiner Loop-area. Die Versorgung für 
deinen µC solltest du mit einem PI-Filter filtern, als Richtwert würde 
ich mal 40db Dämpfung bei deiner Schaltfrequenz anpeilen mehr tut 
natürlich auch nicht weh. Da der Teil wohl kaum Strom braucht bekommt 
man das aber recht einfach hin.

Ich habe mal ein Schema angehängt wie man sowas grob platzieren könnte, 
kommt natürlich auch drauf an wie das FET aussieht und ob man Bus Bars 
oder Traces hat, aber ich denke es wird einigermaßen klar was ich meine. 
Ich entschuldige mich schonmal für meine Schrift :D. Es gibt da ca. 1000 
Sachen auf die man aufpassen kann/muss. Und um die Uhrzeit denk ich 
bestimmt nicht an alles ;). Vielleicht hat ja sonst wer noch Anmerkungen 
oder besser Vorschläge.

von Dominik L. (dominik_123)


Lesenswert?

Hallo Guest,

danke für deine ausfühliche Hilfe. Macht voll Sinn, werd das mal so 
umsetzen.

Es scheint, als hättest du Erfahrung mit dem Thema. Hättest du Lust, mit 
mir einmal genauer mein Design durchzugehen? Kann auch gerne entgeltlich 
sein.

Hab mich jetzt angemeldet, schreib mir einfach bei Interesse!

lg Dominik

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.