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
den
é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 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 (, et ).
Ces mesures confirment les problèmes d’adaptation d’impédance avec les faibles capacités pour une résistance supérieure à .
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.