View on GitHub

MCP342x : 18-Bit, Multi-Channel ΔΣ Analog-to-Digital Converter with I²C Interface and On-Board Reference

Description de la classe MCP342x développée en C# sous .NETMF 4.3 pour les cartes Netduino et GHI FEZ (PANDA, COBRA...)

Download this project as a .zip file Download this project as a tar.gz file

Sommaire

  1. LE MATERIEL
    1. Les circuits 342x: 18-Bit, Multi-Channel ΔΣ Analog-to-Digital Converter with I²C Interface and On-Board Reference
    2. Les cartes Netduino
    3. Les cartes FEZ
  2. LE LOGICIEL
    1. Contenu du répertoire proposé au téléchargement
    2. Le NuGet MicroToolsKit
    3. Le Wiki .NetMF v4.3
    4. Description et utilisation de la classe MCP342x
  3. LIENS
    1. Exemples codés en C# pour les cartes Netduino et Fez (Panda 3, BrainPad)
    2. La page du projet MicroToolsKit

1. LE MATERIEL


1.1 Les circuits 342x : 18-Bit, Multi-Channel ΔΣ Analog-to-Digital Converter with I²C Interface and On-Board Reference.


Module 4 canaux analogiques I²C à circuit MCP342x


Module DFROBOT DFR0316 (MCP3424) ADC3 click - MikroElektronika (MCP3428)
Documentation - Schéma Documentation

1.2 Les cartes Netduino

Wilderness Labs

Netduino plus 2 Netduino 3 wifi
Netduino 3 Ethernet Netduino 3 wifi*

1.3 Les cartes FEZ

GHI Electonics (Extrait)

BrainPad PANDA III COBRA III
BrainPad v1 PANDA III* COBRA III** (compatible Gadgeteer)

2. LE LOGICIEL


2.1 Contenu du répertoire proposé au téléchargement


Le répertoire proposé au téléchargement (au format zip ou tar.gz) contient la solution MCP342x composée :


2.2 Le NuGet MicroToolsKit

La dernière version compilée de la classe MCP342x se situe dans la bibliothèque MicroToolsKit disponible sur nuget.org.

Organisation des classes contenues dans MicroToolsKit [lien]

Important : Installer ce nuget dans le projet Visual Studio simplifie l'utilisation de la classe.


2.3 Le Wiki .NetMF v4.3

Un wiki est dédié au microframework .Net v4.3. Il propose au téléchargement :

2.4 Description et utilisation de la classe MCP342x


Création d'un projet avec l'IDE Visual Studio


  1. Créer un nouveau projet en suivant la démarche décrite dans le chapitre "Premier programme en C# étape par étape" avec à une carte Netduino ou avec une carte Fez (Panda 3, BrainPad, etc). [lien]
  2. Utiliser le gestionnaire de paquets NuGet pour ajouter la bibliothèque MicroToolsKit ( nuget.org) dans le projet. (Dans l'explorateur de solution, clic droit sur les Références du projet puis choisir Gérer les packages NuGet.... Installer le paquet.)
  3. Ajouter l'espace de noms Microtoolskit.Hardware.IO dans l'en-tête du fichier source.
  4. Créer un objet en utilisant le constructeur MCP342x.
  5. Utiliser la méthode ReadVolts pour déclencher une mesure de la tension présente sur l'une des entrées du convertisseur analogique numérique.

Exemple

using System.Threading;
using Microsoft.SPOT;

using Microtoolskit.Hardware.IO;

namespace test
{
    public class Program
    {
        public static void Main()
        {
            MCP342x can = new MCP342x();

            can.CHannel = MCP342x.Channel.Ch2;
            double canal = System.Math.Pow(2, (double)can.CHannel);

            can.Resolution = MCP342x.SampleRate.FourteenBits;
            int resolution = 12 + 2*(byte)can.Resolution;

            can.Gain = MCP342x.PGA_Gain.x4;
            double gain = System.Math.Pow(2, (byte)can.Gain);

            while (true)
            {
                Debug.Print("Continuous on channel " + canal + " " + "Gain: " + gain + " " + "Resolution: " + resolution);
                Debug.Print("Tension = " + can.ReadVolts().ToString("F2"));
                Thread.Sleep(1000);
            }
        }
    }
}

      

Constructeurs

Syntaxe Description
Mcp342x( UInt16 SLA, Int16 Frequency ) Constructeur de base.
Par défaut : Channel = CH1, Resolution = 12 bit, Conversion = Continuous, Gain = 1

Instancie un objet "MCP342x ".
SLA : adresse du module DFROBOT comprise entre 0x68 et 0x6B => SLA= 0x68 (par défaut)
Frequency: >Féquence du signal SCL = 400kHz. (par défaut)

Exemple
MCP342x can = new MCP342x();

Enumérations

Syntaxe Description
Channel

Sélection du canal sur lequel sera effectuée la conversion.

  • Ch1 (par défaut)
  • Ch2
  • Ch3
  • Ch4
ConversionMode

Un échantillonnage ou échantillonnage continu.

  • OneShot : réduit la consommation
  • Continuous (par défaut)
PGA_Gain

Facteur d'amplification du signal avant une conversion.

  • x1 (par défaut)
  • x2
  • x4
  • x8
SampleRate

Régle la résolution du convertisseur et la fréquence d'échantillonage Fe :

  • TwelveBits => Fe = 240 SPS (par défaut)
  • FourteenBits => Fe = 60 SPS
  • SixteenBits => Fe =15 SPS
  • EighteenBits => Fe = 3,75 SPS

Propriétés

Syntaxe Description
Resolution Fixe ou retourne la résolution du convertisseur.
Type : SampleRate

Exemples
// Pour régler la résolution du can à 14 bits.
can.Resolution = MCP342x.SampleRate.FourteenBits;
// Pour connaître la résolution du can
int resolution = 12 + 2*(byte)can.Resolution;
Gain Fixe ou retourne le gain appliqué au signal sur l'entrée sélectionnée.
Type : PGA_Gain

Exemples
// Pour régler le gain de l'amplificateur à x4.
can.Gain = MCP342x.PGA_Gain.x4;
// Pour connaître la valeur du gain de l'amplificateur
double gain = System.Math.Pow(2, (byte)can.Gain);
CHannel Fixe ou retourne le canal sélectionné.
Type : Channel

Exemples
// Pour relier le canal CH2 à l'entrée du can.
can.CHannel = MCP342x.Channel.Ch2;
// Pour connaître le canal relié au can
double canal = System.Math.Pow(2, (double)can.CHannel);
Mode Fixe ou retourne le mode de conversion.
Type : ConversionMode

Exemples
// Pour régler le mode de conversion sur One Shot .
can.Mode = MCP342x.ConversionMode.OneShot;
// Pour connaître le mode de conversion
byte mode = (byte)can.Mode;
TransactionTimeOut Fixe ou retourne le temps (en ms) accordé à la transaction avant la génération d'une System.IO.Exception. 1000ms par défaut.
Type : ushort

Exemples
// Pour régler la durée maximum d'une transaction à 200ms.
can.TransactionTimeOut = 200;
// Pour connaître la durée maximum accordée à une transaction
ushort time = can.TransactionTimeOut;

Méthodes

Syntaxe Description
void ConfigDevice( byte value)

Configure le circuit avec :
value = RDY C1 C0 /O_C S1 S0 G1 G0
Remarque : value = 00010000 (par default)

  • RDY : En lecture, fin de la conversion. En écriture, déclenche une conversion
  • C1, C0 : Choix du canal
  • /O_C : Réglage du mode : 0 = One Shot, 1 = Continuous
  • S1, S0 : Réglage de la résolution
  • G1, G0 : Réglage du gain

Note
Une exception System.IO.IOException est générée avec le message "I2CBus error SLA" en cas d'échec de la communication. SLA est l'adresse du circuit.
double ReadVolts()

Configure le circuit si des paramètres ont été changés. Renvoie la valeur de la tension présente sur l'entrée sélectionnée (en V)


Notes
- Une exception System.IO.IOException est générée avec le message "I2CBus error SLA" en cas d'échec de la communication.
- Une exception System.IO.IOException est générée avec le message "No sample on SLA" si la lecture du résultat de la conversion échoue. SLA est l'adresse du circuit.