Labo - Mesure de la capacité d'un condensateur

Objectif

  • Expérimentation de la charge d’un condensateur au travers d’une résistance.
  • Réalisation du montage (idéalement sur une platine d’essais, 3 ou 4 fils, 2 résistances, et le condensateur à tester)
  • Le code du programme est donné comme exemple.
    L’exercice consiste principalement à le comprendre et à le téléverser sur la carte Arduino.

Matériel

Carte Arduino, deux résistances, une platine d’essai et le ou les condensateurs à mesurer.

Essai

L’essai consiste à mesure le temps de charge d’un condensateur au travers d’une résistances pour déterminer la capacité du condensateur.
Il s’inspire du projet de Paul Badger mis en ligne à l’adresse suivante :
            https://docs.arduino.cc/tutorials/generic/capacitance-meter

Nous savons que la charge d'un condensateur au travers d’une résistance se fait selon une fonction exponentielle. L’étude de cette fonction nous apprends que la charge aura atteint un niveau de 63% au bout d’un temps t = R C.

Courbe de charge d'un condensateur

Courbe de charge d'un condensateur

Connaissant la valeur de la résistance de charge R, la mesure du temps t nous permet donc de calculer C = t/R

Montage à réaliser

Courbe de charge d'un condensateur

La capacité à mesurer la capacité est chargé au travers de la résistance de 10 kΩ raccordée à la broche 13 qui est configurée en sortie.
La broche n°11, raccordée à la résistance de 220 Ω, n'est configurée en sortie que durant la décharge du condensateur. Elle est ensuite reconfigurée en entrée. Elle retourne de cette façon en haute impédance afin de la déconnecter du montage durant la mesure suivante.

La carte Arduino calcule C=t/R et transmettra le résultat au PC via le câble USB pour y être affiché dans la console de l'IDE Arduino.

  Code du programme

/* Capacimètre T = R.C
* ------------------------------------------------------------------------------------
Le code de ce projet est largement inspiré d'un autre écrit en 2008
par un certain Paul Badger qu'il partage à cette adresse :
https://docs.arduino.cc/tutorials/generic/capacitance-meter

L'adaptation que j'en ai faite a consisté à traduire les commentaires
et les noms de variables en français puis à simplifier le code pour mieux
en faire ressortir l'essentiel.
* ------------------------------------------------------------------------------------
*
* Détermination de la capacité d'un condensateur en mesurant la durée de la
* charge au travers d'une résistance.
*
* Base théorique:
* Le condensateur se charge au travers d'une résistance en T secondes ( T = R * C)
*    T = Durée de la charge en seconde
*    R = Résistance en ohms
*    C = Capacité en farads (1 microfarad (µF) = 0,000001 F
*
*    Le temps RC est égal au temps qu'il faut pour charger le condensateur
*	  63,2% de sa charge, soit 63,2% de la tension finale (5V dans cet essai)
*    La tension aux bornes du condensateur est donc de 63,2% de 5V à l'instant T.
*
*  Configuration du circuit:
*  Le côté négatif du condensateur est raccordé au 0V  (GND)
*  Le côté positif est raccordé à deux résistances :
*   - l'une de 10 kΩ pour charger le condensateur
*   - l'autre de 220 Ω pour décharger le condensateur.
*  Le côté positif du condensateur est aussi relié à l'entrée analogique A0 pour
*  mesurer la tension. (0 = 0V  ➔ 1023 = 5V)
*/

#define testCharge 0      // Entrée analogique pour mesurer de la charge 
#define borneCharge  13   // Borne 13 ➔ résistance de 1o kΩ pour charger la capa
#define borneDecharge 11  // Borne 11 ➔ résistance de 220 Ω pour décharger la capa
#define valeurResistance  10000 // 10 kΩ  

unsigned long instantDeDepart;  // Lecture du chrono au début de la charge
unsigned long tempsEcoule;      // Temps écoulé pour charger le condensateur à 63,2%
float capacite;           // Nombres flottants (avec décimales) pour calculs précis

int numeroEssai = 0;      // Pour afficher le nombre d'essais

void setup()
{
  pinMode(borneCharge, OUTPUT); // Broche 13 en sortie pour charger le condensateur
  digitalWrite(borneCharge, 0);	// Mise à 0 au départ ⇢ condensateur déchargé 
  Serial.begin(9600);           // Initialisation du port com vers moniteur
}

void loop()
{
  digitalWrite(borneCharge, 1);  // Mettre borne 13 à 5 V = charger le condensateur
  instantDeDepart = millis();    // Lecture de l'instant de départ
  while(analogRead(testCharge) < 648)
  { // Attendre que la charge soit à 63,2% de la tension maximale (1023 = 5V)
    // 647 = 63.2% de 1023
  }
  tempsEcoule = millis() - instantDeDepart;

  // Déduire la capacité du condensateur du temps écoulé, compté en millisecondes
  // Calcul de la capacité : t = R.C   ⟹   C = t/R
  // NB. Il faudrait diviser le temsp par 1.000 pour le compter en seconde
  //     puis multiplier le résulat par 1.000.000 pour avoir la capacité en µF
  //     Au final, multiplier par 1.000.000/1.000, c'est multiplier par 1.000

  capacite = ((float)tempsEcoule / valeurResistance) * 1000;

  // Impression du résultat sur le moniteur :
  Serial.print(numeroEssai);          // Afficher le n° de l'essai
  Serial.print(" ");                  //    suivi d'un espace
  numeroEssai++;                      //  +1 au nombre d'essais
  Serial.print(tempsEcoule);          // Affichage du temps écoulé
  Serial.print(" ms    ");            //  puis les unités (millisecondes)

  Serial.print((long)capacite);       // Afficher la capacité
  Serial.println(" micro farad");     //   en µF

  // Décharge du condensateur
  digitalWrite(borneCharge, 0);       // Arrêter la charge  ➔ sortie à 0V
  pinMode(borneDecharge, OUTPUT);     // Mettre la broche 11 en sortie
  digitalWrite(borneDecharge, LOW);   // pour la forcer à 0 V
  while(analogRead(testCharge) > 0) 
  {      // Tant que la charge n'est pas revenue à 0
  }      // Attendre la décharge complète du condensateur

  pinMode(borneDecharge, INPUT); // Remettre la sortie 11 en entrée = haute impédance
}

Simulation de l'essai et du montage sur TINKERCAD

La simulation de cet essai sur TINKERCAD est accessible en suivant ce lien.
Pour voir le résultat, il faut faire apparaître le code dans la simulation et cliquer sur "Moniteur série" au bas du code.

Suggestions d'autres essais

  • Tester ce que l'on obtient en mettant des condensateurs en série ou en parallèle
  • Remplacer la résistance de charge par d'autres valeurs si les mesures sont trop lentes ou trp rapîdes.
  • Prévoir plusieurs résistances de charge sur d'autres broches afin de faire une sélection automatique selon les résultats obtenus


XHTML	1.0	validé! CSS validé!