Skip to content

Module I2C ADC 16 bits

Description

Ce module fournit 4 voies analogiques supplémentaires en 16 bits (soit 0.05mV = 50µV de précision)

Info

Intéressant sur le Raspberry Pi qui n'a pas de module ADC ou encore sur le pico si on a besoin de voies analogiques supplémentaires ou de plus grande précision.

Bon à savoir

  • 16 bits mais 15 bits + signe
  • dispose d'un PGA, d'un Programmable Gain Amplifier
  • permet l'échantillonnage automatique selon différents modes et également le déclenchement d'une alerte sur dépassement de valeur.
  • permet mesure sur 4 voies indépendantes ou bien 2 voies différentielles, mode très intéressant.

Le module

Le brochage

Très simple et logique :

  • les broches I2C SDA (bidirectionnelle) et SCL (horloge I2C)
  • le V+ qui peut être 3.3V ou 5V (alim du DS3232 de 2.8V à 5.5V)
  • le 0V
  • Alert - à laisser NC
  • address à laisser NC : 0x48=72d si connecté adress= 0x49=73d
  • A0?A1, A2, A3 : voies de mesures utilisables en voies indépendantes ou bien en voies différentielles, 2 par 2.

Montage type

On connecte :

  • SDA sur SDA I2C0 (GP16)
  • SCL sur SSCL I2C0 (GP17)
  • 0V sur 0V
  • V+ sur 3.3V

Librairie Micropython

Librairie ici : https://github.com/robert-hh/ads1x15 avec doc et exemples

A savoir

Pour connaitre le voltage lu, il suffit de multiplier le nombre par le PGA gain choisi et diviser par 32678.

exemple avec un

  • gain PGA=1 correspondant à +-4,096 V, une valeur de 26349 donnera 26349 x 4,096 / 32768 = 3,29 V
  • gain PGA=0 correspondant à +-6,144 V, une valeur de 17535 donnera 17535 x 6,144 / 32768 = 3,29 V

C’est donc en fonction du voltage attendu que l’on choisira le PGA gain pour obtenir des mesures précises et sans risque pour le module ADS1115

Débrouillage dans l'interpréteur

>>> from machine import I2C, Pin
>>> import ads1x15
>>> i2c=I2C(0, sda=Pin(16), scl=Pin(17))
>>> ads=ads1x15.ADS1115(i2c,72,1) #ads1x15.ADS1115(i2c, addr, gain)
>>> ads.read()
4872
# channel 1 seul correspond à mesure voies indépendante 0 à 3
>>> ads.read(channel1=1)
4867
>>> ads.read(channel1=0)
4885
>>> ads.read(channel1=1)
4864
>>> ads.read(channel1=2)
4878
>>> ads.read(channel1=3)
4864
# channel 1 et channel 2 correspond à mesure différentielle : soit 0 et 1 et 2 et 3
# autre combinaison provoque erreur
>>> ads.read(channel1=0, channel2=1)
0
>>> ads.read(channel1=0, channel2=2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "ads1x15.py", line 162, in read
KeyError: (0, 2)
>>> ads.read(channel1=2, channel2=3)
0
>>> ads.read(channel1=0)*4.096/32768
3.261125

Info

Le ADS1115x dispose de fonctions élaborées d'échantillonnage, etc. Ce qui en fait un composant intéressant en cas de besoins spécifiques.

Code d'exemple

Todo

Liens utiles

Une fiche d'usage avec Micropython :

Fabricant :