Modifications

Sauter à la navigation Sauter à la recherche
6 062 octets ajoutés ,  23 mars 2022 à 19:57
Ligne 2 : Ligne 2 :     
== Introduction ==
 
== Introduction ==
xxxx
+
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 [https://github.com/mchobby/esp8266-upy/tree/master/ads1015-ads1115 fichier readme.md de notre dépôt GitHub]. N'hésitez pas à le consulter pour de plus amples informations.
 +
 
 +
[[Fichier: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.
 +
 
 +
{{ambox-stop|text=La gamme de tension du PGA n'indique pas la tension maximale admissible par le convertisseur! La tension maximale sur une entrée analogique est fixée à VDD + 0.3v}}
 +
 
 +
Les valeurs acceptables pour gain sont:
 +
{| class="wikitable" border="1"
 +
|-
 +
| align="center" | '''Index du gain'''
 +
| align="center" | '''Gamme de tension'''
 +
| align="center" | '''Remarque'''
 +
|- style="font-size: 90%"
 +
| align="left" | 0
 +
| align="left" | 6.144V
 +
| align="left" | 2/3x
 +
|- style="font-size: 90%"
 +
| align="left" | 1
 +
| align="left" | 4.096V
 +
| align="left" | 1x
 +
|- style="font-size: 90%"
 +
| align="left" | 2
 +
| align="left" | 2.048V
 +
| align="left" | 2x
 +
|- style="font-size: 90%"
 +
| align="left" | 3
 +
| align="left" | 1.024V
 +
| align="left" | 4x
 +
|- style="font-size: 90%"
 +
| align="left" | 4
 +
| align="left" | 0.512V
 +
| align="left" | 8x
 +
|- style="font-size: 90%"
 +
| align="left" | 5
 +
| align="left" | 0.256V
 +
| align="left" | 16x
 +
|}
 +
 
 +
Pour calculer la valeur en volts pour une valeur donnée, il faut appliquer la formule suivante:
 +
 
 +
<nowiki>valeur_volt = valeur_lue * (gamme_de_tension / 32767)
 +
valeur_millivolt = valeur_volt * 1000</nowiki>
 +
 
 +
Par exemple, la valeur lue 6804 pour l'index de gain = 4 correspond à la tension suivante:
 +
 
 +
<nowiki>valeur_volt = 6804 * (0.512 / 32767 )
 +
valeur_volt = 0.10631 volts
 +
valeur_millivolt = 106.31 mV</nowiki>
 +
 
 +
=== 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 ==
 
== Installer la bibliothèque ==
Cette bibliothèque est un pilote pour le senseur BME280 température/pression/humidité et BMP280 température/pression pour être utilisé avec MicroPython sur les cartes ESP8266.
+
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:
 
Ce pilote utilise le bus I2C. Son utilisation requière l'installation d'une bibliothèque spécifique. Vous trouvez celle-ci ici:
   −
{{download-box|Téléchargez la bibliothèque bme280|https://github.com/mchobby/esp8266-upy/blob/master/bme280-bmp280/bme280.py}}
+
{{download-box|Téléchargez la bibliothèque ADS1x15|https://github.com/mchobby/esp8266-upy/tree/master/ads1015-ads1115}}
    
Vous devrez copier les fichiers suivant sur votre carte MicroPython
 
Vous devrez copier les fichiers suivant sur votre carte MicroPython
* {{fname|bme280.py}} dans le répertoire racine.
+
* {{fname|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:
 
Pour savoir comment copier vos fichiers sur votre carte MicroPython Feather ESP8266 Huzza, vous pouvez vous référer aux ressources suivantes:
Ligne 38 : Ligne 130 :  
== Brancher ==
 
== Brancher ==
 
=== Brancher un ADS1115 ===
 
=== Brancher un ADS1115 ===
[[Fichier:FEATHER-MICROPYTHON-ADS1115-brancher.jpg|640px]]
+
[[Fichier:FEATHER-MICROPYTHON-ADS1115-brancher.png|640px]]
    
== Utiliser ==
 
== Utiliser ==
 
=== Utiliser un ADS1115 ===
 
=== Utiliser un ADS1115 ===
xxxx
+
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.
    
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
xxxx
+
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
 
</syntaxhighlight>
 
</syntaxhighlight>
    
== Encore Plus ==
 
== Encore Plus ==
* [https://github.com/mchobby/esp8266-upy/tree/master/ads1015-ads1115 Voyez la page GitHub pour plus de détails sur la lecture des données] (''MCHobby GitHub'')
+
* [https://github.com/mchobby/esp8266-upy/tree/master/ads1015-ads1115 Voyez la page GitHub pour plus de détails sur la lecture des données] (''MCHobby GitHub'')<br/>La '''documentation GitHub contient beaucoup plus d'information''' comme:
 
+
** La vitesse d'échantillonnage, l'échantillonnage continu
 +
** La gestion des seuils, utilisation des interruptions (alert)
 +
** Description des méthodes
 +
** Autres exemples
 
* [[MicroPython-Accueil#ESP8266_en_MicroPython|nos autres tutoriels MicroPython sur ESP8266]]  
 
* [[MicroPython-Accueil#ESP8266_en_MicroPython|nos autres tutoriels MicroPython sur ESP8266]]  
 
* [[MicroPython-Accueil|tutoriels MicroPython]] (généraux).
 
* [[MicroPython-Accueil|tutoriels MicroPython]] (généraux).
Ligne 57 : Ligne 173 :  
== Où acheter ==
 
== Où acheter ==
 
* [http://shop.mchobby.be/product.php?id_product=362 Adafruit ADS1115 (ADA1085)] disponible chez MCHobby
 
* [http://shop.mchobby.be/product.php?id_product=362 Adafruit ADS1115 (ADA1085)] disponible chez MCHobby
 +
* {{pl|846|Feather HUZZAH avec ESP8266}} disponible chez MCHobby
 +
* {{cl|56|La gamme MicroPython}}
    
<hr />
 
<hr />
29 917

modifications

Menu de navigation