Domanda:
Driver LED per grafici a barre multicanale
W5VO
2011-01-13 00:57:15 UTC
view on stackexchange narkive permalink

Voglio costruire un circuito che mostri i componenti di frequenza in tempo reale di un segnale audio su una serie di grafici a barre di qualche tipo. Attualmente, il mio piano è costruire 12 filtri op-amp passa-banda, quindi utilizzare un raddrizzatore e un circuito RC per creare un inviluppo CC per ogni uscita, quindi utilizzare quel segnale per pilotare un grafico a barre a LED o qualcosa di simile.

Il circuito utilizzerà una singola alimentazione di + 3,3 V e l'utilizzo di 12 filtri passa-banda non è realmente negoziabile. Se desidero un grafico a barre a 12 canali, sono bloccato utilizzando le coppie di 12 LED del grafico a barre e driver LED del grafico a barre? Questo arriva a $ 45! Esiste un metodo migliore / meno costoso / più semplice per ottenere un risultato simile? Idealmente, non avrei bisogno di un microcontrollore.

Sette risposte:
davr
2011-01-13 03:27:15 UTC
view on stackexchange narkive permalink

A volte è più economico usare un CI per scopi generali e programmarlo per fare quello che vuoi, quindi cercare di trovare un gruppo di CI per scopi speciali che non sono programmabili, che fanno esattamente quello che vuoi.

Questo tizio ha realizzato un analizzatore di spettro a 64 bande su un microcontrollore di fascia bassa, quindi fare 12 canali dovrebbe essere un gioco da ragazzi. (ha incluso anche un driver LCD ... nel tuo caso avresti invece il software che pilota una matrice di LED). Anche il circuito è abbastanza semplice.

Il microcontrollore costa poco. Per pilotare i LED, ne avrete 120 (10 x 12). Li collegheresti semplicemente in una matrice e potresti guidarli con 4 registri a scorrimento che sono anche economici. (Ci vorranno 6 pin I / O, più o meno, a seconda di come l'hai cablato).

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

LCD output PCB layout

Bene, TQFP su una scheda di precisione da 0,100 ". La maggior parte delle persone farebbe solo QQ su questo.
@Nick Sì, quel ragazzo è un po 'pazzo: http://elm-chan.org/docs/wire/wiring_e.html. Ecco un altro ragazzo: http://www.flickr.com/photos/oohshiny/3309808873/
Kevin Vermeer
2011-01-13 07:11:11 UTC
view on stackexchange narkive permalink

Ho realizzato una versione a sette canali di questo progetto alcuni mesi fa. Ho progettato 7 filtri passa banda opamp separati (utilizzando la topologia del filtro Bessel per ridurre al minimo la distorsione). Ho scelto l'LM3914 e un grafico a barre LED preconfezionato perché il problema non era il costo; tempo di sviluppo era, ma puoi prendere la strada opposta.

Ho passato i segnali filtrati attraverso il seguente rilevatore di picco:

alt text

Questo è un molto più economico dei circuiti operazionali che troverai altrove. La Vce del transistor e la Vf del diodo dovrebbero annullarsi. Il condensatore da 1uF e il resistore da 470k hanno dato un buon tasso di decadimento per guardare i segnali audio che stavo monitorando.

Per quanto riguarda il costo, l'LM3914 che stavi guardando è solo una cascata di comparatori con un ingresso collegato tramite una rete di resistori a una tensione fissa e l'altra all'ingresso del rilevatore di picco. Se non hai bisogno del controllo della corrente LED fornito da questo chip, probabilmente puoi farlo in modo più economico con un classico comparatore quadruplo come l'LM339 o l'LM2901 (non hai bisogno di niente di speciale), che ti costerà circa $ 0,30 in quantità di 25 (ne occorrono 24 per dodici grafici a 8 canali). Supponendo che i resistori siano fondamentalmente liberi, è necessario un diodo, un transistor, condensatori di disaccoppiamento (anch'essi essenzialmente liberi), un condensatore di memorizzazione di picco da 1uF e un grafico a LED. Basta usare alcuni LED 1206 sfusi per il grafico e disporli sul PCB invece di pagare per il grafico a barre preconfezionato. Se scegli 8 elementi nel grafico e hai bisogno di LED 12 * 8 ~ = 100 , puoi farlo per $ 0,042 centesimi ciascuno con questi LED indicatori verdi, oppure circa $ 0,34 per canale. Direi che puoi farla franca con la parte del grafico a barre per meno di $ 1 per canale se ti guardi intorno.

AiliwzjenhCMT - 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?
I mostly find questions/answer that still need to be fixed in older Q/A which don't get many views anymore, but I fix when I spot them. Thanks for all who participated in the TeX Edit Party. Great cooperation!
AilidsalzmCMT - Well, I'd have said that party was something of a drag...
Yeah, and come to think of it, the music was lousy too. And the drinks expensive... :-)
Sono (abbastanza) in ritardo per il pugno qui, ma volevo dire che questo è un rilevatore di picchi _fantastico_! Ha velocità e precisione paragonabili a un opamp senza l'ingombro e il costo aggiuntivi.
tyblu
2011-01-13 12:03:49 UTC
view on stackexchange narkive permalink

Un'alternativa ai driver dedicati e agli array LED è crearne uno tuo, prendendo in prestito l'idea alla base di ladder R2R e flash ADC . L'uscita dal suddetto rilevatore di bordi viene alimentata attraverso qualcosa di simile a una scala R2R (non necessariamente con resistori di uguale valore), che fornisce un numero di nodi con tensioni dall'ingresso a terra. Un FET può essere selezionato in modo tale che la sua tensione di ginocchio o tensione di accensione sia qualcosa di gestibile, come da 0,5 V a 1 V, la sua sorgente a terra e il gate collegato ai vari nodi R2R . Quando un nodo supera la tensione del ginocchio , il FET si accende e pilota un LED.

L'ampiezza del suono è tradizionalmente (e biologicamente!) Logaritmica, quindi la tensione a cui ciascuno dovrebbe girare on è lineare su una scala logaritmica. Per un ingresso di massimo 3,3 V per illuminare 10 LED per canale in modo logaritmico con tensione, assumendo una tensione del ginocchio di 0,5 V, le tensioni assolute del nodo saranno: (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  

Se si punta a una corrente massima di ~ 1mA , la resistenza R2R totale dovrebbe essere vicina a 3,3kΩ. Questo rivela i valori del resistore di: (usa il divisore di tensione in modo iterativo)

  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)  

Nota: standard 5 I valori della resistenza% tra parentesi non sono semplicemente la corrispondenza più vicina, ma vengono calcolati iterativamente. Per ripetere i calcoli con altri valori o specifiche standard, la formula è: R i = R TOTAL x (1 - V i / 3.3V) - {somma da 1 a i di R i }, derivata dalla formula del partitore di tensione.

Il circuito finale sarà simile a questo:
alt text

Un altro metodo per ottenere questo effetto è utilizzare gocce di diodi . 3,3 V può supportare circa 8 cadute Schottky (~ 0,4 V) se la tensione di soglia del transistor è inferiore o uguale a 0,4 V (altrimenti 7 cadute). In una catena di 8 diodi Schottky, abbassa le tensioni su ciascun nodo intermedio con un resistore che funzionerà anche come limitatore di corrente (consenti a qualcosa di vicino alla corrente di prova della scheda tecnica di fluire quando diodo è polarizzato in avanti). Ogni nodo viene quindi collegato ai transistor nello stesso modo di cui sopra. La corrente attraverso i diodi cambierà di oltre 8 volte, in base al numero di diodi polarizzati in avanti, quindi assicurati che ognuno funzioni in tutti i casi. Questo metodo è lineare rispetto a. tensione o ampiezza, che non è del tutto autentica. Inoltre, gli Schottky sono più costosi dei resistori al 5% ...

Un ultimo suggerimento - uno che non ho esplorato - è utilizzare il BE-drop nei transistor BJT invece dei diodi Schottky, risparmiando più parti per LED ma dovendo anche fare i conti con una maggiore caduta di diodi e bipolari.

tyblu
2011-01-13 02:33:35 UTC
view on stackexchange narkive permalink

Gli analizzatori di spettro analogici mescolano l'input su una gamma di frequenze e visualizzano l'RMS o il livello di potenza di una gamma di banda passante sottile e a bassa frequenza: potresti fare lo stesso. Invece di utilizzare filtri op-amp al tuo ingresso, puoi utilizzare un filtro antialiasing in ingresso (LPF 10kHz-20kHz) seguito da un mixer con ingresso LO da un VCO pilotato da una rampa (la parte spazzata di analizzatore di spettro sintonizzato ), quindi un ottimo filtro passa banda. Segue il rilevatore di picco menzionato. Questo approccio è un po 'più complicato di un banco di filtri seguito da amplificatori, ma molto più divertente. Ne deriveranno molti strappi di capelli e confusione cerebrale.

Probabilmente sai più cose sui mixer di me, quindi lo lascio stare. Tieni presente che un "mixer audio" non è la stessa cosa.

Wikipedia ha un esempio di VCO audio e porta ad alcuni progetti popolari. VCO dedicato e IC convertitori tensione-frequenza sono disponibili, ma sono per lo più per la gamma di 100 MHz; questo può essere utile, ma genera onde quadre. (Un'altra domanda potrebbe essere quella di determinare un VCO ideale per questa applicazione.)

Un semplice rivelatore di picco a diodi può essere migliorato con due amplificatori operazionali, come descritto in AoE su pg. 217. Particolarmente utile per segnali di ingresso di piccola ampiezza (errore ~ ​​0.6 / Vp). alt text

Purtroppo il mio progetto deve includere i 12 filtri.
@W5VO - Ah, avrei letto "non negoziabile" per indicare che non volevi implementare i filtri a causa di vincoli di design / costo / spazio. Puoi prendere l'input alla tua parte del grafico a barre prima del filtraggio?
Thomas O
2011-01-14 00:07:50 UTC
view on stackexchange narkive permalink

Un'opzione è usare un piccolo microcontrollore per eseguire una FFT. Un PIC 18F è in grado di farlo, come questo esempio dimostra (il codice è open source) - 10 fps non è difficile e potresti migliorare la velocità di aggiornamento apparente calcolando la media tra le FFT successive o aggiungendo in rumore casuale. Puoi quindi utilizzare charlieplexing o qualche altra forma di multiplexing per guidare il display.

Se FFT suona troppo difficile o richiede troppa potenza di elaborazione, puoi provare a farlo mescolando concetti analogici e digitali.

È possibile creare un filtro passa banda configurabile utilizzando condensatori collegati agli IO del microcontrollore. Collegare circa 1k in serie a un ingresso ADC. Rendere l'IO ad alta impedenza per scollegare efficacemente il condensatore e abbassare l'uscita per collegarlo. Utilizzando valori quasi binari del condensatore, come 10n, 22n, 39n e 82n, è possibile creare un filtro a 16 vie. Questo è per la parte passa alto; per eseguire la parte passa-basso, metti un limite di 100n (o giù di lì) in serie al nodo centrale del passa-alto RC e usa resistori sugli IO (di nuovo, usando valori binari di 1k, 2.2k, 3.9k e 8.2 k), facendo lo stesso con i tappi: portali in basso per usarli e portali a Z alto per scollegarli.

Quindi, puoi utilizzare un circuito rilevatore di picchi per misurare i picchi o semplicemente prendere una serie di misurazioni dall'ADC e calcolarne la media. Se hai bisogno solo di un filtro a 8 vie, sono 6 IO, più l'ingresso ADC, quindi 7 IO totali e un display 8x8 richiederanno solo 9 IO per il controllo utilizzando charlieplexing.

Se si vogliono dodici bande di frequenza e non sono equidistanti, sarebbe meglio fare un FFT, o semplicemente calcolare dodici coppie di integrali di riferimento-onda-tempi-originali? La serie PIC 18 non è impostata molto bene per questo, ma un DSP o un ARM dovrebbe essere in grado di gestirlo abbastanza bene.
supercat
2011-05-09 01:01:21 UTC
view on stackexchange narkive permalink

Un ARM potrebbe essere in grado di stimare bene l'energia in ogni componente di frequenza, almeno se si usa un piccolo linguaggio assembly e si sta usando una bella variante ARM (ad esempio Cortex-M3 o ARM7-TDMI, piuttosto che a Cortex-M0).

Supponendo che i dati originali e l'onda di riferimento siano di 16 bit e che si abbiano copie separate della forma d'onda di riferimento per ciascuna frequenza di interesse (probabilmente non troppo difficile se ce ne sono solo dodici ) il ciclo interno potrebbe avere un aspetto simile a:

; R0 - Puntatore all'origine dati; R1 - Puntatore dell'onda di riferimento; R2 - Fine dell'origine dati, più uno; R3 - Fine dell'onda di riferimento; R4 - Lunghezza d'onda di riferimento; R5 - Delta coseno onda di riferimento; R8 - Seno totale L; R9 - Seno totale H; R10 - Coseno L totale; R11 - Hlp totale del coseno: ldrsh r6, [r0], # 2; Ho dimenticato la sintassi per ldrsh post-incremento r7, [r2, r5]; Recupera il riferimento del coseno smlal r10, r11, r6, r7 ldrsh r7, [r2], # 2 smlal r8, r9, r6, r7; Ripeti quanto sopra alcune volte se lo desideri, se la lunghezza d'onda sarà sempre; un multiplo del numero di ripetizioni. Notare che l'onda di riferimento; potrebbe essere necessario estenderlo un po 'per adattarlo (deve essere esteso; essere un quarto di lunghezza d'onda per accogliere il termine del coseno). cmp r1, r3; Riporta impostato se r1 è diventato pari a r3 subcs r1, r4; Se superato la fine dell'onda, avvolge cmp r0, r2; Vedere se alla fine dell'onda bcc lp 

Penso che il ciclo interno impiegherebbe circa 20 cicli per elaborare i termini seno e coseno per una stessa frequenza. Quindi per dodici frequenze, dovresti spendere 240 cicli di elaborazione in prima linea. Anche un ARM a 16MHz non dovrebbe avere problemi a gestirlo.

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

Non sono sicuro di aver capito qual è il problema; hai bloccato le tue esigenze abbastanza bene. I 12 filtri passa-banda non possono essere evitati e si desidera utilizzare 12 LED per filtro passa-banda; potresti eliminare l'LM3914 e utilizzare un singolo microcontrollore con 12 ingressi ADC o includere un MUX esterno. Potresti eliminare il filtro RC e il circuito di inviluppo e farlo nel software se stai campionando abbastanza velocemente, e se rilassi il requisito del filtro passa banda 12 potresti persino calcolare la FFT nel software.

Fondamentalmente cosa Sto dicendo che date le vostre esigenze non sono davvero sicuro del motivo per cui $ 45 in parti per il driver del grafico a barre e i LED di uscita siano un tale problema. Non ti sei davvero lasciato molta flessibilità.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 2.0 con cui è distribuito.
Loading...