Ich versuche seit über einem Jahr, sowohl den elektronischen Aspekt als auch den Softwareaspekt meines Projekts herauszufinden.
Ich habe es einigermaßen erfolgreich geschafft, die Gesamtidee zum Laufen zu bringen, die Unebenheiten, die ich auf dem Weg erlebt habe, stressen mich ehrlich gesagt.
Projektbeschreibung und Ziel:
Im Grunde ein Beat-Detection-Gerät mit einem sehr kleinen Formfaktor.
Ich verwende ein Arduino Uno als Prototyping-Gerät, aber ich habe ein Arduino Mega, Sparkfun Micro und mehrere andere Entwicklungsboards auf Lager, die ich bei Bedarf verwenden kann.
Ich möchte, dass der Mikrocontroller analoges Audio liest, es in FFT oder FHT oder andere leicht zu übersetzende Daten umwandelt, die niedrigeren Frequenzen liest, in denen der Kick der Musik präsentiert wird, und schließlich das Timing zwischen jedem Kick misst, um die BPM des Songs zu berechnen .
Der Frequenzbereich, in dem der Kick in der Musik vorhanden ist, liegt im Bereich von 45 Hz bis 55 Hz und ist in diesem Bereich am besten unterscheidbar, wenn man ihn in einem Spektrumanalysator betrachtet.
Dies sollte auch korrekt sein, wenn FFT/FHT mit einem Mikrocontroller durchgeführt wird, aufgrund der Natur der rohen Analog-zu-Digital-zu-FFT/FHT-Konvertierung.
Es kann sich jedoch unterscheiden und ist höchstwahrscheinlich unterschiedlich, wenn ein Mikrofon zum Hören des Tons verwendet wird.
Was ich erfolgreich erreicht habe:
(Quelle: interface.khm.de )
Die beiden wichtigsten Komponenten des Projekts sind also vorhanden.
Womit ich Probleme habe:
Dinge, die ich versucht habe:
Ergebnisse (Zitat):
Wenn Sie einen Pull-up verwenden, wird die Spitze der niedrigen Frequenzen erhöht, wenn Sie einen Pull-down verwenden, verschwindet die niedrige Frequenz.
Der Pulldown ist also der richtige Weg.
Mit vorhandenem Pulldown werden jedoch Obertöne des Sinustons eingeführt, aber keine Spitze im unteren Frequenzbereich, solange kein Ton vorhanden ist.
Wenn der Pulldown NICHT vorhanden ist, verschwinden die Harmonischen, aber die Spitze ist vorhanden.
Was kann ich noch versuchen, bevor ich dieses Projekt zum Fenster hinauswerfe?
Ansätze und Vorschläge müssen komponentenbegrenzt und vorzugsweise softwareorientiert sein.
Die Lichtorgel muss einen geringen Stromverbrauch und sehr wenige physische Komponenten haben, und wenn physische Komponenten erforderlich sind, müssen sie winzig und oberflächenmontiert sein.
Ich denke, der YouTube-Typ war vielleicht auf dem richtigen Weg, aber die Verwirrung besteht darin, dass "Masse" für die meisten analogen Schaltungen normalerweise zwischen zwei Versorgungen zentriert ist und für die meisten digitalen Schaltungen mit der unteren Versorgung koexistiert. Unabhängig davon, ob Sie ihn nach oben oder unten gezogen haben, war der DC-Pegel bereits begrenzt, und alles, was dazu hinzugefügt wurde (Ihre Musik), wurde ebenfalls automatisch begrenzt.
Stattdessen müssen Sie es bis zu einem Punkt in der Mitte ziehen. Der einfachste Weg, dies zu tun, besteht darin, ihn einfach mit zwei Widerständen gleichzeitig nach oben und unten zu ziehen. Das sollte es gut zentrieren, wobei der genaue Pegel durch das Verhältnis der beiden Widerstände bestimmt wird.
Auch zu bedenken:
Aus einer ziemlich langen Diskussion in den Kommentaren und einem Link zu einem anderen Forum ( http://www.openmusiclabs.com/forums/viewtopic.php?f=4&t=493&sid=c89646aea90012eb0fbcbf4161ab5b74 ) geht hervor, dass das Problem damit zu tun hat DC-Offset. Der ursprüngliche Schaltplan versucht, dies zu lösen, enthält jedoch eine unnötige Anpassung, die leicht falsch gemacht werden kann. Hier ist ein besserer Weg, es zu tun:
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Stellen Sie sicher, dass R1 und R2 gleich bleiben. Die Grenzfrequenz ist oben beschrieben.
Der Zweck der ursprünglichen Anpassung scheint darin zu bestehen, den DC-Offset an den ADC anzupassen, aber ich erwarte genügend Variationen von anderen Quellen, dass es einfacher ist, ihn einfach zu schließen und einen digitalen Hochpass zu verwenden, um den Job zu beenden.
Einige andere Änderungen:
Wie gezeigt, liegen die Grenzfrequenzen bei ~1,5 Hz und ~48 kHz, also sollten Sie diesen ADC-Kanal mit mindestens 500 kHz abtasten. Warum nicht 48 kHz wie Standard-Audio? Denn dieser Filter rollt sehr langsam ab. Nur bei viel höheren Frequenzen dämpft es das Rauschen endlich genug, um Ihr Signal nicht zu stören, wenn es durch Aliasing nach unten verschoben wird. Wenn Sie die FHT nicht so schnell laufen lassen möchten, können Sie einen komplexeren analogen Tiefpass verwenden, oder Sie können einen digitalen Tiefpass verwenden, der so schnell läuft, und anschließend die meisten Samples wegwerfen.
Andi aka
WasRoughBeast
xaid
xaid
xaid