Reply
Highlighted
Posts: 4
Registered: ‎09-12-2015

Si7020 temperature about 4-8 degC higher than board temp.

I have a handful of identical boards all with SI7020's.  I've done the layout carefully so as to avoid thermal coupling with MCU and LDO.  The center pad is connected.  I've confirmed the board temperature and chip temperature of the SI7020 to be about 22.5C using an infrared thermometer.  Ambient room temperature is about .5C lower than PCB temperature.  CPU temperature is about 23.5. 

 

However, the I2C is returning a temperature of about 29.5C.  The error among my handful of boards seems to range approximately 4-8C but is consistent for each board... 

 

I have read the USER1 register which returns 0x3a and indicates that the heater is not turned on.

 

I have read the serial number and it seems incorrect:

 

SI7020_Init: Serial A is: 3ffffbe0

SI7020_Init: Serial B is: 0

 

After a temperature read using the 0xe3 temperature read command and using I2C clock stretch, the 16 bit data returned (every minute) looks like:

 

SI7020_GetTemperature: datum is: 0x6f 0x48

SI7020_GetTemperature: datum is: 0x6f 0x50

SI7020_GetTemperature: datum is: 0x6f 0x50

SI7020_GetTemperature: datum is: 0x6f 0x54

 

 

After power up, I issue the 0xfe RESET command, then wait 15ms per the data sheet max time and then send a 0xe3.  Subsequently, I only ever issue 0xe3 to read, only resetting the first time after power up.

 

I believe I have eliminated thermal coupling as the cause.  The parts were reflowed in a toaster oven while covered with foil.  The white teflon on top of the part appears undamaged..

 

Is it possible the calibration data is incorrect?  Is there a way to recalibrate the part in-situ?

Posts: 59
Registered: ‎04-09-2015

Re: Si7020 temperature about 4-8 degC higher than board temp.

I cannot think of way the parts would be out of spec like this.

 

Can you read out the following memory locations?

 

0x0E - 0x1B

 

0x6E 0x6F

 

The numbers in 0x0E - 0x1B should be the same on all parts and the numbers in 0x6E and 0x6F will vary from part to part.

 

It would be easier for me if you can enter this as a technical support request rather than the user forum as I do not always monitor the forum.

Posts: 59
Registered: ‎04-09-2015

Re: Si7020 temperature about 4-8 degC higher than board temp.

I should have told you

 

To read a memory location use the command 0x84. So
start 0x40 write 0x84 repeated_start 0x40 read data stop

Posts: 4
Registered: ‎09-12-2015

Re: Si7020 temperature about 4-8 degC higher than board temp.

It's ok. I have a million things on the go as well and this project is a distraction...

 

I was playing around with it some more this morning and I clearly have some thermal coupling going on somewhere.   Immediately after powerup the temperature reading is about 4deg high and then after a minute or so, it creeps up to about 9deg high.  The top of the chip says it's only about a degree higher than ambient but under the board it's very hot, 9+ deg higher than ambient.  I didn't realize these things drew so much current.

 

I tried to read 0e-1b and 6e/6f but must not be doing it correctly...

 

This is what I'm getting:

 

0x0e: 0x80
0x0f: 0x00
0x10: 0xff
0x11: 0x00
0x12: 0xff
0x13: 0x00
0x14: 0xff
0x15: 0x00
0x16: 0xff
0x17: 0x00
0x18: 0xff
0x19: 0x00
0x1a: 0xff
0x1b: 0x00
0x6f: 0x0000

 

First off, I'm using address 0x80 instead of 0x40.    But I  must not be handling the start/stop correctly.

 

I'll dig out my logic analyzer tomorrow any try to puzzle it out.

Posts: 4
Registered: ‎09-12-2015

Re: Si7020 temperature about 4-8 degC higher than board temp.

Well, I must not be getting this right.  I can't seem to read from those locations.  I've tried to exactly implement the read sequence per the datasheet (section 5.4, read firmware revision) and all I seem to get is 0xff for firmware revision and for locations 0xe - 0x1b ... 

Posts: 59
Registered: ‎04-09-2015

Re: Si7020 temperature about 4-8 degC higher than board temp.

My earlier instruction was incomplete.

 

The Si7020 uses a 7 bit address 0x40 the 8t bit is the read/write flag. The full read sequence would be

 

start 0x40 0 ack 0x84 ack register ack repeated_start 0x40 1 ack data nack stop

 

The heating issue is very odd. The Si7020 draws less than 1uA when no conversion is in process and only a few 100uA for the 10-20 msec conversion times. 

Posts: 4
Registered: ‎09-12-2015

Re: Si7020 temperature about 4-8 degC higher than board temp.

ok. I got it. It was a dumb mistake...

 

The heating issue is odd.  If I put the bottom of the board against my upper lip, it definitely feels hot right under the SI7020.  I only have 10k pullups on the I2C lines.  I have the SI7020 on an island, relative to other heat generation sources on the board so maybe it's not able to dissipate heat.  I wouldn't expect it to get that warm with only a few uA...

 

Here's what I've got:

 

 

SI7020_Init:

User 1 says: 0x3a
FWREV: 0x20
0x0e: 0xee
0x0f: 0x38
0x10: 0xf2
0x11: 0x35
0x12: 0x01
0x13: 0x20
0x14: 0x10
0x15: 0x64
0x16: 0xe2
0x17: 0x0c
0x18: 0x4c
0x19: 0x2a
0x1a: 0x5a
0x1b: 0x4a

0x6e: 0x75
0x6f: 0x00

Posts: 59
Registered: ‎04-09-2015

Re: Si7020 temperature about 4-8 degC higher than board temp.

This data says the calibration data is correct.

 

We need to track down the heating source so I think the next step is to review schematics.

 

Rather than do this on the forum can you enter a technical support request? Please go to

 

http://www.silabs.com/support/Pages/default.aspx

 

and click the link for create a support request. Specify the part number as Si7020 and the request will come to me. If you can attach a schematic I can review it.