INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
2 I2C-Devices nicht zusammen
24.02.2021, 18:47
Beitrag #1
2 I2C-Devices nicht zusammen
Hallo,
ich habe 2 I2C-devices angeschlossen (RTC DS3231 an 0x68, Gassensor SGP30 an 0x58). Beide arbeiten einzeln, aber nicht zusammen. Ich habe SCL und SDA bei beiden Geräten einfach parallel geschaltet. Die Pullup-Widerstände sind doch im Arduino (uno) schon vorhanden? Was kann ich noch falsch machen?
Gruss, wonk
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.02.2021, 18:54
Beitrag #2
RE: 2 I2C-Devices nicht zusammen
Wenn Du keine PullUps an den Arduino gemacht hast, dann sind keine da. Immerhin könnte ja auch der ADC an diesen Pins beschalten sein.

Gruß André
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.02.2021, 19:07 (Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2021 19:19 von Tommy56.)
Beitrag #3
RE: 2 I2C-Devices nicht zusammen
Miss bei beiden Geräten im spannungsfreien Zustand den Widerstand jeweils von SCL/SDA nach Vcc. Wenn PullUp drauf sind, liegt der wert meist zwischen 4 und 10 kOhm.

Lasse einen I2C-Scanner laufen, ob der beide Adressen findet.

Zeige uns Deinen Sketch in Codetags. Wie das geht, steht hier.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.02.2021, 19:17 (Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2021 19:18 von Chopp.)
Beitrag #4
RE: 2 I2C-Devices nicht zusammen
Wenn die einzeln gehen, aber nicht zusammen,
Würde Ich an deiner Stelle mal beide zusammen
Nur mit einen I2c Scanner sketch scannen.
Wenn beide gefunden werden, könnte es am sketch liegen,
Ansonsten an der Hardware.
Gruß, Markus.

Edit, Tommy war schneller.

Immer in Stress
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.02.2021, 19:47
Beitrag #5
RE: 2 I2C-Devices nicht zusammen
(24.02.2021 18:47)wonk schrieb:  Die Pullup-Widerstände sind doch im Arduino (uno) schon vorhanden? Was kann ich noch falsch machen?
Oh, da gibt es viele Möglichkeiten, die du falsch machst.
Z.B. wie kommst du da drauf, dass im Uno Pullup-Widerstände sind ?
Es gibt keinen Arduino Uno, der diese eingebaut hat.
Es kann aber durchaus Clone geben, die schon Pullups drauf haben.

Wir kennen aber deinen Controller nicht.

Ich vermute aber, das ein Problem im Sketch liegt.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2021, 17:03
Beitrag #6
RE: 2 I2C-Devices nicht zusammen
@honk

Was mir gerade noch einfällt. Warum postest du uns immer nur halbe Sachen?
Du solltest doch langsam mal Wissen, das wir alle Informationen benötigen, um deine Fragen zu beantworten. Das fällt mir schon seit deinem ersten Thread hier auf.

Würde mich freuen, wenn sich das mal zum positiven wandeln würde.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2021, 18:09 (Dieser Beitrag wurde zuletzt bearbeitet: 25.02.2021 18:14 von wonk.)
Beitrag #7
RE: 2 I2C-Devices nicht zusammen
Hallo,
Die Messungen:
RTC VCC - SCL 150K
VCC - SDA 10K
SGP30 VCC - SCL 10K
VCC - SDA 10K
Ein I2C-Scanner zeigt beide Devices an den korrekten Adressen.
Das folgende Prog. habe ich als DemoProg von Adafruit bei Github gefunden:
Code:
#include <Wire.h>
#include <Adafruit_SGP30.h>
const uint16_t TVOC_base = 0x8BD8;
const uint16_t eCO2_base= 0x8D23;
Adafruit_SGP30 sgp;   //insatziiert SensorObjekt
int counter = 0;

/* return absolute humidity [mg/m^3] with approximation formula
* @param temperature [°C]
* @param humidity [%RH]
* alternativ auch Messwerte
*/
uint32_t getAbsoluteHumidity(float temperature, float humidity) {
    // approximation formula from Sensirion SGP30 Driver Integration chapter 3.15
    const float absoluteHumidity = 216.7f * ((humidity / 100.0f) * 6.112f * exp((17.62f * temperature) / (243.12f + temperature)) / (273.15f + temperature)); // [g/m^3]
    const uint32_t absoluteHumidityScaled = static_cast<uint32_t>(1000.0f * absoluteHumidity); // [mg/m^3]
    return absoluteHumidityScaled;
}

void setup() {
  Serial.begin(9600);
  while (!Serial) { delay(10); } // Wait for serial console to open!

  Serial.println("SGP30 test");

  if (! sgp.begin()){
    Serial.println("Sensor not found :(");
    while (1);
  }
  Serial.print("Found SGP30 serial #");
  Serial.print(sgp.serialnumber[0], HEX);
  Serial.print(sgp.serialnumber[1], HEX);
  Serial.println(sgp.serialnumber[2], HEX);

  // If you have a baseline measurement from before you can assign it to start, to 'self-calibrate'
  //sgp.setIAQBaseline(0x8E68, 0x8F41);  // Will vary for each sensor! Hier Baseline values: eCO2: 0x8A25 & TVOC: 0x82A7
}



void loop() {
  // If you have a temperature / humidity sensor, you can set the absolute humidity to enable the humditiy compensation for the air quality signals
  //float temperature = 22.1; // [°C]
  //float humidity = 45.2; // [%RH]
  //sgp.setHumidity(getAbsoluteHumidity(temperature, humidity));

  if (! sgp.IAQmeasure()) {
    Serial.println("Measurement failed");
    return;
  }
  Serial.print("TVOC "); Serial.print(sgp.TVOC); Serial.print(" ppb\t");
  Serial.print("eCO2 "); Serial.print(sgp.eCO2); Serial.println(" ppm");

  if (! sgp.IAQmeasureRaw()) {
    Serial.println("Raw Measurement failed");
    return;
  }
  Serial.print("Raw H2 "); Serial.print(sgp.rawH2); Serial.print(" \t");
  Serial.print("Raw Ethanol "); Serial.print(sgp.rawEthanol); Serial.println("");

  delay(1000);

  counter++;
  if (counter == 30) {
    counter = 0;

    uint16_t TVOC_base, eCO2_base;
    if (! sgp.getIAQBaseline(&eCO2_base, &TVOC_base)) {
      Serial.println("Failed to get baseline readings");
      return;
    }
    Serial.print("****Baseline values: eCO2: 0x"); Serial.print(eCO2_base, HEX);
    Serial.print(" & TVOC: 0x"); Serial.println(TVOC_base, HEX);
  }
}
So lange nur der Gassensor angeschlossen ist, ist alles ok. Wenn ich - rein physikalisch - zusätzlich die RTC anschliesse, wird der Gassensor nicht mehr gefunden.
Mein Arduino uno ist kein Original, sondern ein kompatibler. Bei den obigen Ergebnissen spielt es keine Rolle, ob der I2C-Bus an A4,A5 oder an den Endkontakten der anderen Kontaktleiste angeschlossen ist. Bei mir ist an beiden Stellen SCL, SDA aufgedruckt. Bild ist hier #20
Und noch etwas Interessantes: Schließe ich zusätzlich noch ein I2C-Display an, so wird vom I2C-Scanner dieses gefunden, der Gassensor dafür nicht mehr !????
Gruss, wonk
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2021, 18:13
Beitrag #8
RE: 2 I2C-Devices nicht zusammen
(25.02.2021 18:09)wonk schrieb:  RTC VCC - SCL 150K
VCC - SDA 10K

Die Messung klingt unlogisch. Entweder ist an beiden ein PullUp dran oder an keinem oder das Ding ist defekt.

Den I2C-Scanner hast Du laufen lassen, wenn beide gleichzeitig angeschlossen sind?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino Mega wird nicht erkannt Gian-Luca 44 9.784 08.04.2021 17:47
Letzter Beitrag: Geisterjäger
  MKR1200 läuft nicht bei Batteriebetrieb kpc 24 2.141 05.04.2021 22:59
Letzter Beitrag: kpc
  Einfaches Projekt funktioniert am USB Anschluss, aber nicht mit Akkus PurpleLightning 3 296 05.04.2021 12:07
Letzter Beitrag: hotsystems
  Sketche lassen sich aus IDE nicht mehr hochladen Steinspiel 9 1.276 19.03.2021 19:11
Letzter Beitrag: Chopp
  Sketches lassen sich nicht mehr hochladen. Was kann ich noch tun? Tonio 3 556 19.03.2021 15:32
Letzter Beitrag: Tommy56
  Servo funktioniert nicht richtig an Arduino Nano Maxcruiser 25 3.079 14.03.2021 17:11
Letzter Beitrag: hotsystems
  Schieberegister funktioniert nicht richtig flint74 9 1.248 21.02.2021 13:35
Letzter Beitrag: flint74
  Warum sind mehrere Attiny´s nicht Synchron ? Chris_Arduino 6 2.317 02.02.2021 11:46
Letzter Beitrag: Harry
  Arduino Uno will nicht mehr wonk 35 6.404 21.01.2021 17:33
Letzter Beitrag: Tommy56
  RFID keine Daten / wird nicht erkannt Wochenendprogrammierer 79 7.982 27.12.2020 19:20
Letzter Beitrag: Wochenendprogrammierer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste