Forum: Mikrocontroller und Digitale Elektronik Störungen auf i2c


von Michael R. (Firma: Brainit GmbH) (fisa)


Angehängte Dateien:

Lesenswert?

Hallo allerseits,

mein kleiner PeltierController ärgert mich: ich krieg Störungen auf dem 
i2c-bus, hauptsächlich am Display (DOG M204) die sind aber unkritisch 
(beim nächsten Display-Update wird das eh wieder geradegezogen) aber 
auch beim auslesen der Meßwerte eines Temperatur- und Feuchtesensors. 
Das ist schon eher lästig, weil die Meßwerte als Eingangsgröße für den 
Regelkreis dienen. Die Fehler werden zwar ausgeglättet, aber trotzdem...

Ich vermute dass die Störungen durch die PWM an den MOSFETS verursacht 
werden, hier werden doch pro Kanal bis zu 5A geschaltet; und dass ich 
mir die über die lange Sensor-Leitung des Temperatursensors einfange.

Auf der 12V-Versorgungsseite habe ich schon so 200mV Ripple, die 
5V-Seite ist aber sauber, soweit ich mit dem Oszi feststellen konnte. 
I2c ist etwas schwer zu beobachten, da die Störungen nur recht 
unregelmäßig auftreten (alle paar Minuten)

Normalerweise hätte ich gesagt, ich verringere einfach die Pullups des 
i2c, aber da macht mir das besch*ssene DOG-Display einen Strich durch 
die Rechnung: das verträgt keine kleineren Pullups, da das Ding nicht so 
viel Strom liefern kann. Bei 2k2 krieg ich schon keine vernünftige 
Kommunikation mehr hin, 3k3 ginge, ich hab jetzt mal 4k7 drinnen.

Sensor-leitung schirmen wäre noch eine Möglichkeit, hab ich noch nciht 
probiert.

Jemand eine gute Idee? Hab ich vielleicht auch in der Schaltung was arg 
verkackt?

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


Lesenswert?

Michael Reinelt schrieb:
> Hab ich vielleicht auch in der Schaltung was arg verkackt?
Oder im Layout?

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Lothar Miller schrieb:
> Michael Reinelt schrieb:
>> Hab ich vielleicht auch in der Schaltung was arg verkackt?
> Oder im Layout?

Das layout zeig ich euch erst, wenn ihr mir nicht schon bei der 
Schaltung einen Einlauf mit Sand verpasst ;-)

von Michael R. (Firma: Brainit GmbH) (fisa)


Angehängte Dateien:

Lesenswert?

Die Nicht-Antworten interpretiere ich jetzt mal als Nicht-Einlauf :-)

Dann also hier das Layout.

ich hab die Ground-Planes auf Top/Bottom ge-ripup-t damit man mehr 
erkennen kann...

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


Lesenswert?

Michael Reinelt schrieb:
> Ich vermute dass die Störungen durch die PWM an den MOSFETS verursacht
> werden
Mit welcher Frequenz fährst du diese PWM? Die 22uH sind schon ziemlich 
mickrig, oder du brauchst da für konstanten Strom eine recht ansehnlich 
hohe PWM-Frequenz im 200kHz Bereich...

Und irgendwie macht mich der Snubber über deinem Schalttransistor sehr 
stutzig. Willst du mit Gewalt die Schaltverluste nach oben treiben?

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Lothar Miller schrieb:
> Michael Reinelt schrieb:
>> Ich vermute dass die Störungen durch die PWM an den MOSFETS verursacht
>> werden
> Mit welcher Frequenz fährst du diese PWM? Die 22uH sind schon ziemlich
> mickrig, oder du brauchst da für konstanten Strom eine recht ansehnlich
> hohe PWM-Frequenz im 200kHz Bereich...

Ausgangsstrom ist auch nicht ultra-kritisch (hoffe ich) es ist halt nur 
so dass Peltier-Elemente keine reine PWM mögen. die 22uH hatte ich halt 
grad in meiner Wühlkiste.

PWM Frequenz = 16MHz / 256 = 62.5KhZ

> Und irgendwie macht mich der Snubber über deinem Schalttransistor sehr
> stutzig. Willst du mit Gewalt die Schaltverluste nach oben treiben?

Nein, aber ich will grobe HF-Störungen eliminieren. Ist das falsch?

Ich seh grad dass ich da die rausgemessenen Werte nicht eingetragen 
habe: sind 2R2 und 10n

Mich macht stutzig, dass dich das stutzig macht :-)

Ich glaubte (hier) gelernt zu haben, dass so ein Schalt-MOSFET aufgrund 
der Sperrschichtkapazität und diversen rumlungernden Induktivitäten 
gerne HF-Störungen erzeugt, und man diese mit einem RC-Glied bedämpfen 
sollte. Tatsächlich macht mir der Störungen mit 30 MHz, welche ich mit 
dem RC-Glied gut bedämpfen konnte.

Wenn du jetzt sagst das ist Käse, muss ich mein gelerntes wohl nochmal 
überprüfen...

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


Lesenswert?

Michael Reinelt schrieb:
> Ausgangsstrom ist auch nicht ultra-kritisch (hoffe ich) es ist halt nur
> so dass Peltier-Elemente keine reine PWM mögen. die 22uH hatte ich halt
> grad in meiner Wühlkiste.
Aber so eine halblebige PWM ist denen gerade gut genug? Dieser Ansatz 
scheint doch ein wenig kurios...

> Wenn du jetzt sagst das ist Käse, muss ich mein gelerntes wohl nochmal
> überprüfen...
Ich würde einfach vernünftig große Induktivitäten einbauen, dass der 
Strom möglichst konstant bleibt. Ein möglichst wenig zappelnder 
Strom ist dem Pelztier sicher am angenehmsten.

> Tatsächlich macht mir der Störungen mit 30 MHz,
Zu welchem Zeitpunkt?
> welche ich mit dem RC-Glied gut bedämpfen konnte.
Du hättest auch einfach den Gate-Widerstand hochohmiger machen können. 
Die 30MHz Überschwinger beim Umschalten kommen von dem ausgedehnten 
Layout. Der Angelsachse sagt zum Thema Leiterbahnen "Each mm has its 
nH". Und das Klingeln kommt von diesen parasitären Induktivitäten. Du 
hättest also besser gelernt, die Ursache zu bekämpfen als die Symptome. 
Das tust du nämlich mit dem RC-Glied...

von Mike (Gast)


Lesenswert?

Lothar Miller schrieb:
> Der Angelsachse sagt zum Thema Leiterbahnen "Each mm has its nH".
Haben sich die Angelsachsen jetzt doch zur Verwendung der Maßeinheit 
Meter bekehren lassen?

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


Lesenswert?

Mike schrieb:
> Lothar Miller schrieb:
>> Der Angelsachse sagt zum Thema Leiterbahnen "Each mm has its nH".
> Haben sich die Angelsachsen jetzt doch zur Verwendung der Maßeinheit
> Meter bekehren lassen?
Offenbar nur teilweise oder nur in diesem Fall. Denn der Spruch auf Zoll 
umgerechnet hieße ja:
"Each 5/127 inch has its nH"
Und das ist ja nun so richtig holprig...

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Lothar Miller schrieb:
> Aber so eine halblebige PWM ist denen gerade gut genug? Dieser Ansatz
> scheint doch ein wenig kurios...

Ich verstehe deinen Einwand grad nicht: in der Simulation bekomme ich da 
bei 50% Duty ca. 2.5A bei 300mA Ripple. Das ist für mich viel besser als 
"halblebig"

> Ich würde einfach vernünftig große Induktivitäten einbauen, dass der
> Strom möglichst konstant bleibt. Ein möglichst wenig zappelnder
> Strom ist dem Pelztier sicher am angenehmsten.
Die 300mA müssten ihm schon angenehm sein, oder?

>> Tatsächlich macht mir der Störungen mit 30 MHz,
> Zu welchem Zeitpunkt?
Beim Ausschalten.

> Du hättest auch einfach den Gate-Widerstand hochohmiger machen können.
Hmmm... ehrlich gesagt ist das meine erste Power-MOSFET-Schaltung. Dass 
man da was mit dem Gate-Widerstand machen kann, wusste ich nicht :-(
Anyway, ich hab den Platz für den Snubber vorgesehen, anschließend mit 
oszi "ausgeklingelt", Snubber-Werte berechnet und bestückt. Hat soweit 
funktioniert.

> Die 30MHz Überschwinger beim Umschalten kommen von dem ausgedehnten
> Layout. Der Angelsachse sagt zum Thema Leiterbahnen "Each mm has its
> nH". Und das Klingeln kommt von diesen parasitären Induktivitäten. Du
> hättest also besser gelernt, die Ursache zu bekämpfen als die Symptome.
> Das tust du nämlich mit dem RC-Glied...
Ich versuche eh mich hier weiterzuentwickeln (du hättest mal meine 
früheren Schaltungen sehen sollen...), und ich hab mir hier auch Mühe 
gegeben. Platz insgesamt, Bauteilgrößen, und vor allem meine mangelnde 
Erfahrung setzen dem halt ihre Grenzen.

Was hätte ich besser machen müssen?

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Ich würde mich wirklich sehr freuen wenn ich hier noch ein paar 
Rückmeldungen bekäme, nicht nur zum i2c-problem, auch zur Schaltung, zum 
Ausgangsstrom (Ripple oder nicht), und zum Layout. ich lerne sehr gerne 
aus meinen Fehlern, brauch dazu aber jemanden der sie mir aufzeigt.

Danke!

von Falk B. (falk)


Lesenswert?

@ Michael Reinelt (fisa)

>Ich vermute dass die Störungen durch die PWM an den MOSFETS verursacht
>werden, hier werden doch pro Kanal bis zu 5A geschaltet; und dass ich
>mir die über die lange Sensor-Leitung des Temperatursensors einfange.

Na dann miss doch mal mit inaktiver PWM.

>I2c ist etwas schwer zu beobachten, da die Störungen nur recht
>unregelmäßig auftreten (alle paar Minuten)

Das klint nicht unbedingt nach Problemen durch die PWM, dann wäre das 
öfter. Wie oft überträgst du Daten auf dem I2C?

>Normalerweise hätte ich gesagt, ich verringere einfach die Pullups des
>i2c, aber da macht mir das besch*ssene DOG-Display einen Strich durch
>die Rechnung: das verträgt keine kleineren Pullups, da das Ding nicht so
>viel Strom liefern kann. Bei 2k2 krieg ich schon keine vernünftige
>Kommunikation mehr hin, 3k3 ginge, ich hab jetzt mal 4k7 drinnen.

ISt OK, kleiner bringt nicht soo viel, wenn es wirklich ne HF-Störung 
ist.
Dann eher ein paar Cs dran, vielleicht 100pF.

>Jemand eine gute Idee? Hab ich vielleicht auch in der Schaltung was arg
>verkackt?

Das Layout sieht erstmal OK aus. Die Dimensionierung des LC-Filters ist 
etwas ungünstig, sollte aber dennoch gehen.

>Ich verstehe deinen Einwand grad nicht: in der Simulation bekomme ich da
>bei 50% Duty ca. 2.5A bei 300mA Ripple. Das ist für mich viel besser als
>"halblebig"

Ach so, du meinst durch das Peltier? Ich komme auf 27mApp?

Die Snubber kannst du weglassen.

von Falk B. (falk)


Lesenswert?

Trotzdem ist die Dimensionierung des LC-Filters der Schaltregler sehr 
ungünstig. ~2,5App Ripplestrom in der Drossel bei 2,5A Ausgangsstrom 
will man nicht wirklich. Eher so 1A. Also mehr L, eher so 47uH. Oder 
eine höhere PWM-Frequenz. Vielleicht sättigen dadurch deine Drosslen?

: Bearbeitet durch User
von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Vielen Dank, Falk!

Da ich heute seit 3 Uhr früh auf den beinen bin, werd ich morgen näher 
drauf eingehen. mir sind da grad noch ein paar ideen gekommen...

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Falk Brunner schrieb:

> Na dann miss doch mal mit inaktiver PWM.
Wenn beide PWMs inaktiv sind (oder eine von beiden voll aufgedreht) dann 
konnte ich bisher noch keine Störungen feststellen.

Wenn ein Kanal halb offen ist (also irgendwas > 0 und < 255) dann kommt 
es zu Störungen am Display, wo genau die Grenzen liegen ab wann die 
Störungen kommen und wo sie wieder verschwinden, müsste ich 
rumprobieren. In diesem Fall konnte ich aber noch keine falsche 
Temperaturmessung feststellen. Die tritt erst auf, wenn beide kanäle 
aktiv sind.

>>I2c ist etwas schwer zu beobachten, da die Störungen nur recht
>>unregelmäßig auftreten (alle paar Minuten)
>
> Das klint nicht unbedingt nach Problemen durch die PWM, dann wäre das
> öfter. Wie oft überträgst du Daten auf dem I2C?

5 mal pro Sekunden werden Meßergebnisse vom i2c-Sensor gelesen, und das 
Display aktualisiert.

> Dann eher ein paar Cs dran, vielleicht 100pF.
Danke, werd ich mal probieren.

>>Jemand eine gute Idee? Hab ich vielleicht auch in der Schaltung was arg
>>verkackt?
>
> Das Layout sieht erstmal OK aus. Die Dimensionierung des LC-Filters ist
> etwas ungünstig, sollte aber dennoch gehen.
Danke!

> Die Snubber kannst du weglassen.
Ok. Stören tun sie aber nicht, oder? Weil ist ja schon bestückt...

Falk Brunner schrieb:
> Trotzdem ist die Dimensionierung des LC-Filters der Schaltregler sehr
> ungünstig. ~2,5App Ripplestrom in der Drossel bei 2,5A Ausgangsstrom
> will man nicht wirklich. Eher so 1A. Also mehr L, eher so 47uH. Oder
> eine höhere PWM-Frequenz. Vielleicht sättigen dadurch deine Drosslen?

Ok, guter Einwand. Ich muss mal suchen ob ich 47uH in der selben Bauform 
und mit passendem Strom finde. Müsste ich aber ohnehin bestellen :-( 
Höhere PWM-Frequenz geht schwer, Takftrequenz 16MHz des AVR / 256. ich 
könnte maximal den PWM-Bereich auf 0..128 limitieren (oder sogar 0..64, 
mal sehen)

Ob die Drosseln sättigen, werd ich mil Elm-CHans L-Power-Checker morgen 
rausmessen.

Zwei Ideen sind mir noch gekommen:

a) auch wenn das Layout nicht so schlecht aussieht, hier könnte doch 
noch ein Hund begraben liegen: da selber geätzt, ist nicht 
durchkontaktiert. Und nur bei Beuteilen wo ich dazukomme, von oben 
gelötet. z.B. haben alle Elkos auf Top keine Verbindung zur GndPlane. 
Genauso die Schraubklemmen (speziell die Versorgungsklemme). Da müsste 
ich noch ein paar Draht-Vias setzen....

b) Die PWM ist FastPWM mit Timer0 und OCR0A/B. Deswegen schalten beide 
PWM-Kanäle immer gleichzeitig ein. Es wäre sicher besser (oder zumindest 
einen Versuch wert) die PWMs gegeneinander zu verschieben. Im 
einfachsten Fall PWM2 zu invertieren, sodaß die Ein-Phase von PWM1 immer 
bei 0 beginnt, und die Ein-Phase von PWM2 bei 255 endet.

von Falk B. (falk)


Lesenswert?

@ Michael Reinelt (fisa)

>a) auch wenn das Layout nicht so schlecht aussieht, hier könnte doch
>noch ein Hund begraben liegen: da selber geätzt, ist nicht
>durchkontaktiert. Und nur bei Beuteilen wo ich dazukomme, von oben
>gelötet. z.B. haben alle Elkos auf Top keine Verbindung zur GndPlane.

AUA! So geht das natürlich NICHT!
Wenn man schon sowas selber ätzt, dann MUSS man es so machen, dass 
(fast) alle Bauteile von unten angelötet werden, speziell solche wie 
Elkos, Steckverbinder etc, wo man ganz sicher NICHT von oben rankommt.

>Genauso die Schraubklemmen (speziell die Versorgungsklemme). Da müsste
>ich noch ein paar Draht-Vias setzen....

Tu das!

>b) Die PWM ist FastPWM mit Timer0 und OCR0A/B. Deswegen schalten beide
>PWM-Kanäle immer gleichzeitig ein. Es wäre sicher besser (oder zumindest
>einen Versuch wert) die PWMs gegeneinander zu verschieben. Im
>einfachsten Fall PWM2 zu invertieren, sodaß die Ein-Phase von PWM1 immer
>bei 0 beginnt, und die Ein-Phase von PWM2 bei 255 endet.

Kann man probieren. Ein Zweiphasenwander für Arme ;-)

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Falk Brunner schrieb:
> AUA! So geht das natürlich NICHT!
> Wenn man schon sowas selber ätzt, dann MUSS man es so machen, dass
> (fast) alle Bauteile von unten angelötet werden, speziell solche wie
> Elkos, Steckverbinder etc, wo man ganz sicher NICHT von oben rankommt.

Das hab ich natürlich grundsätzlich eh beachtet. Es ist nur so dass die 
GndPlane auf Top nicht so effektiv ist wie geplant, weil sie eben nicht 
überall angeschlossen ist.

Das ist übrignes eine Lästigkeit von Eagle: Ein Pad ist immer 
automatisch ein Via, und lässt sich nur trickreich überreden, keins zu 
sein (händisch restrict-Kreis drüberlegen)

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


Angehängte Dateien:

Lesenswert?

Michael Reinelt schrieb:
> Es ist nur so dass die GndPlane auf Top nicht so effektiv ist wie
> geplant, weil sie eben nicht überall angeschlossen ist.
Packen wirs doch mal andersrum an: du hast einen Schaltregler gebaut. 
Der hat 3 Strompfade: Laden (gelb), Freilauf (rot) und Recovery 
(magenta). Und diese Stromkreise sollten 1. möglichst klein, 2. 
möglichst gleich und 3. keinem anderen Stromkreis "im Weg" sein. 3 und 2 
sehen bei deinem Layout nicht ganz schlecht aus, wenn auch die 
Massefläche auf der Oberseite helfen würde. Aber die räumliche 
ausdehnung ist doch ganz beachtlich. Allein schon das Drehen der Mosfets 
hätte hier ein paar cm gebracht.

Du siehst an dem Bild übrigens schon, dass du den Rippel möglichst 
gering halten musst, weil du sonst wunderbare Antennen raus zu deinen 
Pelztieren hast...

> Das ist übrignes eine Lästigkeit von Eagle: Ein Pad ist immer
> automatisch ein Via, und lässt sich nur trickreich überreden, keins zu
> sein (händisch restrict-Kreis drüberlegen)
Das ist bei allen Layoutprogrammen so und ist auch sinnvoll. Denn nur 
ein kleiner Bruchteil eines Promilles machen doppelseitige Leiterplatten 
nicht durchkontaktiert. Ich wäre sehr aufgebracht, wenn ich dem 
Layoutsystem erst noch sagen müsste, dass es Pads durchkontaktieren 
muss.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Falk Brunner schrieb:
> Vielleicht sättigen dadurch deine Drosslen?

Grad durchgemessen: Die sättigen bei 12A (dann aber ziemlich hart). Das 
sollte also nicht das Problem sein.

Frequenz werde ich auf 160kHz erhöhen, dann sollte ich lt. Simulation 
nur mehr ~0.8A Ripple in der Spule haben.

Kurze Frage dazu: Ich hab im LTspeice bisher die Kerkos (parallel zu den 
Elkos) immer weggelassen. Wenn ich die hinzufüge, welchen ESR setzt man 
dafür ca. an? Überhaupt einen?

Lothar, vielen Dank für deine Analyse. Ich seh schon, ich hab noch viel 
zu lernen. Mittlerweile hab ich die tolle Beschreibung auf deiner 
Homepage wieder gefunden. Recovery hatte ich total vergessen (reiner 
Zufall dass der so kurz ist) auf die übereinstimmende Stromrichtung erst 
gar nicht geachtet. Nächstes Mal wirds besser, versprochen. Und 
übernächstes mal noch besser. Und in ca. 15 Jahren hab ichs dann 
endgültig geschnallt.

Lothar Miller schrieb:
> Ich wäre sehr aufgebracht, wenn ich dem
> Layoutsystem erst noch sagen müsste, dass es Pads durchkontaktieren
> muss.

Klar, das will ich auch nicht. ich als einer der 0.01% hätte aber gerne 
eine Möglichkeit das aufzubringen. Wirklich lästig wird das beim 
Ratsnest-Test: Eagle sagt, es ist alles angeschlossen, nur ist es 
tatsächlich nicht so :-( (ist aber hier nicht der Fall)

ich glaub ich hab dafür aber jetzt endlich eine gute Lösung gefunden: Da 
meine bauteile eh alle in eigenen Bibliotheken liegen, kann ich bei den 
betroffenen 8von oben nciht zu lötenden) einfach direkt im Lib-Part 
einen tResist-Bereich pber das Pad legen...)

von Falk B. (falk)


Lesenswert?

@ Michael Reinelt (fisa)

>Grad durchgemessen: Die sättigen bei 12A (dann aber ziemlich hart). Das
>sollte also nicht das Problem sein.

Dann musst du auch nicht die PWM-Frequenz erhöhen.

>Kurze Frage dazu: Ich hab im LTspeice bisher die Kerkos (parallel zu den
>Elkos) immer weggelassen.

Für eine einfache Simulation reicht das auch.

> Wenn ich die hinzufüge, welchen ESR setzt man
>dafür ca. an? Überhaupt einen?

Ein paar mOhm.

>> Layoutsystem erst noch sagen müsste, dass es Pads durchkontaktieren
>> muss.

>Klar, das will ich auch nicht. ich als einer der 0.01% hätte aber gerne
>eine Möglichkeit das aufzubringen.

Irgendwann ist es einfach mal gut. ENTWEDER, ich beschaffe mir eine 
durchkontaktierte Platine und kann alle Vorzüge incl. Massefläche nutzen 
ODER ich beschränke mich auf Hobbyniveau und löte alles von unten bzw. 
mit Drehtbrücken.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Falk Brunner schrieb:
>>Grad durchgemessen: Die sättigen bei 12A (dann aber ziemlich hart). Das
>>sollte also nicht das Problem sein.
>
> Dann musst du auch nicht die PWM-Frequenz erhöhen.

Danke! Das ist gut! Weil die Erhöhung der PWM-Frequenz gestaltet sich 
leider nciht so einfach wie ich mir das in meiner naivität vorgestellt 
habe (Beitrag "AVR: FastPWM Frequenz erhöhen" )

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

And finally.... nach vier Draht-Vias an neuralgischen Stellen treten 
keine Störungen mehr auf! Dank an alle!

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.