dimanche 10 mars 2019

Mesure d'une tension analogique avec une carte STM32

N.B.: Ce billet a été mis à jour le 10 novembre 2019 afin de tenir compte des particularité du nouveau STM32 Core.

Les cartes STM32 comportent plusieurs entrées analogiques qui peuvent mesurer une tension située entre 0 et 3,3 V avec une résolution de 12 bits (la valeur mesurée varie donc entre 0 et 4095, ce qui permet en principe de distinguer entre elles deux tensions séparées d'aussi peu que 1 mV).

(Par comparaison, l'Arduino Uno comporte 6 entrées analogiques qui peuvent mesurer une tension située entre 0 et 5 V avec une résolution de 10 bits (0 à 1023) ou 5 mV.)

Dans ce court tutoriel, nous lirons une entrée analogique en programmant une carte STM32 avec l'IDE Arduino; vous devez donc avoir préalablement installé le STM32 Core au moyen du gestionnaire de cartes (instructions détaillées ici).


Entrées analogiques de la Blue Pill STM32F103

Les 10 broches de la Blue Pill qui peuvent être utilisées comme entrées analogiques sont: A0, A1, A2, A3, A4, A5, A6, A7, B0 et B1.
Attention: contrairement à plusieurs autres broches de la Blue Pill (qui tolèrent officiellement des tensions de 5 V), la tension à chacune de ces 10 broches pouvant servir d'entrée analogique ne doit en aucun cas dépasser 3,3 V.

Entrées analogiques du Nucleo F030R8

Sur ma carte Nucleo F030R8, j'ai pu utiliser avec succès les broches PA0, PA1, PA4, PA6, PB0, PC1, PC2, PC3, PC4 et PC5. Les broches PA5, PA7 et PB1 sont en principes reliées à un ADC, mais je n'ai pas réussi à leur faire lire une tension analogique.
Entrées analogiques de la STM32F030 Demo Board

Sur ma STM32F030 Demo Board, les entrées analogiques sont PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7 et PB1.
Circuit

Pour expérimenter la mesure d'une tension, j'ai branché un potentiomètre de 10 k à une des entrées analogiques de la carte. Les autres de broches du potentiomètre, bien entendu, sont reliées à GND et 3,3 V.

Pour que les valeurs mesurées soient acheminées vers le moniteur série de l'IDE Arduino, la Blue Pill et la Demo Board doivent être branchés à l'ordinateur au moyen d'un convertisseur USB-série: dans le cas de la Blue Pill, la transmission série s'effectue par la broche A9, alors qu'il s'agit de la broche PA2 pour la Demo Board. En ce qui concerne la carte Nucleo, il s'agit qu'elle soit branchée à un port USB de l'ordinateur.



Sketch

Sans trop de surprise, c'est l'instruction "analogRead()" qui permet de prendre la mesure de la tension.  Mais attention: pour profiter de la pleine résolution du convertisseur analogique-numérique du STM32, il faut ajouter l'instruction "analogReadResolution(12)" dans la partie setup (sinon, par défaut, la résolution sera limitée à 10 bits, comme pour les cartes Arduino conventionnelles).

En tournant le potentiomètre, vous pouvez faire varier la valeur mesurée entre 0 et 4095.


-
-

Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire