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

KY-053

Per entsprechenden Befehlen auf dem I2C-Bus können auf bis zu 4 Eingängen analoge Spannungswerte mit bis zu 16-Bit Genauigkeit gemessen werden. Das Messergebnis wird kodiert auf den I2C-Bus ausgegeben.

Technische Daten

Schnittstelle I2C
ADC-Kanäle 4
Auflösung pro Kanal 16 Bit
Programmierbare Abtastrate 8 bis 860 SPS
Betriebsspannung 2 V bis 5,5 V
Analogeingangsspannung 0 V bis Betriebsspannung
I2C Logikspannung 0 V bis 5,5 V
I2C Adresse 0x48 bis 0x4B
Typischer Betriebsstrom 150μA

Änderung der I2C Adresse

Dieser Analog zu Digital Wandler (oder in kurz ADC) besitzt nicht nur eine I2C Adresse. Hierbei handelt es sich um einen ADC welcher 4 verschiedene I2C Adressen besitzen kann. Diese können frei gewählt werden aber im weiteren verlauf wird die Standard Adresse 0x48 benutzt.

In der folgenden Tabelle können Sie alle möglichen Adressen einsehen und auch wie diese zu erreichen sind. Hierbei ist hauptsächlich zu beachten das der ADDR Pin des ADC verantwortlich ist für die Änderung der Adresse.

Von Zu Adresse
ADDR Pin GND Pin 0x48
ADDR Pin VDD Pin 0x49
ADDR Pin SDA Pin 0x4A
ADDR Pin SCL Pin 0x4B

Pin Belegung

Codebeispiel Arduino

Anschlussbelegung Arduino

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

Die Arduino-Boards verfügen bereits über einen integrierten 10 Bit-ADC mit 6 Kanälen. Werden weitere Kanäle, oder eine höhere Genauigkeit, benötigt, so kann der Arduino mit Hilfe des KY-053 Analog Digital Converter Moduls um 4 ADC Kanäle mit 16-Bit Genauigkeit erweitert werden.

Zur Ansteuerung empfehlen wir die Verwendung der ADS1X15 Biblitohek, die von Adafruit unter der BSD-Lizenz veröffentlicht wurde.

Das unten stehende Beispiel basiert auf dieser Library. Hierzu empfehlen wir diese herunterzuladen, zu entpacken und im Arduino-Library-Ordner, welcher sich standardmäßig unter (C:\Benutzer[Benutzername]\Dokumente\Arduino\libraries) befindet, zu kopieren, damit diese für das Codebeispiel und folgende Projekte zur Verfügung steht. Alternativ ist die Library auch im unten stehenden Download-Paket enthalten.

#include <Adafruit_ADS1X15.h>
#include <math.h>
 
// ADS1115-Modul ist initialisiert - alle weiteren Operationen mit
// dem ADC können mit Hilfe des "ads"-Objekts ausgeführt werden.
Adafruit_ADS1115 ads;
 
void setup (void)
{
  Serial.begin (9600);
   
  Serial.println ("Werte der analogen Eingänge des ADS1115 (A0..A3) werden ausgelesen und ausgegeben");
  Serial.println ("ADC Range: +/- 6.144V (1 bit = 0.1875mV)");
   
  // Dieses Modul verfügt über Signalverstärker an seinen Analogeingängen, 
  // deren Verstärkung in den unten stehenden Bereichen per Software konfiguriert werden kann.
  // Dies ist erforderlich, wenn ein bestimmter Spannungsbereich als Messergebnis 
  // erwartet wird und somit eine höhere Auflösung des Signals erhält.
  // 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 (void)
{
  uint16_t adc0, adc1, adc2, adc3;
  float voltage0, voltage1, voltage2, voltage3;
  float gain_conversion_factor;
   
  // Der Befehl "ads.readADC_SingleEnded (0)" ist der eigentliche Vorgang, der die Messung im ADC startet.
  // Die "0" als Variable für diese Funktion definiert den verwendeten Kanal, der gemessen werden soll.
  // Soll z.B. der dritte Kanal gemessen werden, muss die "0" durch die "3" ersetzt werden.
  adc0 = ads.readADC_SingleEnded (0);
  adc1 = ads.readADC_SingleEnded (1);
  adc2 = ads.readADC_SingleEnded (2);
  adc3 = ads.readADC_SingleEnded (3);
   
  // Umrechnung der aufgezeichneten Werte in eine Spannung
  voltage0 = ads.computeVolts(adc0);
  voltage1 = ads.computeVolts(adc1);
  voltage2 = ads.computeVolts(adc2);
  voltage3 = ads.computeVolts(adc3);
   
  // Ausgabe der Werte auf der seriellen Schnittstelle
  Serial.print ("Analog input 0:"); Serial.print (voltage0); Serial.println (" V");
  Serial.print ("Analog input 1:"); Serial.print (voltage1); Serial.println (" V");
  Serial.print ("Analog input 2:"); Serial.print (voltage2); Serial.println (" V");
  Serial.print ("Analog input 3:"); Serial.print (voltage3); Serial.println (" V");
  Serial.println ("------------------------");
   
  delay (1000);
}

Beispielprogramm Download

KY053-Arduino.zip

KY-053

Per entsprechenden Befehlen auf dem I2C-Bus können auf bis zu 4 Eingängen analoge Spannungswerte mit bis zu 16-Bit Genauigkeit gemessen werden. Das Messergebnis wird kodiert auf den I2C-Bus ausgegeben.

Technische Daten

Schnittstelle I2C
ADC-Kanäle 4
Auflösung pro Kanal 16 Bit
Programmierbare Abtastrate 8 bis 860 SPS
Betriebsspannung 2 V bis 5,5 V
Analogeingangsspannung 0 V bis Betriebsspannung
I2C Logikspannung 0 V bis 5,5 V
I2C Adresse 0x48 bis 0x4B
Typischer Betriebsstrom 150μA

Änderung der I2C Adresse

Dieser Analog zu Digital Wandler (oder in kurz ADC) besitzt nicht nur eine I2C Adresse. Hierbei handelt es sich um einen ADC welcher 4 verschiedene I2C Adressen besitzen kann. Diese können frei gewählt werden aber im weiteren verlauf wird die Standard Adresse 0x48 benutzt.

In der folgenden Tabelle können Sie alle möglichen Adressen einsehen und auch wie diese zu erreichen sind. Hierbei ist hauptsächlich zu beachten das der ADDR Pin des ADC verantwortlich ist für die Änderung der Adresse.

Von Zu Adresse
ADDR Pin GND Pin 0x48
ADDR Pin VDD Pin 0x49
ADDR Pin SDA Pin 0x4A
ADDR Pin SCL Pin 0x4B

Pin Belegung

Codebeispiel Raspberry Pi

Anschlussbelegung Raspberry Pi

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

Der Raspberry Pi besitzt im Gegensatz zum Arduino weder analoge Eingänge, noch einen integrierten Analog-Digital Converter. Dies schränkt den Raspberry Pi bei der Verwendung von analogen Sensoren ein. Um dennoch analoge Sensoren am Raspberry Pi verwenden zu können, kann der Raspberry Pi um unser KY-053 Analog Digital Converter Modul um 4 ADC Kanäle mit 16-Bit Genauigkeit erweitert werden.

Das Programm nutzt zur Ansteuerung des ADS1115 ADC die entsprechenden ADS1x15 und I2C Python-Libraries von Adafruit. Diese wurden unter dem folgenden Link Adafruit_CircuitPython_ADS1x15 unter der MIT-Lizenz veröffentlicht. Die benötigten Libraries sind nicht im unteren Download-Paket enthalten.

Zunächst müssen Sie I2C auf Ihren Raspberry Pi aktivieren. Um die Konfiguration zu öffnen, geben Sie den folgenden Befehl ein:

sudo raspi-config

Wählen Sie dort 3 Interface Options → I4 I2C aus und aktivieren Sie die I2C-Schnittstelle. Sie haben nun erfolgreich I2C aktiviert. Der Analog-Digital Wandler ist jetzt unter der I2C-Adresse 0x48 erreichbar, welche bei diesem Sensor standardmäßig gesetzt ist. Die I2C Adresse wird anders sein, wenn Sie diese bereits konfiguriert haben sollten, bevor Sie Ihren Raspberry Pi konfiguriert haben.

Installieren Sie nun pip3 mit dem folgendem Befehl:

sudo apt-get install python3-pip

Als nächstes muss die virtuelle Umgebung eingerichtet werden. Geben Sie dazu die folgenden Befehle ein:

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

Mit dem folgenden Befehlen laden Sie sich die adafruit-circuitpython-ads1x15 Bibliothek herunter und installieren sie.

pip3 install adafruit-circuitpython-ads1x15

Nachdem Sie die Bibliothek heruntergeladen haben, brauchen Sie nur mit folgendem Befehl...

nano ADS1115.py

...eine neue Datei auf Ihrem Raspberry Pi zu erstellen und dann den folgenden Code in die so eben erstellt Datei kopieren.

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

# Create the I2C bus
i2c = busio.I2C(board.SCL, board.SDA)

# Create the ADC object using the I2C bus
ads = ADS.ADS1115(i2c)

# Create single-ended input on channels
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)

Beispielprogramm Download

KY053-RPi.zip

Zu starten mit dem Befehl

sudo python3 KY053.py

Erweiterte ADS1115 Funktionen

Die in den oben dargestellten Codebeispielen verwendete ADS1115-Funktion wird als "Single Ended Conversion" bezeichnet und bedeutet, dass eine Messung an dem ausgewählten Einzelkanal in Bezug auf Masse durchgeführt wird.

Neben dieser Art der Messung verfügt der ADS1115 ADC z.B. auch über eine Differenzmessfunktion, so dass eine Differenzspannung zwischen zwei Eingängen gemessen wird (z.B. Spannung zwischen A0 und A1). Neben der einseitigen Messung kann auch eine Komparatorfunktion aktiviert werden, die erst bei Überschreiten einer Spannungsschwelle ein Messergebnis liefert.

Diese und andere Funktionen, wie z.B. die Änderung der Abtastrate, werden in den Adafruit-Bibliotheken zur Konfiguration programmiert - siehe die Adafruit-Bibliotheksdokumentation für Details.

KY-053

Per entsprechenden Befehlen auf dem I2C-Bus können auf bis zu 4 Eingängen analoge Spannungswerte mit bis zu 16-Bit Genauigkeit gemessen werden. Das Messergebnis wird kodiert auf den I2C-Bus ausgegeben.

Technische Daten

Schnittstelle I2C
ADC-Kanäle 4
Auflösung pro Kanal 16 Bit
Programmierbare Abtastrate 8 bis 860 SPS
Betriebsspannung 2 V bis 5,5 V
Analogeingangsspannung 0 V bis Betriebsspannung
I2C Logikspannung 0 V bis 5,5 V
I2C Adresse 0x48 bis 0x4B
Typischer Betriebsstrom 150μA

Änderung der I2C Adresse

Dieser Analog zu Digital Wandler (oder in kurz ADC) besitzt nicht nur eine I2C Adresse. Hierbei handelt es sich um einen ADC welcher 4 verschiedene I2C Adressen besitzen kann. Diese können frei gewählt werden aber im weiteren verlauf wird die Standard Adresse 0x48 benutzt.

In der folgenden Tabelle können Sie alle möglichen Adressen einsehen und auch wie diese zu erreichen sind. Hierbei ist hauptsächlich zu beachten das der ADDR Pin des ADC verantwortlich ist für die Änderung der Adresse.

Von Zu Adresse
ADDR Pin GND Pin 0x48
ADDR Pin VDD Pin 0x49
ADDR Pin SDA Pin 0x4A
ADDR Pin SCL Pin 0x4B

Pin Belegung

Codebeispiel Micro:Bit

Anschlussbelegung Micro:Bit

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

Der Micro:Bit verfügt bereits über einen integrierten 10-Bit ADC. Werden weitere Kanäle oder eine höhere Genauigkeit benötigt, so kann der Micro:Bit mit Hilfe des KY-053 Analog Digital Converter Moduls um 4 ADC Kanäle mit 16-Bit Genauigkeit erweitert werden.

Zur Ansteuerung empfehlen wir die Verwendung der pxt-ads1115 Biblitohek, die von uns unter der MIT-Lizenz veröffentlicht wurde.

Die Bibliothek können Sie hinzufügen, indem Sie auf der Makecode Seite auf Erweiterungen klicken und dort dann ADS1115 in der Suchleiste eingeben. Nachdem Sie das getan haben, müssen Sie nur noch auf die Erweiterung klicken, um diese automatisch für ihr aktuelles Projekt hinzuzufügen.

Beispielprogramm Download

microbit-KY-053.zip

KY-053

Per entsprechenden Befehlen auf dem I2C-Bus können auf bis zu 4 Eingängen analoge Spannungswerte mit bis zu 16-Bit Genauigkeit gemessen werden. Das Messergebnis wird kodiert auf den I2C-Bus ausgegeben.

Technische Daten

Schnittstelle I2C
ADC-Kanäle 4
Auflösung pro Kanal 16 Bit
Programmierbare Abtastrate 8 bis 860 SPS
Betriebsspannung 2 V bis 5,5 V
Analogeingangsspannung 0 V bis Betriebsspannung
I2C Logikspannung 0 V bis 5,5 V
I2C Adresse (Per Jumper Konfigurierbar) 0x48 bis 0x4B
Typischer Betriebsstrom 150μA

Änderung der I2C Adresse

Dieser Analog zu Digital Wandler (oder in kurz ADC) besitzt nicht nur eine I2C Adresse. Hierbei handelt es sich um einen ADC welcher 4 verschiedene I2C Adressen besitzen kann. Diese können frei gewählt werden aber im weiteren verlauf wird die Standard Adresse 0x48 benutzt.

In der folgenden Tabelle können Sie alle möglichen Adressen einsehen und auch wie diese zu erreichen sind. Hierbei ist hauptsächlich zu beachten das der ADDR Pin des ADC verantwortlich ist für die Änderung der Adresse.

Von Zu Adresse
ADDR Pin GND Pin 0x48
ADDR Pin VDD Pin 0x49
ADDR Pin SDA Pin 0x4A
ADDR Pin SCL Pin 0x4B

Pin Belegung

Codebeispiel Raspberry Pi Pico

Anschlussbelegung Raspberry Pi Pico

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

Der Raspberry Pi Pico verfügt bereits über einen integrierten 12-Bit ADC. Werden weitere Kanäle oder eine höhere Genauigkeit benötigt, so kann der Raspberry Pi Pico mit Hilfe des KY-053 Analog Digital Converter Moduls um 4 ADC Kanäle mit 16-Bit Genauigkeit erweitert werden.

Zur Ansteuerung empfehlen wir die Verwendung der ADS1115-Micropython Biblitohek, die von uns unter der MIT-Lizenz veröffentlicht wurde.

Dieses Codebeispiel liest Kanal 0 und gibt die gelesenen Daten als Analogwert und als berechnete Spannung zurück.

# Bibliotheken laden
import machine
import ADS1115
import sys
from time import sleep

# Variablen Initialisierung
chan = 0

if __name__ == '__main__':
    try:
        # Initialisierung des ADC
        ADS1115.init(0x48, 3, 4, False)
        print("start")
        while True:
            # Ausgabe der Daten von Kanal 0 des ADC
            print(ADS1115.read(chan))
            # Ausgabe der Ausgelesenen und umgerechneten Daten von Kanal 0 des ADC
            print(str(ADS1115.raw_to_v(ADS1115.read(chan))) + " V")
            sleep(1)

    except KeyboardInterrupt:
        sys.exit()

Beispielprogramm Download

KY053-Pico.zip