Convertisseur Analogique-Numérique

Ce wiki a été archivé en 2018.

Le nouveau wiki se trouve à: ressources.labomedia.org

Les fonctionnalités sont désactivées: vous pouvez faire une recherche sur Google site:https://wiki.labomedia.org et découvrir La Labomedia.

De Centre de Ressources Numériques - Labomedia
Aller à : navigation, rechercher

Description du projet

Mettre en oeuvre le Convertisseur Analogique-Numérique ADC088S102 de chez National Semiconductor.

Matériel utilisé

  • Ordinateur avec Arduino installé
  • Carte Arduino
  • Câble USB
  • Platine d'essai

Considérations

Le convertisseur ADC088S102 est dans un format TSSOP<ref>http://en.wikipedia.org/wiki/TSSOP</ref>. Ce format très petit ne peut donc pas être placé directement sur une platine d'essai, il est nécessaire de réaliser un adaptateur et de souder ce composant dessus. La communication entre le convertisseur et l'Arduino se fait par SPI<ref>http://fr.wikipedia.org/wiki/Serial_Peripheral_Interface</ref>. C'est un CAN<ref>Attention ne pas confondre un CAN Convertisseur Analogique Numérique et le bus CAN</ref> avec 8 canaux différents dont les valeurs de sortie sont codées sur 8bits. Le schéma proposé est uniquement à titre d'exemple, pour un montage fiable et pleinement fonctionnel, il faut se référer à la feuille des caractéristiques pour trouver le schéma correct pour l'alimentation du convertisseur (Figure 8). Si tous les canaux du convertisseur ne sont pas utilisés dans votre montage, il faut néanmoins relier les pattes inutilisées du composant à la masse afin d'éviter des perturbations lors des conversions.

Montage électronique

Schéma
Liste des pièces
Qtt Nom Valeur Référence Fabricant Fabricant Référence Fournisseur Fournisseur
1

Convertisseur Analogique/Numérique

ADC088S102CIMT


National Semiconductor


639-4121 Radiospares
2

Résistance

22 Ohm 1/4W



148-095 Radiospares
2

Condensateur céramique

1KV 1000pF



473-0367 Radiospares
2

Potentiomètre rotatif

10KOhm

3310P-001-103L

Bourns

691-6885 Radiospares

Script Arduino

#include <SPI.h>

const byte selectionPin = 10;
byte data_R;
byte resultat[8]; // Tableau des valeurs courantes
byte resultatPrec[8] = {0, 0, 0, 0, 0, 0, 0, 0}; // Tableau des valeurs de référence

void setup() {
  Serial.begin(9600); // Initialisation de la communication série
  SPI.begin(); // Initilisation de la communication SPI avec l' ADC088S102
  pinMode(selectionPin, OUTPUT);
}

void loop() {
  digitalWrite(selectionPin, LOW); // Démarrage de la communication SPI
  for (byte canal = 0; canal < 8; canal++){ // PArcoure l'ensemble des canaux du ADC088S102
    data_R = SPI.transfer(((canal+1) << 3)); // Récupère les 4 octets de poids forts du canal courant et envoi l'adresse du prochain canal à lire
    resultat[canal] = (data_R << 4); // Décale les bits voir Figure 1 de la feuille de caractéristiques
    data_R = SPI.transfer(((canal+1) << 3)); // Récupère les 4 bits de poids faibles et envoi l'adresse du prochain canal à lire
    resultat[canal] += (data_R >> 4); // Décale les bits voir Figure 1 de la feuille de caractéristiques
  }
  digitalWrite(selectionPin, HIGH); // Arret de la transmission SPI
  boolean flag = false;
  for (int i = 0; i < 8; i++) {
    if (resultatPrec[i] != resultat[i]) { // Teste s'il y a des changements dans les valeurs
      flag = true;
    }
  }
  if (flag) { // Si changements alors affichage des valeurs
    for (byte canal = 0; canal < 8; canal++) {
      Serial.print(resultat[canal], DEC); // Envoi de la nouvelle valeur par communication série
      Serial.print(" ");
      resultatPrec[canal] = resultat[canal]; // Met à jour les valeurs pour la référence
    }
    Serial.println("");
  }
}

Liens externes

Convertisseur (en) : Site officiel

Arduino (en) : Site officiel

Notes et références

Archive du projet

Fichier:SPI ADC088S102.zip