Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino-basiertes automatisches Gitarrenstimmgerät

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1

Apps und Onlinedienste

Simulink

Über dieses Projekt

Eines der wichtigsten Dinge beim Gitarrespielen ist darauf zu achten, dass das Instrument gestimmt ist. Selbst der beste Gitarrist wird mit einer verstimmten Gitarre nicht gut klingen. Das Stimmen von Gitarren von Hand mit einem Standard-Tuner war schon immer üblich, aber ein automatischer Tuner macht die Sache viel einfacher und macht mehr Spaß! Dieses Arduino-basierte Projekt wird Ihre Gitarre für Sie stimmen.

Hier ist ein Video, das das Projekt in Aktion zeigt:https://www.mathworks.com/videos/automatic-guitar-tuner-using-simulink-and-arduino-1501787185047.html

Übersicht

Die obige Abbildung zeigt eine Übersicht des automatischen Gitarrentuners.

  • Der Druckknopf wird verwendet, um die zu stimmende Saite auszuwählen
  • Eine sechs-LED-Anzeige wird verwendet, um anzuzeigen, welche Saite ausgewählt wurde
  • Der mit dem Motor verbundene Greifer wird verwendet, um den Stimmwirbel zu drehen, bis die Saite gestimmt ist.

Die Ein- und Ausgänge werden durch die oben genannten vier Schaltungen gesteuert:eine digitale Eingangsschaltung für den Druckknopf, eine analoge Audio-Eingangsschaltung für die Gitarre, eine digitale Ausgangsschaltung für das LED-Display und eine Motorantriebsschaltung für den Stimmwirbel Greifer. Diese vier Schaltkreise interagieren mit einem Arduino Due, der einen Algorithmus ausführt, der mit Simulink entwickelt wurde.

Audioeingangsschaltung

Die Gitarre wird über ein handelsübliches Gitarrenkabel mit dem Stimmgerät verbunden. Das Ende eines Gitarrenkabels hat zwei Anschlüsse, die Spitze und die Hülse genannt werden. Ein Ende des Kabels wird mit einer Eingangsbuchse verbunden, die Anschlüsse für die Spitze und die Hülse hat. Ich habe Drähte an diese Kabel gelötet, um die Spitze und die Hülse mit dem Audioeingangskreis zu verbinden.

Ich würde empfehlen, einen TL972-Operationsverstärker für diese Schaltung zu verwenden. Es handelt sich um einen sehr rauscharmen Rail-to-Rail-Verstärker, der mit sehr niedrigen Versorgungsspannungen betrieben werden kann.

Motorisierter Stimmwirbel-Greifer

Ich konnte nicht nur einen Gleichstrommotor für dieses Projekt verwenden. Ich brauchte einen Getriebemotor mit niedriger Drehzahl und hohem Drehmoment. Der von mir verwendete Motor hat eine Drehzahl von 6 U/min und ein maximales Drehmoment von 613 oz-in. Es hat einen Spannungsbereich von 3-12 V, daher habe ich eine 9-V-Batterie als Stromquelle verwendet.

Auf der Welle des Motors habe ich einen einfachen Greifmechanismus mit einer Klemmnabe, vier Schrauben und etwas Klebeband montiert.

Software

Ich habe Simulink und sein Support-Paket für Arduino verwendet, um den Algorithmus für den Tuner zu entwickeln. Simulink ist eine Blockschaltbildumgebung zur Entwicklung von Algorithmen und Modellierung dynamischer Systeme. Das Support-Paket ermöglicht es mir, mit Simulink-Blöcken von Pins auf dem Arduino zu lesen und zu schreiben. Mit den externen Modusfunktionen der Software kann ich einen Algorithmus auf dem Arduino mit automatischer Codegenerierung simulieren und Parameter abstimmen, während die Simulation läuft, ohne Code neu kompilieren zu müssen. Ich kann dann den Algorithmus für die eigenständige Ausführung auf der Hardware bereitstellen. Das von mir erstellte Modell ist unten gezeigt.

Der externe Modus ermöglicht die Verwendung von Oszilloskopblöcken, um Teile des Algorithmus zu überwachen, während er auf der Hardware ausgeführt wird. Dies ist besonders nützlich, um den digitalen Eingang des Tasters und den analogen Eingang der Gitarre abzuhören. Aus dem Bereich der Schaltfläche können wir sehen, dass sich die Eingabe von 0 auf 1 ändert, wenn die Schaltfläche gedrückt wird.

Ich möchte, dass diese Änderung von 0 auf 1 eine Änderung in der ausgewählten Zeichenfolge auslöst. Dies wird als steigender Trigger bezeichnet. Ich habe ein Stateflow-Diagramm namens „Select String“ erstellt, das sechs Zustände hat, einen für jeden String, und basierend auf diesem steigenden Triggereingang von einem Zustand zum nächsten wechselt. Hier ist ein genauerer Blick auf das Stateflow-Diagramm.

Beim Eintritt in jeden Zustand wird der LED-Pin für den entsprechenden String auf High gesetzt. Beim Verlassen jedes Zustands wird der Pin auf Low gesetzt. Als Standard habe ich die tiefe E-Saite gewählt, die tiefste der sechs Saiten. Wenn ich den Tuner zum ersten Mal einschalte, startet er in diesem Standardzustand.

Es gibt sieben Ausgänge im Stateflow-Diagramm:einen für die LED für jeden der sechs Strings und einen namens „periodRange“, auf den ich später eingehen werde. Die sechs LED-Ausgänge gehen direkt zu den digitalen Arduino-Ausgangsblöcken, um die entsprechende LED ein- oder auszuschalten.

Schauen wir uns nun den Audioverarbeitungsteil des Modells an. Das Gitarrensignal kommt über den analogen Eingangsblock. Ich habe die Abtastzeit des Blocks auf 0,0002 Sekunden für eine Abtastrate von 5 kHz eingestellt. Als ich Gitarre spielte und den Audio-Scope-Block öffnete, konnte ich eine Wellenform wie die folgende sehen.

Der Oszilloskopblock half mir, das Potentiometer in der Audioschaltung abzustimmen, um die Verstärkung des Eingangs zu ändern. Die Verstärkung sollte so hoch wie möglich eingestellt werden, ohne dass die Spitze der Wellenform den Maximalwert von 1023 erreicht. Dies ermöglicht die genaueste Ablesung des Signals.

Wenn die Gitarre nicht gespielt wird, sollte das Eingangssignal eine flache Linie zwischen 500 und 700 sein. In meinem Fall waren es etwa 550. Es ist wichtig, diesen Wert zu kennen, da der Tuner das Audio nur verarbeiten soll, wenn eine Note vorhanden ist Wird gespielt. Als Schwellenwert habe ich einen Wert von 575, knapp über dieser flachen Linie, gewählt. Das Audio wird nur verarbeitet, wenn das Signal über diesem Schwellenwert liegt. Da ich mit Simulink Parameter einstellen kann, während eine Simulation läuft, konnte ich meinen Schwellenwert einfach einstellen.

Wenn eine einzelne Note auf einer Gitarre gespielt wird, ist die erzeugte Wellenform periodisch. Die Periode der Wellenform entspricht einer bestimmten musikalischen Tonhöhe. Der Stimmalgorithmus schätzt die Tonhöhe der Saite, indem er die Periode der Wellenform bestimmt. Ich habe eine MATLAB-Funktion geschrieben, die diese Tonhöhenschätzung durchführt, und sie mit dem MATLAB-Funktionsblock in mein Simulink-Modell aufgenommen. Um festzustellen, ob die Saite gestimmt ist, benötigt die MATLAB-Funktion eine Eingabe, die angibt, welcher Periodenbereich für jede Saite als gestimmt gilt. Dies ist die Ausgabe „periodRange“ aus dem Stateflow-Diagramm. Die Funktion bestimmt basierend auf dem Periodenbereich, ob die Tonhöhe der Saite zu hoch, zu tief oder gestimmt ist und erzeugt dementsprechend Ausgaben für den Motor.

Die Ausgänge der MATLAB-Funktion sind die drei Pins, die den Motor steuern. Diese Ausgänge gehen direkt zu den digitalen Ausgangsblöcken von Arduino.

Nachdem ich mit meinem Algorithmus sichergestellt hatte, dass alles richtig war, konnte ich ihn auf der Hardware bereitstellen, sodass er eigenständig, ohne Verbindung zum PC und unabhängig von Simulink ausgeführt werden konnte.

Jetzt kann ich meine Gitarre automatisch stimmen!

Alle notwendigen Dateien für dieses Projekt sind hier verfügbar:

https://www.mathworks.com/matlabcentral/fileexchange/63697-automatic-guitar-tuner-using-simulink-and-arduino

Schaltpläne

Die Schaltung für den Taster ist ein einfacher Schalter mit Pull-Down-Widerstand. Die LED-Anzeigeschaltung umfasst 6 LEDs und einen Strombegrenzungswiderstand. Ich habe den analogen Eingangspin 'A0' des Arduino verwendet, um das von der Gitarre kommende Audiosignal zu lesen. Der Arduino Due liest Spannungen zwischen 0 V und 3,3 V. Das von der Gitarre kommende Signal hat jedoch eine sehr geringe Amplitude und schwingt um 0 V, dh es enthält einige negative Spannungen, die der Arduino nicht lesen kann. Um dies zu beheben, muss die Eingangsschaltung das Signal verstärken und einen DC-Offset hinzufügen. Die Schaltung muss auch einen Tiefpassfilter bereitstellen, um hochfrequente Komponenten aus dem Signal zu eliminieren. Ein abgetastetes Signal sollte keine Frequenzen über der Hälfte der Abtastrate enthalten. Da der Tuner das Audio mit einer Rate von 5 kHz abtastet, eliminiert meine Schaltung Frequenzen über 2,5 kHz. Ich habe die Schaltung wie unten gezeigt zusammengebaut. Ich habe den motorisierten Stimmwirbelgreifer mit drei digitalen Ausgangspins vom Arduino gesteuert, die mit einem L293D H-Brücken-Chip verbunden sind . Dieser Chip ermöglicht es uns, den Motor in eine beliebige Richtung zu drehen oder den Motor basierend auf den Zuständen dieser drei Pins zu stoppen. Einer der Pins wird als Enable-Pin bezeichnet, und der Motor dreht sich nur, wenn der Enable-Pin auf High gesetzt ist. Die anderen beiden Pins bestimmen die Drehrichtung des Motors. Ich habe die Schaltung wie unten gezeigt angeschlossen.

Herstellungsprozess

  1. E-Gitarre
  2. Spork
  3. Titan
  4. Biokeramik
  5. Kastagnetten
  6. Kleber
  7. Thread
  8. Acetylen
  9. Asbest
  10. Zinn