GET Fachpraktikum 2021 Stimmgerät
Autoren: Orience Charnelle Mefenya, Jan Henrik Steltenkamp
Betreuer:
Einleitung
Dieser Artikel beschreibt den Aufbau eines Prototyps für ein Stimmgerät. Dieses wird von Musikern verwendet, um ihr Instrument korrekt einzustellen bzw. zu stimmen. Dabei wird die Frequenz im Raum durch das Gerät gemessen und an einer Skala angezeigt. Sollte das Instrument nicht korrekt gestimmt sein, wird dies auf der Skala deutlich und ermöglicht so das Justieren des Musikinstrumentes. Solche Geräte sind günstig im Handel verfügbar. Allerdings ist es nicht üblich, dass solche Geräte auch die Lautstärke im Raum angeben können. Diese Funktion soll zusätzlich durch das Gerät abgedeckt werden.
Verschiedene Musikinstrumente erzeugen unterschiedlich hohe Tonfrequenzen, welche in Herz gemessen werden. Das Stimmgerät ist darauf ausgelegt, die Frequenzen einer Gitarre analysieren zu können. Bei einer Gitarre werden unterschiedlich lange und unterschiedlich dicke Saiten angeschlagen. Über die Beschaffenheit der einzelnen Saiten ergibt sich so eine gezielt hervorgerufene Schwingung mit klar definierter Frequenz. Über die insgesamt 6 Saiten können so 6 Grundtöne erzeugt werden.
Zuordnung der Frequenzen zu den verschiedenen Grundtönen wird in Tabelle 1 dargestellt.
Saite Nr. | Grundton | Frequenz |
---|---|---|
1 | E | 329.63 Hz |
2 | H | 246.94 Hz |
3 | G | 196.00 Hz |
4 | D | 146.83 Hz |
5 | A | 110.00 Hz |
6 | E | 82.41 Hz |
Projektplan
Anforderungen
ID | Inhalt | Ersteller | Datum |
---|---|---|---|
1 | Das Gerät muss ein Mikrofon besitzen | Jan Henrik Steltenkamp, Orience Charnelle Mefenya | 02.10.2021 |
2 | Das Mikrofon muss die Schwingungen bzw. den Schall im Raum messen. | Jan Henrik Steltenkamp, Orience Charnelle Mefenya | 02.10.2021 |
3 | Das Signal des Mikrofons muss auf die Frequenzen und die Amplituden aufgeteilt werden. | Jan Henrik Steltenkamp, Orience Charnelle Mefenya | 02.10.2021 |
4 | Die Frequenz mit dem größten Anteil an den Schwingungen muss ermittelt werden. | Jan Henrik Steltenkamp, Orience Charnelle Mefenya | 02.10.2021 |
5 | Die im Raum vorherrschende Frequenz und die Lautstärke muss auf dem Bildschirm angezeigt werden. | Jan Henrik Steltenkamp, Orience Charnelle Mefenya | 02.10.2021 |
6 | Sollte die Frequenz zu niedrig oder zu hoch liegen, muss dies per LED angezeigt werden. | Jan Henrik Steltenkamp, Orience Charnelle Mefenya | 02.10.2021 |
Tabelle 1 zeigt die funktionalen Anforderungen
Funktionaler Systementwurf / Technischer Systementwurf
Die folgende Abbildung zeigt die grundsätzlichen Funktionen, welche durch das Gerät abgedeckt werden sollen. Der Grundsatz ist nach dem Prinzip Eingabe, Verarbeitung, Ausgabe (EVA) konzipiert.
In der nächsten Abbildung (Abb. 3) wird der Verkabelungsplan dargestellt. Dieser Plan wurde mit der Software Fritzing erstellt. Zu sehen sind die verwendeten Bauelemente, der Schallsensor (Abbildung weicht von dem verwendeten Sensor ab) und das 2X16 LCD Display (Abbildung weicht von dem verwendeten Display ab). Die dargestellten Linien zeigen, welche Anschlüsse elektrisch miteinander verbunden wurden und um welche Art Verbindung es sich handelt. Die Anschlüsse zur Versorgungsspannung VCC werden rot dargestellt, Anschlüsse zu Ground sind blau eingezeichnet. Leitungen, die der Signalübertragung dienen, werden gelb dargestellt.
Komponentenspezifikation
Programmierung
Die Programmierung des Stimmgerätes mit seinen zwei Hauptfunktionen Frequenzmessung und Lautstärkemessung basiert auf einem Zustandsautomat. Diese Vorgehensweise ermöglicht, dass für das Umschalten zwischen den beiden Hauptprogrammen lediglich ein Tastersignal ausgelesen werden muss.
Die folgende Abbildung zeigt den Programmablaufplan des Stimmgerätes.
Programmcode
Die Programmierung des Stimmgerätes wurde mit der Arduino IDE Software erstellt. Der Programmcode des Stimmgerätes ist in dem nachfolgenden Fenster zu sehen.
Um die Frequenzmessung mittels Fourier Transformation realisieren zu können, wurde ein verfügbares Arduino IDE Skript als Grundlage verwendet. Dieses Skript ist unter folgender Adresse verfügbar: https://clydelettsome.com/blog/2019/12/18/my-weekend-project-audio-frequency-detector-using-an-arduino/
Der darauf aufbauende Programmcode übernimmt die Lautstärkemessung, sowie die Verarbeitung und Ausgabe der zyklisch ermittelten Schallfrequenz und Lautstärke Werte.
Initialisierung
Überschrift des Abschnittes:
//////////////////////////////////////////////////////////////// // Hochschule Hamm-Lippstadt // //////////////////////////////////////////////////////////////// // // // Modul : Angewandte Elektrotechnik // // // // Autoren : Jan Henrik Steltenkamp // // Orience Charnelle Mefenya // // // // Beschreibung : Dieses Programm nutzt ein Mikrofon, // // um aus dem Umgebungsgeräusch wahlweise // // die Tonhöhe in Hz oder die Lautstärke // // zu ermitteln und diese via LEDs und // // auf einem LCD Display auszugeben // // // // Letzte Änderung : 26.11.2021 // // // //////////////////////////////////////////////////////////////// #include <Wire.h> // Bibliothek für Display #include <LiquidCrystal_I2C.h> // Bibliothek für Display LiquidCrystal_I2C lcd(0x27, 16, 2); // Verwendetes Display: 16 Zeichen, 2 Zeilen, Hex Adresse 27 #define STATE1 1 // Zustand 1 angelegt #define STATE2 2 // Zustand 2 angelegt #define STATE3 3 // Zustand 3 angelegt #define STATE4 4 // Zustand 4 angelegt int taster = 7; // Variable für den Taster am Pin 7 int tasterstatus = 0; // initial wird Taster nicht gedrückt char state = STATE1; // STATE1 als Startzustand festgelegt int Ton_aus_Skala; // Variable für den jeweiligen Skalenton angelegt signed int tondifferenz; // Variable für die differenz zwischen Messung und Skalenton angelegt ////////////////////////////////////////////////////////// #include "arduinoFFT.h" // Hier wird die FFT Bibliothek eingebunden #define SAMPLES 128 //SAMPLES-pt FFT. Must be a base 2 number. Max 128 for Arduino Uno. #define SAMPLING_FREQUENCY 2048 //Ts = Based on Nyquist, must be 2 times the highest expected frequency. arduinoFFT FFT = arduinoFFT(); unsigned int samplingPeriod; //Periodendauer der Messungen
Setup
Überschrift des Abschnittes:
void setup() { Serial.begin(115200); //Baud rate for the Serial Monitor samplingPeriod = round(1000000*(1.0/SAMPLING_FREQUENCY)); //Periodendauer der Messungen in Mikrosekunden ////////////////////////////////////////////////////////// pinMode(taster, INPUT); // Der Pin7 mit dem Taster als Eingang festgelegt pinMode(8,OUTPUT); // Pin 8: rote LED zu tief pinMode(12,OUTPUT); // Pin 12: grüne LED pinMode(13,OUTPUT); // Pin 13: rote LED zu hoch lcd.init(); // LCD wird gestartet lcd.backlight(); // Hintergrundbeleuchtung wird eingeschaltet }
zyklische Werteermittlung von Frequenz und Lautstärke
Überschrift des Abschnittes:
Beispieltext Beispieltext
Zustandsautomat zur Verwaltung der Ausgaben
Überschrift des Abschnittes:
Beispieltext Beispieltext
Komponententest
Zusammenfassung
Literaturverzeichnis
→ zurück zur Übersicht: WS 21/22: Angewandte Elektrotechnik (BSE)