cancel
Showing results for 
Search instead for 
Did you mean: 

STTS75 I2C No ACK from sensor

JD1
Associate II

Hello ST Community,

Long time lurker, first time poster.

I'm having an issue with the STTS75 temperature sensor and I can't seem to figure this one out. Right now I'm just trying to pull the current sensed temperature from the chip; nothing fancy. I've followed the data sheet linked below for the recommended setup and when I realized it wasn't working with my STM32F207VG MCU I decided to move it over to an Arduino Uno for a little simplicity and isolation. Both devices do not seem to be receiving the ACK from the temperature sensor.

After a lot of troubleshooting I decided to load up an I2C address scanner on the Uno. Basically, it runs through addresses 0x1 - 0x73 looking for an ACK. I know the scanner works because when I plug it up to my LSM9DS1 I get ACKs on two addresses; same code, same Uno. For some reason it just does not seem to work with this temp. sensor.

I have two of these sensors and I've tried both with no joy. I've gone through the schematic multiple times, confirmed correct voltage to the sensor, continuity, O-Scoped the I2C bus and confirmed the address/clocks, etc. Though it is possible that both of these chips are bad, I find it hard to believe.

I'm looking for any help or suggestions. I've never had an I2C device give me so much headache.

Data Sheet:

https://www.st.com/resource/en/datasheet/stts75.pdf

4 REPLIES 4
Miroslav BATEK
ST Employee

I'm not aware about any problem of this device.

Can you share your schematic? Did you connect A0, A1, A2 pins?

Please be aware also that the registers 0, 2, 3 are 16 bits.

Hello Miroslav! Thank you for the reply.

I'm happy to share my schematic. It's actually the same as Fig. 4 in the datasheet under Sec. 2.1 with the exception of /O.S (pin 3). 0690X000006CVCkQAO.jpg

Per the datasheet if the thermostat capabilities are not in use this pin should be left floating. I'm not worried about that feature right now so I have left it floating. I'm using 10K pullup resistors on the SDA and SCL lines and a 1.0 μF capacitor between VDD and GND rails of my breadboard. I can draw up a proper schematic if you'd like.

I have 9v into the VIN pin of the Arduino from my benchtop power supply and the 5v out of the Arduino to the + rail of the breadboard with the - rail of breadboard to GND of the Arduino.

Starting from VIN of Arudino going up the pins:

PS+ -> Uno VIN

PS- -> Uno GND

Uno GND -> - rail of breadboard

Uno 5V -> + rail of breadboard

A2,A1,A0 are all tied to - rail of breadboard making the address 1001000 (0x48)

Here's what I'm seeing from the scope. First, the read action. Using this code:

#include <Wire.h>
 
void setup() {
  // put your setup code here, to run once:
  Wire.begin();
}
 
void loop() {
  // put your main code here, to run repeatedly:
 
  Wire.requestFrom(0x48, 2);
  delay(5000);
  }

I would expect 2 bytes of data from the preset register (per the datasheet this should be register 0). You can see per the screenshot what is happening is START, ADDR, then no ACK and a RESET.

0690X000006CVDsQAO.jpg

So, I thought maybe I should write the register first. Using this code:

#include <Wire.h>
 
void setup() {
  // put your setup code here, to run once:
  Wire.begin();
}
 
void loop() {
  // put your main code here, to run repeatedly:
  Wire.beginTransmission(0x48);
  Wire.write(0);
  Wire.endTransmission();
  delay(5000);
}

I am attempting to write but the same issue occurs - START, ADDR, then no ACK and a RESET.

0690X000006CVECQA4.jpg

Testing + and - rails on breadboard:0690X000006CVEvQAO.jpg

Close up of the breadboard and sensor:0690X000006CVF0QAO.jpg These images show a 10K to VDD on the /O.S. (pin 3). I have tried with and without the pull-up resistor.

Miroslav BATEK
ST Employee

I don't see any obvious mistake, but what I don't like are the rising edges of the SDA and SCK.

Could you please decrease the pull-ups to 3k3 or even less and try it?

As requested, 1k5:0690X000006CVSTQA4.jpg

It certainly looks cleaner but no ACK. :(