PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Störsignal auf der Spannungsversorgung durch I2C Bus Takt



Ritchie
07.05.2012, 09:14
Hallo Zusammen,

ich habe ein nettes Störsignal auf meiner Versorgungsspannung, wenn die I2C Bus Kommunikation beginnt.

Kennt jemand diesen Effekt ?

Der Bus ist mit 2,7kOhm Widerständen abgeschlossen und es gibt nur eine 5V Versorgung für die entsprechende Kontroller.

Der Brumm der Versorgungsspannung liegt hier bei ca. 2mV und die Störimpulse durch den I2C Clock haben eine Spitzen bis zu 8mV.

Gruss R.

PICture
07.05.2012, 15:41
Hallo!

Ich bin kein Wissenschaftler und für mich, als Praktiker, ist es sehr "saubere" Versorgungspannung bei digitaler Schaltung, wenn sie keine echte Funktionstörungen verursacht. ;)

Dirk123
07.05.2012, 16:23
Ich denke mal, Du meinst 2,7k Pull-Up-Widerstand gegen 5V und nicht Abschlusswiderstand?
Du könntest den Umschaltstrom (von 0V auf 5V und umgekehrt) des I2C-Busses begrenzen mit 100R-Widerständen direkt an den I2C-Pins des Masters und des Slaves, und dazwischen den Pull-Up gegen 5V (nicht mitgezeichnet):

Master-SCL --- 100R ---------------------- 100R --- Slave-SCL
Master-SDA --- 100R ---------------------- 100R --- Slave-SDA

Ansonsten 100nF Kondensatoren zwischen VCC und GND der I2C-Busteilnehmer zur Pufferung der Versorgung.

Am besten wäre aber, wenn Du die Spannungsversorgung verbesserst: Niederohmiger machen durch dickere Zuleitungen (sowohl VCC als auch GND) und eine stärkere Spannungsquelle.

Das sollte das Gezuppel mindern.

Grüße,
Dirk

Ritchie
07.05.2012, 17:11
Hallo,

danke erstmal für den Tip mit der Verringerung des Leitungswiderstands und der Strombegrenzung auf dem I2C Bus. Das wird mein nächster Schritt sein. Die Kondensatoren habe ich eigentlich schon vorgesehen, werde das aber nochmals prüfen. Die Leitungen sind derzeit mit Flachbandkabel verlegt.
Auch werde ich die 100 Ohm Widerstände in die Leitungen zum Busmaster einfügen.

@Picture
Ich verwende einen ADXR620 zur Ermittlung der Winkelgeschwindigkeit. Das analoge Ausgangssignale zeigt genau das gleiche Rauschen im Signal, wie auf der Versorgungsspannung. Dies ist der Grund, warum ich die Störung beseitigen will. Normale digitale Signale sind von diesen Störungen nicht beeindruckt.


Könnte die beigefügte Schaltung auch Probleme verursachen. Ich verwende diese Schaltung, da mein Hauptrechner (Linux Taskit Board) seine eigene 5V Versorgung hat. Ebenso will ich eine Trennung bei Störungen haben, damit mir der Rechner bei einem Kurzschluss nicht mit abfackelt. Ein Kurzschluss auf dem I2C Bus hat mich schon mal den Austausch aller Busteilnehmer gekostet :-(

Viele Grüße

R.

PICture
07.05.2012, 17:49
Dein Schaltplan, der nur Verbindungen enthält, ist für mich unverständlich. Wenn du analoges Teil von für mich keinen "Störungen" befreien willst, aber sicher bist, dass es wirklich stört, würde ich zuerst das empfindliches analoges Teil mit sicher störungsfreier Stromversorgung (Akku, Batterie) testen. Falls es wirklich die Ursache wäre, erst dann würde ich eine Entstörung überlegen, weil ich das u.g. eben bezweifle, wenn ich nicht beide gleichzeitig am Oszi genug gross und mit Zeitlupe vergleichen kann. ;)


Das analoge Ausgangssignale zeigt genau das gleiche Rauschen im Signal, wie auf der Versorgungsspannung.

BMS
07.05.2012, 17:50
Hallo,
würde - wie von Dirk123 geschrieben - erst mal zu besser Pufferung/Abblockung der Komponenten raten.
Dem ADXR620 Sensor kannst du gerne auch noch einen LC-Tiefpass oder sogar CLC-(Pi)-Filter für die Versorgungsspannung spendieren.
Richtig dimensioniert sollte das die Störungen vom Sensor fernhalten ;)
Eventuell ist hier auch eine ungünstige Masseführung ein Problem (?). Abhilfe: Stichwort "sternförmige Masseführung".
Grüße, Bernhard

lorcan
07.05.2012, 18:10
Mal ehrlich, wir reden hier von Peeks die 6mV haben, bei 5V Versorgungsspannung. Das ist 1 Promill, da würde ich gar nichts machen, das ist vernachlässigbar!
Der Ripple der meisten Netzteile ist 20mV Peek-to-Peek größer!
Zu den 100nF an jedem IC würde ich aber trotzdem raten, nur lohnt es bei den Messwerten nicht, mehr Aufwand zu betreiben.
Wenn du z.B. LC-Filter oder solche Späße einbaust verschleifst du die Flanken. Und wenn du nicht weißt was du tust, versaust du dir damit den Bus.

BMS
07.05.2012, 18:48
@lorcan: Nur um Missverständnissen vorzubeugen: Die LC-Filter hätte ich für die Versorgungsspannung empfohlen, nicht für die I2C-Datenverbindung über SCL/SDA, da haben die natürlich nichts verloren ;)
6mV ripple können schon etwas ausmachen, abhängig vom Sensor (Stichwort PSRR) und von der Auflösung des nachfolgenden AD-Wandlers. Die Störungen sollten soweit reduziert werden, dass sie <= 1LSB werden. Bei einer Abtastung mit 10bit Auflösung wären die 6mV noch ok, bei höherer Auflösung macht sich das deutlicher bemerkbar. Der Threadersteller hat dazu aber noch keine Angaben gemacht ;)

Ritchie
07.05.2012, 22:43
Hallo Zusammen,

danke für die zahlreichen Antworten.

@Picture:
Die gezeigte Schaltung hat nichts mit meiner Analogdigitalwandlung zu tun. Sie zeigt nur eine Entkopplungsschaltung zu meinem Hauptrechner für den I2C Bus. Hier wird ein FET-als Treiber verwendet.

@BMS
Die Versorgungsspannung mit einer LC oder RC Schaltung zu versehen war eine weitere Idee eines Freundes. Dies kommt als nächste dran. Bei einer Auflösung von 10Bit, wäre die Spannung von ca. 4,88mV messbar. Die Spikes gehen teilweise bis auf 10-15mV hoch, was man leider nicht immer so schön im Bild festhalten kann. Da ein Analog-Digital-Wandler eine gewisse Wandelzeit benötigt, erfolgt auch hier eine Mittelwertbildung, welche die ganze Sache wieder ein wenig relativiert. Ist mir auch bekannt.
Die Masse sollte eigentlich ganz gut sein. Die 5V Versorgung zu dieser Platine geht über 2,5 2 mm, das sollte reichen. Eine zentrale Masse habe ich ebenfalls, da ich jetzt ein zentrales Netzteil verwende (komplett neu erstellt). Hier sind alle Spannungsregler und Spannungen vereint und alle Platinen werden über diese Platine versorgt. Auch wird keine Masse für den I2C Bus mitgelegt. da diese über die Spannungsversorgung gewährleistet ist. Zudem habe ich alle Kabelverbindung auf ein Minimum versucht zu reduzieren.

@Dirk
Der Eingabe der Widerstände hat erste Besserung gezeigt. Hier muss ich noch einen Mittelweg finden zwischen sauberem Signal und Stromstärke finden. 100 Ohm war schon mal ein guter Start. Meine Spannungsversorgung ist eigentlich mit ausreichendem Querschnitt versehen, soweit ich das sehen kann. Das Flachkabel war auf die I2C Busleitung zu sehen. Ein Missverständniss meiner Seite. Sonst wäre ein derartiger Grundbrumm nicht zu erreichen.


Ich werde als nächsts nochmals die Widerstände im I2C Bus prüfen und danach die Spannungsversorgung des ADXR620 über ein LC / RC Glied laufen lassen.

Gruss R.

Ritchie
09.05.2012, 09:19
Hallo Zusammen,

ich hatte gestern nochmals den Bus getestet und hierbei einen Strang als Ursache festgestellt.

Hier muss ich jetzt prüfen, wieso dieser Strange (I2C Bus im Stern aufgebaut) Probleme erzeugt.
Dies ist auch der längste Strang mit ca. 20 - 30 cm, da dieser die beiden (vorne/hinten) externen Distanzcontroller anspricht.

Gruss R.

Ritchie
09.05.2012, 21:08
Hallo Zusammen,

langsam wird es seltsam. Die Fehler mit dem einzeln Bus Strange war wohl ein Messfehler von meiner Seite. Er läßt sich nicht mehr wiederherstellen.

Aber:

Wenn ich das Hauptprogramm laufen lasse (Multi- Threaded I2C Bus Communication via semaphore) habe ich den obigen Effekt.

Verwende ich ein Testprogramm, mit welchen ich die Teilnehmer einzeln anspreche, habe ich keine Störimpulse. Die Spike auf dem Bus sind nicht vorhanden.

Meine Idee wäre,die Spike kommen durch:

- das Wechseln der Busteilnehmer auf dem Bus

oder

durch einen Programmfehler im Hauptprogramm, wo dann wohl trotz "Lock", zwei Threads gleichzeitig auf den Bus zugreifen.


Hier muss ich wohl ein weiteres Testprogramm schreiben. Kennt jemand diesen Effekt ?

Gruss R.