Communication problem Sensirion SHT75

Hello Everyone,

I am trying to read the values from SHT75 via Uno but, whatever I do I get same result.
"Temperature = -40.10 C, Humidity = 0.10 %, Dewpoint = -90.17 C"

I connected the wires according to datasheet, changed the wires a few times, changed the pins on the uno but the result is same. Even if I disconnect the sensor from the board it gives the same values.

Do you have any comments?
resim_2022-06-12_093727261

Could be a faulty sensor. Could be faulty wiring. Could be faulty code.

Why don't you read the forum guide in the sticky post at the top of the forum section. This will tell you what you need to include in your question in order for the forum to be able to help you.

Sorry if I made a mistake. I made some research on the internet, some people have the same issue but couldn't find the solution. That is the reason I created this topic.

I am new to Arduino but not to electronics and microprocessors.

Sensor is kinda new and expensive, don't think there is a problem with sensor.
Wiring is very simple, too hard to make a mistake. I attached the wiring diagram above. VDD is 3.3V
Here is the code that I use;

#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);
#include <SHT1x.h>
#define dataPin 10
#define clockPin 11
SHT1x sht1x(dataPin, clockPin);
void setup()
{
lcd.begin(16,2);
float tempC = sht1x.readTemperatureC();
float humidity = sht1x.readHumidity();
lcd.print(tempC);
}

and the other one that I found in this forum;

#include <Sensirion.h>
const uint8_t dataPin =  8;              // SHT serial data
const uint8_t sclkPin =  9 ;              // SHT serial clock
const uint8_t ledPin  = 13;              // Arduino built-in LED
const uint32_t TRHSTEP   = 5000UL;       // Sensor query period
const uint32_t BLINKSTEP =  250UL;       // LED blink period

Sensirion sht = Sensirion(dataPin, sclkPin);

uint16_t rawData;
float temperature;
float humidity;
float dewpoint;

byte ledState = 0;
byte measActive = false;
byte measType = TEMP;

unsigned long trhMillis = 0;             // Time interval tracking
unsigned long blinkMillis = 0;

void setup() {
    Serial.begin(9600);
    pinMode(ledPin, OUTPUT);
    delay(15);                           // Wait >= 11 ms before first cmd
    // Demonstrate blocking calls
    sht.measTemp(&rawData);              // sht.meas(TEMP, &rawData, BLOCK)
    temperature = sht.calcTemp(rawData);
    sht.measHumi(&rawData);              // sht.meas(HUMI, &rawData, BLOCK)
    humidity = sht.calcHumi(rawData, temperature);
    dewpoint = sht.calcDewpoint(humidity, temperature);
    logData();
}

void loop(){ 
    unsigned long curMillis = millis();          // Get current time

    // Rapidly blink LED.  Blocking calls take too long to allow this.
    if (curMillis - blinkMillis >= BLINKSTEP) {  // Time to toggle the LED state?
        ledState ^= 1;
        digitalWrite(ledPin, ledState);
        blinkMillis = curMillis;
    }

    // Demonstrate non-blocking calls
    if (curMillis - trhMillis >= TRHSTEP) {      // Time for new measurements?
        measActive = true;
        measType = TEMP;
        sht.meas(TEMP, &rawData, NONBLOCK);      // Start temp measurement
        trhMillis = curMillis;
    }
    if (measActive && sht.measRdy()) {           // Note: no error checkings
        if (measType == TEMP) {                  // Process temp or humi?
            measType = HUMI;
            temperature = sht.calcTemp(rawData); // Convert raw sensor data
            sht.meas(HUMI, &rawData, NONBLOCK);  // Start humidity measurement
        }
        else {
            measActive = false;
            humidity = sht.calcHumi(rawData, temperature); // Convert raw sensor data
            dewpoint = sht.calcDewpoint(humidity, temperature);
            logData();
        }
    }
}

void logData() {
    Serial.print("Temperature = ");
    Serial.print(temperature);

    Serial.print(" C, Humidity = ");
    Serial.print(humidity);

    Serial.print(" %, Dewpoint = ");
    Serial.print(dewpoint);
    Serial.println(" C");
}

Hi,
if you are using arduino UNO, then supply the SHT7X with +5V, as this is the level of the arduino UNO input/output pins.

This device support +5V. See datasheet.

Thanks for beneficial comment. I already tried that too. The interesting thing was even if I pull all the cables from micro controller the values were the same.

Good news is I got another sensor today and it worked. The sensor is oversensitive, I think I damaged it while soldering. Soldering iron was in contact for a 1 minutes in 3 minutes time period.

I will try to read values from the screen this weekend, will try it with stm32 as well.

I hope this topic will help people who has problem with this sensor.

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