Charge et décharge d’un condensateur avec la Pyboard

Montage

Le montage est basé sur une carte Feather STM32F405 Express d’Adafruit (idem Pyboard) et d’un module pour capteur capacitif compatible Grove.

Afin d’utiliser un uniquement câble Grove, la broche A0 est définie en sortie digitale !

Programme MicroPython

Le programme suivant utilise le timer du microcontrôleur pour réaliser une série de plusieurs mesures à la suite pour une fréquence d’échantillonnage donnée. Les mesures sont exportées au format CSV.

from pyb import Pin, ADC, Timer, delay
from array import array

f = 3000    # fréquence d’echantillonnage - max = 750 kHz [84Mhz/4/(12+15) = 778 kHz]
n = 200     # nombre de points de mesure

pinE = Pin('A0', Pin.OUT)       # A0 en sortie digitale
adc = ADC(Pin('A1'))            # A1 en entrée analogique

buffer = array("h", n*[0x7FFF]) # Tableau de n éléments pour enregistrer les mesures - "h" = signed short (int 2 octets)
tim = Timer(6, freq=f)          # Declaration du timer 6 à la fréquence la plus proche de f

pinE.on()                       # Charge du condensateur
delay(1000)                     # Attendre 1 s
pinE.off()                      # Début de la décharge
adc.read_timed(buffer, tim)     # Lancement de l'acquisition

####### Affichage au format CSV #########
f = tim.freq()                  # Fréquence réelle utilisée par le timer
print("t;u")                    # Entête grandeurs
print("ms;_")                   # Entête unité
for i in range(n):              # Mesures
print(i/f*1E3, ";", buffer[i])
  • Ligne 14 : déclaration d’un tableau buffer de n éléments pour stocker les mesures (12 bits par mesure) ;
  • Ligne 15 : la fréquence d’échantillonnage est envoyée au timer 6 (réservé au CAN). La constructeur Timer détermine la fréquence disponible la plus proche de cette fournie en argument.
  • Ligne 20 : l’acquisition des n points est lancée avec la fréquence d’échantillonnage du timer ;
  • Ligne 23 : la fréquence réelle du timer est donnée par la méthode tim.freq().

Résultats

Décharge à travers une résistance de 10\,\kilo\ohm pour plusieurs valeurs de capacité :

Influence de la résistance série

Les courbes ci-dessous donnent la décharge pour plusieurs capacités à travers trois résistances différentes (10\,\kilo\ohm, 33\,\kilo\ohm et 100\,\kilo\ohm).

Ces mesures confirment les problèmes d’adaptation d’impédance avec les faibles capacités pour une résistance supérieure à 10\,\kilo\ohm.

La première courbe met en évidence l’influence de la durée d’exécution des instructions MicroPython. En effet, il n’est pas possible d’obtenir le début de la décharge ! Malgré tout, il sera quand même possible de mesurer la variation de faible capacité (de l’ordre du nF) en ajoutant en parallèle une autre capacité fixe d’une dizaine de nF.

 

Pour marque-pages : Permaliens.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *