FEATHER-MICROPYTHON-ADS1115

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Introduction

Avant de parler de l'ADS1115 (ou ADS1015), vous devez savoir qu' une version nettement plus complète de ce tuto est disponible dans le fichier readme.md de notre dépôt GitHub. N'hésitez pas à le consulter pour de plus amples informations.

ADS1115-mini.jpg

Ce breakout offre un convertisseur analogique-vers-digital I2C haute gamme pour microcontrôleur. Il se montrera utile pour effectuer des captures en continu (jusqu'à 860 échantillons par seconde), des mesures en haute précision (16 bits). Ce convertisseur est également capable de réaliser des mesures différentielles entre deux entrées analogiques. Equipé d'un amplificateur à gain programmable (PGA) et d'un convertisseur 16 bits (15 bits en enlevant le signe), ce senseur sera capable de faire un échantillonnage avec un facteur d'échelle allant de 0.1875mv à 0.00781mv.

L'ADS1115 peut être configurée comme:

  • 4 entrées analogiques simples (4 canaux)
  • ou 2 canaux différentiels (les canaux différentiels sont, par exemple, utilisés pour la mesure de tension aux bornes de la résistance du senseur de courant comme sur lNA219).

Adresses I2C

L'adresse par défaut est 72 (0x48 en Hexadécimal) lorsque ADDR est branché sur la masse.

Il est possible de la modifier comme suit:

  • Placer ADDR au niveau haut modifie l'adresse à 73 (0x49).
  • Placer ADDR sur SDA modifie l'adresse à 74 (0x4a).
  • Placer ADDR sur SCL modifie l'adresse à 75 (0x4B).

Amplificateur Gain Programmable et tension max

L'ADS1x15 est un convertisseur Analogique/Digital à gain programmable.

La valeur de gain correspond à un index dans la table Programmable Gain Amplifier (PGA).

Le PGA définit une gamme de tension utilisable pour la conversion. Le rapport de conversion est déduit de cette gamme de tension.

Les valeurs acceptables pour gain sont:

Index du gain Gamme de tension Remarque
0 6.144V 2/3x
1 4.096V 1x
2 2.048V 2x
3 1.024V 4x
4 0.512V 8x
5 0.256V 16x

Pour calculer la valeur en volts pour une valeur donnée, il faut appliquer la formule suivante:

valeur_volt = valeur_lue * (gamme_de_tension / 32767)
valeur_millivolt = valeur_volt * 1000

Par exemple, la valeur lue 6804 pour l'index de gain = 4 correspond à la tension suivante:

valeur_volt = 6804 * (0.512 / 32767 )
valeur_volt = 0.10631 volts
valeur_millivolt = 106.31 mV

Valeurs codées sur 15 bits

La sortie d'un ADS1115 est connue pour fournir un entier signé encodé en 16 bits.

Cela signifie que l'un des bits de la valeur 16 bits est utilisé pour indiquer le signe de la valeur (positif ou négatif).

Ce qui est important de saisir, c'est que seuls 15 de ces 16 bits sont utilisés pour communiquer la valeur de la mesure.

Sur 15 bits, il est donc possible d'encoder 32768 valeurs différentes dont zero est la première valeur et 32767 la dernière.

En fin de compte, c'est bien un périphérique 16 bits mais seuls 15 bits sont utilisés pour communiquer la magnitude de la mesure.

ADS1115: La valeur du Bit et conversion en volts

La valeur du bit est déterminé par le PGA (Programmable Gain Amplifier, Amplificateur à gain programmable), celui-ci déterminant la valeur maximale théorique de la tension sur un ADS1115.

Dans le mode par défaut (gain = 0) la valeur est de +/-6.144 volts.

Par conséquent, la valeur numérique 32767 (valeur max sur 15 bits) correspond à 6.144 volts.

Nous obtenons le facteur d'échelle en appliquant la division 6.144 / 32767 = 0.00001875 v par bit = 0.01875 mV par bit.

C'est une nette amélioration par rapport au convertisseur ADC d'Arduino. En effet, le facteur d'échelle atteint 5/1024 = 0.0048 v par bit = 5mV par bit. Le convertisseur ADC du ADS1115 est 25x plus précis que celui d'un Arduino Uno.

Le cas présenté jusqu'ici était le moins favorable! En utilisant une autre configuration PGA comme gain = 3 nous avons une tension d'entrée maximale de 1.024 volts, ce qui correspond à un facteur d'échelle de 1.024/32768 = 0.00003125 Volts par bit = 0.03125 mV par bit!

Installer la bibliothèque

Cette bibliothèque est un pilote pour le convertisseur ADS1115 et ADS1015 destiné à être utilisé avec MicroPython sur les cartes ESP8266.

Ce pilote utilise le bus I2C. Son utilisation requière l'installation d'une bibliothèque spécifique. Vous trouvez celle-ci ici:

Download-icon.pngTéléchargez la bibliothèque ADS1x15

Vous devrez copier les fichiers suivant sur votre carte MicroPython

  • ads1x15.py dans le répertoire racine.

Pour savoir comment copier vos fichiers sur votre carte MicroPython Feather ESP8266 Huzza, vous pouvez vous référer aux ressources suivantes:

Ampy

Tlogo-micropython-Debugger.jpg

Outil simplifié de transfert de fichiers et de contrôlez de carte depuis une connexion série. ESP8266 compatible.

RSHell

Tlogo-micropython-Debugger.jpg

Transférez des fichiers et contrôlez votre carte depuis une simple connexion série. ESP8266 compatible.

 

Puis utiliser le code suivant pour faire fonctionner votre senseur. Tester le code dans une session REPL ou WebREPL.

Brancher

Brancher un ADS1115

FEATHER-MICROPYTHON-ADS1115-brancher.png

Utiliser

Utiliser un ADS1115

Le pilote contient la classe ADS1115 et la classe dérivée ADS1015. Etant donné que les deux modèles ne diffèrent que par la taille de la conversion, les mêmes méthodes peuvent s'appliquer avec un interprétation différente des paramètres.

from machine import I2C, Pin
from ads1x15 import *
i2c = I2C( sda = Pin(4), scl=Pin(5) )
adc = ADS1115(i2c = i2c, address = 72, gain = 0)

# Mettre le potentiomètre a fond pour appliquer
# 3.3v sur l'entrée analogique A0

# Lire la valeur sur le convertisseur 
# Channel1 = 0 => entrée analogique A0
value = adc.read( rate=0, channel1=0 )

# Affichera la valeur (ex: 17549) 
print( value )

# Calculer la valeur en Volts: 
# * voir les notes ci-dessus concernant la valeur du Bit)
# * Multiplier la valeur lue par 0.1875 mv par bit
#
print( value * 0.1875 / 1000 )

# Ceci affichera 3.29025 Volts

Encore Plus

Où acheter


Tutoriel réaliser par Meurisse D. pour MC Hobby SPRL

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.