I've build the Si7020 into a STM32F405 based board and the calculated temperature seems to be misbehaving. The devices were soldering using a UV reflow oven and I think they might have been damaged. I have four devices all reading about the same.
They seem to start off, after a prolonged period of being powered off, at about the correct temp, but that just seems to keep increasing. I haven't used the heater in my code, and a prototype that is just soldered to the required wires and uses the same firmware code behaves as expected.
Having read the heater on bit in the user reg, it seems to be off, so I don't think it's that. The I2C resistors are 2k2, not 10k. I'll swap them later to see if that helps. The large ground pad in the on the underside of the IC is soldered but no connected to ground (floating) unless there is a solder bridge I can't see.
the internal temperature sensor, obviously, reads the temperature of the chip, not the ambient. That the chip get about 10 degrees warmer than ambient seems reasonable.
The large ground pad in the on the underside of the IC is soldered but no connected to ground (floating) unless there is a solder bridge I can't see
connecting that (thermally) should bring you closer to ambient
thanks for your reply. Can you please clarify what you mean by connecting thermally?
The attached chart shows the temperature rising over the course of about 20-30 minutes.
thermal connect is "the ground [plane work as as a heat sink"
you can connect thermally by soldering, for your purpose the thermal connection is equally/more important than the electrical
Thermal design of your PCB is important for all the reasons Erikm mentioned. Since the device is soldered to the PCB, there will be thermal coupling between the device and the PCB. Careful design of the PCB can be taken to reduce the thermal coupling between the device and other parts on the PCB. Any devices that might generate heat such as MCU's or power regulators should be placed as far away as possible on the PCB.
I acknowledge that the PCB could have been better designed, and I am sure a V2 will be needed, but the board does not run even remotely warm, let alone hot and I am struggling to see where a 10C increase in ambient could be coming from. I'm going to try the device on 100mm long wires and get it off of the board to see what happens.
I am struggling to see where a 10C increase in ambient could be coming from
there is no ambient increase. The chip heats up when you run it, and, if not sufficiently heatsinked, 10 degrees above ambient seems a reasonable increase.
the temp sensor does not measure ambient, it measures THE CHIP temperature.
Solved. Ambient is now approx. 22C and I can read below 0 and well above 100 with confidence.
please enlighten us, how?
The solution was to move it some 2 inches (50mm) off the board by using a 4-way ribbon cable. That has at least proved that the device can operate as expected.
However, I think that the actual issue was the devices proximity to a 3v3 LDO regulator. It was very slightly warmer than the surrounding board and given that the Si7020 was only about 1/2" from the LDO I assume that it was influencing the measured temperature.
I will need to design a new board with improved thermal isolation and probably some isolation slots too. A keep out for the ground plane and probably simple track connections to the pads and not floods too.