KY-053 Analog Digital Converter: Unterschied zwischen den Versionen
Aus Linkerkit.de
(→Codebeispiel Arduino) |
|||
Zeile 20: | Zeile 20: | ||
Das unten stehende Beispiel verwendet diese besagte Library - hierzu empfehlen wir diese von Github 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 dieses Codebeispiel und folgende Projekte zur Verfügung steht. | Das unten stehende Beispiel verwendet diese besagte Library - hierzu empfehlen wir diese von Github 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 dieses Codebeispiel und folgende Projekte zur Verfügung steht. | ||
− | <pre class="brush:cpp">#include | + | <pre class="brush:cpp">#include |
− | #include | + | #include |
// ADS1115 Modul wird initialisiert - alle folgenden Operationen mit dem ADC | // ADS1115 Modul wird initialisiert - alle folgenden Operationen mit dem ADC | ||
Zeile 92: | Zeile 92: | ||
'''Beispielprogramm Download:''' | '''Beispielprogramm Download:''' | ||
− | + | [[Medium:KY-053-AnalogDigitalConverter.zip|KY-053-AnalogDigitalConverter.zip]] | |
'''Anschlussbelegung Arduino:''' | '''Anschlussbelegung Arduino:''' | ||
Zeile 141: | Zeile 141: | ||
==Codebeispiel Raspberry Pi== | ==Codebeispiel Raspberry Pi== | ||
<pre class="brush:py"> | <pre class="brush:py"> | ||
− | |||
# | # | ||
#!/usr/bin/python | #!/usr/bin/python | ||
# coding=utf-8 | # coding=utf-8 | ||
− | + | ||
############################################################################################################# | ############################################################################################################# | ||
### Copyright by Joy-IT | ### Copyright by Joy-IT | ||
Zeile 151: | Zeile 150: | ||
### Commercial use only after permission is requested and granted | ### Commercial use only after permission is requested and granted | ||
### | ### | ||
− | ### KY- | + | ### KY-053 Analog Digital Converter - Raspberry Pi Python Code Example |
### | ### | ||
############################################################################################################# | ############################################################################################################# | ||
− | + | ||
− | + | ||
# Dieser Code nutzt die ADS1115 und die I2C Python Library fuer den Raspberry Pi | # Dieser Code nutzt die ADS1115 und die I2C Python Library fuer den Raspberry Pi | ||
# Diese ist unter folgendem Link unter der BSD Lizenz veroeffentlicht | # Diese ist unter folgendem Link unter der BSD Lizenz veroeffentlicht | ||
Zeile 161: | Zeile 160: | ||
from Adafruit_ADS1x15 import ADS1x15 | from Adafruit_ADS1x15 import ADS1x15 | ||
from time import sleep | from time import sleep | ||
− | + | ||
# Weitere benoetigte Module werden importiert und eingerichtet | # Weitere benoetigte Module werden importiert und eingerichtet | ||
import time, signal, sys, os | import time, signal, sys, os | ||
Zeile 167: | Zeile 166: | ||
GPIO.setmode(GPIO.BCM) | GPIO.setmode(GPIO.BCM) | ||
GPIO.setwarnings(False) | GPIO.setwarnings(False) | ||
− | + | ||
# Benutzte Variablen werden initialisiert | # Benutzte Variablen werden initialisiert | ||
− | delayTime = 0. | + | delayTime = 0.5 # in Sekunden |
− | + | ||
# Adresszuweisung ADS1x15 ADC | # Adresszuweisung ADS1x15 ADC | ||
− | + | ||
− | ADS1015 = | + | ADS1015 = 0x00 # 12-bit ADC |
− | ADS1115 = | + | ADS1115 = 0x01 # 16-bit |
− | + | ||
# Verstaerkung (Gain) wird ausgewaehlt | # Verstaerkung (Gain) wird ausgewaehlt | ||
− | gain = | + | gain = 4096 # +/- 4.096V |
− | # gain = | + | # gain = 2048 # +/- 2.048V |
− | # gain = | + | # gain = 1024 # +/- 1.024V |
− | # gain = | + | # gain = 512 # +/- 0.512V |
− | # gain = | + | # gain = 256 # +/- 0.256V |
− | + | ||
# Abtasterate des ADC (SampleRate) wird ausgewaehlt | # Abtasterate des ADC (SampleRate) wird ausgewaehlt | ||
− | # sps = | + | # sps = 8 # 8 Samples pro Sekunde |
− | # sps = | + | # sps = 16 # 16 Samples pro Sekunde |
− | # sps = | + | # sps = 32 # 32 Samples pro Sekunde |
− | sps = | + | sps = 64 # 64 Samples pro Sekunde |
− | # sps = | + | # sps = 128 # 128 Samples pro Sekunde |
− | # sps = | + | # sps = 250 # 250 Samples pro Sekunde |
− | # sps = | + | # sps = 475 # 475 Samples pro Sekunde |
− | # sps = | + | # sps = 860 # 860 Samples pro Sekunde |
− | + | ||
# ADC-Channel (1-4) wird ausgewaehlt | # ADC-Channel (1-4) wird ausgewaehlt | ||
− | + | adc_channel_0 = 0 # Channel 0 | |
− | + | adc_channel_1 = 1 # Channel 1 | |
− | + | adc_channel_2 = 2 # Channel 2 | |
− | + | adc_channel_3 = 3 # Channel 3 | |
− | + | ||
# Hier wird der ADC initialisiert - beim KY-053 verwendeten ADC handelt es sich um einen ADS1115 Chipsatz | # Hier wird der ADC initialisiert - beim KY-053 verwendeten ADC handelt es sich um einen ADS1115 Chipsatz | ||
adc = ADS1x15(ic=ADS1115) | adc = ADS1x15(ic=ADS1115) | ||
− | + | ||
Button_PIN = 24 | Button_PIN = 24 | ||
GPIO.setup(Button_PIN, GPIO.IN, pull_up_down = GPIO.PUD_UP) | GPIO.setup(Button_PIN, GPIO.IN, pull_up_down = GPIO.PUD_UP) | ||
− | + | ||
############################################################################################################# | ############################################################################################################# | ||
− | + | ||
# ######## | # ######## | ||
# Hauptprogrammschleife | # Hauptprogrammschleife | ||
Zeile 212: | Zeile 211: | ||
# Das Programm liest die aktuellen Werte der Eingang-Pins | # Das Programm liest die aktuellen Werte der Eingang-Pins | ||
# und gibt diese in der Konsole aus | # und gibt diese in der Konsole aus | ||
− | + | ||
try: | try: | ||
− | + | while True: | |
− | + | #Aktuelle Werte werden aufgenommen | |
− | + | adc0 = adc.readADCSingleEnded(adc_channel_0, gain, sps) | |
− | + | adc1 = adc.readADCSingleEnded(adc_channel_1, gain, sps) | |
− | + | adc2 = adc.readADCSingleEnded(adc_channel_2, gain, sps) | |
− | + | adc3 = adc.readADCSingleEnded(adc_channel_3, gain, sps) | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | # Ausgabe auf die Konsole | ||
+ | print "Messwert Channel 0:", adc0, "mV " | ||
+ | print "Messwert Channel 1:", adc1, "mV " | ||
+ | print "Messwert Channel 2:", adc2, "mV " | ||
+ | print "Messwert Channel 3:", adc3, "mV " | ||
+ | print "---------------------------------------" | ||
+ | |||
+ | # Reset + Delay | ||
+ | button_pressed = False | ||
+ | time.sleep(delayTime) | ||
+ | |||
+ | |||
+ | |||
+ | except KeyboardInterrupt: | ||
+ | GPIO.cleanup() | ||
</pre> | </pre> | ||
Version vom 6. April 2016, 10:26 Uhr
Inhaltsverzeichnis
Bild
Technische Daten / Kurzbeschreibung
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. Das Messergebnis wird kodiert auf den I2C-Bus ausgegeben. Für dieses Modul wird eine entsprechende Software benötigt
Pin-Belegung
Die Pin-Belegung ist auf der Modulplatine aufgedruckt
Codebeispiel Arduino
Die Arduino-Boards besitzen von Haus aus einen 10 Bit-ADC mit 6 Kanälen. Benötigt man jedoch mehr Kanäle oder eine höhere Genauigkeit, dann kann man den Arduino mittels des KY-053 Analog Digital Converter Moduls um 4 ADC Kanäle mit 12-Bit Genauigkeit erweitern, welches per I2C an den Arduino angeschlossen wird.
Zur Ansteuerung dieses Moduls gibt es mehrere Möglichkeiten - als besonders zugänglich haben sich die ADS1X15 Libraries erwiesen, die die Firma Adafruit unter [https://github.com/adafruit/Adafruit_ADS1X15] unter der [BSD-Lizenz] veröffentlicht hat.
Das unten stehende Beispiel verwendet diese besagte Library - hierzu empfehlen wir diese von Github 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 dieses Codebeispiel und folgende Projekte zur Verfügung steht.
#include #include // ADS1115 Modul wird initialisiert - alle folgenden Operationen mit dem ADC // können mit Hilfe des Objektes "ads" ausgeführt werden. Adafruit_ADS1115 ads; void setup(void) { Serial.begin(9600); Serial.println("Werte der analogen Eingaenge des ADS1115 (A0..A3) werden ausgelesen und ausgegeben"); Serial.println("ADC Range: +/- 6.144V (1 bit = 0.1875mV)"); // Dieses Modul besitzt an seinen analogen Eingängen Signalverstärker, deren // Verstärkung per Software in den unten stehenden Bereichen konfiguriert werden // können. // Dieses ist in dem Fall gewünscht, wenn ein bestimmter Spannungsbereich // als messergebnis erwartet wird und man so eine höhere Auflösung des Signals // erhält. // Als Standardverstärkung ist Gain=[2/3] gewählt und kann durch Auskommentieren // auf eine andere Verstärkung umgestellt werden. // 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 die eigentliche Operation, die die Messung im ADC startet. // die "0" als Variable für diese Funktion definiert den verwendeten Channel, der gemessen werden soll // Soll z.B. der dritte Channel gemessen werden, so muss diese mit der "3" ausgetauscht werden adc0 = ads.readADC_SingleEnded(0); adc1 = ads.readADC_SingleEnded(1); adc2 = ads.readADC_SingleEnded(2); adc3 = ads.readADC_SingleEnded(3); // Dieser Wert wird für die Umrechnung in eine Spannung benötigt - dieser ´hängt von der eingestellten Verstärkung ab. // Der passende Wert zur Verstärkung sollte aus der oben aufgezeigten Tabelle entnommen werden gain_conversion_factor= 0.1875; // Umrechnung der aufgezeichneten Werte in eine Spannung voltage0 = (adc0 * gain_conversion_factor); voltage1 = (adc1 * gain_conversion_factor); voltage2 = (adc2 * gain_conversion_factor); voltage3 = (adc3 * gain_conversion_factor); // Ausgabe der Werte auf die serielle Schnittstelle Serial.print("Analog Eingang 0: "); Serial.print(voltage0);Serial.println("mV"); Serial.print("Analog Eingang 1: "); Serial.print(voltage1);Serial.println("mV"); Serial.print("Analog Eingang 2: "); Serial.print(voltage2);Serial.println("mV"); Serial.print("Analog Eingang 3: "); Serial.print(voltage3);Serial.println("mV"); Serial.println("------------------------"); delay(1000); }
Beispielprogramm Download:
KY-053-AnalogDigitalConverter.zip
Anschlussbelegung Arduino:
VDD | = | [Pin 5V] |
GND | = | [Pin GND] |
SCL | = | [Pin SCL] |
SDA | = | [Pin SDA] |
ADDR | = | [N.C.] |
ALRT | = | [N.C.] |
A0 | = | [Messspitze Analog 0] |
A1 | = | [Messspitze Analog 1] |
A2 | = | [Messspitze Analog 2] |
A3 | = | [Messspitze Analog 3] |
Codebeispiel Raspberry Pi
# #!/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 ### ############################################################################################################# # Dieser Code nutzt die ADS1115 und die I2C Python Library fuer den Raspberry Pi # Diese ist unter folgendem Link unter der BSD Lizenz veroeffentlicht # [https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code] from Adafruit_ADS1x15 import ADS1x15 from time import sleep # Weitere benoetigte Module werden importiert und eingerichtet import time, signal, sys, os import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) # Benutzte Variablen werden initialisiert delayTime = 0.5 # in Sekunden # Adresszuweisung ADS1x15 ADC ADS1015 = 0x00 # 12-bit ADC ADS1115 = 0x01 # 16-bit # Verstaerkung (Gain) wird ausgewaehlt gain = 4096 # +/- 4.096V # gain = 2048 # +/- 2.048V # gain = 1024 # +/- 1.024V # gain = 512 # +/- 0.512V # gain = 256 # +/- 0.256V # Abtasterate des ADC (SampleRate) wird ausgewaehlt # sps = 8 # 8 Samples pro Sekunde # sps = 16 # 16 Samples pro Sekunde # sps = 32 # 32 Samples pro Sekunde sps = 64 # 64 Samples pro Sekunde # sps = 128 # 128 Samples pro Sekunde # sps = 250 # 250 Samples pro Sekunde # sps = 475 # 475 Samples pro Sekunde # sps = 860 # 860 Samples pro Sekunde # ADC-Channel (1-4) wird ausgewaehlt adc_channel_0 = 0 # Channel 0 adc_channel_1 = 1 # Channel 1 adc_channel_2 = 2 # Channel 2 adc_channel_3 = 3 # Channel 3 # Hier wird der ADC initialisiert - beim KY-053 verwendeten ADC handelt es sich um einen ADS1115 Chipsatz adc = ADS1x15(ic=ADS1115) Button_PIN = 24 GPIO.setup(Button_PIN, GPIO.IN, pull_up_down = GPIO.PUD_UP) ############################################################################################################# # ######## # Hauptprogrammschleife # ######## # Das Programm liest die aktuellen Werte der Eingang-Pins # und gibt diese in der Konsole aus try: while True: #Aktuelle Werte werden aufgenommen adc0 = adc.readADCSingleEnded(adc_channel_0, gain, sps) adc1 = adc.readADCSingleEnded(adc_channel_1, gain, sps) adc2 = adc.readADCSingleEnded(adc_channel_2, gain, sps) adc3 = adc.readADCSingleEnded(adc_channel_3, gain, sps) # Ausgabe auf die Konsole print "Messwert Channel 0:", adc0, "mV " print "Messwert Channel 1:", adc1, "mV " print "Messwert Channel 2:", adc2, "mV " print "Messwert Channel 3:", adc3, "mV " print "---------------------------------------" # Reset + Delay button_pressed = False time.sleep(delayTime) except KeyboardInterrupt: GPIO.cleanup()
Anschlussbelegung Raspberry Pi:
Sensor KY-039
Signal | = | Analog 0 | [Pin A0 (ADS1115 - KY-053)] |
+V | = | 3,3V | [Pin 1] |
GND | = | Masse | [Pin 6] |
ADS1115 - KY-053:
VDD | = | 3,3V | [Pin 01] |
GND | = | Masse | [Pin 09] |
SCL | = | GPIO03 / SCL | [Pin 05] |
SDA | = | GPIO02 / SDA | [Pin 03] |
A0 | = | s.o. | [Sensor: Signal] |
Beispielprogramm Download
Zu starten mit dem Befehl:
sudo python KY-0039_HeartBeatDetector.py