Frage:
Mehrkanal-Balkendiagramm-LED-Treiber
W5VO
2011-01-13 00:57:15 UTC
view on stackexchange narkive permalink

Ich möchte eine Schaltung erstellen, die die Echtzeitfrequenzkomponenten eines Audiosignals auf einer Reihe von Balkendiagrammen zeigt. Derzeit ist geplant, 12 Bandpass-Operationsverstärkerfilter zu bauen und dann mit einem Gleichrichter und einer RC-Schaltung eine DC-Hüllkurve für jeden Ausgang zu erstellen. Mit diesem Signal kann dann ein LED-Bargraph oder ähnliches angesteuert werden. P. >

Die Schaltung verwendet eine einzelne + 3,3-V-Versorgung, und die Verwendung von 12 Bandpassfiltern ist nicht wirklich verhandelbar. Wenn ich ein 12-Kanal-Balkendiagramm möchte, kann ich dann 12 Balkendiagramm-LEDs und Balkendiagramm-LED-Treiber verwenden? Das sind 45 Dollar! Gibt es eine bessere / kostengünstigere / einfachere Methode, um ein ähnliches Ergebnis zu erzielen? Im Idealfall würde ich keinen Mikrocontroller benötigen.

Sieben antworten:
#1
+10
davr
2011-01-13 03:27:15 UTC
view on stackexchange narkive permalink

Manchmal ist es billiger, einen Universal-IC zu verwenden und ihn so zu programmieren, dass er das tut, was Sie wollen, und dann zu versuchen, eine Reihe von Spezial-ICs zu finden, die nicht programmierbar sind und genau das tun, was Sie wollen.

Dieser Typ hat einen 64-Band-Spektrumanalysator auf einem Low-End-Mikrocontroller durchgeführt, daher sollten 12 Kanäle ein Kinderspiel sein. (Er enthielt auch einen LCD-Treiber ... in Ihrem Fall würde die Software stattdessen eine Matrix von LEDs ansteuern). Die Schaltung ist auch ziemlich einfach.

Der Mikrocontroller ist billig. Um die LEDs anzusteuern, haben Sie 120 davon (10 x 12). Sie würden sie einfach in einer Matrix verkabeln und sie mit 4 Schieberegistern fahren, die auch billig sind. (Je nachdem, wie Sie es verdrahtet haben, werden 6 E / A-Pins plus oder minus verwendet.)

http://elm-chan.org/works/akilcd/report_e.html

LCD output PCB layout

Schön, TQFP auf 0,100 "Perf Board. Die meisten Leute würden nur QQ darüber.
@Nick Ja, dieser Typ ist ein bisschen verrückt: http://elm-chan.org/docs/wire/wiring_e.html. Hier ist ein anderer Typ: http://www.flickr.com/photos/oohshiny/3309808873/
#2
+8
Kevin Vermeer
2011-01-13 07:11:11 UTC
view on stackexchange narkive permalink

Ich habe vor einigen Monaten eine 7-Kanal-Version dieses Projekts erstellt. Ich habe 7 separate Opamp-Bandpassfilter entworfen (unter Verwendung der Bessel-Filtertopologie, um Verzerrungen zu minimieren). Ich habe mich für den LM3914 und ein vorgefertigtes LED-Balkendiagramm entschieden, da die Kosten nicht das Problem waren. Die Entwicklungszeit war, aber Sie können den umgekehrten Weg einschlagen.

Ich habe die gefilterten Signale durch den folgenden Spitzendetektor geleitet:

alt text

Dies ist ein viel billiger als die Opamp-Schaltungen, die Sie anderswo finden. Das Vce des Transistors und das Vf der Diode sollten sich aufheben. Der 1uF-Kondensator und der 470k-Widerstand zeigten eine gute Abklingrate für das Ansehen der von mir verfolgten Audiosignale.

In Bezug auf die Kosten ist der von Ihnen betrachtete LM3914 nur eine Kaskade von Komparatoren mit einem Eingang über ein Widerstandsnetzwerk mit einer festen Spannung und die andere mit dem Eingang des Spitzendetektors verbunden. Wenn Sie die LED-Stromregelung, die dieser Chip bietet, nicht benötigen, können Sie dies wahrscheinlich mit einem klassischen Quad-Komparator wie dem LM339 oder LM2901 (Sie brauchen nichts Besonderes) billiger machen, was Ihnen eine Menge von etwa 0,30 US-Dollar kostet 25 (Sie benötigen 24 für zwölf 8-Kanal-Diagramme). Angenommen, die Widerstände sind grundsätzlich frei, benötigen Sie eine Diode, einen Transistor, Entkopplungskappen (ebenfalls im Wesentlichen frei), einen 1uF-Spitzenspeicherkondensator und einen LED-Graphen. Verwenden Sie einfach einige Bulk-1206-LEDs für das Diagramm und ordnen Sie sie auf Ihrer Leiterplatte an, anstatt für das vorverpackte Balkendiagramm zu bezahlen. Wenn Sie 8 Elemente in Ihrem Diagramm verwenden und 12 * 8 ~ = 100 -LEDs benötigen, können Sie dies für 0,042 US-Dollar pro Stück mit diesen grünen Anzeige-LEDs oder tun etwa 0,34 USD pro Kanal. Ich würde sagen, Sie können mit dem Balkendiagramm für weniger als 1 US-Dollar pro Kanal davonkommen, wenn Sie sich umschauen.

AilianasbhCMT - Thanks for fixing that! We used to have \$LaTeX\$ delimiters of `$...$`, so we had to use that bizarre formatting. [It's been fixed](http://meta.electronics.stackexchange.com/questions/440/tex-delimiters-should-be-changed/613#613), (they're now `\$...\$`) but we still need to [clean up some stuff](http://meta.electronics.stackexchange.com/q/615/857)...want to help?
Ich finde meistens Fragen / Antworten, die in älteren Fragen / Antworten noch behoben werden müssen, die nicht mehr viele Ansichten erhalten, aber ich behebe sie, wenn ich sie finde. Vielen Dank für alle, die an der TeX Edit Party teilgenommen haben. Tolle Zusammenarbeit!
@steven - Nun, ich hätte gesagt, dass die Party so etwas wie eine Belastung ist ...
Ja, und denken Sie mal darüber nach, die Musik war auch mies. Und die Getränke teuer ... :-)
Ich bin (ziemlich) spät dran, aber ich wollte sagen, dass dies ein fantastischer Spitzendetektor ist! Es hat eine vergleichbare Geschwindigkeit und Genauigkeit wie ein Opamp ohne zusätzlichen Platzbedarf und zusätzliche Kosten.
#3
+3
tyblu
2011-01-13 12:03:49 UTC
view on stackexchange narkive permalink

Eine Alternative zu dedizierten Treibern und LED-Arrays besteht darin, Ihre eigenen zu erstellen und die Idee hinter R2R-Leitern und Flash-ADCs zu übernehmen. Der Ausgang des oben genannten Kantendetektors wird über eine R2R-Leiter (nicht unbedingt mit gleichwertigen Widerständen) gespeist, die eine Anzahl von Knoten mit Spannungen vom Eingang zur Masse versorgt. Ein FET kann so ausgewählt werden, dass seine Kniespannung oder Einschaltspannung handhabbar ist, wie 0,5 V bis 1 V, seine Quelle geerdet und das Gate mit den verschiedenen R2R-Knoten verbunden ist . Wenn ein Knoten die Kniespannung überschreitet, schaltet sich der FET ein und steuert eine LED an.

Die Schallamplitude ist traditionell (und biologisch!) Logarithmisch, also die Spannung, bei der sich jeder drehen sollte on ist auf einer logarithmischen Skala linear. Bei einem Eingang von maximal 3,3 V zum logarithmischen Beleuchten von 10 LEDs pro Kanal mit einer Spannung unter der Annahme einer Kniespannung von 0,5 V betragen die absoluten Knotenspannungen: (MATLAB)

  EDU>> logspace (log10 (0,5), log10 (3,3), 10) ans = 0,5 0,6166 0,7605 0,9379 1,1567 1,4265 1,7593 2,1697 2,6758 3,3  

Wenn ein maximaler Strom von ~ 1 mA angestrebt wird Der gesamte R2R-Widerstand sollte nahe 3,3 kΩ liegen. Dies zeigt Widerstandswerte von: (Spannungsteiler iterativ verwenden)

  R1 = 624,2 (620) R2 = 506,1 (510) R3 = 410,4 (430) R4 = 332,8 (300) R5 = 269,8 ( 270) R6 = 218,8 (240) R7 = 177,4 (160) R8 = 143,9 (150) R9 = 116,6 (120) R10 = 500 (500)  

Hinweis: Standard 5 % Widerstandswerte in Klammern sind nicht einfach die engste Übereinstimmung, sondern werden iterativ berechnet. Um Berechnungen mit anderen Standardwerten oder Spezifikationen zu wiederholen, lautet die Formel: R i sub> = R GESAMT sub> x sup> sub> (1) - V i / 3,3 V) - {Summe von 1 bis i von R i sub>}, abgeleitet aus der Spannungsteilerformel. Sub>

Die letzte Schaltung sieht ungefähr so ​​aus:
alt text

Eine andere Methode, um diesen Effekt zu erzielen, ist die Verwendung von Diodentropfen . 3,3 V können etwa 8 Schottky-Tropfen (~ 0,4 V) unterstützen, wenn die Transistorschwellenspannung kleiner oder gleich 0,4 V ist (andernfalls 7 Tropfen). Ziehen Sie in einer Kette von 8 Schottky-Dioden die Spannungen an jedem Zwischenknoten mit einem Widerstand herunter, der auch als Strombegrenzer fungiert (lassen Sie etwas in der Nähe des Teststroms aus dem Datenblatt fließen, wenn Diode ist in Vorwärtsrichtung vorgespannt). Jeder Knoten wird dann auf die gleiche Weise wie oben mit Transistoren verbunden. Der Strom durch die Dioden ändert sich um mehr als das 8-fache, je nachdem, wie viele Dioden in Vorwärtsrichtung vorgespannt sind. Stellen Sie daher sicher, dass jeder in allen Fällen funktioniert. Diese Methode ist linear w.r.t. Spannung oder Amplitude, was nicht ganz authentisch ist. Außerdem sind Schottky-Widerstände teurer als 5% -Widerstände ...

Ein letzter Hinweis - einer, den ich nicht untersucht habe - ist, den BE-Drop in BJT-Transistoren anstelle von Schottky-Dioden zu verwenden, wodurch mehrere Teile pro LED eingespart werden, aber auch mit einem größeren Diodentropfen und Bipolaren zu kämpfen hat.

#4
+1
tyblu
2011-01-13 02:33:35 UTC
view on stackexchange narkive permalink

Analoge Spektrumanalysatoren mischen den Eingang über einen Frequenzbereich herunter und zeigen den Effektivwert oder Leistungspegel eines dünnen Niederfrequenz-Durchlassbereichs an - Sie können das Gleiche tun. Anstatt Operationsverstärkerfilter an Ihrem Eingang zu verwenden, können Sie ein Antialiasing-Eingangsfilter (10 kHz-20 kHz LPF) verwenden, gefolgt von einem Mischer mit LO-Eingang von einem VCO, der von einer Rampe angetrieben wird (der Swept -Teil von Swept-Tuned Spectrum Analyzer ), dann ein großartiger Bandpassfilter. Der erwähnte Spitzendetektor folgt. Dieser Ansatz ist viel komplizierter als eine Reihe von Filtern, gefolgt von Verstärkern, macht aber viel mehr Spaß. Es kommt zu viel Haarziehen und Gehirnfusseln.

Sie wissen wahrscheinlich mehr über Mixer als ich, also lasse ich das in Ruhe. Beachten Sie, dass ein "Audio-Mixer" nicht dasselbe ist.

Wikipedia hat ein Audio-VCO-Beispiel und führt zu einigen beliebten Designs. Dedizierter VCO und Spannungs-Frequenz-Wandler-ICs sind verfügbar, sie sind jedoch hauptsächlich für den 100-MHz-Bereich vorgesehen; dieser kann von Nutzen sein, erzeugt aber Rechteckwellen. (Eine andere Frage könnte sein, um einen idealen VCO für diese Anwendung zu bestimmen.)

Ein einfacher Diodenspitzendetektor kann mit zwei Operationsverstärkern verbessert werden, wie in AoE beschrieben pg. 217. Besonders nützlich für Eingangssignale mit kleiner Amplitude (Fehler ~ 0,6 / Vp). alt text

Leider muss mein Projekt die 12 Filter enthalten.
@W5VO - Ah, ich würde "nicht verhandelbar" lesen, um zu bedeuten, dass Sie die Filter aufgrund von Design- / Kosten- / Platzbeschränkungen nicht implementieren wollten. Können Sie die Eingabe vor dem Filtern in Ihr Balkendiagramm übernehmen?
#5
+1
Thomas O
2011-01-14 00:07:50 UTC
view on stackexchange narkive permalink

Eine Möglichkeit besteht darin, einen kleinen Mikrocontroller zum Ausführen einer FFT zu verwenden. Ein PIC 18F ist dazu in der Lage, wie dieses Beispiel zeigt (Code ist Open Source) - 10 fps sind nicht schwierig, und Sie können die scheinbare Aktualisierungsrate verbessern, indem Sie zwischen nachfolgenden FFTs mitteln oder hinzufügen in zufälligem Rauschen. Sie können dann Charlieplexing oder eine andere Form des Multiplexing verwenden, um die Anzeige zu steuern.

Wenn FFT zu schwierig klingt oder zu viel Rechenleistung für Sie erfordert, können Sie dies versuchen, indem Sie analoge und digitale Konzepte mischen.

Sie können ein konfigurierbares Bandpassfilter erstellen, indem Sie Kondensatoren verwenden, die an Mikrocontroller-E / A angeschlossen sind. Schließen Sie etwa 1k in Reihe an einen ADC-Eingang an. Stellen Sie die E / A-Impedanz hoch, um den Kondensator effektiv zu trennen, und treiben Sie den Ausgang niedrig, um ihn anzuschließen. Durch die Verwendung von fast binären Kondensatorwerten wie 10n, 22n, 39n und 82n können Sie ein 16-Wege-Filter erstellen. Das ist für den Hochpassteil; Um den Tiefpass-Teil auszuführen, setzen Sie eine 100n-Kappe (oder so) in Reihe am mittleren Knoten des RC-Hochpasses und verwenden Sie Widerstände an den E / A (wiederum unter Verwendung von Binärwerten von 1k, 2,2k, 3,9k und 8,2) k) Machen Sie dasselbe mit den Kappen: Fahren Sie sie niedrig, um sie zu verwenden, und fahren Sie sie auf High-Z, um sie zu trennen.

Dann können Sie entweder eine Spitzendetektorschaltung verwenden, um die Spitzen zu messen, oder einfach eine Reihe von Messungen vom ADC durchführen und diese mitteln. Wenn Sie nur einen 8-Wege-Filter benötigen, sind dies 6 E / A-Vorgänge plus ADC-Eingang, also insgesamt 7 E / A-Vorgänge, und für eine 8x8-Anzeige sind nur 9 E / A erforderlich, um die Steuerung mithilfe von Charlieplexing zu steuern

Wenn man zwölf Frequenzbänder haben möchte und diese nicht gleich weit voneinander entfernt sind, wäre es besser, eine FFT durchzuführen oder einfach zwölf Integralpaare des Referenzwellen-Zeit-Originals zu berechnen? Die PIC 18-Serie ist dafür nicht besonders gut eingerichtet, aber ein DSP oder ein ARM sollte in der Lage sein, gut genug damit umzugehen.
#6
+1
supercat
2011-05-09 01:01:21 UTC
view on stackexchange narkive permalink

Ein ARM kann möglicherweise die Energie in jeder Frequenzkomponente gut abschätzen, zumindest wenn man eine kleine Assemblersprache verwendet und eine nette ARM-Variante verwendet (z. B. Cortex-M3 oder ARM7-TDMI) a Cortex-M0).

Angenommen, die Originaldaten und die Referenzwelle sind 16 Bit, und man hat separate Kopien der Referenzwellenform für jede interessierende Frequenz (wahrscheinlich nicht zu schwer, wenn es nur zwölf davon gibt ) Die innere Schleife könnte ungefähr so ​​aussehen:

; R0 - Datenquellenzeiger; R1 - Referenzwellenzeiger; R2 - Datenquellenende plus eins; R3 - Referenzwellenende; R4 - Referenzwellenlänge; R5 - Referenzwellen-Cosinus-Delta; R8 - Sinus gesamt L; R9 - Sinus gesamt H; R10 - Cosinus gesamt L; R11 - Kosinus-Gesamt-Hlp: ldrsh r6, [r0], # 2; Ich habe die Syntax für ldrsh r7 nach dem Inkrement vergessen, [r2, r5]; Holen Sie sich die Kosinusreferenz smlal r10, r11, r6, r7 ldrsh r7, [r2], # 2 smlal r8, r9, r6, r7; Wiederholen Sie die obigen Schritte gegebenenfalls einige Male, wenn die Wellenlänge immer sein wird. ein Vielfaches der Anzahl der Wiederholungen. Beachten Sie, dass die Referenzwelle; Möglicherweise muss es etwas erweitert werden, um dies zu berücksichtigen (es muss erweitert werden; es muss eine Viertelwellenlänge sein, um den Kosinus-Term zu berücksichtigen). cmp r1, r3; Carry Set, wenn r1 so viel wie r3 Subcs r1, r4 bekommen hat; Wenn das Wellenende passiert ist, wickeln Sie cmp r0, r2 ein; Sehen Sie, ob am Ende der Welle bcc lp 

ich denke, dass die innere Schleife ungefähr 20 Zyklen dauern würde, um die Sinus- und Cosinus-Terme für eine gleiche von einer Frequenz zu verarbeiten. Für zwölf Frequenzen müssten Sie also 240 Zyklen Front-Line-Verarbeitung aufwenden. Selbst ein 16-MHz-ARM sollte keine Probleme damit haben.

#7
  0
akohlsmith
2011-01-13 07:08:43 UTC
view on stackexchange narkive permalink

Ich bin nicht sicher, ob ich das Problem verstehe. Sie haben Ihre Anforderungen ziemlich gut abgeschlossen. Die 12 Bandpassfilter können nicht vermieden werden, und Sie möchten 12 LEDs pro Bandpassfilter verwenden. Sie könnten den LM3914 eliminieren und einen einzelnen Mikrocontroller mit 12 ADC-Eingängen verwenden oder einen externen MUX einbinden. Sie könnten den RC-Filter und die Hüllkurvenschaltung entfernen und dies in der Software tun, wenn Sie schnell genug abtasten, und wenn Sie die 12-Bandpass-Filteranforderung lockern würden, könnten Sie sogar die FFT in der Software berechnen.

Grundsätzlich was Ich sage, angesichts Ihrer Anforderungen bin ich mir nicht sicher, warum 45 US-Dollar in Teilen für den Balkendiagramm-Treiber und die Ausgabe-LEDs so ein Problem sind. Sie haben sich nicht wirklich viel Flexibilität gelassen.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 2.0-Lizenz, unter der er vertrieben wird.
Loading...