Hallo, Ich hab leider ein Problem mit der Schaltung im Anhang. Das SDA Signal zeigt immer beim Low Pegel Störungen. SCL sieht aber Super aus. Hat Jemand eine Ahnung woran das liegen kann? Ich wäre für jede Hilfe dankbar.
Jeder IC hat einen eigenen Abblockkondensator (100nF), hab Ich auf die schnelle nur vergessen einzuzeichnen :-)
SDA ist bidirektional, und Du trennst die Senderichtungen nicht. Das musst Du machen, damit es funktioniert. SCL ist eigentlich auch bidirektional, aber das nutzen Deine Devices da gerade zufällig nicht. Schau her, wie es richtig gemacht wird: https://www.pololu.com/file/0J712/I2C_differential_extender_datasheet.pdf fchk
Ich dachte der PCA9600 wäre genau für diese Aufgabenstellung gemacht? Die Beiden CAN Transceiver sind ja nur dafür da die Signale differentiell zu übertragen. http://www.nxp.com/documents/application_note/AN10364.pdf
Sieht wie ein Laufzeit Problem aus. Er sendet seinen Zustand hin und her duch das Netzwerk. Hast du mal kleinere Pullups probiert?
grobe_Leberwurst schrieb: > Ich dachte der PCA9600 wäre genau für diese Aufgabenstellung gemacht? > Die Beiden CAN Transceiver sind ja nur dafür da die Signale > differentiell zu übertragen. > > http://www.nxp.com/documents/application_note/AN10364.pdf Ich traue dem Braten trotzdem nicht so richtig und würde es zunächst über RS422-Treiber probieren. Ich halte das für unkritischer. fchk
Nein das hab ich noch nicht ausprobiert, werde das Morgen mal testen. Aber vielleicht bringt auch ein pulldown Erfolg?
Ich hab Heute ein wenig experimentiert und denke nun das der ursprüngliche BUS das Problem ist (siehe Anhang). Gibt es eine einfache Möglichkeit die Störungen auf SDA zu minimieren?
grobe_Leberwurst schrieb: > Jeder IC hat einen eigenen Abblockkondensator (100nF), hab Ich auf die > schnelle nur vergessen einzuzeichnen :-) grobe_Leberwurst schrieb: > Gibt es eine einfache > Möglichkeit die Störungen auf SDA zu minimieren? Da geistern ganz üble Störungen in deinem System rum. Wie sieht deine Masserverteilung aus?
Der bestehende I2C Bus geht über eine Gesamtstrecke von rund 80m, es hängen momentan 6 Slaves auf der Strecke. Der BUS ist mit 2x2x0,8 Telefonkabel verdrahtet und versorgt die Slaves zugleich mit 24V Spannung. Der Schirm des Kabels liegt auf Masse.
Kannst Du nicht einfach einen I²C Master nahe zu der entfernten Stelle bringen der dort weitgehend autonom agiert und die 80m mit einem anderen Protokoll überbrücken? Ansonsten wenn es unbedingt I2C sein soll würd ich noch vorschlagen den I2C-Bus einfach nur niederohmiger zu machen, z.B. mit diesen I²C-Extendern die es erlauben auf der Übertragungsstrecke mit dem Pullup auf bis zu 200 Ohm runterzugehen und zusätzlich auch noch mit der Taktfrequenz etwas runterzugehen.
Die Slaves sind sind ziemlich gleich auf den 80m verteilt. Das Ganze funktioniert auch schon seit 4 Jahren absolut Problemlos. Nur soll jetzt ca. 50m entfernt noch ein Slave Installiert werden und da dachte ich mir das es nicht schlecht wäre den BUS dorthin über CAN zu Tunneln. Die Widerstände kann ich auch nicht verkleinern da schon 30mA fließen. Die Frequenz liegt momentan bei rund 74KHz, mit 10KHz bestehen die Probleme Weiterhin. Ein anderes Protokoll wäre zwar Prinzipiell möglich, es muss aber auch so irgendwie gehen :-)
grobe_Leberwurst schrieb: > Die > Widerstände kann ich auch nicht verkleinern da schon 30mA fließen. Ich sehe gerade auf Deinem Oszillogramm daß Die Leitung nie unter 0.5V runtergezogen wird, wahrscheinlich sind die Pullups schon zu klein :-( Der PCA9600 erkennt High schon ab ungefähr einem halben Volt (steht so im Datenblatt, IMHO schwachsinniges Design ganz ohne Grund so hart an der Grasnarbe zu fahren). Auf Deinem Bus sind mehr als ein halbes Volt selbst wenn die Devices oder der Master die Leitung runterziehen, deshalb erkennt er so of fälschlicherweise auf High. Das ist der Grund warum i²C so frustrierend sein kann. Evtl kannst Du das was der PCA9600 macht diskret nachbauen mit ein paar Transistoren, diesmal aber mit vernünftigen Schaltschwellen. Oder es gibt ähnliche Produkte von anderen Anbietern mit vernünftigen Schaltschwellen.
Ich hab jetzt schon mal ein wenig rumprobiert, aber es will noch nicht so ganz. Kennt jemand eine Möglichkeit den PCA9600 diskret aufzubauen?
Was passiert denn wenn Du den neuen Slave ganz normal an den Bus anschließt (ohne die Treiber und deren Probleme mit den Low-Pegeln) aber stattdessen dann mit der Frequenz weit genug runtergehst? Und: Hast Du noch ein paar Adern frei? Wenn ja dann schalte sie alle parallel und verwende sie für GND (auch auf der Strecke mit den anderen 6 Slaves). Du willst so wenig wie möglich Spannungsabfall auf der GND-Leitung haben, wenn irgendein Slave eine Leitung auf Low zieht soll der GND-Pegel dort nicht oder so wenig wie möglich nach oben gehen.
:
Bearbeitet durch User
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.