KY-053 Analog Digital Converter
Per entsprechenden Befehlen auf den I2C-Bus können auf bis zu 4 Eingängen analoge Spannungswerte mit bis zu 16-Bit Genauigkeit gemessen werden.
- Arduino
- Raspberry Pi
- Raspberry Pi Pico
- Micro:Bit
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
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.
Die Bibliothek kann mit Hilfe des folgenden Befehls installiert werden:
sudo pip3 install adafruit-circuitpython-ads1x15
Damit eine Kommunikation zwischen dem ADC und dem Raspberry Pi möglich ist, muss zusätzlich die I2C-Schnittstelle des Raspberry Pis aktiviert werden. Öffnen Sie dazu die config.txt-Datei über den folgenden Befehl:
sudo nano /boot/config.txt
Fügen Sie die folgende Zeile an das Ende der Datei an:
dtparam=i2c_arm=on
Speichern Sie die Datei mit der Tastenkombination [STRG+O], bestätigen Sie mit [Enter] und verlassen Sie den Editor mit der Tastenkombination [STRG+X].
Zusätzlich ist die Installation der I2C-Bibliotheken notwendig. Installieren Sie diese über den folgenden Befehl...
sudo apt-get install python3-smbus i2c-tools -y
...und führen Sie dann im Anschluss einen Neustart durch:
sudo reboot
Hiernach kann das folgende Python-Code Beispiel verwendet werden:
sudo nano ADS1115.py
#!/usr/bin/python
# coding=utf-8
#############################################################################################################
### Copyright by Joy-IT
### Published under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
### Commercial use only after permission is requested and granted
###
### KY-053 Analog Digital Converter - Raspberry Pi Python Code Example
###
#############################################################################################################
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
Zu starten mit dem Befehl
sudo python3 KY053.py
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
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()