Ich nutze einen ESP32. Die Verschaltung sieht folgendermaßen aus:
3,3V Spannungsversorgung für den Sensor . GND für den Sensor.
Für SCL habe ich den Pin 22 , für SDA auf einem Breadboard angeschlossen. Von der Spannungsversorgung gehe ich mit jeweils einem 10k Ohm Widerstand auf die Reihe mit den angeschlossenen I2C Pins. Von dort greife ich auch eine Verbindung zum Sensor ab.
Habe ich irgendetwas falsch verschaltet, oder liegt der Fehler woanders?
Ich habe insgesamt 4 Sensoren und denen vorhin über den Befehl aus der Bibliothek eine eigene Adresse zugewiesen. Das hatte soweit auch funktioniert, nur jetzt sehe ich keine aktuellen Adresssen mehr.
5V auf jeweils 4,7k Ohm Widerstände. Bei 3 Sensoren konnte ich eine Adresse ändern. Der vierte möchte nicht. Könnte der kaputt sein, oder gibt es da noch ne Lösung?
Kann ich 4 Sensoren gleichzeitig über den einen Widerstand laufen lassen?
Hatte die jetzt einzeln gescannt, aber im Betrieb sollen 4 Sensoren gleichzeitig betrieben werden
Deine Fragen lassen sich nicht pauschal beantworten. Du hast nicht mitgeteilt, welche Adressen du vergeben hast. Es ist nur der Bereich ab 0x08h bis 0x77h möglich. Evtl. hast Du Adressen in einem Bereich vergeben, der für andere Belange reserviert ist. Ob Dein Sensor defekt ist, lässt sich aus der Ferne wohl kaum beurteilen.
Evtl. schau mal hier:
Was meinst Du mit "alle 4 Sensoren über einen Widerstand laufen lassen"?
Jeder Sensor ist mit einer SDA und einer SCL "Leitung" angeschlossen. Diese beiden Leitungen müssen min. mit jeweils einem Pullup-Widerstand versehen sein. Das sind dann schon min. zwei Widerstände.
Des Weiteren ist die Leitungslänge bei I2C ein kritischer Faktor. Diese ist nicht absolut angegeben sondern so definiert, dass die Kapazität zwischen den beiden Leitungen 400pF nicht überschreiten dürfen. Praktisch gesehen heißt das, dass die Leitungen nicht sehr lang sein dürfen. Betrachte 2m mal als absolutes Maximum für einen Betrieb ohne speziellen I2C Bus-Treiber an.
Von daher hängt es von Deinem Aufbau ab, ob alle vier Sensoren an einem Bus betrieben werden können.
Deine Fragen zu I2C werden erschöpfend hier beantwortet:
Für eine zuverlässige Funktion sollte die I2C-Buslänge unter 50 cm bleiben.
I²C steht für Inter-Integrated Circuit.
Kommunikation auf ein und derselben Platine zwischen verschiedenen Schaltkreisen.
Dafür wurde I²C entwickelt.
vgs
ich habe jetzt einen 4,7k Ohm Widerstand von 5V zu SDA und einen 4,7k Ohm Widerstand von 5V zu SCL.
Dort wollte ich jetzt meine Sensoren anschließen. Also an einem Bus alle 4 Sensoren. Die Leitungslänge wird maximal 1m betragen, warscheinlich aber etwas weniger.
Ich könnte im Zweifel den zweiten I2C Bus verwenden, aber ich wollte noch ein Display und eine RTC verbauen.
Ich hatte jetzt was gelesen, dass der Widerstand kleiner werden müsste, wenn mehrere Geräte angeschlossen werden.
1m kann unter Umständen zu viel sein versuche erst mit kurzen Verbindungen, wen funktioniert dan erst vergrößern. Das ist meistens der Fehler was gemacht wird.
ich versuche später mal den Sensor wie angegeben zu resetten. Das Problem ist ja die Schutzlackierung. Einfach Draht ranhalten zwischen dem Pin und GND hat nicht funktioniert. Oder ich habe das nicht richtig gemacht.
3V und GND waren angeschlossen, den Pin 1 mit GND mit einem Stück Draht verbunden, hat nichts gebracht. Nur GND verbunden und den Pin mit GND verbunden hat auch nicht funktioniert. Ich versuche später mal eine Verbindung zu löten
"Draht dran halten".
Das mag zum Testen einer LED gerade so gehen." Um einen digitalen Sensor auszulesen völlig egal was für ein Sensor das ist viel zu unzuverlässig.
Mach das mal. Dann wird es höchstwahrscheinlich funktionieren.
vgs
Von welcher Schutzlakierung sprichst du ?
Ein geeigneter Schaltdraht oder Litze hat zwar eine Isolierung die meist aus Kunststoff besteht, aber keine Lackierung. Wenn du tatsächlich Kupferlackdraht verwenden willst, musst du die Lackschicht vorher entfernen und den Draht richtig anlöten.
Wo und warum sollte da eine Schutzlakierung drauf sein ?
Sicher nicht auf den Anschlußpins.
Und das du nur mittels Löten eine stabil funktionierende Verbindung bekommst, wurde ja schon geschrieben. Alles andere ist Bastelkram, der nicht funktioniert.
Lt. In GitHub vorliegendem Datenblatt läuft der mit 3,3Volt.
Wenn er das bei dir nicht macht, hast du etwas falsch gemacht, oder der ist defekt.
Nein da habe ich ja die breadobard Stecker angeschlossen. Müsste dann nur noch die Verbindung von gnd zum Pin hinbekommen.
Weis ich grad nicht. Würde das später nochmal mit 3.3V testen.
Hatte jetzt mal einen anderen esp32 getestet. Dort läuft das so mit den 5V an den Widerständen.
Der gleiche Aufbau am normalen esp32 auf einem anderen breadboard zeigt keine Adressen an. Entweder hat das Breadboard einen Weg, da ich zwei zusammenstecken muss um den esp zu platzieren.
Noch ne Verständnisfrage. Reicht es an den i2c Pins am esp die Widerstände anzuschließen , oder müsste ich für jeden Sensor jeweils Widerstände verbauen. Hatte jetzt beides gefunden als Beispiel.