Calculs dans les capteurs électriques analogiques

Calculs dans les capteurs électriques analogiques

Nous avons montré récemment comment les interfaces série Yoctopuce étaient capables de faire des calculs sur les valeurs lues afin de les présenter directement sous forme utilisable à l'utilisateur. Aujourd'hui, nous vous montrons une fonctionnalité similaire qui est aussi présente sur certains de nos capteurs électriques analogiques.



Les capteurs dont nous allons parler aujourd'hui sont ceux qui sont destinés à décoder une grandeur physique transmise sous forme d'un signal analogique. Il s'agit:

Tous ces capteurs ont en commun le fait de présenter la ou les mesures à l'aide de la classe GenericSensor.

La classe GenericSensor


Les capteurs de la classe GenericSensor partagent les avantages de toutes les classes de capteurs Yoctopuce, que nous vous avions décrit dans ce précédent article. Mais en plus, ils permettent

  1. de définir une correspondance linéaire entre la valeur du signal mesuré et la grandeur physique correspondante
  2. de choisir librement l'unité annoncée par le capteur

Voici à quoi ressemble l'interface de configuration:

Interface de configuration des GenericSensor
Interface de configuration des GenericSensor


Ainsi, une fois correctement configuré, la valeur visible d'un GenericSensor n'est pas la valeur électrique mesurée sur le capteur mais la grandeur physique correspondante. L'encodage/décodage du signal est géré de manière transparente. Notez qu'il reste toujours possible si nécessaire de lire la valeur du signal à l'aide de la méthode get_signalValue() et de la visualiser dans le VirtualHub.

Autre particularité des GenericSensor: il est possible de choisir parmi plusieurs vitesses d’échantillonnage selon les besoins: soit un échantillonnage très rapide, soit un échantillonnage plus lent mais moins bruité, ou encore filtré par un filtre médian à 5 positions. Notez que le choix de la vitesse d'échantillonnage est sans effet pour le Yocto-PWM-Rx, puisque dans son cas l'échantillonnage se fait toujours à la fréquence du signal lui-même.

La classe ArithmeticSensor


Le Yocto-MaxiMicroVolt-Rx offre une possibilité supplémentaire pour décoder une mesure physique sur la base des signaux électriques mesurés: il dispose de capteurs virtuels de la classe ArithmeticSensor, donc la valeur peut être librement définie par une formule mathématique utilisant tous les capteurs du module. Ils ont les avantages suivants par rapport à un GenericSensor:

  • ils permettent de définir une relation non-linéaire entre le signal mesuré et la mesure physique
  • ils permettent de combiner plusieurs signaux mesurés dans le calcul d'une mesure physique

Ces deux caractéristiques sont particulièrement intéressantes pour la lecture de capteurs de gaz électrochimiques, dont l'utilisation requiert en général de combiner le signal produit par une électrode active et une électrode auxiliaire pour la compensation de sensibilités croisées ou de la dérive en température. Voici un exemple en détail.

Lecture des capteurs de gaz électrochimiques Alphasense


Alphasense fabrique et commercialise des capteurs de gaz électrochimiques. Ils peuvent être achetés nus, avec une sortie en nA/ppm assez difficile à lire précisément, ou montés par Alphasense sur un circuit ampérométrique à bas bruit avec une sortie en mV/ppb et dont les paramètres d'offset et de gain sont fournis par Alphasense. C'est cette version qui est la plus intéressante, car l'acquisition des mesures est plus simple, et elle permet un simple remplacement du PCB, capteur inclus, lorsque le capteur est en fin de vie.

Le calcul de la concentration de gaz en fonction des signaux en mV/ppb avec intégration de la compensation en température est néanmoins assez complexe. Alphasense fournit une note d'application (AAN 803-05) qui explique les différentes méthodes de compensation suggérées, et donne les formules arithmétiques correspondantes. Nous allons donc montrer comment ces formules peuvent être introduites dans la configuration d'un ArithmeticSensor, de sorte à obtenir une valeur directement interprétable comme concentration de gaz. Nous allons faire l'exemple pour les capteurs NO2-B43F et OX-B431, puisque ce sont les plus compliqués en raison de la sensibilité croisée du capteur OX-B431 au NO2.

1. Pour commencer, nous donnons un nom logique à chacune des entrées: t pour la température, NO2_We pour la mesure sur l'électrode de travail NO2 (Working electrode), NO2_Ae pour l'électrode auxiliaire, etc. Ces noms correspondent à ceux utilisés dans la note d'application de Alphasense, et cela nous facilitera donc pour la saisie des formules à l'étape suivante. Nous donnons aussi un nom à chaque arithmeticSensor que nous allons définir:

Configuration générale du Yocto-MaxiMicroVolt-Rx
Configuration générale du Yocto-MaxiMicroVolt-Rx


2. La configuration de chaque entrée genericSensor est triviale: On garde volontairement le signal en mV à ce stade, pour pouvoir l'enregistrer tel quel dans le datalogger au cas où l'on voudrait vérifier les calculs a posteriori.

Configuration des genericSensors
Configuration des genericSensors


3. C'est dans la configuration des arithmeticSensors que la magie arrive. On y entre presque littéralement l'équation donnée dans la note d'application d'Alphasense, puisqu'on peut référencer les entrées par leur nom logique. La syntaxe des expressions est la même qu'utilisée par la commande COMPUTE décrite dans le précédent article. Il est même possible d'utiliser dans la formule des fonctions arbitraires, comme ci-dessous la fonction NO2_B43F_N1(t) qui sera définie un peu plus bas:

Configuration du arithmeticSensor1
Configuration du arithmeticSensor1


4. Comme AlphaSense propose deux méthodes de compensation pour chaque capteur, nous implémentons les deux méthodes dans deux arithmeticSensors différents de sorte à pouvoir comparer les résultats:

Configuration du arithmeticSensor2
Configuration du arithmeticSensor2


5. Pour le capteurs OX-B431, la formule est un peu plus compliquée car il faut en plus compenser la sensibilité croisée du capteur OX par rapport au NO2 (voir page 3 de la note d'application). Pour cela, on utilise la mesure de NO2 et on soustrait au signal d'entrée en mV la valeur théorique générée par le NO2 détecté. Pour cette raison, il est important de mettre le capteur NO2-B43F et le OX-B431 sur le même module Yocto-MaxiMicroVolt-Rx. Notez que le facteur de sensibilité croisée du OX-B431 au NO2 est sensé être fourni par Alphasense, mais il ne nous avait pas été communiqué. Un simple mail au support Alphasense a permis d'obtenir le coefficient manquant, car Alphasense garde dans une base de données les coefficients mesurés de tous les capteurs vendus.

Configuration du arithmeticSensor3
Configuration du arithmeticSensor3


Configuration du arithmeticSensor4
Configuration du arithmeticSensor4


6. Les facteurs de compensation du background current en fonction de la température sont fournis dans des tables en fin de la note d'application. Nous pouvons les saisir dans le Yocto-MaxiMicroVolt-Rx sous forme de fonction auxiliaire définie par l'utilisateur, à l'aide du bouton en bas de la fenêtre de définition des formules arithmétiques.

Fonctions auxiliaires définies par l'utilisateur
Fonctions auxiliaires définies par l'utilisateur


7. La définition d'une fonction auxiliaire se fait simplement en listant les coefficients arbitraires dans un champ texte. Les valeurs entre les points spécifiés sont interpolées linéairement. Voici donc la définition des coefficients n(t) et k(t) utilisés respectivement par les méthodes 1 et 3 de la note d'application Alphasense, pour le capteur NO2 et le capteur OX:


   

Définition des coefficients de compensation en température n(t) et k(t)



Résultats


Grâce au fait que la classe ArithmeticSensor se comporte comme n'importe quel capteur Yoctopuce, on peut afficher les mesures calculées directement à l'aide de Yocto-Visualization:

Mesures effectuées à l'aide du capteur OX-B431
Mesures effectuées à l'aide du capteur OX-B431


On voit que les formules d'Alphasense sont une bonne base de départ pour la compensation en température, même si il reste une aberration chaque matin au moment ou le soleil se met à chauffer le capteur. Les valeurs négatives de la mesure de NO2 devraient aussi être filtrées. Pour comparaison, voici la mesure de référence effectuée par une station officielle située à quelques kilomètres de là:

Mesures de référence de la station de Passeiry
Mesures de référence de la station de Passeiry


Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.