Hallo,
ich bräuchte Ideen oder eine Lösung für I2C Bus.
Aufbau: Raspberry im Metall case (inkl. Sensoren, Lüfter, Steuerungen
etc.). Am i2c bus hängen insgesamt 2 Geräte dran und eigentlich das oled
Display. Alle i2c Geräte sind ohne Widerstand am Bus dran.
Zuerst hatte ich nur versuchsweise das Display angesteuert, da war noch
alles Fliegend verdrahtet und funktionierte wunderbar.
Seit ich aber alles zusammen gebaut habe, ist eine addresierung am Bus
nicht mehr möglich, das oled erzeugt Fehler auf den Bus.
Meine Frage ist daher was ich gegen den Fehler unternehmen könnte...
Würde mir nen 4k7 Widerstand am oled was bringen?
Oder weitere/andere Ideen?
Gruß Daniel
Daniel schrieb:> Meine Frage ist daher was ich gegen den Fehler unternehmen könnte...
erst einmal nachmessen, was Sache ist. Im Moment ist die Form der
Flanken auf dem I²C Bus am interessantesten.
> das oled erzeugt Fehler auf den Bus.
Wie genau ist das zu verstehen?
Du solltest vielleicht wenigstens die Produkte konkret benennen und dein
Blockschaltbild zeigen, damit potentielle Helfer nicht ausschließlich
auf ihre Phantasie zurückgreifen müssen. Fotos vom Aufbau wären auch
gut.
Raspberry pi 4
I2C:
Geekworm X708 usv Modul
APDS-9960
Ssdp1306(128x64px)
Anschluß Plan:
GPIO27 -> 3v3 SSDP1306 (gpio27 muss eingeschaltet werden)
GND -> GND SSDP1306
SCL -> SCL SSDP1306
SDA -> SDA SSDP1306
Fotos gibt es zwar, aber das Display ist einfach viel zu versteckt
eingebaut...Das oled wurde vom kleber an der schaltung entfernt sodas
der screen vorne zu sehen ist und die schaltung im Inneren....
a) zeige dein Blockschaltbild
b) messe das Signal, zeige wie dessen Flanken und das Timing aussehen
c) beantworte die Frage, was "das oled erzeugt Fehler auf den Bus"
bedeutet
d) werfe deine Kamera weg oder benutze sie nie wieder
Immerhin kann man sehen, dass es nur um wenige Zentimeter Leitungslänge
geht. Ansonsten sehe ich viel bunte Knete.
Aus deinem Blockschaltbild sollten Position und Größe der Pull-Up
Widerstände hervor gehen. Wenn du keine hast, lies mal die Spezifikation
vom I²C Bus (UM10204). Das steht alles Wissenswerte gut verständlich
drin, sofern man englisch kann.
a) zeige dein Blockschaltbild
Habe kein Schaltplan. Es ist doch bloß direkt am raspberry
angeschlossen.
b) messe das Signal, zeige wie dessen Flanken aussehen
Hab natürlich kein Oszilloskop zur Verfügung.
Der RasPi hat schon mal keine Pullups. Bzw die internen (wenn aktiviert)
sind um die 50k. Haben deine Devices Pullups? Wenn nicht kann jeweils
ein 2-5k Pullup an SDA und SCL sicherlich nicht schaden
Schonmal danke für den Hinweis mit den i2c Spezifikationen.
Mit den Pullup Widerständen hab ich gerade nachgelesen, das die doch
sinnvoll sein könnten...
Die Devices haben keinen Pullup Widerstand, bzw. beim X708 Modul könnte
ich es gar nicht beantworten.
Ich hoffe ich finde gleich zwei 2-5K Widerstände, dann probier ich das
direkt mal aus. Dankeschön
Daniel schrieb:> Mit den Pullup Widerständen hab ich gerade nachgelesen, das die doch> sinnvoll sein könnten...
Eher notwendig...
Daniel schrieb:> Ich hoffe ich finde gleich zwei 2-5K Widerstände, dann probier ich das> direkt mal aus.
Die müssen nicht dynamische Werte haben. 2.7k, 3.3k oder 4.7k sind okay.
Selbst 10k ist besser als gar nichts (zumindest sollte 10k für Low-Speed
~100kHz reichen)
Daniel schrieb:> Mit zwei 4,7k Widerständn wird die addresse vom oled gar nicht mehr> erkannt 😕
Wie hast du die angeschlossen? Die müssen jeweils vom Signal SDA bzw.
SCL nach +3,3V gehen. NICHT gegen GND!
Ein Oszi, und sei es noch so einfach, wäre jetzt viel Wert. Oder du mußt
versuchen, die I2C Pins als Open Drain Ausgänge zu konfigurieren und per
Hand/Konsole auf HIGH und LOW zu schalten. Da kann man mit einem
Multimeter messen, ob gescheite HIGH und LOW Pegel erreicht werden.
Achso, die müssen gegen Spannung gehen 😅
Hatte das so verstanden, daß die in die SCL bzw SDA Leitung zwischen
master und Sklave kommen.
Oh man jetzt mach ich ja echt viel falsch 😅
Kleiner Nachtrag, das Display ist ja liebevoll mit Heißkleber auf die
Blechkiste gepappt, auf der Rückseite sind ja Leitfähige Bauteile-
Anschlüsse, die könnten das Blech kontaktieren. Weiterhin sieht die
Kabeldurchführung für das Flexkabel auch optimierungsbedürftig aus. Wenn
das Blech scharfkantig ausgeschnitten ist, könnte das Kabel dort auch
ungewollten Kontakt zum Gehäuse haben.
PS: Nicht in den falschen Hals kriegen, ich mag auch manchmal den
"rustikalen Bastlerstyle".
Ja, hab ich genauso angeschlossen gehabt.
Auf der Rückseite des screens befindet sich nur ein blech, bei der
Durchführung der Kabel geb ich dir recht.
Ich kann nicht 100%ig ausschließen, das es dort beschädigt ist. (aber
ich hab die Durchführung etwas angefeilt)
auch im Gehäuse inneren ist die Isolierung und Befestigung: Heiß kleber.
Für Ideen wie ich ein Display an der Front befestige, bin ich offen. War
die "akzeptabelste" Idee die mir eingefallen war
Zumindest weiß ich jetzt, daß das ssd1306 Display ohne Probleme den
Backofen bei 60-70 °C übersteht um den kleber zwischen Platine und Glas
zu lösen.
Aber kleine mechanische belasse ist echt tödlich, falls ich es
geschrottet hab, wäre es mein zweites oder drittes 🙄
Timmo H. schrieb:> Der RasPi hat schon mal keine Pullups
an den default I2C Anschlüssen schon 1,8k pullups, kann man messen!
Der Beweis:
Daniel schrieb:> Zuerst hatte ich nur versuchsweise das Display angesteuert, da war noch> alles Fliegend verdrahtet und funktionierte wunderbar.
masterfx ich bin ja Fan seit deinem Zerlegen vom AES3 und anderen Dingen
(Timer)
aber dem armen PI keine pullups an SDA und SCL anzudichten ist stark!
https://www.raspberrypi.org/forums/viewtopic.php?t=7664
LG
Daniel schrieb:> a) zeige dein Blockschaltbild> Habe kein Schaltplan. Es ist doch bloß direkt am raspberry> angeschlossen.
Der ist aber zum Verständnis des Aufbaus wichtig. Zu dem solltest du
doch die Produkte bennenen. Bekommen habe ich Chip-Nummern. Du hast
sicher mehr als nur nackte Chips angeschlossen. Und genau dieses mehr
ist der entscheidende Punkt für die Fehleranalyse.
> b) messe das Signal, zeige wie dessen Flanken aussehen> Hab natürlich kein Oszilloskop zur Verfügung.
Dann kaufe oder leihe dir eins. Zur Not tut es ein DSO138, das kann sich
jeder leisten.
> Für Ideen wie ich ein Display an der Front befestige, bin ich offen.
Klebe es mit doppelseitigem Klebeband auf eine größere Trägerplatte aus
Kunststoff oder dicker Pappe. Dann hast du rundherum genug Platz,
Montagelöcher zu bohren.
Schrauben zur Befestigung kann mit 2-Komponenten Kleber unsichtbar an
die Innenseite des Gehäuses kleben. Es gibt alternativ dazu
selbstklebende Platinenhalter in unterschiedlichen Längen, die dazu
taugen:
http://shop.griederbauteile.ch/product_info.php?products_id=23532
A)
Ich hab nur die Chips angeschlossen, ich brauch ja auch nur die I/O der
Chips.
Klar sind auf anderen Pins auch kleine Transistor schaltungen dran, aber
die diese schalten nur Lüfter an/aus. Selbst dabei könnte ich nicht
sagen welche Widerstände oder Kondensatoren verwendet wurden.
B) Oszilloskop und Signal Prüfung ist einfach nicht mein Ding, das lohnt
sich auch nicht. Entweder hab ich nen "einfachen" Fehler gemacht, wie
z.B. die PullUps oder defekt.
C) Vom Grundsatz her kenne ich das Vorgehen daß du beschreibst, finde
ich auch schöner gelöst, wenn das Display auf der Platine verbleibt. Nur
der Platz im case 😅 - da ist einfach kein Platz für da. Es ist schon
absicht im minimal case alles unterzubringen. Minimalistisch und
trotzdem luftig.
Ich weiß das es alles nicht gerade ordentlich dokumentiert ist, aber
eigentlich hatte ich gehofft, keinen Fehler beim Einbau gemacht zu haben
🙄
Aber irgendwas ist ja immer.
Für mich sind es eben nur Hardware Module, die Signale empfangen bzw
verschicken, die ich für die Programmierung und Steuerung benötige
Daniel schrieb:> Oszilloskop und Signal Prüfung ist einfach nicht mein Ding, das lohnt> sich auch nicht.
Doch, das lohnt sich gerade für Fälle wie diesem sehr. Wir reden hier
von 20 Euro als Bausatz bzw. 30 Euro als Fertiggerät, ist dir das
bewusst?
Ja, das ist mir bewusst.
Aber bei nen rund 2€ Display, rechnet es sich nicht.
Ich bastel zwar "jährlich was neues", aber normalerweise geht nix kaputt
- aber wenn dann richtig 🙄
War irgendwie nie interessant genug um als Bausatz bei mir zu landen.
Daniel schrieb:> Aber bei nen rund 2€ Display, rechnet es sich nicht.
Es geht nicht um die 2€, sondern darum, ob dein Projekt scheitert oder
nicht. Es sei denn, dein Projekt ist, das Display irgendwie anzusteuern.
Du hast dir ja auch einen Lötkolben gekauft, um Bauteile zu verarbeiten,
die einzelne Cent kosten. Werkzeug kostet halt Geld.
Daniel,
ich habe meine OLED Klasse anlässilich deiner Reklamation nochmal auf
einem Arduino Nano geprüft. Sie funktioniert. Auf der Seite
http://stefanfrings.de/arduino_oled/index.html siehst du ein Foto vom
Aufbau und da kannst du auch den exakten Quelltext von meinem Test
downloaden.
Dein Speicherproblem wird damit wohl nicht gelöst. Ich wollte nur zurück
melden, dass der Code funktionsfähig ist.
Ich hab da mal ne Idee.
Er hat ein METALL-Gehäuse. Ein Display verbaut man normal in ein
Gehäuse.
Da die Hersteller in den seltensten Fällen von Metall ausgehen, denke
ich mal da ist einfach irgendwie ZU VIEL Masse (oder sogar Spannung).
Ich würde das Gehäuse mal messen, ob es irgendwo Kontakt hat wo es nicht
soll.
Ich hatte so was mal vor 30 Jahren mit einen Mainboard. Das lief prima,
nur nicht im Gehäuse. Ich habe das Gehäuse dann Klarlack-Lackiert innen.
Und oh Wunder das Mainboard lief bis zu seiner Verschrottung prima.
Seit dem machen mich Metallgehäuse immer misstrauisch.
Stefan ⛄ F. schrieb:> ich habe meine OLED Klasse anlässilich deiner Reklamation nochmal auf> einem Arduino Nano geprüft
Daniel, sorry. Ich habe den Thread verwechselt. Vergiss meinen Beitrag.