Analoge Vorverarbeitungsschaltung (Anti-Aliasing/Vorverstärker) zum Ansteuern von ADC

Hintergrund

Ähnlich wie Jeri Ellsworth in ihrem C64-Bassgitarren-Hack arbeite ich an einem Audio-zu-Midi-Konverter für meine Bassgitarre.

Ich plane auch, Piezoscheiben als Sensoren zu verwenden , die unter jeder Saite platziert sind und mit einem Papilio One verbunden sind , wobei der ADC des Logic Start MegaWing (ein ADC128S102 ) verwendet wird. Die ADC-Referenzspannung ist mit 3,3 fest verdrahtet. Volt .

Mein Problem ist, dass meine analogen Elektronikkenntnisse ziemlich schlecht sind und ich keine praktische Erfahrung habe (ich habe mich an dem entsprechenden Kapitel des Handbuchs zur Datenkonvertierung versucht, aber es ist ein bisschen zu fortgeschritten für mich).

Frage

Welche Schaltung sollte ich verwenden, um den ADC anzusteuern? Die Schaltung sollte

  1. Implementieren Sie einen Anti-Aliasing-Filter. Die Frequenzbereiche (ohne Harmonische), die typischerweise in jeder Saite eines 4-saitigen Basses zu finden sind, sind:

    • E-Saite: E1 (41,20 Hz) bis E3 (164,81 Hz)
    • A-Saite: A1 (55,00 Hz) bis A3 (220,00 Hz)
    • D-Saite: D2 (73,42 Hz) bis D4 (293,66 Hz)
    • G-Saite: G2 (98,00 Hz) bis G4 (392,00 Hz)
  2. Stellen Sie sicher, dass die Eingangssignalspannung dem erwarteten Bereich des ADC entspricht (0 V bis 3,3 V, wie ich es verstehe).

Ich würde mich über so viele praktische Informationen wie möglich freuen (z. B. bestimmte Schaltungen und bestimmte zu verwendende Operationsverstärkerteile), da ich, wie gesagt, diesbezüglich ziemlich unerfahren bin. Hinweise auf Bücher/Artikel, die für einen Neuling wie mich geeignet sind, wären ebenfalls willkommen.

Wollen Sie nicht die Obertöne erfassen? Reine Sinuswellen klingen nicht wie eine Bassgitarre. Die Obertöne unterscheiden Instrumente, die dieselbe Note spielen. Wie hoch ist die Abtastrate deines ADC?
@mkeith Ich interessiere mich nur für die Grundfrequenz (und nicht für die Harmonischen), da ich an einer Audio-zu-Midi-Schnittstelle arbeite (der Basseingang wird nur zur Analyse und nicht als Ausgang verwendet). Die Abtastrate des ADC reicht von 500 ks/s bis 1 Ms/s (gemeinsam für alle Eingänge)
Ich denke ich verstehe. Können wir dann davon ausgehen, dass G4 die höchste Note ist, die wir erfassen müssen? Also ist dir alles über 392 Hz egal?
@mkeith im Wesentlichen ja (es kann jedoch eine gute Idee sein, etwas Headroom zu lassen, um Saitenbiegungen zu erkennen). Beachten Sie jedoch, dass es eine Eingabe pro Zeichenfolge gibt, die eine andere "maximale Frequenz" pro Eingabe ermöglicht (wir möchten dies jedoch möglicherweise nicht erzwingen).
Ich habe mir das Video von Jeri Ellsworth angesehen. Sie hat kein ADC. Sie geht Amp/Komparator, digital und dann zu einem Soundchip. Ich schätze, Sie gehen Amp / ADC DSP oder was auch immer? Sie gibt keine Details über die Verstärkung des Verstärkers an. Wir wissen also nicht, wie viel Verstärkung wir auf das Signal anwenden müssen, das von diesen Piezos kommt. Hast du eine Ahnung davon? Ich habe das gefunden: stompville.co.uk/?p=176 Das Kopieren dieser Schaltung könnte ein Anfang sein.
@mkeith Ich verstehe nicht genau, was Jeri tut, um das FPGA anzusteuern, aber ich muss etwas DSP darauf machen, um die Grundfrequenz und die Anfänge zu erkennen, für die ich den ADC verwenden wollte. Ich kenne die Antwort auf Ihre Gewinnfrage nicht, wie kann sie herausgefunden werden? Danke für den Link.
Das entwickelt sich zu einer langen Diskussion. Haben Sie Testgeräte? Ein Oszilloskop? Funktionsgenerator? Multimeter? Ich denke, es ist an der Zeit, mit dem Experimentieren zu beginnen.
@mkeith Eigentlich ja, ich habe Zugriff auf ein Multimeter und ein Oszilloskop

Antworten (3)

Piezo-Tonabnehmer würde ich nicht empfehlen. Auf meinem alten Antoria (vor Ibanez) 6 Saiten habe ich 6 kleine induktive Sensoren (viele Drahtspulen um einen Magneten, auch bekannt als 6 einzelne Gitarrenpicks) verwendet und sie funktionierten gut in der Bridge-Pickup-Position - ich habe keine Interferenz zwischen einem bekommen Saite und die nächste - Sie werden akustische Tonabnehmer verwenden, und ich wette, Sie bekommen Übersprechen und das wird Sie wahrscheinlich ärgern - ich würde es. Ich habe meine 1982 gebaut und jedes Saitensignal durch eine einfache Operationsverstärker-Verzerrungsschaltung gespeist und dann die Signale gemischt. Es klang wie eine Orgel und ich sollte es eines Tages ausgraben, aber wenn Sie zu Midi konvertieren, möchten Sie wahrscheinlich wirklich ein Rechteckwellensignal, anstatt zu versuchen, den Nulldurchgang in Software basierend auf den vom ADC ausgegebenen Zahlen durchzuführen . Nur eine Empfehlung von jemandem, der etwas gebaut hat, das Jeri total macht. s sieht aus wie ein Stück Mist. Ich hörte sie sagen, dass es auch nicht so gut funktioniert hat!!!


Neueste Empfehlungen

Ich spiele ziemlich gut Bassgitarre und bin sehr vertraut mit den Wellenformen, die sie produzieren und wie die meisten Bassspuren aufgenommen werden. Die 99%-Regel besagt, dass immer nur eine Note gleichzeitig gespielt wird, dh die Bassgitarre wird fast immer nur eine Note gleichzeitig gespielt (obwohl sie vier Saiten hat). Es gibt einen sehr guten Grund, warum Bassgitarristen nicht mehrere Noten spielen – bei einer so niedrigen Frequenz klingen mehrere Noten fast immer wie ein Durcheinander. Dies ist anders als bei einer 6-saitigen Gitarre - diese ist mindestens eine Oktave höher gestimmt (im Vergleich zu den dicken E-Saiten) und bei dieser Tonhöhe klingen Akkordnoten natürlich sehr gut. Meine 1. Empfehlung an Sie lautet also: -

Bleiben Sie beim eingebauten konventionellen elektromagnetischen Tonabnehmer Ihrer Bassgitarre und denken Sie nicht einmal daran, diesen zu modifizieren, bis Sie die Algorithmen beherrschen, um die Wellenform der Bassgitarre in Midi umzuwandeln. Dies gibt Ihnen ein perfektes Signal, um den gewünschten DSP auszuprobieren.

Tatsächlich würde ich noch einen Schritt weiter gehen – machen Sie ein paar ausgewählte Aufnahmen Ihrer Bassgitarre und verwenden Sie diese Aufnahmen als Eingaben für Ihr DSP-System. Dadurch haben Sie zwei Hände frei, um Ihren Code so weit wie nötig zu optimieren. Also, meine 2. Empfehlung ist: -

Nehmen Sie ein paar ausgewählte Bassriffs in die Soundkarte Ihres PCs auf, schalten Sie den Bass leiser und vergessen Sie es, bis Sie Ihre Algorithmen geklärt haben. Sie können Ihren PC zum Ausgeben der Riffs verwenden und wenn Sie einen Wave-Editor verwenden, können Sie die aufgenommenen Bassklänge kopieren und einfügen, schrittweise wiederholen, zusammenführen oder praktisch alles mit ihnen machen. Geben Sie diese über Ihre Soundkarte aus und erledigen Sie die wirklich schwierige Aufgabe zuerst.

Die wirklich schwierige Aufgabe besteht darin, die von Ihrem PC ausgegebenen Bassklänge in das Midi-Format umzuwandeln - jede Arbeit, die im Leben oder in der Elektronik erledigt werden muss - gehen Sie zuerst das Schwierige an, und wenn Sie das Schwierige nicht schaffen, geben Sie die Idee auf.

Wenn Sie den harten Teil erledigt haben, versuchen Sie, Ihre Bassgitarre "live" in Ihr DSP-System zu spielen, und sehen Sie, ob sie immer noch ohne Probleme funktioniert. Dies wird natürlich nicht der Fall sein, da kleine Unebenheiten und fehlerhafte Saitengeräusche zu Ihren Algorithmusproblemen führen, die Sie nicht berücksichtigt haben. Meine dritte Empfehlung lautet daher: -

Versuchen Sie aufzuzeichnen, was dem DSP ein Problem bereitet, und verwenden Sie diese neue Aufzeichnung, um Ihren Algorithmus zu korrigieren. Wiederholen/schleifen Sie mehrmals, bis Sie mit Ihrem Code-basierten Midi-Konverter zufrieden sind.

Dann, und nur dann, sollten Sie anfangen, über Änderungen nachzudenken, die Sie an Ihrer Bassgitarre vornehmen könnten. Meiner ehrlichen Meinung nach glaube ich nicht, dass Änderungen aufgrund der 99%-Regel erforderlich sind.

Als kostenloses Weihnachtsgeschenk, wenn Sie ein paar Bassgitarren-Samples wollen, mailen Sie mir (siehe mein Profil) und ich schicke Ihnen welche.

Wenn Sie den PC als Klangquelle für das Bassgitarren-Audio verwenden, haben Sie außerdem die Möglichkeit, den Algorithmus auf einer Plattform zu perfektionieren.

Danke, ich werde vorerst mit den Piezoscheiben beginnen, da ich mich nicht zu sehr um die Klangqualität kümmere (ich brauche nur das Signal, um klar genug zu sein, um etwas DSP zu machen). Haben Sie zur Frage selbst Vorschläge, welche Schaltung / Teile verwendet werden sollen?
Ich habe 1982 LF347-Operationsverstärker verwendet, aber ich würde keinen ADC für Ihre Midi-Schnittstelle verwenden - verwenden Sie einen Komparator, um in einen Logikpegel umzuwandeln und die Frequenz des digitalen Signals zu decodieren.
Danke, können Sie näher erläutern, was Sie mit "Verwenden eines Komparators zum Konvertieren in einen Logikpegel und Decodieren der Frequenz des Digitalsignals" meinen?
Zur Verdeutlichung schlägt Andy vor, dass Sie digitale Techniken anstelle von analogem Sampling verwenden, um Ihre Ziele zu erreichen. Es ist eine echte Designänderung und wahrscheinlich der viel bessere Ansatz
@ScottSeidman Ich verstehe immer noch nicht, sorry. Um ein anständiges Ergebnis zu erzielen, muss ich Frequenzverfolgungsalgorithmen im Frequenz- / Zeitbereich anwenden (z. B. DFT-Spitzenerkennung / YIN-Autokorrelationsalgorithmus). Wie kann ich das ohne Probenahme erreichen?
Sie führen eine analoge Verarbeitung durch, um Rechteckwellen zu erzeugen, und verwenden sie als didigitale Eingänge.
@ScottSeidman Danke. Und wie kann ich davon PCM-Proben erhalten? Können Sie auf bestehende Projekte/Bücher/Artikel verweisen, die diese Technik als Eingabe für DSP-Algorithmen verwenden?
Sobald Sie eine Rechteckwelle haben, können Sie unter der Annahme, dass es sich um eine Grundwelle handelt, die Frequenz bestimmen, indem Sie das Intervall zwischen den Flanken messen. Sie können auch einen Phasentracker implementieren. Die Phase einer Sinuskurve schreitet linear fort. Bei einer steigenden Flanke ist die Phase 0. Bei der nächsten fallenden Flanke beträgt die Phase 180 Grad. Bei der nächsten steigenden Flanke ist es 360, usw. Ein Phasentracker erhöht also einfach die Phase in regelmäßigen Abständen. Aus der Phase können Sie einen digitalen Sample-Stream erzeugen, der eine Sinuswelle darstellt. Sie können das Phaseninkrement feinabstimmen, um synchron zu bleiben. Lesen Sie mehr über direkte digitale Synthese (DDS).
@mkeith Oh, danke, jetzt verstehe ich. Ich denke jedoch nicht, dass dies eine sehr robuste Methode zur Verfolgung der Frequenz ist (so wie ich es verstanden habe, läuft dies im Wesentlichen auf die Verfolgung der Frequenz hinaus, indem Nulldurchgänge und die Perioden zwischen ihnen identifiziert werden). Für etwas Anspruchsvolleres brauche ich Sampling, Grund, warum ich einen ADC verwenden möchte, und daher die Frage, die ich gestellt habe.
@Andyaka Danke für die letzte Bearbeitung, aber das beantwortet die Frage immer noch nicht :) Ich weiß, dass ich die DSP-Algorithmen richtig entwerfen muss, aber das ist ein ganz anderes Thema (um das ich mich bereits kümmere), um das es bei dieser Frage geht in der Lage zu sein, den Ton in einem FPGA zu verarbeiten, für das ich mich aufgrund der engen Latenzbeschränkungen beim Echtzeit-Tracking niedriger Frequenzen entschieden habe. Ich bin auch Bassist und stimme Ihrer Behauptung über "eine Note nach der anderen" zu, aber das separate Verfolgen jeder Saite vereinfacht das Problem. Mein Punkt ist, ich schätze Ihr Feedback, aber Sie haben meine Frage nicht wirklich beantwortet.
@fons verwendet einen 16-Bit-ADC, der so schnell wie möglich abtastet (über 10.000 pro Sekunde), und Sie benötigen keine Anti-Aliasing-Filter. Wählen Sie einen ADC, der einen bipolaren Eingang hat, dh sich gleichermaßen über und unter 0 V erstreckt, dh Mittelcode = 0,000 V - dies spart die Verwendung eines Operationsverstärkers. Das Basssignal direkt vom Tonabnehmer in den bipolaren ADC einspeisen. Das Basssignal sollte groß genug sein, um einen anständigen Peak_to_Peak-Zahlenbereich auf dem ADC zu registrieren - das Hinzufügen eines Operationsverstärkers für die Verstärkung könnte ein wenig helfen, aber das ist kinderleicht zu beheben, aber mein Rat ist, es direkt vom Welpen aus zu versuchen.
@fons, wenn es richtig gemacht wird, mit einem Phasentracker und einer Methode zur Verbesserung der Frequenzschätzung im Laufe der Zeit, ist es eine hervorragende Möglichkeit, die Frequenz (und Phase) in Echtzeit zu verfolgen. Sie können einen PID-Algorithmus verwenden, um bei jedem Nulldurchgang eine neue Delta-Phasenschätzung zu generieren. Passen Sie die PID an, um die gewünschte Antwort zu erhalten. Der Delta-Phasen-Term ist eine sehr genaue Schätzung der momentanen Frequenz. Sie können 32 Bit verwenden, wenn Sie möchten, oder sogar mehr, wenn die Hardware damit umgehen kann. Lesen Sie etwas über DDS, bevor Sie die Idee aufgeben.

Ich zögere zu antworten, weil ich wirklich kein Experte für solche Dinge bin. Aber sonst antwortet niemand. Ich schlage vor, dass Sie die Schaltung bauen, die Sie hier finden: http://stompville.co.uk/wp-content/uploads/2012/03/115SV.png

Ich würde vorschlagen, die Piezos in den Bass zu stecken und dann den ersten Teil der Schaltung mit den JFETs und der zugehörigen Schaltung aufzubauen und dann mit dem Oszilloskop zu sehen, welche Art von Amplitude Sie erhalten. Nachdem Sie das gesehen haben, haben Sie eine bessere Vorstellung davon, wie viel Verstärkung Sie benötigen, um Ihren 3,3-V-Swing zu erreichen. Am Ende, denke ich, werden wir das Signal in den ADC koppeln, also sollten Sie vorerst nur Spitze-zu-Spitze messen. Sobald Sie das haben, können wir uns den Rest der Schaltung noch einmal ansehen.

Übrigens, werden Sie alle 4 Piezos parallel schalten und dann einen Verstärker verwenden, oder werden Sie 4 Verstärker machen?

Er sollte 4 Kanäle verarbeiten; eine für jede Saite.
@ Andyaka, danke! Alle zusätzlichen Kommentare, die Sie haben, würden wir sehr schätzen, besonders wenn Sie denken, dass ich das OP auf einen falschen Weg führe.
Ich habe eine Antwort hinterlassen und freue mich ausnahmsweise sagen zu können, dass ich etwas Ähnliches gebaut habe !!!
@Andyaka Sie haben eine Antwort hinterlassen, in der Sie die Sensoren / den Ansatz kommentiert haben. Ich weiß das zu schätzen, aber es beantwortet die Frage nicht wirklich.

Da keine der Antworten wirklich auf (1) oder (2) eingeht oder bestimmte Komponenten / Schaltungen bereitstellt, werde ich nach einigen Tagen der Recherche und Rücksprache mit einem Bekannten mit elektrotechnischem Hintergrund selbst antworten.

Mit Hilfe eines Multimeters habe ich die Ausgangsimpedanz der Piezoscheibe gemessen, die in der Größenordnung von Megaohm (~ 1,5 MOhm) liegt, was der Beschreibung von Wikipedia entspricht .

Dies sagt uns, dass wir aufgrund seiner hohen Ausgangsimpedanz unmittelbar nach dem Piezo puffern müssen, was mit einem Operationsverstärker problemlos möglich ist

Dann habe ich mit einem Oszilloskop die Spitze-zu-Spitze-Spannung der Piezoscheiben gemessen, die ungefähr -3,6 V bis +3 V beträgt, wenn ich die Saiten so fest wie möglich zupfe.

Geben Sie hier die Bildbeschreibung ein

Da der akzeptierte Bereich des ADC 0 bis 5 V beträgt (der Va-Pin des ADC ist im Papilio mit 5 V verbunden), müssen wir:

  1. Passen Sie den 6,6-V-Ausgangsbereich an den 5-V-Bereich des ADC an. Dies kann mit einem nicht-invertierenden Verstärker auf Omp-Amp-Basis mit einer Verstärkung von 5/6,6 = 0,75 erfolgen . Dies kann erreicht werden, indem R1 auf 1K und R2 auf 1,3K eingestellt wird (1K Ohm und 300 Ohm in Reihe)
  2. Verwandeln Sie den bipolaren Ausgang des Piezos in den unipolaren Eingang des ADC. Dies kann mit einem Operationsverstärker-Addierer von 2,5 V unmittelbar nach dem nicht invertierenden Verstärker in (1) erfolgen , wobei das Einstellen von Rf auf 2,5 K und R1 auf 1 K die Aufgabe erfüllen sollte. Beachten Sie, dass diese Schaltung den Eingang invertiert, aber das spielt für diese Anwendung keine Rolle.

Bis zu diesem Punkt haben wir uns um die Anpassung der Spannung an den ADC gekümmert, jetzt müssen wir uns um Anti-Aliasing mit einem Tiefpassfilter kümmern. Ein zweipoliger aktiver Filter, wie in diesem Tutorial beschrieben , sollte die Arbeit erledigen. Wir könnten noch viel weiter gehen .

Die letzten Puzzleteile sind:

  1. Auswahl des Operationsverstärkers. Ich habe mich für den OPA2134 entschieden , er ist rauscharm und billig und akzeptiert eine Niederspannungsversorgung.
  2. Wie man die Operationsverstärker mit Strom versorgt. Ich kann eine 5-V- und Masseverbindung an die beiden Pins anschließen, die vom Papilio zum Logicstart Megawing gehen. Die Operationsverstärker benötigen jedoch auch eine negative Spannung, dies kann einfach mit einer virtuellen Masse mit dem TLE2426 erfolgen, wie hier beschrieben .