Änderungen

KY-037 Mikrofon Sensor Modul - hohe Empfindlichkeit

8.449 Byte hinzugefügt, 16:34, 6. Apr. 2016
==Bild==
[[Datei:ky-037.jpg|358x358px|none|358x358px]]
==Technische Daten / Kurzbeschreibung==
Analoger Ausgang: Direktes Mikrofon-Signal als Spannungspegel '''Digitaler Ausgang: ''' Über das Potentiometer, kann ein Grenzwert für den empfangenen Schall eingestellt werden, bei dem der digitale Ausgang schalten soll. ''' Analoger Ausgang:''' Direktes Mikrofon-Signal als Spannungspegel ---- '''LED1:''' Zeigt an, dass der Sensor mit Spannung versorgt ist '''LED2:''' Zeigt an, dass ein Magnetfeld detektiert wurde
==Pin-Belegung==
[[Datei:4_dig_V_G_An.png|none|450x235px]] ==Funktionsweise des Sensors==Dieser Sensor besitzt auf seiner Platine drei funktionelle Bestandteile. Die ist die Sensoreinheit vorne am Modul, welche das aktuelle Umfeld physikalisch misst und als analoges Signal auf die zweite Einheit, dem Verstärker, ausgibt. Dieser verstärkt das Signal abhängig vom eingestellten Widerstand am Drehpotentiometer und leitet es auf den analogen Ausgang des Moduls.  '''Hierbei ist zu beachten: '''Das Signal ist invertiert; wird ein hoher Wert gemessen, so resultiert dies in einen niedrigeren Spannungswert am analogen Ausgang. Die dritte Einheit stellt einen Komparator dar, welcher den digitalen Ausgang und die LED schaltet, wenn das Signal unter einen bestimmten Wert fällt. Mittels des Drehpotentiometers kann somit die Empfindlichkeit eingestellt werden, wie es im folgenden Bild aufgezeigt wird:   [[Datei:Empfindlichkeit_Potentiometer.jpg|none|455x542px]]  Dieser Sensor gibt somit keine absoluten Werte aus (z.B. genau gemessene Temperatur in °C oder Magnetfeldstärke in mT) , sondern es handelt sich hierbei um eine Relativ-Messung: Man definiert hierbei einen Grenzwert relativ zur gegebenen normalen Umweltsituation und es wird ein Signal ausgegeben was weiterverarbeitet werden kann, falls dieser Grenzwert überschritten bzw. ein anderer Zustand als der Normalfall eingetreten ist.  <br />Dieses Verhalten eignet sich hervorragend zur Temperaturüberwachung (KY-028), Näherungsschalter (KY-024, KY-025, KY-036), Alarmüberwachungen (KY-037, KY-038) oder Drehgeber (KY-026).
==Codebeispiel Arduino==
DigitalDas Programm liest den aktuellen Spannungswert aus, der am analogen Ausgang gemessen werden kann, und gibt diesen auf der seriellen Schnittstelle aus.
<pre class="brush:cpp">int Led = 13 ;// define LED Interfaceint buttonpin = 3; // define D0 Sensor Interfaceint val = 0;// define numeric variables valZudem wird ebenfalls der Zustand des digitalen Pins in der Konsole angegeben, was bedeutet ob der Grenzwert unterschritten wurde oder nicht.
<pre class="brush:cpp">// Deklaration und Initialisierung der Eingang-Pins
int Analog_Eingang = A0; // X-Achse-Signal
int Digital_Eingang = 3; // Knopf
void setup ()
{
pinMode (LedAnalog_Eingang, OUTPUTINPUT) ;// define LED as output interface pinMode (buttonpinDigital_Eingang, INPUT); Serial.begin (9600) ;// output interface D0 is defined sensorSerielle Ausgabe mit 9600 bps
}
// Das Programm liest die aktuellen Werte der Eingang-Pins// und gibt diese auf der seriellen Ausgabe aus
void loop ()
{
val float Analog; int Digital; //Aktuelle Werte werden ausgelesen, auf den Spannungswert konvertiert... Analog = analogRead (Analog_Eingang) * (5.0 / 1023.0); Digital = digitalRead(buttonpinDigital_Eingang); // digital interface will be assigned a value of pin 3 to read val... und an dieser Stelle ausgegeben Serial.print ("Analoger Spannungswert:"); Serial.print (Analog, 4); Serial.print ("V, "); Serial.print ("Grenzwert:"); if (val Digital== HIGH1) // When the sound detection module detects a signal, LED flashes
{
digitalWrite Serial.println (Led, HIGH" erreicht");
}
else
{
digitalWrite Serial.println (Led, LOW" noch nicht erreicht");
}
Serial.println ("----------------------------------------------------------------");
delay (200);
}
</pre>
Analog'''Anschlussbelegung Arduino:'''
<pre class{| style="brushheight:cpp58px; padding-left: 30px;">int sensorPin width= A0; // select the input pin for the potentiometer"228"int ledPin |-||digitales Signal||= 13; // select the pin for the LEDint sensorValue ||[Pin 3]|-||+V||= ||[Pin 5V]|-||GND||=||[Pin GND]|-||analoges Signal||=||[Pin 0; // variable to store the value coming from the sensor]|}
void setup (){ pinMode (ledPin, OUTPUT); Serial.begin (9600);}'''Beispielprogramm Download<br />'''
void loop [[Medium:Ard_Analoger_Sensor.zip|Ard_Analoger_Sensor.zip]]   ==Codebeispiel Raspberry Pi==<span style="color: #ff6600;">!! <span style="color: #ff0000;">Achtung</span> !! <span style="color: #99cc00;">Analoger Sensor</span>  !! <span style="color: #ff0000;">Achtung</span> !!</span> Der Raspberry Pi besitzt im Gegensatz zum Arduino keine analogen Eingänge bzw. es ist kein ADC (analog digital Converter) im Chip des Raspberry Pi's integriert. Dies schränkt den Raspberry Pi ein, wenn man Sensoren einsetzen möchte, wo nicht digital Werte ausgegeben werden [Spannungswert überschritten -> digital EIN | Spannungswert unterschritten -> digital AUS | Beispiel: Knopf gedrückt [<span style="color: #99cc00;">EIN</span>] Knopf losgelassen [<span style="color: #ff0000;">AUS</span>]], sondern es sich hier um einen kontinuierlichen veränderlichen Wert handeln sollte (Beispiel: Potentiometer -> Andere Position = Anderer Spannungswert){Um diese Problematik zu umgehen, besitzt unser ''Sensorkit X40'' mit dem '''KY-053''' ein Modul mit 16 Bit genauen ADC, welches Sie am Raspberry nutzen können, um diesen um 4 analoge Eingänge erweitern zu können. Dieses wird per I2C an den Raspberry Pi angeschlossen, übernimmt die analoge Messung und gibt den Wert digital an den Raspberry Pi weiter. Somit empfehlen wir, bei analogen Sensoren dieses Sets das KY-053 Modul mit dem besagten ADC dazwischenzuschalten. Nähere Informationen finden Sie auf der Informationsseite zum [[KY-053 Analog Digital Converter|'''KY-053'''   Analog Digital Converter]] <span style="color: #ff6600;">!! <span style="color: #ff0000;">Achtung</span> !! <span style="color: #99cc00;">Analoger Sensor</span>  !! <span style="color: #ff0000;">Achtung</span> !!</span> Das Programm nutzt zur Ansteuerung des ADS1115 ADC die entsprechenden ADS1x15 und I2C Python-Libraries der Firma Adafruit. Diese wurden unter dem folgenden Link [[https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code]] unter der BSD-Lizenz [[https://opensource.org/licenses/BSD-3-Clause Link]] veröffentlicht. Die benötigten Libraries sind im unteren Download-Paket enthalten. Das Programm liest die aktuellen Werte der Eingang-Pins und gibt diese in der Konsole als Wert in [mV] aus. Zudem wird ebenfalls der Zustand des digitalen Pins in der Konsole angegeben, was bedeutet ob der Grenzwert unterschritten wurde oder nicht. <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###### Analog Sensor + ADS1115 ADC - 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 sensorValue # +/- 0.512V# gain = analogRead 256 # +/- 0.256V # Abtasterate des ADC (sensorPinSampleRate);wird ausgewaehlt# sps = 8 # 8 Samples pro Sekunde# sps = 16 digitalWrite # 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 (ledPin1-4) wird ausgewaehltadc_channel = 0 # Channel 0# adc_channel = 1 # Channel 1# 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) # Hier waehlt man den Eingangs-Pin des digitalen Signals ausDigital_PIN = 24GPIO.setup(Digital_PIN, HIGHGPIO.IN, pull_up_down = GPIO.PUD_OFF); delay ############################################################################################################# # ######### Hauptprogrammschleife# ######### Das Programm liest die aktuellen Werte der Eingang-Pins# und gibt diese in der Konsole aus try: while True: #Aktuelle Werte werden aufgenommen analog = adc.readADCSingleEnded(sensorValueadc_channel, gain, sps); digitalWrite # Ausgabe auf die Konsole if GPIO.input(ledPinDigital_PIN) == False: print "Analoger Spannungswert:", LOWanalog,"mV, ","Grenzwert: noch nicht erreicht" else: print "Analoger Spannungswert:", analog, "mV, ", "Grenzwert: erreicht" print "---------------------------------------"  # Reset + Delay button_pressed = False time.sleep(delayTime); delay   except KeyboardInterrupt: GPIO.cleanup(sensorValue</pre>'''Anschlussbelegung Raspberry Pi:''' Sensor {| style="height: 85px;padding-left: 30px;" width="441" Serial.println |-||digitales Signal||=||GPIO 24||[Pin 18 (sensorValueRPi)]|-||+V||=||3, DEC3V||[Pin 1 (RPi)]|-||GND||=||Masse||[Pin 06 (RPi)]|-||analoges Signal||=||Analog 0||[Pin A0 (ADS1115 - KY-053)]|} 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: analoges Signal]|'''Beispielprogramm Download''' [[Medium:RPi_AnalogSensor.zip|RPi_AnalogSensor.zip]]  Zu starten mit dem Befehl: <pre class="brush:bash">sudo python RPi_AnalogSensor.py
</pre>
Bürokrat, Administrator
611
Bearbeitungen