mardi 11 juin 2019

Ajout de 8 entrées analogiques à l'ESP8266 grâce au MCP3008

L'ESP8266 ne comporte qu'une seule entrée analogique. Pour certaines applications, c'est parfaitement suffisant, alors que pour d'autres, ça ne l'est pas du tout!


Il s'agit d'un problème pour lequel nous avons déjà décrit deux solutions élégantes et efficaces: l'utilisation d'un convertisseur analogique-numérique PCF8591, et l'utilisation d'un multiplexeur CD4051.

Aujourd'hui, nous explorons une troisième option: l'utilisation d'un circuit intégré MCP3008; il s'agit d'un convertisseur analogique-numérique à 8 canaux, ayant une résolution de 10 bits. Grâce à ce circuit intégré, vous pouvez donc ajouter 8 entrées analogiques à votre ESP8266.


Connexions du MCP3008 à l'ESP8266

Le schéma ci-contre, tirée de la fiche technique du MCP3008, montre son brochage.

Les 8 entrées analogiques (canal 0 à canal 7) se trouvent sur les broches 1 à 8, du côté gauche du circuit intégré.

Du côté droit, on retrouve l'alimentation (VDD), la tension de référence (VREF), les masses (AGND et DGND), l'horloge (CLK), la sortie des signaux numériques vers l'ESP8266 (DOUT), l'entrée des signaux numériques en provenance de l'ESP8266 (DIN) et la broche "chip select" (CS/SHDN) qui permet d'activer ou de désactiver le circuit intégré.

Le circuit illustré ci-dessous permet de mesurer une tension variant entre 0 et 3,3 V (contrôlée par un potentiomètre) au canal 0 du convertisseur.  VDD et VREF sont à 3,3 V, AGND et DGND sont branchés à la masse de l'ESP8266.

J'ai branché CLK à la broche GPIO 14  de l'ESP8266, DIN à GPIO 13, DOUT à GPIO 12 et CS/SHDN 15 à GPIO 15. Mais tout ça se définit dans le sketch, vous pouvez donc utiliser d'autres broches de l'ESP8266 au besoin.

N.B.: mon schéma montre les branchements sur ma carte Wemos D1 R1, mais vous utilisez évidemment n'importe quel module ESP8266. Puisque j'ai utilisé la sortie 3,3 V de la carte Wemos, j'ai branché un condensateur de 100 nF aux broches 16 et 14 du MCP3008 pour assurer une meilleure stabilité de l'alimentation (sans le condensateur, le MCP3008 refusait parfois de fonctionner, retournant la valeur 1023 peu importe la tension d'entrée).

Installation de la bibliothèque MCP3008

J'ai utilisé  la bibliothèque MCP3008 réalisée par Uros Petrevski.

Exemple de sketch

L'utilisation de la bibliothèque est très simple: pour lire une valeur, on utilise la méthode readADC()readADC(0) pour lire la valeur du canal 0 (donc la broche numéro 1), readADC(1) pour lire le canal 1 (broche 2), etc.

Puisque la résolution est de 10 bits, la valeur retournée se situe entre 0 et 1023. Elle varie lorsque vous tournez le potentiomètre.






Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire