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.
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).
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.
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
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).