jeudi 7 janvier 2021

Mesurer la température avec le capteur interne du STM32

Les microcontrôleurs STM32 comportent un capteur de température intégré, qu'on peut utiliser afin d'obtenir une mesure de la température ambiante.


Le sketch ci-dessous est un exemple tiré du STM32Duino Wiki. Je l'ai testé avec une carte STM32F103C "Blue Pill" ainsi qu'avec une carte Nucleo F030R8, toutes les deux programmées avec l'IDE Arduino et le core STM32 officiel (voir ce précédent article pour des informations concernant l'installation du core STM32 officiel).

-

-


Dans mon cas, les valeurs mesurées étaient supérieures à la température ambiante de plusieurs degrés (la mesure était de 26°C alors que la température ambiante était d'environ 20°C). 

Pour calculer la température, le sketch utilise les constantes V25 (tension à 25°C) et AVG_SLOPE (variation de tension correspondant à une variation de température de 1°C). La valeur de ces deux constantes provient des fiches techniques des microcontrôleurs STM32, mais ces valeurs peuvent varier considérablement d'un spécimen à l'autre.

Comme le montre le tableau ci-dessus, la valeur de 1430 assignée à la constante V25 n'est qu'une valeur moyenne. Pour une carte en particulier, elle peut prendre n'importe quelle valeur située entre 1340 et 1520. On a assigné à la constante AVG_SLOPE une valeur typique de 4300, mais sa valeur réelle pour la carte que vous utilisez peut se situer n'importe où entre 4000 et 4600.

Si vous désirez obtenir des valeurs de température raisonnablement précises, il faudra modifier la valeur de V25 et de AVG_SLOPE (ce qui implique de mesurer VRef pour quelques valeurs de températures mesurées au moyen d'un thermomètre fiable).

À lire également:

Yves Pelletier (TwitterFacebook

Aucun commentaire:

Enregistrer un commentaire