-
-
Erfahrener Benutzer
Roboter Experte
In dem Oszibild sieht man ja kurze Spikes auf den SDA/SCL Leitungen. Der Abstand zwischen zwei direkt aufeinanderfolgenden Spikes liegt bei ca. 5 µs. Wenn das von dem PWM kommt, dann hätte man eine sehr hohe PWM-Frequenz (ca. 100 kHz bei 50% PWM-Tastverhältnis). Was ist denn die tatsächliche PWM-Frequenz?
Bei dem Oszi-Bild ist die genaue Amplitude nicht genau bestimmbar, da die Sample-Rate wohl zu niedrig ist und man immer nur einen Messpunkt irgendwo im Verlauf des Spikes hat. Es kann auch durchaus sein, dass die Spikes durchgängig mit 5 µs Abstand kommen und in dem Bild nur manchmal entsprechend der Abtastung sichtbar sind. Kannst du mal eine Messung mit höherer Sample-Rate machen (CH1: SDA, CH2: Ein Ausgang des Motortreibers)? Dann kann man besser sehen, ob die Spikes tatsächlich mit den PWM-Schaltvorgängen korrelieren.
Welchen Wert verwendest du eigentlich im Moment für die I2C-Pullups? Den Wert der Widerstände auf dem Motortreiber kannst du einfach durch Messung des Stroms zwischen SDA bzw. SCL und GND mit einem Multimeter bestimmen.
-
Neuer Benutzer
Öfters hier
Hallo,
Die Spikes sind Synchron zur PWM.
Die PWM-Frequenz liegt ca. bei 16kHz. Das mehrere Spikes aufeinander folgen kann unter anderem daran liegen, dass sie manchmal auch bei fallender Flanke der PWM sichtbar (und nicht nur bei der steigenden) sind. Zudem sind es ja 2 Motortreiber. Also sind 4 Spikes kurz nacheinander gut möglich.
Die Sipikes sind aber auch abgeschwächt in der 5V-Versorgung. Könnte es sein, dass die Masse verzogen ist? Mit nem speraten Netzteil für die Logik hab ichs aber auch schon probiert...
http://i52.tinypic.com/2uxwqhj.jpg
Das Bild ist ebenfalls zum Abstürzzeitpunkt.
Hier noch nen Bild mir der Flanke der PWM.
http://i51.tinypic.com/2d7ge3c.jpg
Der Pullup liegt gerade bei ca. 1k.
Gruß
Michael
-
Erfahrener Benutzer
Roboter Experte
Die Flanke in dem zweiten Bild hat eine Amplitude von ca. 2V. Das kann reichen, um den Logikpegel zu verändern. Versuch es doch mal mit einem Kondensator ( 100-200 pF ) zwichen SDA/SCL und GND an beiden Seiten der I2C-Leitung. Vielleicht reicht das, um die Störungen zu unterdrücken.
Noch ein Vorschlag zur Fehlersuche; PWM Einschalten, dann I2C-Stecker ziehen und mit dem Oszi schauen, ob auf den I2C-Leitungen am Motortreiber Störungen vorhanden sind.
-
Neuer Benutzer
Öfters hier
Hallo,
so langsam hab ich das Problem glaub in Griff.
Hab jetzt jedem Motortreiber bei der 24V-Versorgung einen LC-Tiefpass mit 4,7nF und 15uH verpasst.
Zusätzlich hab ich der 5V Versorgung auch einen LC-Tiefpass mit mit 4,7nF und 30uH verpasst.
Danach kam der Fehler immer noch ab und zu (aber glaub seltener)... jetzt aber der entscheidende Punkt. Die Schirmung der I²C-Leitung war seither mit dem Gehäuse verbunden (das ja, leitungstechnisch weiter entfernt auch mit der Controllermasse verbunden ist)... jetzt hab ich die mal an direkt an die Masse des AVRs angeschlossen... dann lief alles Perfekt, nach ca. 15-20 Mins kein Busfehler! Hoffe, dass das jetzt auch so bleibt...
Ich möchte mich nochmal an alle, die hier geholfen haben bedanken!
Gruß
Michael
-
Erfahrener Benutzer
Roboter Genie
Ein schöner Lohn für deinen Fleiß.
Herzlichen Glückwunsch!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen