”Détermination de la capacité d’un condensateur par mesure d’une constante de temps ”
![](https://www.ardpylab.fr/wp-content/uploads/2020/05/projetpython-7-1.jpg)
. Objectif
Dans cette activité, nous allons modifier le programme de l’activité 1 (étude de la charge d’un condensateur) de façon cette fois-ci à mesurer directement la constante de temps du circuit RC sans passer par le tracé de la caractéristique Uc=f(t).
On pourra alors déterminer la capacité d’un condensateur inconnu puisque :
τ = RC donc : C = τ / R
. Descriptif de l’activité
Lors de la charge d’un condensateur, nous avons vu, qu’au bout d’un temps égal à la constante de temps τ, le condensateur était chargé à 63 % de la tension appliquée au dipôle RC (ici, à t = τ : Uc= 0,63 x 5 = 3,15 V).
Avec le même circuit que les activités précédentes, pour déterminer la constante de temps, il suffit donc, par lecture de l’entrée analogique A0, de mesurer le temps que met cette entrée pour atteindre la valeur correspondant à la tension aux bornes du condensateur au temps τ, soit : 0,63 x 1023 = 644 (CAN 5 V = 1023).
Ainsi, après avoir déchargé le condensateur, la mesure de la tension aux bornes du condensateur Uc, lors de la charge, à l’aide de l’entrée analogique A0 est lancée, à t = 0 s, par un appui sur le bouton poussoir.
Quand la valeur de l’entrée analogique A0 souhaitée est atteinte, la constante de temps est alors calculée et affichée dans le moniteur série, puis le condensateur est déchargé.
Une nouvelle mesure est possible en appuyant de nouveau sur le bouton poussoir.
. Le programme
Voici le code de l’activité en Python et en langage Arduino :
. Programme en Python (”Projet7\Activity3\PY\Activity3.py”)
. Déroulement du programme :
– Importation des librairies et définition de fonctions :
. Le module ”ConnectToArduino.py”, contenant les fonctions de connexion à l’Arduino via le protocole ”Firmata Express”,
. Le module ”PymataExpressDef.Py” regroupant toutes les fonctions utiles à l’utilisation de ”Pymata-express” (fonction de déclaration des entrées et sorties, de lectures, d’écritures…),
. La bibliothèque ”time” pour la gestion des temps de pause,
. La fonction ”décharge” pour décharger le condensateur avant la charge et à la fin du programme.
– Déclaration des constantes et variables :
. PinUc = 0 (cst correspondant au n° de la broche A0 sur laquelle le condensateur est connecté)
. PinAlimC = 2 (cst correspondant au n° de la broche alimentant le dipôle RC)
. ValPinUC = 0 (variable pour stocker la valeur de la broche du condensateur)
. t0 = 0 (variable pour stocker le temps de début de charge du condensateur)
. dt = 0 (variable correspondant à la différence de temps en s entre les mesures de tension du condensateur et le temps de début de charge)
. PinButton = 12 (cst correspondant au n° de la broche sur laquelle le bouton poussoir est connecté)
. ValButton = 0 (variable pour stocker la valeur de l’état logique de la broche du bouton poussoir)
. OldValButton = 0 (variable pour stocker la valeur précédente de l’état logique de la broche du bouton poussoir)
. State=0 (variable correspondant à l’action à effectuer)
. PortComArduino (port COM sur lequel l’Arduino est connecté)
– Connexion à l’Arduino :
. Détection du port COM, tentative d’ouverture du port COM sélectionné et connexion à l’Arduino:
PortComArduino = SelectPortCOM()
board = OpenPortCom(PortComArduino)
. Si la connexion à l’Arduino est réussie :
– Déclaration de la broche du condensateur en entrée analogique :
Set_AnalogInput_Pin(board, PinUC)
– Déclaration de la broche du bouton poussoir en entrée numérique :
Set_DigitalInput_Pin(board, PinButton)
– Déclaration de la broche alimentant le dipôle RC en sortie numérique :
Set_DigitalOutput_Pin(board, PinAlimC)
– Décharge du condensateur :
–> Appel de la fonction ”decharge” : decharge(board, PinAlimC, PinUC)
. Mise à niveau bas de la broche d’alimentation du dipôle RC:
Digital_Write(board, pinalim, 0)
. Attente de la décharge complète du condensateur:
while Analog_Read(board, pinU) > 0:
time.sleep(0.2)
– Boucle principale du programme (boucle ”while True”) :
![](https://www.ardpylab.fr/wp-content/uploads/2020/05/projetpython-7-3-2.png)
. Résultats dans la fenêtre Python Shell
![](https://www.ardpylab.fr/wp-content/uploads/2020/05/projetpython-7-3-3.png)
. Programme en langage Arduino (”Projet7\Activity3\INO\Activity3.ino”)
Le code de l’activité en langage Arduino a déjà été étudié dans la partie:
”Activités pour les lycées / Dipôles RC / Activité 3”
. Exploitation des mesures
L’exploitation des mesures a également déjà été étudiée dans la partie:
”Activités pour les lycées / Dipôles RC / Activité 3 / Exploitation des mesures”