Forum: Mikrocontroller und Digitale Elektronik PCA9685 I2C Probleme, SCL hängt


von Dob S. (dobstronsky)


Angehängte Dateien:

Lesenswert?

Hallo

Ich habe ein PCB designed auf dem ein Raspberry Pico steckt, der sich 
via I2C mit einem PCA9685 unterhält. 3,3V 4k7 Pull-Ups. Funktioniert 
super.

Ich habe nun ein zweites PCB an den Bus gehängt (vollkommen unbestückt 
außer PCA und Kondensatoren). Das zweite Board hat alleine auch super 
funktioniert.

Dann kam ein Timeout,
ich adressierte nur den PCA auf dem zweiten Board mit DutyCycle 
Befehlen. Das ging eine Minute gut, dann gab es ein Timeout und seit dem 
hängt die SCL Leitung auf 1V.  Wenn ich das Board länger liegen lasse 
läuft die Kommunikation zwar wieder aber das High Level der SCL-Leitung 
liegt bei fehlerhaften 2,2V, nach einigen erfolgreichen 
DutyCycle-Befehlen kommt dann wieder ein Timeout.

Für mich sieht es so aus als blockiert der PCA nicht nur den BUS sondern 
der PCA schein defekt. Der PCA auf Board 1 funktionierte weiterhin 
einwandfrei.
ich poste mal unten den Code, der den PCA auf Board 2 adressiert und für 
den Defekt sorgte.

Auf dem Pico läuft Circuitpython, ich nutze Gp1 und GP0 für SCL und SDA.
Pull-Ups gab es im Moment des Versagens nur auf Board1, auf Board 2 habe 
ich sie nach dem Testen entfernt.

In meinem letzten Projekt hatte ich einen Pico (Micropython) mit 5 
ATTinys verbunden ohne Probleme. Demnach musste ich nicht sehr tief in 
die I2C-Welt eintauchen.

Hat irgendjemand eine Ahnung was ich falsch mache? Muss jeder PCA seine 
eigenen Pull-Ups haben? Die Größe dann so wählen, dass der 
Gesamtwiderstand bei 5k bleibt?

import time
import board
import busio
from adafruit_pca9685 import PCA9685

def init_pca():
    """I2C und PCA9685 initialisieren"""
    i2c = busio.I2C(scl=board.GP1, sda=board.GP0, frequency=100000)
    pca = PCA9685(i2c, address=0x41)
    pca.frequency = 100
    return i2c, pca

i2c, pca = init_pca()

duty = 0.0
time_var = 0

try:
    while True:
        duty += 0.1
        if duty > 1.0:
            duty = 0.0

        try:
            # Duty-Cycle setzen
            pca.channels[0].duty_cycle = int(0xFFFF * duty)
            print(f"LED0: 100 Hz, Duty={duty*100:.1f}%, 
Time:{time_var}")
            time_var = time_var + 1
            time.sleep(1)

        except OSError as e:
            # I2C-Fehler auffangen
            print("I2C-Timeout, Bus wird neu initialisiert:", e)
            time.sleep(0.5)
            i2c, pca = init_pca()  # neu starten

except KeyboardInterrupt:
    print("Abbruch durch Benutzer")

finally:
    try:
        pca.deinit()
        print("PCA9685 deinitialisiert, Bus freigegeben")
    except Exception as e:
        print(f"Deinit übersprungen: {e}")

von Hmmm (hmmm)


Lesenswert?

Dob S. schrieb:
> 3,3V 4k7 Pull-Ups

Ganz schön hochohmig. Mal die Flanken angeguckt?

Dob S. schrieb:
> Ich habe nun ein zweites PCB an den Bus gehängt

Erhöht die Kapazität, was das o.g. Problem verschärft.

von Wastl (hartundweichware)


Lesenswert?

Dob S. schrieb:
> Hat irgendjemand eine Ahnung was ich falsch mache?

Vermutlich ist die physikalische Ausprägung deiner Leitungs-
Topologie fehleranfällig. Zu lange Leitungen und/oder stern-
förmige Verteilung. I2C ist nur mit kleinen Leitungslängen
sicher funktionsfähig. Vermutlich.

von Dob S. (dobstronsky)


Angehängte Dateien:

Lesenswert?

Leicht abgerundet, oder ist das schon doll? Komischerweise, sieht das 
nach 250 000 Hz aus obwohl im Code explizit 100000 genannt wird. Das ist 
das heile Board, übrigens.

von Dob S. (dobstronsky)


Angehängte Dateien:

Lesenswert?

Hiermal der Aufbau. Ich weiß nicht ob das gut zusehen ist. Die 
Leitungsführung ist nicht sauber, aber bei 100 000Hz bzw 250 000 Hz was 
es ja tatsächlich ist.

von Dob S. (dobstronsky)


Angehängte Dateien:

Lesenswert?

Der Aufbau

von Hmmm (hmmm)


Lesenswert?

Dob S. schrieb:
> Leicht abgerundet, oder ist das schon doll?

Das sieht OK aus, aber interessant wäre, ob das mitsamt der zweiten 
Platine immer noch so ist.

Dob S. schrieb:
> Komischerweise, sieht das nach 250 000 Hz aus

Das würde einen aussteigenden Slave erklären.

von Dob S. (dobstronsky)


Lesenswert?

Ne ich habe mich verguckt, es sind 125 000 Hz

von Wastl (hartundweichware)


Lesenswert?

Dob S. schrieb:
> Der Aufbau

Kabellänge gut versteckt damit man möglichst nichts beurteilen kann.

von Wastl (hartundweichware)


Lesenswert?

Dob S. schrieb:
> Hiermal der Aufbau.

Was soll man da erkennen? Ich schrub schon:

Wastl schrieb:
> Vermutlich ist die physikalische Ausprägung deiner Leitungs-
> Topologie fehleranfällig.

Es ist der ganze I2C Bus entscheidend, nicht deine winzigen
Leitungen auf einem Board.

von Dob S. (dobstronsky)


Lesenswert?

Wastl schrieb:
> Es ist der ganze I2C Bus entscheidend, nicht deine winzigen
> Leitungen auf einem Board.

Die I2C Leitungen gehen ab dem Connector unterhalb des Boards zum 
zweiten Board. Flachbandkabellänge 10cm

von Helmut -. (dc3yc)


Lesenswert?

Haben die beiden I2C-Teilnehmer auch unterschiedliche Adressen oder sind 
die gleich?

von Wastl (hartundweichware)


Lesenswert?

Dob S. schrieb:
> Die I2C Leitungen gehen ab dem Connector unterhalb des Boards zum
> zweiten Board.

.... und rechts davon? Ist das eine Fata Morgana oder was?

von Wastl (hartundweichware)


Lesenswert?

Dob S. schrieb:
> IMG_1699.JPG

Ich vermute auch dein Oszilloskop hat eine Screenshot-Funktion?

von Dob S. (dobstronsky)


Lesenswert?

Wastl schrieb:
> Dob S. schrieb:
>> Die I2C Leitungen gehen ab dem Connector unterhalb des Boards zum
>> zweiten Board.
>
> .... und rechts davon? Ist das eine Fata Morgana oder was?

Stimmt da geht das Kabel noch weiter für den dritten Teilnehmer.

Jap 0x40 udn 0x41. Das funktionierte auch in den Einzeltests.

Die Einzeltests liefen ohne Flachbandkabel, einfach direkt an die Pins 
des connectors.

Ich habe kein USB Stick für die Screenshotfunktion, finde ich zumindest 
nicht

von Wastl (hartundweichware)


Lesenswert?

Dob S. schrieb:
> Stimmt da geht das Kabel noch weiter für den dritten Teilnehmer.

OMG!
Entweder verstehst du überhaupt nichts oder du bist stark
beratungsresistent.

Wastl schrieb:
> Es ist der ganze I2C Bus entscheidend, nicht deine winzigen
> Leitungen auf einem Board.

Wastl schrieb:
> Vermutlich ist die physikalische Ausprägung deiner Leitungs-
> Topologie fehleranfällig.

von Dob S. (dobstronsky)


Lesenswert?

Wastl schrieb:
> Dob S. schrieb:
>> Die I2C Leitungen gehen ab dem Connector unterhalb des Boards zum
>> zweiten Board.
>
> .... und rechts davon? Ist das eine Fata Morgana oder was?

Ich versteh dann nicht, was meinst du damit?

von Gerd E. (robberknight)


Lesenswert?

Och nö, was ist denn das hier wieder für ein Tonfall mit dem der TO 
angegangen wird. Benehmt Euch mal.

Wenn der Ruhepegel von SCL bei 1V oder 2V rumhängt ist da was faul. Die 
Frage ist wo genau.

Daher würde ich die Platinen jetzt erst mal wieder voneinander trennen 
und jede einzeln vermessen. Dafür braucht jede natürlich Pullups und 
Stromversorgung.

Wie sieht es jetzt aus mit SCL?

Wenn die vorher einzeln funktionierten und jetzt nicht mehr dann ist 
eine irgendwie kaputt gegangen. Überspannung, ESD, etc.

Die Flanken auf dem Oszibild sehen für mich gut aus, bei 125 kHz sind 
auch 10 oder 20 cm Leitungslänge normal noch kein Thema. Es sei denn Du 
hast da irgendwelche kräftige Motoren oder ähnliches in der Nähe die 
mächtig mit Störungen um sich spucken.

von Dob S. (dobstronsky)


Lesenswert?

Hi Gerd, vielen Dank für deine Antwort.

Ich habe in der Zwischenzeit, statt eines zweiten eigenen Boards, ein 
fertiges Adafruit Board genommen. Ergebnis: Keine Probleme.

Das Adafruit Board hat 10 kOhm Pull-Ups an den Leitungen, die liegen nun 
parallel zu meinen 4k7 auf meinem PCB. Das wäre eine Möglichkeit.

Oder, das defekte Board ist defekt, weil ich den PCA von einem älteren 
Board runtergelötet habe. Ich habe das nicht erwähnt weil ich so einen 
guten Job gemacht habe, dachte ich. Ich habe die Rückseite des PCB mit 
einem Heißluftfön bestrahlt bis der PCA sich gelöst hat, beim Anlöten 
war dann auch alles Easy.

Löten oder Pull-Ups Ich habe leider nur noch verlötete PCAs und kann das 
jetzt nicht mehr unabhängig testen.

von Gerd E. (robberknight)


Lesenswert?

Kannst Du nicht die Kabel von Deinen Platinen trennen um sie einzeln zu 
untersuchen?

Sieht für mich auf den ersten Blick aus als wären die Kabel auch 
verlötet. Da würde ich normal Buchsen & Flachbandstecker vorschlagen - 
dann ist das Erweitern, Testen etc. viel einfacher.

von Dob S. (dobstronsky)


Angehängte Dateien:

Lesenswert?

Gerd E. schrieb:
> Kannst Du nicht die Kabel von Deinen Platinen trennen um sie einzeln zu
> untersuchen?
>
> Sieht für mich auf den ersten Blick aus als wären die Kabel auch
> verlötet. Da würde ich normal Buchsen & Flachbandstecker vorschlagen -
> dann ist das Erweitern, Testen etc. viel einfacher.

Ich kann die Boards abziehen und testen. Ich hänge mal ein Bild von dem 
Adafruit-Boardaufbau an.

von Gerd E. (robberknight)


Lesenswert?

Ok.

Und jetzt nimm mal Dein problematisches Board ganz alleine. Verbinde 
Stromversorung und improvisiere Pullups für SCL und SDA. Achte darauf 
dass das beides gemeinsam eingeschaltet wird.

Auf was für Pegeln liegen SCL und SDA jetzt?

von Jobst M. (jobstens-de)


Lesenswert?

Dob S. schrieb:
> Komischerweise, sieht das nach 250 000 Hz aus

Warum? M=2us × 5 Käschtle = 10us = 100kHz - sogar etwas drunter ...


Gruß
Jobst

von Wastl (hartundweichware)


Lesenswert?

Dob S. schrieb:
> Flachbandkabellänge 10cm

Was lernen wir aus den Bildern: der TO lügt.

von Dob S. (dobstronsky)


Lesenswert?

Jobst M. schrieb:
> Dob S. schrieb:
>> Komischerweise, sieht das nach 250 000 Hz aus
>
> Warum? M=2us × 5 Käschtle = 10us = 100kHz - sogar etwas drunter ...
>
>
> Gruß
> Jobst

Jap, Ich war umnachtet...Ich habe jetzt zwei eigene Boards am gleichen 
Bus und es läuft. Ich hatte noch ein altes Board vom letzten Prototypen, 
da habe ich noch 10kohm Pull Ups raufgelötet und es funzt.

PCB1 hat jetzt aktuell 4k7 pull Ups und PCB2 10kOhm. Ich denke beim 
nächsten Versuch werde ich beiden 10kOhm verbauen wie das Adafruit 
Board.

Ob die Pull-Ups jetzt das Problem waren oder eher die große Hitze 
Einwirkung werde ich untersuchen sobald ich wieder PCAs bekomme. Der Bus 
läuft, dass ist das Wichtigste. Vielen Dank!

von Dob S. (dobstronsky)


Lesenswert?

Gerd E. schrieb:
> Ok.
>
> Und jetzt nimm mal Dein problematisches Board ganz alleine. Verbinde
> Stromversorung und improvisiere Pullups für SCL und SDA. Achte darauf
> dass das beides gemeinsam eingeschaltet wird.
>
> Auf was für Pegeln liegen SCL und SDA jetzt?

Nachdem das Board versagt hat, habe ich es vom Bus genommen, 4k7 Pull 
ups draufgelötet und SCL war auf 1v () und 2,2V high. Keine oder nur 
kurze
Kommunikation möglich. Das war der Fehlerzustand, der PCA hat SCL 
verfälscht SDA war unverändert 0-3,3V Pegel.

von Gerd E. (robberknight)


Lesenswert?

Dob S. schrieb:
> Ob die Pull-Ups jetzt das Problem waren oder eher die große Hitze
> Einwirkung werde ich untersuchen sobald ich wieder PCAs bekomme.

Ob 10kOhm oder 4.7 ist bei der Geschwindigkeit kein Problem. Schau Dir 
die Flanken auf dem Oszibild an, das ist vollkommen ok so.

Das Problem steckt an anderer Stelle.

Entweder ist der Chip kaputt oder Du hast irgendwo einen Lötfehler. Ich 
vermute eher letzteres, soo empfindlich sind die Dinger nämlich nicht.

Mein Vorschlag wäre daher den Chip runterlöten und wieder sauber drauf. 
Oder Flussmittelgel drauf und einmal das Lot mit Heißluft aufschmelzen, 
so dass sich der Chip optimal ausrichtet.

Du kannst nicht viel verlieren dabei, außer ein wenig Zeit.

von Björn W. (bwieck)


Angehängte Dateien:

Lesenswert?

Die Lötstellen sehen nicht gut aus, besonders an markierter Stelle.

von Rainer W. (rawi)


Lesenswert?

Dob S. schrieb:
> PCB1 hat jetzt aktuell 4k7 pull Ups und PCB2 10kOhm. Ich denke beim
> nächsten Versuch werde ich beiden 10kOhm verbauen wie das Adafruit
> Board.

Unsinn. Guck dir die I2C-Spezifikationen an. EIN Pull-Up mit 3,3kOhm 
wäre bei 3.3V völlig ok.

Die Unsitte, auf jedem Slave einen eigenen zu verbauen, ist eine 
Maßnahme von Adafruit, die Versandrückläufer verhindert, falls der 
Anwender es bei seinem I2C-Master verpennt hat, Pull-Ups einzubauen. Bei 
kurzem Bus mit vielen Slaves fließt dann unnötig viel Strom.

Dein Photo IMG_1699.JPG zeigt leider keine Pegelwechsel auf SDA. Da ist 
die Aussagekraft etwas beschränkt. SCL sieht dort gut aus.

> Der Bus läuft, dass ist das Wichtigste
Weit gefehlt. Das hilft nur im ersten Moment.
Solange du nicht weißt, worin der Fehler lag, kannst du nicht wissen, 
wie sich das nächste Board benimmt.

Die eine Lötstelle sieht sehr nach einem Kurzschluss aus. Für 
gleichmäßige Lötstellen fehlt Flussmittel und Drag-Soldering.

Noch ein Tip:
Bei Inbetriebnahme eines neuen Boards solltest du immer die 
Stromaufnahme im Blick behalten.

Dob S. schrieb:
> Nachdem das Board versagt hat, habe ich es vom Bus genommen, 4k7 Pull
> ups draufgelötet und SCL war auf 1v () und 2,2V high.
> Keine oder nur kurze Kommunikation möglich.

Serienwiderstände (z.B. 220 Ohm) zwischen Hauptbus und fraglichem 
Teilbus/Slave helfen in solchen Fällen, um den Verursacher solch 
illegaler Pegel zu identifizieren.

: Bearbeitet durch User
von Dob S. (dobstronsky)


Lesenswert?

Rainer W. schrieb:

> Unsinn. Guck dir die I2C-Spezifikationen an. EIN Pull-Up mit 3,3kOhm
> wäre bei 3.3V völlig ok.

Ja, das ist okay, Ich hatte drei funktionierende Boards, die ich 
zusammengesteckt habe. Die 4k7 waren dann natürlich alle parrallel. sind 
dann 1600Ohm glaube ich. Das hat dann nicht lange funktioniert.

> Die Unsitte, auf jedem Slave einen eigenen zu verbauen, ist eine
> Maßnahme von Adafruit, die Versandrückläufer verhindert, falls der
> Anwender es bei seinem I2C-Master verpennt hat, Pull-Ups einzubauen. Bei
> kurzem Bus mit vielen Slaves fließt dann unnötig viel Strom.

Ich bestücke nur auf einem Board Pull-Ups

> Dein Photo IMG_1699.JPG zeigt leider keine Pegelwechsel auf SDA. Da ist
> die Aussagekraft etwas beschränkt. SCL sieht dort gut aus.

Ja, ich hatte nur SCL im Auge, weil der ja immer auf low hing,sda sah 
erstmal gut aus, bei näherer Betrachtung lag da aber tatsächlich ein 
Fehler vor. Siehe unten

>> Der Bus läuft, dass ist das Wichtigste
> Weit gefehlt. Das hilft nur im ersten Moment.
> Solange du nicht weißt, worin der Fehler lag, kannst du nicht wissen,
> wie sich das nächste Board benimmt.

Also meine Auffassung, die ich noch verifizieren werde sobald ich wieder 
neue Chips habe ist: Bevor das mit den zwei Boards schief ging hatte ich 
einmal kurz sogar drei Boards connected (alle Boards liefen einzeln 
super).
Alle hatten 4k7 Ohm Pull-Ups bestückt (|| ~ 1600Ohm,), ich habe nicht 
drüber nachgedacht sie bei zwei Boards zu entfernen. Nach kurzer 
korrekter Kommunikation gabs ein Timeout. Ab da habe ich mit zwei Boards 
weitergemacht, die einzeln funktionierten (über Minuten) aber zusammen 
halt nicht lange. Gestern Abend sah ich das bei dem Board mit dem Pico 
SDA nicht ganz auf low geht (high Pegel 3,3V , low-Pegel 0,5-1,2V). Ich 
ließ das Board zwei Stunden laufen bis ein Timeout kam. Das Problem hat 
sich verschlimmert, bis sda schlussendlich 20 Ohm Übergangswiderstand 
nach 3,3v hatte. Chip kaputt. Ich habe dann ein Adafruit-Board genommen, 
Chip sanft runtergelötet, auf mein Board sanft raufgelötet, aber SCl 
hing sofort auf low.

Ich bin mir jetzt relativ sicher, die Dinger sind zu empfindlich für 
rumlöterei und fehlerhaft kleine Pull-Ups zerstören den Chip ebenso. Wie 
gesagt, ich verifziere noch

> Die eine Lötstelle sieht sehr nach einem Kurzschluss aus. Für
> gleichmäßige Lötstellen fehlt Flussmittel und Drag-Soldering.

Der Kurzschluss ist nicht gewollt aber an der Stelle okay, das sind zwei 
Adressleitungen die beide auf low hängen.

> Noch ein Tip:
> Bei Inbetriebnahme eines neuen Boards solltest du immer die
> Stromaufnahme im Blick behalten.

Absolut!

> Dob S. schrieb:
>> Nachdem das Board versagt hat, habe ich es vom Bus genommen, 4k7 Pull
>> ups draufgelötet und SCL war auf 1v () und 2,2V high.
>> Keine oder nur kurze Kommunikation möglich.
>
> Serienwiderstände (z.B. 220 Ohm) zwischen Hauptbus und fraglichem
> Teilbus/Slave helfen in solchen Fällen, um den Verursacher solch
> illegaler Pegel zu identifizieren.
Sind designed, ich habe noch ein anderes Projekt: Pico redet mit 4 
ATTinys, da habe ich 220ohm in serie und einmal 10kOhm Pull-ups. Ich 
hatte niemals ein Problem.

Vielen Dank für deinen Beitrag!

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Kinners, in meinem Auto wird I²C über 1m Flachbandkabel vom Controller 
an 6 Stück SAA1064 im Display geführt und das funktioniert seit 30 
Jahren ohne Probleme.
Allerdings ist das noch 5V Technik.

von Rainer W. (rawi)


Lesenswert?

Dob S. schrieb:
> Die 4k7 waren dann natürlich alle parrallel. sind dann 1600Ohm glaube
> ich. Das hat dann nicht lange funktioniert.

Nochmal: Guck endlich in die I2C-Spezifikation, statt über deine 
Widerstandwerte herumzuorakeln.
Laut Spezifikation muss selbst ein I2C-Treiber für den Standard Mode 
mindestens 3mA nach Masse ziehen können.
Den Gesamtewiderstand und damit den Strom bei 3,3V für deine drei 
parallel geschalteten Boards zu berechnen, überlasse ich dir.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Dob S. schrieb:
> Das ging eine Minute gut, dann gab es ein Timeout und seit dem
> hängt die SCL Leitung auf 1V.

Dann zieht das der Master runter, da beim PCA9685 der SCL nur Eingang 
ist.
Oder dem PCA9685 fehlt die VCC, dann zieht er alle Leitungen über die 
internen Schutzdioden gegen VCC runter.
Gib dem Master mal ein Reset, damit auf I2C Ruhe ist. Dann muß SCL 
wieder auf 3,3V (vom Pullup) liegen.

von Dob S. (dobstronsky)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe inzwischen neue PCA9685 IC's bekommen und konnte das Problem 
jetzt eingrenzen.

Ich habe die Chips jeweils auf folgende Boards gelötet:
1. Adafruit-Board, da habe ich bereits den Chip runtergelötet und jetzt 
einen neuen wieder rauf.

2. Mein eigenes PCB mit altem Design
und
3. Mein eigenes PCB mit neuem Design

Ergebnis war, dass ich mit 1. und 2. keine Probleme hatte, egal welche 
Software und egal welche Pull-Ups (3,3v 1k-10kOhm). Die Taktrate vom I2C 
war während dieser Versuche 400kHz, Pegel und Flanken sahen super aus.

Bei 3. jedoch das alte Problem (SCl defekt on low oder fast low, nach 
sekunden oder minuten korrekter Kommunikation). Ich fasste damit das 
Layout des 3. PCB ins Auge. Ich habe die Leitungen SDA und SCL an den 
Punkten mit dem schwarzen Kreuz weggeschabt und habe stattdessen Drähte 
gesetzt. SDA und SCL Pin am PCA9685 habe ich hochgebogen, so dass kein 
Kontakt mehr zum PCB im Bereich des PCA9685 bestand.

Es lief ohne Probleme, ich habe es auf allen Boards des 3. PCB gemacht 
und habe keine Ausfälle mehr gesehen. Es läuft alles flüssig durch, seit 
Stunden.

Meine Auffassung ist jetzt solange ich SDA und SCL nicht in 
Längsrichtung unterm dem PC9685 durchführe (siehe Bild) habe ich keine 
Probleme. Bei PCB 1. und 2. gehen die Leitung vom Pin sofort ab.

Kann ich das unter Bad Practice verbuchen oder wärt Ihr der Ansicht, 
dass diese Erklärung unzureichend ist? Ich wüsste jedenfalls nicht mehr 
wie ich weiter investigieren würde.

: Bearbeitet durch User
von Nemopuk (nemopuk)


Lesenswert?

Dob S. schrieb:
> Meine Auffassung ist jetzt solange ich SDA und SCL nicht in
> Längsrichtung unterm dem PC9685 durchführe (siehe Bild) habe ich keine
> Probleme.

Das kann nicht die Problemursache sein.

Du hast dich die ganze Zeit viel auf SDA und SCL konzentriert, aber 
nichts zur Stromversorgung gesagt. Ist sie auf allen Boards stabil und 
haben alle Boards das gleiche GND Potential? Bitte mit dem Oszilloskop 
prüfen.

Hintergrund ist der: Wenn ein Pin deutlich über VDD oder deutlich unter 
GND gerät, kann das einen Latch-Up (Kurzschluss im IC) auslösen. Dieser 
löst sich wieder, wenn nan die Stromversorgung aus und wieder ein 
schaltet - es sei denn, das IC wurde dabei überhitzt.

: Bearbeitet durch User
von Thomas Z. (usbman)


Lesenswert?

Schau mal wo die Abblock Cs sitzen, so wie plaziert sind haben die keine 
Wirkung. Der Abblock C gehört direkt an die Vcc Anschlüsse.

von Dob S. (dobstronsky)


Lesenswert?

Thomas Z. schrieb:
> Schau mal wo die Abblock Cs sitzen, so wie plaziert sind haben die keine
> Wirkung. Der Abblock C gehört direkt an die Vcc Anschlüsse.

Hallo,

die sitzen doch ziemlich nah am VCC Pin, der ist unten rechts, aber der 
GND Pin ist oben links. Ich hatte auch mal versucht zwei Drähte von 
Abblock C zu VCC und GND zulegen. Ich konnte kein Unterschied im 
Verhalten feststellen.

Wie sollten die denn sitzen?

von Dob S. (dobstronsky)


Angehängte Dateien:

Lesenswert?

Nemopuk schrieb:
> Dob S. schrieb:
>> Meine Auffassung ist jetzt solange ich SDA und SCL nicht in
>> Längsrichtung unterm dem PC9685 durchführe (siehe Bild) habe ich keine
>> Probleme.
>
> Das kann nicht die Problemursache sein.
>
> Du hast dich die ganze Zeit viel auf SDA und SCL konzentriert, aber
> nichts zur Stromversorgung gesagt. Ist sie auf allen Boards stabil und
> haben alle Boards das gleiche GND Potential? Bitte mit dem Oszilloskop
> prüfen.
>
> Hintergrund ist der: Wenn ein Pin deutlich über VDD oder deutlich unter
> GND gerät, kann das einen Latch-Up (Kurzschluss im IC) auslösen. Dieser
> löst sich wieder, wenn nan die Stromversorgung aus und wieder ein
> schaltet - es sei denn, das IC wurde dabei überhitzt.

Ja, also es gibt eine Board-Spannungsversorgung mit LM317 von 18V über 
einen pMOS als Verpolungsschutz. Eins der neuen bisher defekten Boards 
hatte die komplette Spannungsversorgung bestückt. Die anderen hatten 
nichts bestückt ausser PCA9685, Abblock C, Pull Ups und einen Connector. 
Da habe ich den PICO und 3,3V direkt  aus dem Labornetzteil 
angeschlossen. Vom Pico ging SDA SCL und GND ab, alles hing an der Masse 
zusammen. Der Pico wurde ausschließlich über USB versorgt.

Ob ich mit dem Netzteil direkt 3,3V versorgte oder über die Boardeigene 
Spannungsversorgung 3,3v (18V am Eingang) versorgt habe, hatte für mich 
keinen merkbaren Unterschied.

Aber jetzt wo du das sagst, ich hatte ein zwei mal gesehen wie ein 
Signal nicht dauerhaft auf 0 war sondern ein bißchen fast 1 V darunter. 
Vllt SCL nachdem es defekt war. Ich hatte dann irgendwas am Oszi 
verstellt und de Ruhepegel war wieder bei 0V. Ich belese mich mal dazu.

Ich habe gerade ein 3. PCB, also das was vorher nicht ging, in Betrieb. 
Es läuft seit 11000 Sekunden und setzt DutyCycles 20 mal Pro Sekunde mit 
400KHz. Vorher war nach spätestens 5 Minuten finito.

von Nemopuk (nemopuk)


Lesenswert?

Dob S. schrieb:
> ich hatte ein zwei mal gesehen wie ein
> Signal nicht dauerhaft auf 0 war sondern ein bißchen fast 1 V darunter.
> Vllt SCL nachdem es defekt war.

Deine Mikrochips erzeugen keine negativen Ausgangsspannungen (aus ihrer 
Sicht). Wenn du so etwas siehst, dann hast du nicht überall das gleiche 
GND Potential. Genau das ist eine häufige Ursache für den berüchtigten 
Latch-Up Effekt.

Eventuell hast du Spannungsabfall auf einer GND Leitung (Kabel?). Mit 
einem Multimeter sieht man das nicht immer.

> Ich hatte dann irgendwas am Oszi verstellt und de Ruhepegel
> war wieder bei 0V. Ich belese mich mal dazu.

Mach das. Schaffe Klarheit.

: Bearbeitet durch User
von Thomas Z. (usbman)


Angehängte Dateien:

Lesenswert?

Ich hab den Stromfluss (grün) zum IC mal angehängt. Der Strom sollte 
zuerst zum Kondensator gehen und dann zum Pin. So baust du eine große 
Stromschleife.

von Dob S. (dobstronsky)


Angehängte Dateien:

Lesenswert?

Thomas Z. schrieb:
> Ich hab den Stromfluss (grün) zum IC mal angehängt. Der Strom sollte
> zuerst zum Kondensator gehen und dann zum Pin. So baust du eine große
> Stromschleife.

Danke für die Zeichnung! Ich habe jetzt mal gerade etwas schäbig 
umgeändert, aber ich weiß was du meinst.

Bei den funktionierenden Boards war es tatsächlich immer korrekt. Wenn 
man abblock Kondensatoren weglässt entstehen ja total komische Effekte. 
Ich designe das morgen nochmal sauber

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.