Änderungen

Aus Linkerkit.de

Wechseln zu: Navigation, Suche

KY-052 Drucksensor / Temperatursensor - BMP180 -

1.433 Byte entfernt, 10:36, 29. Apr. 2016
[[Datei:5_5V_G_SCL_SDA_3V.png|none|500x292px]]
==Software-Beispiel====Codebeispiel Arduino==Die Arduino-Boards besitzen von Haus Dieser Sensor gibt sein Messergebnis nicht als Signal auf einen Ausgangspin 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 sondern kommuniziert diesen per I2C an den Arduino angeschlossen wird-Bus. Über diesen lässt sich der Sensor ansteuern und die jeweiligen Messungen zum Druck und der Temperatur starten und auswerten.
Zur Ansteuerung dieses Moduls Sensormoduls gibt es mehrere Möglichkeiten - als besonders zugänglich haben hat sich die ADS1X15 Libraries Adafruit_BMP085 Library erwiesen, die die Firma Adafruit unter [dem folgenden [https://github.com/adafruit/Adafruit_ADS1X15 https://github.com/adafruit/Adafruit_ADS1X15]Adafruit_BMP085_Unified Link] unter der [OpenSource [https://opensource.org/licenses/BSD-3-Clause BSD-Lizenz]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. <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 werdenAlternativ ist diese auch im unten stehenden Download Paket ebenfalls enthalten.Adafruit_ADS1115 ads;
<pre class="brush:cpp">// Benoetigte Libraries werden eingefügt und konfiguriert
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085_U.h>
Adafruit_BMP085_Unified BMPSensor = Adafruit_BMP085_Unified(10085);
void setup(void)
{
Serial.begin(9600);
Serial.println("Werte der analogen Eingaenge des ADS1115 (A0..A3) werden ausgelesen und ausgegeben"); Serial.println("ADC Range: +/KY- 6.144V (1 bit = 0.1875mV)052 SensorTest:");
// Dieses Modul besitzt an seinen analogen Eingängen SignalverstärkerFalls der Sensor nicht erkannt wurde, 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 hier eine höhere Auflösung des SignalsFehlermeldung gezeigt // erhältif(!BMPSensor. // Als Standardverstärkung ist Gain=[2/3] gewählt und kann durch Auskommentieren // auf eine andere Verstärkung umgestellt werden. // ADS1115 // ------- ads.setGainbegin(GAIN_TWOTHIRDS); // 2/3x gain +/- 6.144V 1 bit = 0.1875mV ) // ads{ Serial.setGainprintln(GAIN_ONE); // 1x gain +/"KY- 4.096V 1 bit = 0.125mV // ads.setGain(GAIN_TWO053-Sensor nicht erkannt!"); // 2x gain +/- 2.048V 1 bit = 0.0625mV // ads Serial.setGainprint(GAIN_FOUR"Bitte ueberpruefen Sie die Verbindung"); // 4x gain +/- 1.024V 1 bit = 0.03125mV // ads.setGain while(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;// Initialisierung Adafruit BMP Library float voltage0, voltage1, voltage2, voltage3sensors_event_t event; float gain_conversion_factor; // Der Befehl "adsBMPSensor.readADC_SingleEndedgetEvent(0&event)" 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 werdenMessung wird gestartet, so muss diese mit der "3" ausgetauscht werdenfalls Sensor bereit adc0 = ads.readADC_SingleEndedif (0); adc1 = adsevent.readADC_SingleEnded(1pressure); adc2 = ads.readADC_SingleEnded(2);{ adc3 = ads Serial.readADC_SingleEndedprintln(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 SchnittstelleMessung des Luftdrucks Serial.print("Analog Eingang 0Luftdruck: "); Serial.print(voltage0event.pressure); Serial.println("mVhPa"); Serial // Messung der aktuellen Temperatur float temperature; BMPSensor.printgetTemperature("Analog Eingang 1: "&temperature); Serial.print(voltage1);Serial.println("mVTemperatur: "); Serial.print("Analog Eingang 2: "temperature); Serial.printwrite(voltage2176);// UniCode-Angabe eines char-Symbols für das "°-Symbol" Serial.println("mVC"); // Berechnung der Hoehe ueber dem Meeresspiegel, // aus den aufgenommenen Daten (SLP=1013.25 hPa) float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA; Serial.print("Analog Eingang 3Meereshoehe: "); Serial.print(voltage3BMPSensor.pressureToAltitude(seaLevelPressure, event.pressure, temperature)); Serial.println("mVm"); Serial.println("------------------------"); Serial.println(""); } // Fehlermeldung falls Sensor nicht ausgelesen werden kann else { Serial.println("Sensor-Fehler"); }
delay(1000);
}
 
</pre>
 
'''Beispielprogramm Download:'''
[[Medium:KY-053052-AnalogDigitalConverterDruckSensor_TemperaturSensor.zip|KY-053052-AnalogDigitalConverterDruckSensor_TemperaturSensor.zip]]
'''Anschlussbelegung Arduino:'''
{| style="height: 58px; padding-left: 30px;" width="228"
|-
||VDDVCC
||=
||[Pin 5V]
||[Pin SDA]
|-
||ADDR3,3
||=
||[N.C.]
|-
||ALRT
||=
||[N.C.]
|-
||A0
||=
||[Messspitze Analog 0]
|-
||A1
||=
||[Messspitze Analog 1]
|-
||A2
||=
||[Messspitze Analog 2]
|-
||A3
||=
||[Messspitze Analog 3]
|}