Utilisation de microcontrôleurs et d'outils numériques

2ndePhysique-ChimieSignaux et capteurs électriquesUtilisation de microcontrôleurs et d’outils numériques~9 min de lecture

Microcontrôleurs et outils numériques pour mesurer avec des capteurs

Un capteur transforme une grandeur physique (température, lumière…) en tension électrique ; le microcontrôleur convertit cette tension en nombre grâce à son convertisseur analogique-numérique, puis un programme calcule, affiche ou commande une action.

Objectifs

  • Décrire une chaîne de mesure : capteur, microcontrôleur, programme, affichage ou action.
  • Comprendre le rôle d'un capteur résistif monté dans un diviseur de tension.
  • Convertir une valeur numérique lue par le microcontrôleur en tension, et inversement.
  • Utiliser une droite d'étalonnage pour obtenir la grandeur mesurée.
  • Lire et compléter un programme simple de mesure.

1. La chaîne de mesure

Les maillons de la chaîne

  • Le capteur : il transforme une grandeur physique (température, lumière, distance, humidité) en grandeur électrique, le plus souvent une tension.
  • Le microcontrôleur (par exemple une carte Arduino) : un petit ordinateur sur une seule puce. Il lit la tension sur une entrée analogique et la convertit en nombre.
  • Le programme : il dit au microcontrôleur quoi faire du nombre (calculer, comparer, enregistrer).
  • La sortie : affichage sur un écran ou un ordinateur, ou action d'un actionneur (LED, moteur, buzzer).
Chaîne de mesure : un capteur envoie une tension au microcontrôleur, qui la convertit en nombre puis l'envoie vers un écran ou un actionneur Capteur Température U Micro- contrôleur CAN : U devient N de 0 à 1023 Écran ou LED

Étape 1 : le capteur produit une tension U qui dépend de la grandeur mesurée ; elle arrive sur une entrée analogique du microcontrôleur.

Étape 2 : le convertisseur analogique-numérique (CAN) transforme la tension U en un nombre entier N.

Étape 3 : le programme utilise N pour afficher une valeur ou commander une action (allumer une LED, un ventilateur…).

Dans un arrosage automatique, quel est le rôle du capteur d'humidité du sol ?

  1. Il ouvre la vanne d'eau.
  2. Il transforme l'humidité du sol en tension électrique.
  3. Il écrit le programme.
Le capteur transforme une grandeur physique en grandeur électrique. C'est le microcontrôleur, grâce au programme, qui décide d'ouvrir la vanne (l'actionneur).

2. Capteurs résistifs et diviseur de tension

Certains capteurs sont des capteurs résistifs : leur résistance change avec la grandeur mesurée.

  • Photorésistance (LDR) : sa résistance diminue quand la lumière augmente.
  • Thermistance CTN : sa résistance diminue quand la température augmente.

Le microcontrôleur ne mesure pas directement une résistance : il mesure une tension. On place donc le capteur dans un diviseur de tension, avec une résistance fixe \(R_1\), alimenté par \(E = 5\ \text{V}\). La tension aux bornes du capteur de résistance \(R_2\) vaut :

\[ U_s = E \times \frac{R_2}{R_1 + R_2} \]

Exemple résolu 1

\(E = 5\ \text{V}\), \(R_1 = 10\ \text{k}\Omega\). En plein jour, la photorésistance vaut \(R_2 = 10\ \text{k}\Omega\) ; dans l'obscurité, \(R_2 = 100\ \text{k}\Omega\). Calcule \(U_s\) dans les deux cas.

Cherche d'abord, puis vois la solution
En plein jour : \(U_s = 5 \times \dfrac{10}{10 + 10} = 5 \times 0{,}5 = 2{,}5\ \text{V}\).
Dans l'obscurité : \(U_s = 5 \times \dfrac{100}{10 + 100} = \dfrac{500}{110} \approx 4{,}55\ \text{V}\).
Conclusion : quand il fait sombre, \(U_s\) augmente. Le programme peut allumer la lampe si \(U_s\) dépasse un seuil, par exemple 4 V.

Fais varier \(R_1\) (en k\(\Omega\)) : la courbe donne \(U_s\) (en V) selon la résistance du capteur \(x\) (en k\(\Omega\)).

Une thermistance CTN est placée en \(R_2\) dans le diviseur. Quand la température augmente, la tension \(U_s\) :

  1. diminue
  2. augmente
  3. reste la même
Pour une CTN, la résistance \(R_2\) diminue quand la température monte. Avec \(U_s = E \times \dfrac{R_2}{R_1 + R_2}\), \(U_s\) diminue aussi : sur le graphique, \(U_s\) baisse quand \(x\) diminue.

3. Du signal analogique au nombre : la conversion

Un signal analogique peut prendre toutes les valeurs (par exemple n'importe quelle tension entre 0 et 5 V). Un signal numérique ne prend qu'un nombre limité de valeurs, codées en binaire avec des bits.

  • Un convertisseur de \(n\) bits donne \(2^n\) valeurs possibles.
  • Sur une carte Arduino Uno, le CAN est sur 10 bits : \(2^{10} = 1\,024\) valeurs, de \(N = 0\) (pour 0 V) à \(N = 1\,023\) (pour 5 V).
  • La plus petite variation détectable, la résolution, vaut environ \(\dfrac{5\ \text{V}}{1\,024} \approx 4{,}9\ \text{mV}\).

Pour retrouver la tension à partir du nombre lu :

\[ U = N \times \frac{5}{1\,023} \]

Exemple résolu 2

Le microcontrôleur lit \(N = 512\). Quelle tension arrive sur l'entrée ?

Cherche d'abord, puis vois la solution
Étape 1 : \(U = 512 \times \dfrac{5}{1\,023}\).
Étape 2 : \(U = \dfrac{2\,560}{1\,023} \approx 2{,}50\ \text{V}\).
Étape 3 : cohérence : 512 est à peu près la moitié de 1 023, donc la tension est à peu près la moitié de 5 V.

Combien de valeurs différentes peut donner un convertisseur de 8 bits ?

  1. 8
  2. 16
  3. 256
\(2^8 = 256\) valeurs, numérotées de 0 à 255.

4. Étalonner un capteur

Pour un capteur dont la tension varie de façon proportionnelle à la grandeur, on trace la droite d'étalonnage. Par exemple, le capteur de température LM35 fournit \(10\ \text{mV}\) par degré Celsius :

\[ U = k \times \theta \quad \text{avec} \quad k = 10\ \text{mV} \cdot {}^\circ\text{C}^{-1} \]

Fais varier \(k\) : la droite donne \(U\) (en mV) selon la température \(x\) (en °C). Plus \(k\) est grand, plus le capteur est sensible.

Exemple résolu 3

Le LM35 placé dans la salle de classe à Niamey délivre \(U = 0{,}34\ \text{V}\). Quelle est la température ?

Cherche d'abord, puis vois la solution
Étape 1 : conversion : \(U = 0{,}34\ \text{V} = 340\ \text{mV}\).
Étape 2 : \(\theta = \dfrac{U}{k} = \dfrac{340}{10} = 34\ {}^\circ\text{C}\).
Étape 3 : vérifie sur le graphique : avec \(k = 10\), la droite passe par 340 mV pour \(x = 34\).

Avec un LM35 (\(10\ \text{mV}\) par °C), quelle tension attend-on à \(25\ {}^\circ\text{C}\) ?

  1. \(25\ \text{V}\)
  2. \(0{,}25\ \text{V}\)
  3. \(2{,}5\ \text{V}\)
\(U = 10 \times 25 = 250\ \text{mV} = 0{,}25\ \text{V}\).

5. Programmer la mesure et utiliser les outils numériques

Un programme Arduino contient deux parties : setup, exécutée une seule fois au démarrage, et loop, répétée en boucle. Voici un programme qui lit le LM35 branché sur l'entrée A0 et affiche la température sur l'ordinateur :

void setup() {
  Serial.begin(9600);            // ouvre la liaison avec l'ordinateur
}
void loop() {
  int N = analogRead(A0);        // nombre entre 0 et 1023
  float U = N * 5.0 / 1023.0;    // tension en volts
  float temp = U * 100.0;        // LM35 : 10 mV par degre
  Serial.println(temp);          // affiche la temperature
  delay(1000);                   // attend 1 seconde
}
flowchart LR
  A[Demarrage setup] --> B[Lire N sur A0]
  B --> C[Calculer U]
  C --> D[Calculer la temperature]
  D --> E[Afficher]
  E --> F[Attendre 1 s]
  F --> B

Les autres outils numériques

  • Le tableur : on y recopie les mesures pour tracer une courbe et trouver la droite d'étalonnage.
  • Le smartphone : il contient des capteurs (accéléromètre, luxmètre, micro) que des applications de mesure permettent d'utiliser en classe.
  • Le langage Python : il permet de traiter des séries de mesures et de tracer des graphiques.

À toi de légender

Place les noms sur le montage : capteur, carte microcontrôleur, câble USB, ordinateur.

Montage de mesure à légender : un capteur relié par trois fils à une carte microcontrôleur, elle-même reliée par un câble à un ordinateur

Dans un programme Arduino, quelle partie est répétée sans arrêt ?

  1. setup
  2. Serial.begin
  3. loop
setup s'exécute une seule fois au démarrage ; loop se répète en boucle tant que la carte est alimentée.

Erreurs fréquentes

Récapitulatif

  • Chaîne de mesure : capteur, microcontrôleur avec son CAN, programme, affichage ou actionneur.
  • Capteur résistif dans un diviseur de tension : \(U_s = E \times \dfrac{R_2}{R_1 + R_2}\).
  • CAN de \(n\) bits : \(2^n\) valeurs ; sur 10 bits et 5 V : \(U = N \times \dfrac{5}{1\,023}\).
  • Étalonnage : relation entre tension et grandeur, par exemple \(U = k \times \theta\) pour le LM35.
  • Programme : setup une fois, loop en boucle ; tableur et Python pour exploiter les mesures.
Capteur
Transforme une grandeur physique en grandeur électrique (souvent une tension).
Microcontrôleur
Petit ordinateur sur une puce qui lit, calcule et commande selon un programme.
Diviseur de tension
\(U_s = E \times \dfrac{R_2}{R_1 + R_2}\)
CAN 10 bits
\(2^{10} = 1\,024\) valeurs ; \(U = N \times \dfrac{5}{1\,023}\).
Étalonnage
Relation entre la tension du capteur et la grandeur mesurée, ex. \(U = k \times \theta\).
setup et loop
setup : une fois au démarrage ; loop : répété en boucle.

Teste tes connaissances sur ce cours

Crée ton compte gratuitement pour accéder aux quiz associés et suivre ta progression.