Go Down

Topic: Honeywell barometric pressure sensor (I2C): diagnostic condition??? (Read 1 time) previous topic - next topic

sokopok

Ok, so I made a tiny mistake: the first resistors I use were 3.9K. Anyway, No matter what kind of resistors I use (I tried 1K, 3.9K, 4.7K, 10K, even 100K), things stay the same... Always the diagnostic code...

I do notice that using higher valued resistors, the temperature reported by the pressure sensor and an independant temperature sensor get closer together. This morning they were +- 1.2°C apart, now with 10K resistors only 0.1°C, with 100K resistors max 0.05°C. I find this a bit puzzling because I was thinking: the pressure sensor gets a little bit too much power, so probably it heats up inside, giving a reading which is a bit higher, but now the temperature sensor gives the same results... Weird.

Well I suppose that's why one would go to school for 5 years to become an electronics engineer (instead of just reading a couple of datasheets =)...

I did send a message to honeywell, requesting info on this problem, but I haven't gotten an answer yet (if I ever will). If it works like this, that's good enough for me. I will try the level shifting thingie, but I don't have any mosfets right now, so that's for the future.

Thanks for your help!

pylon

Quote
Ok, so I made a tiny mistake: the first resistors I use were 3.9K. Anyway, No matter what kind of resistors I use (I tried 1K, 3.9K, 4.7K, 10K, even 100K), things stay the same... Always the diagnostic code...


I didn't expect that to change by changing the pull-ups.

Quote
I do notice that using higher valued resistors, the temperature reported by the pressure sensor and an independant temperature sensor get closer together. This morning they were +- 1.2°C apart, now with 10K resistors only 0.1°C, with 100K resistors max 0.05°C. I find this a bit puzzling because I was thinking: the pressure sensor gets a little bit too much power, so probably it heats up inside, giving a reading which is a bit higher, but now the temperature sensor gives the same results... Weird.


This is not so weird. The lower the resistor, the higher the current that is sinked inside the chip. The majority of that current is transformed into heat which warms up the chip. Because the pressure is temperature dependent (that's why there's a temperature sensor inside to compensate) both values change a bit. 1.2° with a 1k resistor, with a 4k7 you probably get about the same difference as with the 10k. Is your comparing sensor precise enough for 0.05°C?

Quote
I will try the level shifting thingie, but I don't have any mosfets right now, so that's for the future.


I think you can save that time. You can communicate with the device and the level shifter does nothing better, in contrary, you might get new problems.

sokopok

Quote
I didn't expect that to change by changing the pull-ups.

Me neither, I just thought I'd mention it.

Quote
The lower the resistor, the higher the current that is sinked inside the chip.

Yes, that's why I find it weird: the higher the resistor value, the higher the reported temperature (on the pressure sensor, the temperature sensor always gives +- the same result).

Quote
Is your comparing sensor precise enough for 0.05°C?

No it is not. It's only accurate to 0.5°C. I was just reporting the returned values...

Quote
I think you can save that time. You can communicate with the device and the level shifter does nothing better, in contrary, you might get new problems.

Ok. I'll keep that in mind. But one arduino will not be enough (I need +- 10 sensors, some relays, ethernet, SD, maybe some stuff I haven't thought of yet... so 30K memory might be a bit small: last compile was 28K, maybe I should drop the logging...). So I was thinking of linking 2 or 3 together, probably also using I2C, so I will need a 3.3V and a 5V I2C connection (I think). Any other problems that will arise, I'll deal with at that time.

I got a reply from Honeywell: they sent me the datasheets I attached in the first post !? So I'll try that again. I would like this to work the way it was intended...

pylon

Quote
so I will need a 3.3V and a 5V I2C connection


Why? All the connected devices pull the bus lines to GND if necessary and let the pull-ups pull it to 3V3 in the case of a logical high. All Arduinos will recognize 3V3 as a logical high, so there is no need to use a higher (5V) voltage bus.

Quote
Yes, that's why I find it weird: the higher the resistor value, the higher the reported temperature (on the pressure sensor, the temperature sensor always gives +- the same result).


You didn't mention in which direction the offset was, so I was assuming that the internal temperature sensor in the pressure sensor was delivering a higher value with a lower pull-up resistor.

sokopok

Quote
Why? All the connected devices pull the bus lines to GND if necessary and let the pull-ups pull it to 3V3 in the case of a logical high. All Arduinos will recognize 3V3 as a logical high, so there is no need to use a higher (5V) voltage bus.

Good to know.

Quote
You didn't mention in which direction the offset was, so I was assuming that the internal temperature sensor in the pressure sensor was delivering a higher value with a lower pull-up resistor.

Sorry, that was a bit unclear.

I replied to the mail I got from Honeywell, asking them for more info. We'll see what they come up with...

Go Up