Änderungen

KY-053 Analog Digital Converter

6.874 Byte hinzugefügt, 10:07, 6. Apr. 2016
==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 Genauigkeitgemessen werden. Das Messergebnis wird kodiert auf den I2C-Bus ausgegeben.
'''Für dieses Modul wird eine entsprechende Software benötigt'''
 
 
==Pin-Belegung==
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 #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);
}
</pre>
'''Beispielprogramm Download:'''
[[Medium:KY-011_PWM.zip|KY-011_PWM.zip]]
||=
||[Messspitze Analog 3]
|-}  
==Codebeispiel Raspberry Pi==
Adafruit Raspberry Pi Python Library<pre class="brush: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-023 Joystick Module - 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 ADS1x15from time import sleep # Weitere benoetigte Module werden importiert und eingerichtetimport time, signal, sys, osimport RPi.GPIO as GPIOGPIO.setmode(GPIO.BCM)GPIO.setwarnings(False) # Benutzte Variablen werden initialisiertdelayTime = 0.2 # Adresszuweisung ADS1x15 ADC ADS1015 = 0x00  # 12-bit ADCADS1115 = 0x01  # 16-bit # Verstaerkung (Gain) wird ausgewaehltgain = 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 Sekundesps = 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 ausgewaehltx_adc_channel = 0    # Channel 0 für die x-Achsey_adc_channel = 1    # Channel 1 für die y-Achse# adc_channel = 2    # Channel 2# adc_channel = 3    # Channel 3 # Hier wird der ADC initialisiert - beim KY-053 verwendeten ADC handelt es sich um einen ADS1115 Chipsatzadc = ADS1x15(ic=ADS1115) Button_PIN = 24GPIO.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                x = adc.readADCSingleEnded(x_adc_channel, gain, sps)                y = adc.readADCSingleEnded(y_adc_channel, gain, sps)                 # Ausgabe auf die Konsole                if GPIO.input(Button_PIN) == True:                        print "X-Achse:", x,"mV, ","Y-Achse:", y,"mV, Button: nicht gedrückt"                else:                        print "X-Achse:", x, "mV, ", "Y-Achse:", y, "mV, Button: gedrückt"                print "---------------------------------------"                 # Reset + Delay                button_pressed = False                time.sleep(delayTime)   except KeyboardInterrupt:        GPIO.cleanup() </pre> '''Anschlussbelegung Raspberry Pi:''' Sensor KY-039 {| style="height: 85px; padding-left: 30px;" width="441"|-||Signal||=||Analog 0||[Pin A0 (ADS1115 - KY-053)]|-||+V||=||3,3V||[Pin 1]|-||GND||=||Masse||[Pin 6]|} ADS1115 - KY-053: {| style="height: 127px; padding-left: 30px;" width="436"|-||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: <pre class="brush:bash">sudo python KY-0039_HeartBeatDetector.py</pre>
ADS1115 Python Library
https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/tree/master/Adafruit_ADS1x15==Erweiterte Funktionen des ADS1115 ADC==
Bürokrat, Administrator
611
Bearbeitungen