MCP3008

 

Introduction

L'un des inconvénients du RaspBerry Pi est que contrairement à un arduino, il n'est pas capable de convertir une valeur analogique en numérique.

D'où les explications sur ce composant: le MCP3008 puisqu'il permet justement de faire ce travail.

 

Il s'agit d'un composant fonctionnant entre 2,7V et 5,5V. C'est un convertisseur analogique / numérique (A/D Converters) avec 8 entrées analogiques dont les valeurs numériques correspondantes seront restituées avec 10-Bits.

Les données converties en numérique seront ensuite transmises via une interface série compatible SPI.

Le RaspBerry fonctionnant en 3,3V, ce sera parfait.

Attention Si vous alimentez votre MCP3008 avec une tension supérieure à 3,3V, le résultat numérique retourné aura une tension elle aussi supérieure. Or un GPIO en entrée ne supporte que 3,3V !

 

Montage

Positionnez votre MCP 3008 en vue de dessus, de façon à avoir l'encoche en haut (ou, suivant le modèle, le point de repère en haut à gauche).

MCP3008 MCP3008

A gauche, CH0 à CH7 représentent les 8 entrées analogiques

A droite, tout ce que vous devrez brancher sur votre Raspberry:

VDD et VREF sur le 3,3 V (pin 1 ou 17 du PI)

AGND (Analog GrouND), la terre pour la partie analogique sur un des GND du RaspBerry

DGND (Digit GrouND), la terre pour la partie digitale sur un des GND du RaspBerry

Tout le reste étant relié sur les GPIO réservés à l'interface SPI du Raspberry, soit:

CLK (clock) sur le GPIO 11 - CLK - pin 23

DOUT sur le GPIO 9 - MISO - pin 21

DIN sur le GPIO 10 - MOSI - pin 19

CS/SHDN sur le GPIO 8 - CE0 pin 24 (le GPIO 7 CE1 - pourra aussi être utilisé à la place du GPIO 8)

 

Pour rappel:

Voici le schéma des PIN d'un Raspberry.

GPIO

Et le chapitre sur les GPIO...

 

Comment ça marche ?

Le MCP 3008 va convertir une tension analogique en entrée en valeur digitale en utilisant une tension de référence VREF. Dans notre cas, VREF sera à 3,3 V.

Le MCP 3008 étant sur 10 bits, vous récupérerez une valeur variant entre 0 et 1023. 0 pour 0V, 1023 pour 3,3V

La formule de calcul est la suivante:

valeur digitale = 1023 * tension analogique en entrée / VREF

Pour calculer la tension analogique, il suffira donc de faire une règle de 3:

tension analogique = valeur digitale * VREF / 1023

 

Activer le SPI sur Raspberry

A l'aide raspi-config, choisissez Interfacing options puis SPI et choisir Oui pour activer le driver (enable).

 

Annexe

Datasheet : datasheet

Le MCP3004 est équivalent au MCP3008, mais avec 4 entrées analogiques.

Voir aussi https://learn.adafruit.com/raspberry-pi-analog-to-digital-converters/mcp3008 avec un exemple python

La librairie wiringpi.com et des explications sur son utilisation avec la librairie SPI

http://shaunsbennett.com/piblog/?p=266 avec un exemple en C (pas réussi à le faire fonctionner cependant. J'y regarde).