Projekt 52: Lautstärkeanzeige und Visualisierung
Autor: Andre Adämmer und Dominik-Kai Meyer
Betreuer: Prof. Dr. Mirek Göbel
Einleitung
Dieser Artikel beschreibt das Projekt 52, welches im Rahmen des "Elektrotechnik Fachpraktikums" im WS 2017/2018 von den genannten Autoren des Studienganges "Business and System Engineering" im zweiten Fachsemester erstellt worden ist. Dieser Wikieintrag ist Teil der gesamten Projektleistung und dient dazu das Projekt hinreichend zu beschreiben und zu dokumentieren. Zum Projekt selber kann man sagen, dass es sich um die Verarbeitung von Signalen eines Loudness-Sensors mittels Arduino Uno und die daraus entsprechende Ausgabe an Aktoren handelt. Aktoren hier, sind LED und eine LCD-Anzeige. Allgemein wird mit der Verschaltung das Konzept der "Lernampel" verfolgt, das heißt, dass je nach unterschiedlicher Lautstärke eine grüne, orange oder bei unzulässiger Lautstärke eine rote LED leuchtet. Der LCD-Display liefert die Werte des Sensors in der Einheit Dezibel (dB). Die Idee für das Projekt leitete sich aus der oft zu lauten Geräuschkulisse in den PC-Pools ab.
Lernziele und Projektumfang
Lernziele
- Eigenständige Vorbereitung und Erstellung eines Projekts/Projektablaufs
- Umgang mit Arduino Hard-un Software
- Erstellen von digitalen Schaltplänen mittels Fritzing
Projektumfang
- Ersteinführung des Projektes
- Beschaffen der notwendigen Komponenten
- Einlesen in das "Arduino- Milieu"
- Verbindung auf Steckbrett von Arduino zu Sensor und LCD-Display, sowie LED's erstellen (Fritzing)
- Erstellen des Arduinoprogrammcodes
- Mobilisierung des Projektaufbaus
- Dokumentation und Video
- Präsentation
Gantt Chart für das Projekt
Die Abbildung rechts zeigt den Projektablaufplan. Nach der Einführungsveranstaltung werden die verschiedenen Aufgabenschritte über mögliche Meilensteile in ein Gantt-Diagramm getragen, um den das Projekt fristgerecht erstellen und präsentiern zu können.
Beginn, wie im Chart zu sehen, ist der 5.10.2017. Die Abschlusspräsentation ist am 22.01.2017. Die wichtigsten Projektschritte, sprich Teilaufgaben und Arbeitspakete sind in der Abbildung 2 "Projektablauf" zu erkennen. Diese fangen an von der Bauteilbestellung, über Programmierung in Arduino bis hin zur Erstellung der Dokumentation.
Theoretischer Hintergrund
Arduino
Mit dem Arduino-Microcontrollerboard kann man auch ohne wenig Programmierkenntnisse eigenstädnige Projekte erstellen und lernt Umgang mit Hard-und Software. Die Arduinosoftware ist auf der Webseite frei erhältlich und erhält eine Vielzahl von vorgeskripten Programmen bei denen man gegebenenfalls lediglich das "void_setup" anpassen muss, um das gewünschte Programm laufen zu lassen. Dadurch werden "Aha"-Effekte sehr schnell bei bei den Benutzern erzielt. Durch das sogennante "physical computing" können über einfach Input-/Output- Mechanismen autarke Objekte angesteuert, bzw. deren Signale ausgelesen werden. Außerdem gibt es viele kompatible Sensoren und Aktoren für das Arduinoboard, welches den Umfang der Beschaffung der Teile erheblich vereinfacht.
Arduino Uno
In diesem Projekt wird als Microcontrollerboard das Arduino-Uno verwendet. Das Arduino verfügt über eine Betriebs fünf Volt, die nicht überschritten werden soll, welches vor allen Dingen dann zu beachten ist, wenn angeschlossene Sensorik oder Motoren eine höhere Spannungsversorgung benötigen. Die Versorgungsspannung liegt hingegen bei sieben bis 12 V Die Kommunikation mit der Software auf dem Computer erfolgt per USB (Typ A zu Typ B). Das Board selber verfügt über 14 digital In-/und Output Pins, bei denen sechs PWM (Pulsweitenmodulation) ermöglichen. Außerdem verfügt es über sechs analoge Inputeingänge. Zu beachten ist außerdem noch, dass der Strom an den I/O Pins 20 Milliampere nicht überschreiten sollte. Am Ausgangspin für 3,3 Volt dürfen 50 Milliampere nicht überschritten werden. Deshalb ist immer auf Strombegrenzung zu achten.
Sensor
Der sich im Trichter befindende Sensor, von der Firma "SEEED Studio", ist hergestellt um die Umgebungslautstärke zu messen und ist direkt kompatibel zum Arduino Microcontrollerboard. Der Sensor selber besteht aus einem eingebauten Mikrophon mit einem LM2904 Verstärker, welches hochfrequente Signale filtert und dann verstärkt.Um Störgeräusche zu vermeiden, wird das Inputsignal zweimalig bereits im Modul gefiltert. Je nach Belangen kann mit der Potentiometerschraube am Sensor der Outputfaktor bestimmt werden und somit kann die Sensitivität je nach Umgebung angepasst werden. Wenn viel Umgebungsgeräusche vorhanden sind, ist es besser die Empfinglichkeit höher zu stellen und umgekehrt ist es zweckmäßiger die Trennschärfe zu erhöhen. Der Spannungswert hängt direkt von der empfangene Lautstärke ab, und kann nach der internen Filterung über den Befehl "analogRead" (siehe Programmcode) im Arduino eingelesen werden.
Der verwendete Sensor mit dem Namen "Seeed Studio Grove - Loudness Sensor" hat folgende Kennwerte.
- Spannungsversorgung :3,5~10 VDC
- Frequenz:50~2000 Hz
- Sensitivität (Verstärkung) : -48~66 dB
- Signal-Rausch-Verhältnis: >58 dB
- Output Signal Breite : Analog Signal (0-1023)
Das Signal- Rausch- Verhältnis (SNR: signal-to-noise-ratio)gibt an, ab wann ein Empfänger Rauschen von Signalen unterscheidet. Es ist definiert als Quotient der Nutzsignalleistung durch die Rauschleistung. Der Wert für den Sensor liegt bei 58 Dezibel,i.e ab SNR von größer 58 dB kann der Sensor bei verrauschten Signal zwischen Rauschen und Signal unterscheiden. Dadurch kommt es in der Anwendung oft zu ungenauen Werten.
Prinzip Hörtrichter
Der um den Sensor angebrachte Trichter dient als "Hörrohr". Eigentlich als Abfülltrichter gedacht, tut er jedoch auch als Schallverstärkter seinen Zweck. Durch die große Öffnung werden Schallwellen aufgefangen und durch den Zulauf auf den Sensor verstärkt. Durch den Trichter verringert sich das Rauschen auf des Sensor, und so werden akzeptable Werte ausgegeben. Der ausgegebene Dezibelwert wird um circa 13-15 dB verstärkt.
Projektdurchführung
Liste der notwendigen Bauteile
Die nachfolgende Tabelle zeigt die mindestens benötigten Teile zu Realisierung der Projektaufgabe.
Tabelle 1: Liste der Bauteile.
Anzahl | Bauteil | Preis gesamt(€) |
---|---|---|
1 | Arduino Uno | 22,40 |
1 | Stromkabel | 2,95 |
2 | Scharnier | 3,58 |
1 | Trichter | 2,99 |
6 | Holzschrauben | 0,99 |
1 | Steckbrett | 2,50 |
3 | LED | 0,99 |
1 | LCD-Display | 2,99 |
3 | Widerstand | 0,99 |
15 | Kabel | 1,50 |
1 | Potentiometer | 0,87 |
1 | Loudness Sensor | 6,40 |
Aufbau
Anschlüsse und Verbindung des Arduino
Die Abbildung 3 zeigt den Aufbau des Projektes. Es fehlt der Anschluss des Sensor, da die Skizze sonst etwas unübersichtlich wird. Der Loudnesssenor ist lediglich über die Spannungsversorgung (++, GND) und über einen analogen Eingang (A0) mit dem Arduinoboard verbunden. Die LEDs sind über die digitalen Ausgänge (8,9,10) mit dem Steckbrett, auf dem sich die LEDs über einen Vorwiderstand zur Strombegrenzung befinden, verschaltet. Das LCD-Display ist mit der Spannungsversorgung des -Arduino und über die Pins (12, 11, 5, 4, 3, 2) mit dem Arduio verbunden und befindet sich ebenfalls auf dem Steckbrett. Für die optimale Displayauflösung ist ein Potentiometer vorgeschaltet.
Gesamtaufbau
Damit das Projekt, also der Sensor mit Microcontrollerboard und Steckplatte auf transportiert werden können, sind zwei gleichgroße klarlack-lackierte Holzbretter über zwei Scharniere miteiander verbunden. So kann der Aufbau an den gewünschten Einsatzort aufgestellt werden. Der Trichter wird, wie bereits beschrieben, als Hörunterstüzung genutzt und um Luftströmung vom Sensor fernzuhalten. Das Arduino Uno, sowie das Stechbrett sind mittels doppelseitigem Klebeband mit der Konstruktion verbunden und können bei Bedarf bewegt oder abgenommen werden, um den Aufbau eventuell noch "portabler" zu gestalten. (Vgl. Abbildung 1 Projektaufbau)
Quellcode in der Arduinosoftware
In den folgenden Zeilen ist der Quellcode, sowie er auf dem Arduino Uno implementiert worden ist, geskriptet. Die Kommentare im Quellcode veranschaulichen die Vorgehensweise.
Beginn des Quellcodes:
" //Einbinden der Bibliothek für das LCD Display include <LiquidCrystal.h>
//Anschlüsse des LCD Displays an den Arduino LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//Sensorbelegung Arduino int soundSensor = A0;
//Pinbelegung LED int ledPin1 = 8 int ledPin2 = 9 int ledPin3 = 10
int dB, PdB; int adc; const int MIC = 0;
void setup(){
Serial.begin(9600);
//Sound Sensor pinMode(soundSensor, INPUT);
//LED Pins pinMode(ledPin1,OUTPUT); pinMode(ledPin2,OUTPUT); pinMode(ledPin3,OUTPUT);
//LCD Display leeren und den Cursor setzen lcd.begin(16, 2); lcd.clear();
}
void loop(){
PdB = dB; //Speichern des vorherigen Wertes adc = analogRead(MIC); //Einlesen der Sensor Spannung dB = (adc+83.2073) / 11.003; //Formel zur Konvertierung der Spannungswerte zu Dezibelwerten
if (PdB != dB) // Wenn der vorherige Wert nicht gleich dem neuen Wert ist { lcdDisplay(dB); //Ausgabe des Dezibelwerts Serial.println (dB); //Ausgabe im Seriellen Monitor
if (dB<25) //Ist der Wert unter 25 { //Grüne LED greenLight(); delay(150); } else if((dB>30) && (dB<70)) // Wert zwischen 30 und 70 { //Gelbe LED yellowLight(); delay(150); } else if(dB>70) { //Wert über 70 //Rote LED redLight(); lcd.clear(); lcd.print(""); lcd.print(dB); lcd.print(" Dezibel"); lcd.setCursor(0,1); //CUrsor auf die 1. Zeile um mehr auszugeben lcd.print("Bitte leiser."); delay(2000); // 2 Sekunden Pause um die Ausgabe zu lesen } }
}
//Sensor Daten auf dem LCD anzeigen void lcdDisplay(int dB) {
lcd.clear(); //LCD leeren lcd.setCursor(0,0); //Cursor auf den Anfang lcd.print("Dezibel: "); lcd.print(dB); //Ausgabe der Werte
}
void greenLight() {
digitalWrite(ledPin1, HIGH); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW);
}
void yellowLight() {
digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, HIGH); digitalWrite(ledPin3, LOW);
} void redLight() {
digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, HIGH);
} " Ende des Quellcodes
Ergebnisse des Projekts
Die Ergebnisse des Projekts sind dahingehend zufriedenstellend, dass der Code fehlerfrei funktioniert, und die LEDs entsprechend der Lautstärke aufleuchten. Auch der LCD-Display mit der Ausgabe der Dezibelwerte funktioniert. Schade ist, dass der Sensor weniger auf hörbare geräusche, als vielmehr auf Luftzüge reagiert. Dadurch leuchtet die rote LED auf, obwohl es eigentlich leise ist.
Zusammenfassung
Das Projekt bietet die Möglichkeit, sich in die Arduinoumgebung einzuarbeiten, und sein persönliches Projektmanagement zu verbessern. Der Anspruch für das Projekt zielt auf die Studenten des "Business and System Engineering"- Studiengang ab, welche zuvor noch nicht mit Microcontrollern und damit verbunden Schaltplänen gearbeitet haben. Für Studenten der Mechatronik bietet sich bezüglich dieses Projektes eine Erweiterung hinsichtlich Funktion und Einsatzbereich an.
Ausblick
Das Projekt kann in diesem Sinne als abgeschlossen gelten, bietet jedoch einige Möglichkeiten der Verbesserung. Hier einige Vorschläge:
- Verbesserung und Verkleinerung des Versuchsaufbau
- Anbringung einer Batteriehalterung, damit nicht keine externe Spannungsquelle, bzw. kein Kabelbenötigt wird.
- Lochrasterplatine zur Verlötung der Bauteile
- Ausgabe über einen großen LED-, oder LCD-Display, damit alle Leute im Raum die Lautstärke wahrnehmen
- Verwendung eines Lautsprechers, der bei Überschreitung der maximal zulässigen Lautstärke einen Warnton gibt
Literaturverzeichnis
Korrektur/Rückmeldungen
Hier können Nutzer oder kritische Leser (meist Professoren) Verbesserungen fordern/vorschlagen.
YouTube Video
→ zurück zum Hauptartikel: Fachpraktikum Elektrotechnik (WS 15/16)