Outils pour utilisateurs

Outils du site


arduino:fabrication_d_un_voltmetre

Fabrication d'un voltmètre


Projet réalisé par Stéphane LAURENT professeur de physique-chimie et Sylvie BERNARD-VILLAIN technicienne de laboratoire au lycée Valin de La Rochelle.

Présentation

  • Pour palier à l'absence de cartes d'acquisition dans notre lycée, nous avons réuni dans un boitier une carte Arduino Uno et les composants nécessaires à la mesure d'une tension.
  • Avec le câble usb, les mesures peuvent être enregistrées sur un ordinateur par l’intermédiaire d'une interface graphique.
  • Nous l'utilisons principalement pour l'étude d'un circuit RC en spécialité de terminale.

Les tensions mesurées doivent êtres positives est comprise entre 0 et 12 V.
Ce voltmètre n'est pas adapté pour mesurer des tensions dont la valeur varie très rapidement.

Les principaux composants

Résistances de 100kΩ et de 1MΩ
0,691 €
Diode 1N4148
0,06 €
Arduino Uno
23,90 €
Boitier
10,87 €
Fiches bananes
  • Les prix indiqués sont à titre indicatif et sont susceptibles de varier selon le fournisseur.

Schéma du voltmètre

  • Un Arduino Uno ne peut mesurer que des tensions comprises entre 0 et 5V. Nous avons donc ajouté un pont diviseur de tension constitué de deux résistances dont les valeurs ont été choisis pour mesurer des tensions entre 0 et 12V.

  • Le rôle de la diode est de protéger l'Arduino si le branchement du voltmètre est inversé.


Complément sur la mesure d'une tension à l'aide d'un Arduino Uno

Pour comprendre le choix des résistances, voici un rapide rappel sur la mesure d'une tension avec un Arduino.

  • Pour lire la valeur sur l'entrée analogique A0, il faut utiliser l'instruction :
int valeurLue = analogRead(A0);
  • La variable valeurLue contient une valeur comprise entre 0 et 1023 car le convertisseur analogique-numérique (CAN) de l’Arduino est de 10 bits, soit 210 = 1024 valeurs possibles.
  • Pour calculer la tension correspondante, il faut une tension de référence : 5 V par défaut sur l’Arduino. Par exemple, si valeurLue = 1023 alors la tension correspondante est de 5 V. Par un simple calcul de proportionnalité on peut alors déterminer toutes les tensions entre 0 et 5 V :


  • La précision d'une mesure sera donc de 5,0/1024 ≈ 4,9 mV.

  • Pour obtenir une meilleur précision, il est possible de modifier la tension de référence à 1,1 V, en plaçant en début de script l'instruction :
analogReference(INTERNAL) ;
  • La précision est maintenant de 1,1/1024 ≈ 1,1 mV.

L'arduino ne pouvant maintenant mesurer que des tensions entre 0 et 1,1 V, il faut choisir un couple de valeur pour les résistances du pont diviseur de tension qui permettent d'abaisser la tension maxi de 12 à 1,1 V.

  • Dans un pont diviseur de tension, nous avons la relation :

  • Si Us = 1,1 V et Ue = 12 V, on peut choisir R1 = 1 MΩ et R2 = 100 kΩ. le rapport R2 /(R1 + R2) = 0,0909 ou (R1 + R2) / R2 = 11
  • On remarque que 12 x 0,0909 = 1,09 c'est bien une valeur inférieure à 1,1 V.

La tension mesurée, en tenant compte du pont diviseur de tension, est donc donnée par la relation :

Pour davantage d'information sur le pont diviseur de tension : Diego Yourself


Calibration

A cause de la précision des résistances utilisées et/ou de la valeur de la tension de référence (1,1 ± 0,1 V) qui n'est pas fixe, la tension mesurée avec ce montage peut légèrement différer de la tension mesurée avec un voltmètre de référence. Pour palier à ce problème, on peut utiliser un coefficient de calibration.
Pour cela :

  • mesurer la tension de référence URéf avec un voltmètre étalon.
  • mesurer la tension UArduino avec le voltmètre Arduino.
  • le coefficient de calibration est le rapport URéf / UArduino, elle est à saisir dans le script dans la variable calibration. Par défaut, elle vaut 1.
float calibration = 1;

La tension mesurée à l'aide de notre montage, en tenant compte du coefficient de calibration, est donc :


Le code Arduino

Cliquez pour afficher le code

Cliquez pour masquer le code

/*
   Mesure d'une tension comprise entre 0 et 12V
   LAURENT Stéphane - Lycée valin (17)
   10/12/2023
*/
 
unsigned long tempsPrecedent = 0;
float intervalle = 500;         // durée entre deux mesures en ms
float date = 0;                 // date de la mesure
float calibration = 1.0;        // modifier le coefficient de calibration si nécessaire
float tension = 0;              // tension mesurée
float valeurLue = 0;            // valeur lue sur l'entrée A0
float sommeValeurLue = 0;       // somme de toutes les mesures  sur l'entrée A0
int nbrValeur = 0;              // Nombre de mesures sur l'entrée A0
 
void setup() {
 
  // Initialise la communication avec le PC
  Serial.begin(115200);
 
  // Utilisation de la tension de référence interne de 1.1V
  analogReference(INTERNAL);
 
  Serial.println("Ok");  // Envoyé au PC pour l'informer que l'initialisation est terminée
  delay(100);
}
 
 
void loop() {
 
  unsigned long tempsCourant = millis();  // cette variable contient le nombre de millisecondes depuis que le programme a démarré.
 
  if (tempsCourant - tempsPrecedent >= intervalle) {
    tempsPrecedent = tempsCourant;
 
    // envoie la date sur la liaison série
    Serial.print(date);
    Serial.print(" ");  // les données sont séparées par des espaces.
 
    // Faire la moyenne des valeurs mesurées et transformer valeurLue en tension comprise entre 0 et 1,1 V
    tension = (sommeValeurLue / nbrValeur) * 1.1 / 1023;
 
    // Envoie la mesure au PC en tenant compte du pont diviseur de tension et de la calibration
    Serial.println(tension * 11 * calibration);  // (R1 + R2)/R2 = 11
    delay(10);
 
    // mise à jour de la date
    date = (date + intervalle / 1000);
 
    // remise à zéro pour les mesures sur A0
    sommeValeurLue = 0;
    nbrValeur = 0;
  }
 
  // pour faire la moyenne des mesures
  valeurLue = analogRead(A0);  // Mesure la tension sur la broche A0 (de 0 à 1023)
  sommeValeurLue += valeurLue;
  nbrValeur += 1;
}




Quelques photos


Ce voltmètre peut être réalisé sans boitier ni diode de protection.


Stéphane LAURENT

Statistiques du site

  • Cette page a été consultée par 2 visiteurs aujourd'hui.
  • Cette page a été consultée par 273 visiteurs depuis le 06/12/2023.
arduino/fabrication_d_un_voltmetre.txt · Dernière modification : 23/06/2024 15:40 de Stéphane LAURENT

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki