cancel
Showing results for 
Search instead for 
Did you mean: 

The STTS22 temperature sensor gives me back 0 °C

SSerg.4
Associate II

Hello everyone,

after some time that I use the sensor, it gives me back a temperature value of 0 °C.

I'm using a library taken from github that I adapted to work with the STM32F407 microcontroller (can't post the link).

The sensor works well but sometimes (not always) it "fails" and gives me back the value 0 °C. To "fix" it I have to reboot the whole system. Can anyone give me an explanation? Why is this happening?

I use STM32F407 microcontroller.

Thank you.

3 REPLIES 3
Federica Bossi
ST Employee

Hi @Community member​ ,

Welcome to ST Community!

Could you please give me more details about the modification you did on the library taken from github?

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.
SSerg.4
Associate II

Gentile Ing. Bossi,

mi permetta di scriverLe in italiano per poterle spiegare meglio il mio problema.

Ho utilizzato una libreria disponibile su github (stm32duino/STTS22H: Arduino library to support the STTS22H digital temperature sensor (github.com)).

Tale libreria è stata pensata per funzionare con il framework Arduino.

Io invece devo usare il sensore sul microcontrollore della ST ed è per questo che ho dovuto modificare la libreria. La logica è comunque rimasta la stessa, ho dovuto solamente modificare le funzioni di lettura e scrittura su I2C (classe Wire di Arduino) e poco altro.

Il sensore funziona bene ma avvolte, dopo un po' di tempo di utilizzo, mi trasmette un valore di temperatura pari a 0° C.

Ho notato che quando succede ciò i registri del sensore sono settati in modo diverso da come vengono settati all'inizializzazione. Infatti reinizializzando il dispositivo tutto torna a funzionare correttamente.

Il mio sospetto è che un abbassamento di tensione sulla linea dei 3.3 volt (il mio progetto è alimentato a batteria) possa portare il sensore ad uno stato indeterminato e quindi trasmettere un valore errato (0°C appunto). Se fosse ciò, comunque, è l'unico dispositivo che risente di queste cadute di tensione. Da datasheet il sensore può essere alimentato fino ad una tensione di 1.5V.

Al momento ogni volta che il sensore mi restituisce un valore di 0°C controllo il valore dei registri e, se qualcosa non quadra, reinizializzo il dispositivo. Questa però è un azione tampone che uso per risolvere il problema ma mi piacerebbe evitarlo.

Può aiutarmi?

Esiste una versione ufficiale della libreria in c o c++?

Il sensore ha solo un condensatore di 100nF tra Vdd e GND, il pin ALERT / INT non è collegato e il pin Addr è collegato a GND.

Garzie.

Stefano Sergi.

Dear Eng. Bossi,

I used a library available on github (stm32duino/STTS22H: Arduino library to support the STTS22H digital temperature sensor (github.com)).

This library was designed to work with the Arduino framework.

Instead I have to use the sensor on the ST microcontroller and that's why I had to modify the library. The logic however remained the same, I only had to modify the reading and writing functions on I2C (Arduino Wire class) and little else.

The sensor works well but sometimes, after some time of use, it sends me a temperature value of 0° C.

I noticed that when this happens the sensor registers are set differently than they are set at initialization. In fact, by reinitializing the device everything goes back to working correctly.

My suspicion is that a voltage drop on the 3.3 volt line (my project is battery powered) could bring the sensor to an indeterminate state and therefore transmit an incorrect value (0°C in fact). If this were the case, however, it is the only I2C slave device that is affected by these voltage drops. From the datasheet the sensor can be powered up to a voltage of 1.5V.

At the moment, every time the sensor gives me a value of 0°C I check the value of the registers and, if something isn't right, I reinitialize the device. However, this is a buffer action that I use to solve the problem but I would like to avoid it.

Can you help me?

Is there an official version of the library in c or c++?

The sensor only has a 100nF capacitor between Vdd and GND, the ALERT/INT pin is not connected and the Addr pin is connected to GND.

Thanks.

Stefano Sergi.