Hi Guys,
I too have ordered the SHT31 from scaled and have been unsuccessful in getting it to work with my custom hardware, even with it running the SHT15 code. My next step was to do as you have done and get the breakout board. It's almost as though they're using a custom sensor as I was seeing some really weird stuff using the logic analyzer.
Like everyone in the other thread was saying, you should be able to replace the SHT15 with an SHT31, apply a small offset and it’d still work. But according to the datasheet for the SHT31 there’s just no way that should work.
I plugged the new SHT31 into my hardware and ran it with the SHT15 code, with the logic analyzer on the SCL/SDA lines to see what was going on. It’s actually really strange, it’s almost like the SHT31 responds to ‘any’ command sent like you would the old protocol to start a temperature/humidity conversion, and that’s indicated in the way that it holds down the SDA (serial data) line for ~11.4ms (The datasheet says typical time for high repeat-ability measurement is 12.5ms). It then releases the SDA line, just as the SHT15 does when the measurement has completed, BUT it then fails to send any data when clocking the CLK line out. According to the SHT31 datasheet though, it shouldn’t do that at all. It uses a proper I2C implementation. The ‘start’ sequence is different, the addressing is different, the commands are different – everything is different, so how do people supposedly just replace the SHT15 with the 31 and it works? Unless they put in some hidden backward compatibility protocol or have a custom chip?
If I try to use it just like the datasheet says, using the I2C procotol shown, I can’t even get it to respond at all. It won’t even pull down the first acknowledge bit after sending the start sequence and sending the address.
If, as you say, it works with the SHT31 on the breakout board but not on the Davis SHT31, then there has to be a difference in the sensor, surely..
I'd be happy if I could just get it working using the SHT15 protocol. The arduino code you use, is it in the public domain? Are you just bit-banging the clock and data lines?
And it wouldn't explain why an ISS can recognise a Davis sensor, but not a breakout board with the same wiring.
Exactly.. there has to be more to it