Mesurer de la constante de temps d’un circuit RC avec le comparateur analogique
Principe
La méthode consiste à comparer la tension du condensateur \(u_C\) à une tension de référence (tension de seuil) égale à \(63\%\) de la valeur finale. Cette fonction est réalisée par un comparateur analogique (ALI en régime non-linéaire).

Schéma électrique de la comparaison analogique
La tension du condensateur est sur l’entrée inverseuse :
La tension de référence \(0,63\times V_{CC}\) est sur l’entrée non-inverseuse :
Le fonctionnement du comparateur analogique présente alors deux situations :
si \(V^- < V^+\) alors \(v_{comp} = V_{CC} \quad\) (niveau logique
1
)si \(V^- > V^+\) alors \(v_{comp} = 0 \quad\) (niveau logique
0
)

Evolution temporelle des tensions lors de la charge du condensateur
La détection de l’instant \(\tau\) se fait donc sur un front descendant (FALLING) de la sortie du comparateur.
Note
Cette méthode est plus précise que celle qui utilise l’entrée analogique de l’Arduino car :
l’impédance d’entrée du comparateur est bien meilleure que celle du CAN ;
la comparaison analogique prend beaucoup moins de temps qu’une conversion analogique numérique.
Il est donc possible de mesurer des capacités de l’ordre du nF !
Comparateur analogique de l’Arduino Uno R3
Le microcontrôleur ATMEGA328P de l’Arduino Uno intègre un comparateur analogique.

Schéma interne du comparateur analogique de l’Arduino Uno R3 (datasheet)
L’entrée non-inverseuse
V+
peut-être connectée soit directement à la brocheD6 (AIN0)
, soit à une tension de référence interne généralement de \(1,1~\rm V\).L’entrée inverseuse
V-
peut-être connectée soit directement à la brocheD7 (AIN1)
, soit à une des entrées analogiques deA0
àA5
(multiplexeur analogique).
Il est surtout possible de relier la sortie du comparateur à interruption suivant les trois modes de fonctionnement du tableau ci-dessous.
Mode |
Origine du déclenchement de l’interruption logiciel |
---|---|
CHANGE |
Lorsque la sortie du comparateur change d’état |
RISING |
Lorsque la sortie du comparateur passe de |
FALLING |
Lorsque la sortie du comparateur passe de |
Montage

Schéma du montage
La tension de référence égale à 63% de
VCC
est appliquée sur la brocheD6 (AIN0)
. Cette tension constante est réglée à l’aide d’un potentiomètre multi-tour.La tension du condensateur est appliquée sur la broche
D7 (AIN1)
.Le circuit RC est chargé par la broche
D12
.
Le basculement (front descend) du comparateur analogique de l’Arduino se fait lorsque la tension du condensateur atteint la tension de référence (63% de la valeur finale).
Programme
Installer au préalable la bibliothèque analogComp
par Leonardo Miliani.
Avertissement
Pour une meilleure précision :
Mesurer au voltmètre la tension \(V_{CC}\) ;
Régler au voltmètre la tension de seuil \(0,63\times V_{CC}\) ;
Mesurer également la valeur de la résistance \(R\).
/*
* Mesure de la constante de temps d'un circuit RC
* à l'aide du comparateur analogique d'un Arduino Uno R3
* R = 10k jusqu'à 1000 nF (tau = 10 ms max)
* R = 100k jusqu'à 100 nF (tau = 10 ms max)
* R = 1M jusqu'à 10 nF (tau = 10 ms max)
* David THERINCOURT - 2025
*/
#include "analogComp.h"
unsigned long t0; // Instant initial (32 bit)
unsigned long t1; // Instant détection (32 bit)
unsigned long tau; // Constante de temps (32 bit)
float C; // Capacité du condensateur
float R = 10E3; // Résistance série
void setup() {
Serial.begin(9600); // Paramétrage moniteur série
Serial.println("--------"); // Affichage début programme
analogComparator.setOn(AIN0, AIN1); // Paramétrage du comparateur (V+ = AIN0) et (V- = AIN1)
analogComparator.enableInterrupt(changeStatus, FALLING); // Interruption déclenché sur un front descendant
pinMode(12,OUTPUT); // Broche digitale D12 en sortie
// DECHARGE COMPLETE
digitalWrite(12,LOW); // Décharge du condensateur avant mesure
delay(1000); // pendant 1 s
// DEBUT CHARGE
digitalWrite(12,HIGH); // Début charge condensateur
t0 = micros(); // Mesure instant initial
}
void loop() { // Pas de boucle
}
void changeStatus() {
analogComparator.disableInterrupt();
t1 = micros(); // Mesure instant du front descendant (FALLING)
tau = t1 - t0; // Calcul de tau en µs
C = tau/R * 1E3; // Calcul de la capacité en nF
Serial.print("tau = "); // Début affichage
Serial.print(tau); // ...
Serial.print(" µs \t C = "); // ...
Serial.print(C); // ...
Serial.println(" nF"); // ...
}

Mesures avec une boîte à décade de condensateurs.