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
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.
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.
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
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!
Da gibt es sicherlich auch noch eine Pluspolleitung, die hier fehlt. Die Interne Verbindung beim unteren Block, die ist wohl unbekannt.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.