Sensiron SHT1x issues

I’m trying to build something that uses the SHT10 sensor from Sensiron. The sensor is powered from regulated 5V (the same is used for the processor). I use 4 sensors that share the same clock pin connected on aboyt 10m long cable.

I tested the two libraries available at http://playground.arduino.cc/Code/Sensirion . But the problem is that I get different result when I use them. With first (sensiron.h) I get

  • Zone 1: humidity= 0%, temperature= 0C
  • Zone 2: humidity= 22%, temperature=47C
  • Zone 3: humidity= 23%, temperature=41C
  • Zone 4: humidity= 22%, temperature=45C

And with the second (dht1x.h) I get:

  • Zone 1: humidity= 52%, temperature=21C
  • Zone 2: humidity= 48%, temperature=22C
  • Zone 3: humidity= 42%, temperature=23C
  • Zone 4: humidity= 46%, temperature=22C

There is a DHT11 sensor connected that shows Temperature: 21C, humidity: 38%, at the same time. Tried to switch the order of the used libraries (i.e. first get data from second, than from first), but the results are the same. And the sensiron library always fails on the first sensor with error code S_Err_CRC. Added 5 seconds delay between each sensor readings and still got the same result, increased 3 times the PULSE_LONG/PULSE_SHORT delays - still the same result.

So before I start debuging the library - I just wanted to ask for some ideas here as somebody may already have hit that issue.

The project I want to use the sensors for is a garden irrigating system monitoring the soil humidity and doing some irrigating corrections based on this. The current code is attached.

GardenBot.zip (10.1 KB)

Second time doing this - just posted the topic and found one of the answers - I've switch the temperature and the humidity variables. But still don't have the answer why the first sensor always fails with CRC error with the sensiron.h library.

All data pins are pulled up to the 5V pin with ~10k resistors?

does the second lib even check the CRC?

The data pins are not pulled up, I’ve left the libraries to deal with the pin configuration.

Not sure if the sht1x.h checks the CRC, but the library always gets similar results from all of the sensors. In about 1000 readings (each 5 minutes - 1 reading of the sensors) all data produced by the sht1x.h seems pretty close and there isn’t a single strange (faulty) reading. Quick look at the code shows just one skipCrcSHT function, so it looks like it is ignoring the CRC check.

With the sensorion.h library - I’ve always get the CRC error on the 1st sensor and the other sensors work fine.

So do I need to pull up the data pins? I don’t see much point in them as everything seems to work fine without them. I suppose there is a chance the pull up resistor is inside the sensor housing, it is like the one on the image below. I’ll check to see if this is so.

I’ll experiment a bit to see if I can add the CRC check to the sht1x library and see if the 1st sensor fails the CRC check with it.

sensor.jpg

So do I need to pull up the data pins?

you get definitely better signals if you do...