• Arduino
  • Raspberry Pi
  • Raspberry Pi Pico
  • Micro:Bit

KY-053

Des valeurs de tension analogiques avec une précision allant jusqu'à 16 bits peuvent être mesurées sur un maximum de 4 entrées via des commandes correspondantes sur le bus I2C. Le résultat de la mesure est codé en sortie sur le bus I2C.

Données techniques

interface I2C
Canaux ADC 4
Résolution par canal 16 Bit
Fréquence d'échantillonnage programmable 8 à 860 SPS
Tension de fonctionnement 2V à 5.5V
Tension d'entrée analogique 0V à la tension de fonctionnement
Tension logique I2C 0V à 5.5V
Adresse I2C 0x48 à 0x4B
Courant de fonctionnement typique 150μA

**Une bibliothèque correspondante est nécessaire pour ce module - voir les exemples de code ci-dessous.

Changement d'adresse I2C

Ce convertisseur analogique-numérique (ou en abrégé ADC) n'a pas qu'une seule adresse I2C. C'est un ADC qui peut avoir 4 adresses I2C différentes. Celles-ci peuvent être choisies librement, mais dans la suite du cours, l'adresse standard 0x48 est utilisée.

Dans le tableau suivant, vous pouvez voir toutes les adresses possibles et comment elles peuvent être atteintes. Il est principalement à noter que la broche ADDR de l'ADC est responsable du changement d'adresse.

De A Adresse
ADDR Pin GND Pin 0x48
ADDR Pin VDD Pin 0x49
ADDR Pin SDA Pin 0x4A
ADDR Pin SCL Pin 0x4B

Affectation des broches

L'affectation des broches est imprimée sur la carte du module

Exemple de code Arduino

Affectation des broches Arduino

Arduino Capteurs
5V +V
GND GND
Pin A5 SCL
Pin A4 SDA
- ADDR
- ALRT
- A0
- A1
- A2
- A3

Les cartes Arduino sont livrées avec un CAN 10 bits à 6 canaux. Cependant, si vous avez besoin de plus de canaux ou d'une plus grande précision, vous pouvez étendre l'Arduino de 4 canaux ADC avec une précision de 12 bits en utilisant le module convertisseur analogique numérique KY-053, qui est connecté à l'Arduino via I2C.

Pour charger l'exemple de code suivant sur votre Arduino, nous vous recommandons d'utiliser l'IDE Arduino. Dans l'IDE, vous pouvez choisir le port et la carte qui conviennent à votre appareil.

Les bibliothèques suivantes sont également utilisées pour l'exemple de code :

Adafruit ADS1X15 de Adafruit | publié sous la licence BSD

Vous pouvez facilement ajouter ces bibliothèques via le gestionnaire de bibliothèques de l'IDE Arduino. Copiez ensuite le code ci-dessous dans votre IDE. Pour télécharger le code sur l'Arduino, il suffit de cliquer sur le bouton " Upload ".

#include <Adafruit_ADS1X15.h>
#include <math.h>
 
// Le module ADS1115 est initialisé - toutes les autres opérations avec
// l'ADC peuvent être effectuées à l'aide de l'objet « ads ».
Adafruit_ADS1115 ads;
 
void setup() {
  // Initialiser le moniteur série
  Serial.begin(9600);
  Serial.println("Les valeurs des entrées analogiques de l'ADS1115 (A0..A3) sont lues et émises.");
  Serial.println("Domaine ADC: +/- 6.144V (1 bit = 0.1875mV)");
   
  // Ce module dispose d'amplificateurs de signaux sur ses entrées analogiques, 
  // dont le gain peut être configuré par logiciel dans les plages indiquées ci-dessous.
  // Ceci est nécessaire si une certaine plage de tension est le résultat de la mesure. 
  // est attendue et obtient ainsi une résolution plus élevée du signal.
  // ADS1115
  // -------
  ads.setGain(GAIN_TWOTHIRDS); // 2 / 3x gain +/- 6.144V 1 bit = 0.1875mV
  // ads.setGain(GAIN_ONE); // 1x gain +/- 4.096V 1 bit = 0.125mV
  // ads.setGain(GAIN_TWO); // 2x gain +/- 2.048V 1 bit = 0.0625mV
  // ads.setGain(GAIN_FOUR); // 4x gain +/- 1.024V 1 bit = 0.03125mV
  // ads.setGain(GAIN_EIGHT); // 8x gain +/- 0.512V 1 bit = 0.015625mV
  // ads.setGain(GAIN_SIXTEEN); // 16x gain +/- 0.256V 1 bit = 0.0078125mV
   
  ads.begin();
}
 
void loop() {
  uint16_t adc0, adc1, adc2, adc3;
  float voltage0, voltage1, voltage2, voltage3;
  float gain_conversion_factor;
   
  // La commande « ads.readADC_SingleEnded (0) » est l'opération proprement dite qui lance la mesure dans l'ADC.
  // Le « 0 » comme variable pour cette fonction définit le canal utilisé qui doit être mesuré.
  // Si, par exemple, le troisième canal doit être mesuré, le « 0 » doit être remplacé par le « 3 ».
  adc0 = ads.readADC_SingleEnded(0);
  adc1 = ads.readADC_SingleEnded(1);
  adc2 = ads.readADC_SingleEnded(2);
  adc3 = ads.readADC_SingleEnded(3);
   
  // Conversion des valeurs enregistrées en une tension
  voltage0 = ads.computeVolts(adc0);
  voltage1 = ads.computeVolts(adc1);
  voltage2 = ads.computeVolts(adc2);
  voltage3 = ads.computeVolts(adc3);
   
  // Sortie des valeurs sur l'interface sérielle
  Serial.print ("A0: "); Serial.print (voltage0); Serial.println (" V");
  Serial.print ("A1: "); Serial.print (voltage1); Serial.println (" V");
  Serial.print ("A2: "); Serial.print (voltage2); Serial.println (" V");
  Serial.print ("A3: "); Serial.print (voltage3); Serial.println (" V");
  Serial.println ("------------------------");
   
  delay (1000);
}

KY-053

Des valeurs de tension analogiques avec une précision allant jusqu'à 16 bits peuvent être mesurées sur un maximum de 4 entrées via des commandes correspondantes sur le bus I2C. Le résultat de la mesure est codé en sortie sur le bus I2C.

Données techniques

interface I2C
Canaux ADC 4
Résolution par canal 16 Bit
Fréquence d'échantillonnage programmable 8 à 860 SPS
Tension de fonctionnement 2V à 5.5V
Tension d'entrée analogique 0V à la tension de fonctionnement
Tension logique I2C 0V à 5.5V
Adresse I2C 0x48 à 0x4B
Courant de fonctionnement typique 150μA

**Une bibliothèque correspondante est nécessaire pour ce module - voir les exemples de code ci-dessous.

Changement d'adresse I2C

Ce convertisseur analogique-numérique (ou en abrégé ADC) n'a pas qu'une seule adresse I2C. C'est un ADC qui peut avoir 4 adresses I2C différentes. Celles-ci peuvent être choisies librement, mais dans la suite du cours, l'adresse standard 0x48 est utilisée.

Dans le tableau suivant, vous pouvez voir toutes les adresses possibles et comment elles peuvent être atteintes. Il est principalement à noter que la broche ADDR de l'ADC est responsable du changement d'adresse.

De A Adresse
ADDR Pin GND Pin 0x48
ADDR Pin VDD Pin 0x49
ADDR Pin SDA Pin 0x4A
ADDR Pin SCL Pin 0x4B

Affectation des broches

L'affectation des broches est imprimée sur la carte du module

Exemple de code Raspberry Pi

Affectation des broches Raspberry Pi

Raspberry Pi Capteur
3,3V +V
GND GND
GPIO 2 [Pin 3] SCL
GPIO 3 [Pin 5] SDA
- ADDR
- ALRT
- A0
- A1
- A2
- A3

Contrairement à l'Arduino, le Raspberry Pi n'a pas d'entrées analogiques ou il n'y a pas d'ADC (convertisseur analogique numérique) intégré dans la puce du Raspberry Pi. Cela limite le Raspberry Pi si vous voulez utiliser des capteurs dont les valeurs ne sont pas émises numériquement [valeur de tension dépassée -> ON numérique | valeur de tension inférieure -> OFF numérique | exemple : bouton enfoncé [ON] bouton relâché [OFF]], mais dont la valeur doit être variable en continu (exemple : potentiomètre -> différente position = différente valeur de tension).

Pour contourner ce problème, notre kit de capteurs X40 possède un module avec un ADC 16 bits, le KY-053, que vous pouvez utiliser sur le Raspberry pour l'étendre avec 4 entrées analogiques. Il est connecté au Raspberry Pi via I2C, prend en charge la mesure analogique et transmet la valeur numériquement au Raspberry Pi.

Le programme utilise les bibliothèques Python ADS1x15 et I2C correspondantes d'Adafruit pour contrôler l'ADC ADS1115. Ceux-ci ont été publiés au lien suivant https://github.com/adafruit/Adafruit_CircuitPython_ADS1x15 sous la licence MIT. Les bibliothèques requises ne sont pas incluses dans le paquet de téléchargement ci-dessous.

Tout d'abord, vous devez activer I2C sur votre Raspberry Pi. Pour ouvrir la configuration, entrez la commande suivante :

sudo raspi-config

Sélectionnez 3 Interface Options → I4 I2C et activez l'interface I2C. Vous avez maintenant activé avec succès l'interface I2C. Le convertisseur analogique-numérique est maintenant accessible sous l'adresse I2C 0x48, qui est définie par défaut pour ce capteur. L'adresse I2C sera différente si vous l'avez déjà configurée avant de configurer votre Raspberry Pi.

Installez ensuite pip3 à l'aide de la commande suivante :

sudo apt-get install python3-pip

L'étape suivante consiste à configurer l'environnement virtuel. Pour ce faire, entrez les commandes suivantes :

mkdir dein_projekt
cd dein_projekt
python -m venv --system-site-packages env
source env/bin/activate

L'étape suivante consiste à configurer l'environnement virtuel. Pour ce faire, entrez les commandes suivantes :

pip3 install adafruit-circuitpython-ads1x15

Après avoir téléchargé la bibliothèque, il vous suffit d'entrer la commande suivante...

nano ADS1115.py

... pour créer un nouveau fichier sur votre Raspberry Pi et copier le code suivant dans le fichier que vous venez de créer.

import time
import board
import busio
import adafruit_ads1x15.ads1115 as ADS
from adafruit_ads1x15.analog_in import AnalogIn

i2c = busio.I2C(board.SCL, board.SDA)

ads = ADS.ADS1115(i2c)

chan0 = AnalogIn(ads, ADS.P0)
chan1 = AnalogIn(ads, ADS.P1)
chan2 = AnalogIn(ads, ADS.P2)
chan3 = AnalogIn(ads, ADS.P3)



while True:
    print("channel 0: ","{:>5}\t{:>5.3f}".format(chan0.value, chan0.voltage))
    print("channel 1: ","{:>5}\t{:>5.3f}".format(chan1.value, chan1.voltage))
    print("channel 2: ","{:>5}\t{:>5.3f}".format(chan2.value, chan2.voltage))
    print("channel 3: ","{:>5}\t{:>5.3f}".format(chan3.value, chan3.voltage))
    print("---------------------------------------------------")
    time.sleep(1)

Vous pouvez ensuite les lancer à l'aide de la commande suivante:

sudo python3 KY053.py

KY-053

Des valeurs de tension analogiques avec une précision allant jusqu'à 16 bits peuvent être mesurées sur un maximum de 4 entrées via des commandes correspondantes sur le bus I2C. Le résultat de la mesure est codé en sortie sur le bus I2C.

Données techniques

interface I2C
Canaux ADC 4
Résolution par canal 16 Bit
Fréquence d'échantillonnage programmable 8 à 860 SPS
Tension de fonctionnement 2V à 5.5V
Tension d'entrée analogique 0V à la tension de fonctionnement
Tension logique I2C 0V à 5.5V
Adresse I2C 0x48 à 0x4B
Courant de fonctionnement typique 150μA

**Une bibliothèque correspondante est nécessaire pour ce module - voir les exemples de code ci-dessous.

Changement d'adresse I2C

Ce convertisseur analogique-numérique (ou en abrégé ADC) n'a pas qu'une seule adresse I2C. C'est un ADC qui peut avoir 4 adresses I2C différentes. Celles-ci peuvent être choisies librement, mais dans la suite du cours, l'adresse standard 0x48 est utilisée.

Dans le tableau suivant, vous pouvez voir toutes les adresses possibles et comment elles peuvent être atteintes. Il est principalement à noter que la broche ADDR de l'ADC est responsable du changement d'adresse.

De A Adresse
ADDR Pin GND Pin 0x48
ADDR Pin VDD Pin 0x49
ADDR Pin SDA Pin 0x4A
ADDR Pin SCL Pin 0x4B

Affectation des broches

L'affectation des broches est imprimée sur la carte du module

Exemple de code Micro:Bit

Affectation des broches Micro:Bit

Micro:Bit Sensor
3,3 V +V
GND GND
Pin 19 SCL
Pin 20 SDA
- ADDR
- ALRT
- A0
- A1
- A2
- A3

Le Micro:Bit possède déjà un CAN 10 bits intégré. Si plus de canaux ou une plus grande précision sont nécessaires, le Micro:Bit peut être étendu de 4 canaux ADC avec une précision de 16 bits en utilisant le module convertisseur analogique numérique KY-053.

Pour le contrôle, nous recommandons l'utilisation de la bibliothèque pxt-ads1115, qui a été publiée par nous sous la licence MIT.

Vous pouvez ajouter la bibliothèque en allant sur la page Makecode, en cliquant sur Extensions, puis en tapant ADS1115 dans la barre de recherche. Après cela, il ne vous reste plus qu'à cliquer sur l'extension pour l'ajouter automatiquement à votre projet en cours.

Téléchargement d'un exemple de programme

microbit-KY-053.zip

KY-053

Par des commandes appropriées sur le bus I2C, les valeurs de tension analogique peuvent être mesurées sur un maximum de 4 entrées avec une précision allant jusqu'à 16 bits. Le résultat de la mesure est transmis au bus I2C.

Données techniques

Interface I2C
Canaux ADC 4
Résolution par canal 16 Bit
Taux d'échantillonnage programmable 8 à 860 SPS
Tension de fonctionnement 2 V à 5,5 V
Tension d'entrée analogique 0 V à Tension de fonctionnement
Tension logique I2C 0 V à 5,5 V
Adresse I2C 0x48 à 0x4B
Courant de fonctionnement typique 150μA

Modifier l'adresse I2C

Ce convertisseur analogique-numérique (ou ADC) n'a pas qu'une seule adresse I2C. C'est un ADC qui peut avoir 4 adresses I2C différentes. Celles-ci peuvent être choisies librement, mais dans la suite du cours, c'est l'adresse standard 0x48 qui est utilisée.

Le tableau suivant présente toutes les adresses possibles et la manière dont elles peuvent être atteintes. Il convient de noter que c'est la broche ADDR de l'ADC qui est responsable du changement d'adresse.

De à Adresse
ADDR Pin GND Pin 0x48
ADDR Pin VDD Pin 0x49
ADDR Pin SDA Pin 0x4A
ADDR Pin SCL Pin 0x4B

Affectation des broches

Affectation des broches Raspberry Pi Pico

Raspberry Pi Pico Capteur
3,3 V +V
GND GND
GPIO1 SCL
GPIO0 SDA
- ADDR
- ALRT
- A0
- A1
- A2
- A3

Exemple de code Raspberry Pi Pico

Le Raspberry Pi Pico dispose déjà d'un CAN 12 bits intégré. Si plus de canaux ou une plus grande précision sont nécessaires, le Raspberry Pi Pico peut être étendu à 4 canaux ADC avec une précision de 16 bits en utilisant le module de conversion analogique numérique KY-053.

Cet exemple de code lit le canal 0 et renvoie les données lues sous forme de valeur analogique et de tension calculée.

Pour charger l'exemple de code suivant sur votre Pico, nous vous recommandons d'utiliser l'IDE Thonny. Il vous suffit de commencer par sélectionner ***Run > Configure interpreter ... > Interpreter > Which kind of interpreter should Thonny use for running your code? > MicroPython (Raspberry Pi Pico) ***.

La bibliothèque suivante est utilisée pour l'exemple de code :

Driver for the ADS1015/ADS1115 Analogue-Digital Converter par Robert Hammelrath | publié sous la licence MIT

Pour utiliser cette bibliothèque, vous devez télécharger le fichier py lié ci-dessus et le charger sur le Pico dans un dossier appelé lib (vous devez le créer si nécessaire). Ensuite, vous pouvez maintenant copier le code ci-dessous dans votre IDE et cliquer sur Run.

# Charger des bibliothèques
from machine import I2C, Pin
from ads1x15 import ADS1115
from time import sleep

# Initialiser I2C
i2c = I2C(0, sda = Pin(0), scl = Pin(1))

# Options de précision (gain)
# 0 : 0 - 6.144V # 2/3x
# 1 : 0 - 4.096V # 1x
# 2 : 0 - 2.048V # 2x
# 3 : 0 - 1.024V # 4x
# 4 : 0 - 0.512V # 8x
# 5 : 0 - 0.256V # 16x
# Initialiser ADC avec l'I2C, l'adresse et le gain créés
adc = ADS1115(i2c, address=0x48, gain=1)

print("KY-053 Convertisseur analogique-numérique")
print("-----------------------------------------------")

while True:
    # Options pour le taux d'échantillonnage (rate)
    # 0 :  128/8      Échantillons par seconde
    # 1 :  250/16     Échantillons par seconde
    # 2 :  490/32     Échantillons par seconde
    # 3 :  920/64     Échantillons par seconde
    # 4 :  1600/128   Échantillons par seconde (par défaut)
    # 5 :  2400/250   sÉchantillons par seconde
    # 6 :  3300/475   Échantillons par seconde
    # 7 :  - /860     Échantillons par seconde
    # adc.read(rate, channel)
    # Lecture des canaux avec le taux d'échantillonnage 1600/128
    adc0 = adc.read(4, 0)
    adc1 = adc.read(4, 1)
    adc2 = adc.read(4, 2)
    adc3 = adc.read(4, 3)
    
    # convertir de la valeur brute en tension
    voltage0 = adc.raw_to_v(adc0)
    voltage1 = adc.raw_to_v(adc1)
    voltage2 = adc.raw_to_v(adc2)
    voltage3 = adc.raw_to_v(adc3)
    
    # sortie sérielle
    print("A0: Valeur brute:", adc0, "\t Voltage:", voltage0, "V")
    print("A1: Valeur brute:", adc1, "\t Voltage:", voltage1, "V")
    print("A2: Valeur brute:", adc2, "\t Voltage:", voltage2, "V")
    print("A3: Valeur brute:", adc3, "\t Voltage:", voltage3, "V")
    print("-----------------------------------------------")
    
    sleep(1)