TMD26353 Näherungssensor initialisieren Probleme

Hallo Zusammen,

den Näherungssensor TMD 26353 konnte ich erfolgreich an den I²C Bus anschließen.
Mithilfe des I2C-Scanner konnte ich die Adresse verifizieren, so dass die Hardware funktioniert.

Leider stehe ich hier etwas auf dem Schlauch, was die Initialisierung von den notwendigen Registern für eine einfache Entfernungsmessung aus dem Datenblatt betrifft. Folgender Code wirft als Ausgabe immer den Wert 22272.

Ich habe den Verdacht, dass ich hier noch ein paar Register in der void setup() anschreiben muss. Nur woher bekomme ich heraus welche mit welchem Wert? Das Enable Register habe ich ja bereits angeschrieben.

#include <Wire.h>

// I2C address of the TMD26353 0x39
#define Addr 0x39

void setup()
{
  // Initialise I2C communication 
  Wire.begin();
  // Initialise Serial Communication, set baud rate = 9600
  Serial.begin(9600);
  
  // Start I2C Transmission
  Wire.beginTransmission(Addr);
  // Select enable register
  Wire.write(0x00 | 0x00);
  // Stop I2C Transmission
  Wire.endTransmission();
  delay(500);
}

void loop()
{
  unsigned int data[0];
  
  // Start I2C Transmission
  Wire.beginTransmission(Addr);
  // Select data register PDATAL
  Wire.write(0x9C | 0x9D);   
  // Stop I2C Transmission
  Wire.endTransmission();
  
  // Request 2 bytes of data
  Wire.requestFrom(Addr, 2);
  
  // Read 2 bytes of data
  // proximity lsb, proximity msb
  if(Wire.available() == 2)
  {
    data[0] = Wire.read();
    data[1] = Wire.read();
  }

  // Convert the data
  int proximity = data[1] * 256 + data[0];

  // Output data to serial monitor
  Serial.print("Proximity of TMD26353 : ");
  Serial.println(proximity);
  delay(1000);
}

Über eine Antwort wüde ich mich sehr freuen.

Viele Grüße,
Toto

Was für MC benutzt du?
Der Sensor braucht 2 Spannungen.
VDD Supply voltage to sensor 1.7 1.8 2.0 V (Min, Typ. Max.)
VDD3 Supply voltage to IR emitter 2.9 3.3 3.6 V

Für die Spannungsversorgung nutze ich einen LDO mit zwei Spannungsausgängen, mit 3,3V und 1,8V Ausgang.
Für den I²C Bus verwende ich einen Pegelwandler 5V auf 3,3V. Die Verbindung funktioniert auch mit anderen I²C Teilnehmern, wenn ich diese alternativ an 3,3V Bus Seite anschließe.

Viele Grüße,
Toto

Ich habe das Enable Register 0x80 falsch gesetzt gehabt.
0x80 muss mit 0x65 gesetzt werden bei der Initialisierung.
Jetzt läufts.

Toto

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.