Pilote logiciel (Driver) d'un module ERE AI418S avec composant MCP3424 pour Pico
Lorsqu'il s'agit de faire des mesures de tension ou de courant, mon choix s'est porté sur la carte ERE 418S. Si vous voulez savoir pourquoi alors allez voir la page Mesures analogiques. Cela ne peut pas être plus explicite. Donc, voila un petit pilote logiciel tout simple pour cette carte d'entrées analogiques. Vu la vitesse maximale de conversion de cette carte, ce pilote ne travaille qu'e"n résolution 18 bit (La meilleure !) et sur des déclenchements à chaque mesure. Les avantages de cette carte : Elle ne se limite pas, comme la plupart, à 2.048V en pleine échelle et permet des mesures en boucle de courant 4-20 mA.
Installation
Commencez par télécharger le fichier suivant : Driver_AI418S.tar.gz
Copier le fichier téléchargé vers le répertoire "/home/pi" puis extraire ce fichier. L'extraction créera un répertoire nommé "Driver_AI418S" :
tar zxvf Driver_AI418S.tar.gz
Le répertoire "Driver_AI418S" contiendra la code source sous la forme d'un fichier d'entête et d'un fichier source nommés "ai418s.h" et "ai418s.cpp". Il contient également un fichier nommé "CMakeLists.txt" et un programme d'exemple "pico_ai418s.cpp".
Si vous souhaitez modifier le code source, je vous conseille de créer un autre répertoire et d'y copier le contenu du répertoire "/home/pi/Driver_AI418S" vers un autre répertoire. Cela vous évitera de "polluer" le répertoire "/home/pi/Driver_AI418S" et de conserver une version d'origine du code source.
Utilisation
Classe CAI418S
Le pilote logiciel AI418S est implémentée sous la forme d'une classe nommée CAI418S. Cette classe est classique et son utilisation est standard :
pAIS = new CAI418S(i2c1, AI418S_ADR_0X6E);
A propos de la carte AI418S
Cette carte possède 4 voies de mesure. Chaque voie peut mesurer des tensions ou des courants (car les entrées possèdent une résistance shunt de 149 ohms en paralèlle). Elle peut utiliser deux gains programmables : 1 ou 2. Son énorme avantage est qu'elle est équipée d'un véritable ampli de mesure. Celui-ci a un gain de 33/180. Cela permet à cette carte de faire des mesures de tension de 0V à 11.17V en gain de 1 et de 0 à 5.585V en gain de 2. En mesure de courant elle peut faire des mesures de 0mA à 40 mA en gain ede 1 et de 0mA à 20 mA en gain de 2. Elle ne travaille qu'en mode unipolaire, vous ne pourrez donc pas mesurer de tensions négatives.
Cette carte est interfacée en I2C et peut 8 adresses différentes au moyen de jumpers que l'on peut installer ou enlever. Bon à savoir : La documentation de la carte n'est pas adaptée au Pico en ce qui cocnerne les adresses I2C. Par rapport aux adresses données par la documentation officielle de la carte, il faut diviser les valeurs par deux (décalage d'un bit vers la droite). A titre d'exemple, lorsque la documentation indique l'adresse héxadécimale 0xD3, il faut en lieu et place utiliser l'adresse hexadécimale 0x69.
Vous pouvez trouver la documentation officielle de cette carte ici : https://www.ereshop.com/shop/free/I2C-AI418S_SHEET.pdf"
Programme d'exemple
Le pilote AI418S est simple à utiliser. Après l'avoir instnacier comme le décrit le paragraphe Classe CAI418S, vous pouvez configurer la fonction (pas de mesure, mesure de tension ou mesure de courant) pour chaque voie au moyen de la méthode setChannelFunction et le gain via la méthode setChannelGain. Il fois cela fait, il ne vous reste plus qu'à lire les mesures au moyen des méthodes measureChannel ou measureAllChannels.
L'exemple suivant configure les voies 0 et 1 en mesure de tension avec un gain de 1 (soit des mesures comprises entre 0V et 11.17V) et les voies 2 et 3 en mesure de courant avec un gain de 2 (soit des mesures comprises entre 0mA et 20mA). Ensuite il lit toutes les voies :
CAI418S* pAIS;
pAIS = new CAI418S(i2c1, AI418S_ADR_0X6E);
pAIS->setChannelFunction(0, AI418S_FUNCTION_DCV);
pAIS->setChannelFunction(1, AI418S_FUNCTION_DCV);
pAIS->setChannelFunction(2, AI418S_FUNCTION_DCI);
pAIS->setChannelFunction(3, AI418S_FUNCTION_DCI);
pAIS->setChannelGain(0, AI418S_GAIN_1);
pAIS->setChannelGain(1, AI418S_GAIN_1);
pAIS->setChannelGain(2, AI418S_GAIN_2);
pAIS->setChannelGain(3, AI418S_GAIN_2);
float V[4];
pAIS->measureAllChannels(V);
Types
Le pilote AI418S définie les types suivants :
Adresses I2C possibles pour ce composant
{
AI418S_ADR_0X68 = 0x68, // A0 : NC - A1 : NC ou A0 : G - A1 : G
AI418S_ADR_0X69 = 0x69, // A0 : G - A1 : NC
AI418S_ADR_0X6A = 0x6A, // A0 : G - A1 : +V
AI418S_ADR_0X6B = 0x6B, // A0 : NC - A1 : G
AI418S_ADR_0X6C = 0x6C, // A0 : +V - A1 : G
AI418S_ADR_0X6D = 0x6D, // A0 : +V - A1 : NC
AI418S_ADR_0X6E = 0x6E, // A0 : +V - A1 : +V
AI418S_ADR_0X6F = 0x6F, // A0 : NC - A1 : +V
} AI418S_ADR;
Définie les fonctions de mesure des voies
{
AI418S_FUNCTION_OFF,
AI418S_FUNCTION_DCV,
AI418S_FUNCTION_DCI,
} AI418S_FUNCTION;
Définie les gains de mesure des voies
{
AI418S_GAIN_1 = 0b00000000,
AI418S_GAIN_2 = 0b00000001,
} AI418S_GAIN;
Constructeur
| CAI418S(i2c_inst_t* pI2c, const AI418S_ADR& eAI418SAddress) |
Méthodes publiques
| bool | setChannelGain(const uint8_t unChannel, const AI418S_GAIN& eGain) |
| bool | setChannelFunction(const uint8_t unChannel, const AI418S_FUNCTION& eFunction) |
| AI418S_GAIN | getChannelGain(const uint8_t unChannel) |
| AI418S_FUNCTION | getChannelFunction(const uint8_t unChannel) |
| float | measureChannel(const uint8_t unChannel) |
| bool | measureAllChannels(float* pReadings) |
Détails des Méthodes
Constructeur
Description : Constructeur d'une instance de la classe CAI418S.
Paramètre : pI2c - type i2c_inst_t* - Identificateur du bus I2C auquel est reliée le composant AI418S.
Paramètre : eAI418SAddress - type const AI418S_ADR& - Adresse du composant AI418S sur le vus I2C.
Méthodes publiques génériques
Description : Permet de régler le gain d'une des 4 voies de mesure.
Paramètre : unChannel - type const uint8_t - Numéro de la voie. Compris entre 0 et 3.
Paramètre : eGain - type const AI418S_GAIN& - Gain à appliquer à la voie.
Valeur de retour : Booléen indiquant le succès ou l'echec de la méthode.
Description : Permet de régler le type de fonction d'une des 4 voies de mesure.
Paramètre : unChannel - type const uint8_t - Numéro de la voie. Compris entre 0 et 3.
Paramètre : eFunction - type const AI418S_FUNCTION& - Fonction à appliquer à la voie.
Valeur de retour : Booléen indiquant le succès ou l'echec de la méthode.
Description : Permet de lire le gain d'une des 4 voies de mesure.
Paramètre : unChannel - type const uint8_t - Numéro de la voie. Compris entre 0 et 3.
Valeur de retour : Gain de la voie.
Description : Permet de lire la fonction d'une des 4 voies de mesure.
Paramètre : unChannel - type const uint8_t - Numéro de la voie. Compris entre 0 et 3.
Valeur de retour : Fonction de la voie.
Description : Effectuer une mesure sur une voie et retourne sa valeur.
Paramètre : unChannel - type const uint8_t - Numéro de la voie. Compris entre 0 et 3.
Valeur de retour : Valeur mesurée ou -1.0 en cas d'erreur.
Description : Effectue une mesure sur chaque voie et retourne les 4 valerus mesurées.
Paramètre : pReadings - type float* - Tableau de 4 valeurs flottantes conenan tles 4 mesures en sortie de la méthode.
Valeur de retour : Fonction de la voie.