Domanda:
È un osc sinusoidale adatto? come controllo la frequenza?
Jim
2011-07-08 16:06:23 UTC
view on stackexchange narkive permalink

Panoramica-

Sto creando un banco di oscillatori sinusoidali analogici e mi interessa mantenere il design compatto.

Ho iniziato realizzando un Wien Bridge oscillatore. Dato che lavoro da un unico alimentatore e sto cercando di mantenere il design piccolo, ho utilizzato l'IC LM386n-1.

Userò gli oscillatori per fare un po 'di additivo sintesi audio, forse un po 'di FM e probabilmente avrò bisogno di alcuni degli oscillatori come LFO.

Le mie domande sono-

Questo è un approccio adatto per creare un oscillatore sinusoidale analogico compatto ?

Inoltre, come suggeriresti di controllare la frequenza, quale valore del componente dovrebbe essere modificato per ottenere questo risultato? - Ho provato a manipolare tutte le resistenze per cambiare il tono, ma sembrano tutte interdipendenti.

Ecco il circuito su cui ho lavorato, proviene dalla National Semiconductor LM386 Low Voltage Audio Scheda tecnica dell'amplificatore di potenza-

wien bridge LM386

E questo è l'aspetto della mia implementazione, non ho una lampadina a incandescenza adatta, quindi l'ho appena sostituita con un potenziometro da 1KΩ . Non sono ancora sicuro di cosa userò nel circuito finale come AGC, i suggerimenti sono ben accetti.

my wien bridge LM386

Cinque risposte:
Olin Lathrop
2011-07-08 16:36:06 UTC
view on stackexchange narkive permalink

Questo non risponde a ciò che hai chiesto, ma penso che risolva il problema in modo pertinente.

Oggigiorno farlo in analogico è sciocco, tranne forse per alcune applicazioni molto specializzate o ad alta frequenza. Hai detto che questa è un'applicazione audio, quindi non riesco a immaginare una buona ragione per tutto l'analogico. La tua prima frase menziona che vuoi un intero banco di queste cose, e vuoi il design compatto. L'approccio analogico non sarà sicuramente compatto. Un altro problema con l'approccio analogico è che le frequenze e le ampiezze andranno alla deriva.

Un modo molto migliore per farlo è generare tutte le onde sinusoidali in un processore e sommarle digitalmente. Possono tutti utilizzare la stessa tabella sinusoidale a 1/4 d'onda, basta indicizzarla con diversi incrementi per campione per ottenere le diverse frequenze.

Ciò rientra nelle capacità anche di DSP di fascia bassa, come il Microchip linea dsPIC. Un dsPIC33F suona come una buona misura. A 40 MIPS, hai 1000 cicli di istruzioni per ogni campione a una frequenza di campionamento di 40 kHz. È molto e consentirà di aggiungere molti seni diversi a ciascun campione. L'hardware DSP ad accumulo multiplo consentirà di aggiungere facilmente ogni contributo con il proprio guadagno.

Segnali derivati ​​digitalmente come questo non si spostano in frequenza o ampiezza e avranno un migliore rapporto segnale / rumore. Con numeri a 16 bit ottieni 96 dB. È fattibile in analogico se stai attento. Tuttavia, la precisione del segnale digitale sarà molto maggiore. Non c'è alcuna possibilità che i generatori di seno analogico possano essere entro 1 parte su 65000 per campione solo a causa dell'imprevedibilità dell'ampiezza. La frequenza dei segnali digitali può anche essere impostata in modo molto accurato e il sintetizzatore sinusoidale digitale non avrà bisogno di alcuni cicli per stabilizzarsi prima che la sua uscita sia quella che ti aspetti.

Modifica: chiarimento sulla generazione di seno

Vedo alcuni svantaggi della generazione del seno di ricerca in tabella menzionati in altre risposte che non sono corretti, quindi aggiungo ulteriori chiarimenti sul metodo qui. Sono state sollevate due obiezioni, accuratezza e risoluzione in frequenza.

Per prima cosa lasciatemi spiegare la struttura normale di una ricerca sinusoidale. Notare che un'onda sinusoidale è simmetrica a quattro vie. È quindi necessario memorizzare solo 1/4 ciclo. La forma d'onda di base del primo quadrante viene ripetuta invertita, negata o entrambe nei restanti tre 1/4 cicli. Un bel trucco per renderlo facile è esprimere l'angolo in modo tale che un cerchio completo sia una potenza di due, preferibilmente usando l'intera parola di qualunque macchina stia eseguendo il codice. Ciò significa che le aggiunte e le sottrazioni di angoli si avvolgono automaticamente attorno al cerchio senza codice esplicito a tale scopo se si esegue la matematica degli angoli in aritmetica di interi senza segno. Questa rappresentazione semplifica anche la ricerca nella tabella 1/4 wave.

I due bit alti dell'angolo indicano il quadrante, quindi solo i bit inferiori rimanenti vengono utilizzati per l'indice nella tabella. Se è impostato il bit dell'angolo più alto, il risultato della tabella viene negato. Se viene impostato il successivo bit più alto, la tabella viene indicizzata all'indietro. È semplice come completare i bit bassi rimanenti prima di usarli come indice. Non è necessario che la tabella abbia una dimensione tale che tutti i bit bassi possano essere usati come indice. Ad esempio su una macchina a 16 bit come un dsPIC, sarebbe naturale utilizzare 16 bit per l'angolo. Ciò lascia 14 bit da indicizzare nella tabella, che sarebbe una tabella molto grande. In genere, e in questo caso, non è necessaria una tabella così grande. Una dimensione ragionevole potrebbe essere 1024 segmenti, che utilizzerebbero 10 bit di indice. I restanti 4 bit di indice (in questo esempio) possono essere ignorati o utilizzati per interpolare tra voci adiacenti. La tabella avrebbe effettivamente 1025 voci, il che significa 1024 segmenti. Un'onda sinusoidale approssimata con 4096 (la tabella viene utilizzata 4 volte sull'intera onda sinusoidale) sarebbe abbastanza buona. Se i bit extra vengono utilizzati per interpolare tra voci di tabelle adiacenti, è ancora meglio. Immagina un'onda sinusoidale approssimata con 4096 segmenti lineari per ciclo. Sarebbe molto difficile vedere un errore.

Per quanto riguarda la precisione, fai i conti. Un'onda sinusoidale cambia più rapidamente ad angolo zero, quindi è facile calcolare l'errore del caso peggiore da una semplice ricerca in una tabella di 1024 punti. Il primo valore della tabella sarebbe 0 e il secondo seno (Pi / 2048) = 0,00153. L'errore del caso peggiore è quindi la metà di quello o .000767. Ciò equivale a un rapporto segnale / rumore di 62 dB, e questo è solo dalla scelta di un valore di tabella senza interpolazione. Utilizzando i restanti 4 bit di indice per l'interpolazione, il rapporto segnale / rumore aumenta a 86 dB. Se non è abbastanza buono, usa un numero più ampio per l'angolo e interpola usando i bit extra.

Anche la risoluzione in frequenza non è un problema. Apparentemente alcuni pensano che l'incremento dell'angolo per campione debba essere un multiplo dell'incremento dell'angolo per voce della tabella. Non è affatto vero. L'uso di un angolo di soli 16 bit e di una tabella di 1024 segmenti offre già una risoluzione angolare 16 volte superiore rispetto a ciascuna voce di tabella. In pratica probabilmente userei due parole (32 bit in questo esempio) per gli angoli e gli incrementi angolari. Ciò fornisce una risoluzione di frequenza molto elevata e offre anche più bit di interpolazione per aumentare il rapporto segnale / rumore. A una frequenza di campionamento di 40 kHz, un tono di 20 Hz (il caso peggiore) richiederebbe un incremento angolare di 1/2000 cerchio per campione. Questa è una parte su 33 che utilizza angoli a 16 bit. Questo da solo potrebbe essere sufficiente per molte applicazioni. Se si utilizza un angolo di 32 bit, la risoluzione in frequenza a 20 Hz è superiore a 1 parte su 2 milioni.

Quindi non ignoriamo così rapidamente la generazione di seno basata sulla ricerca nel firmware. Almeno non liquidiamolo per le ragioni sbagliate. Nota che nessuna delle cose che ho descritto sarebbe difficile da fare per un dsPIC. Ciò include l'interplazione poiché un dsPIC può moltiplicare da 16 x 16 a 32 bit in un singolo ciclo di istruzioni.

Fai un'argomentazione convincente, il motivo per cui cerchi di creare osc analogici è perché le persone li hanno richiesti. Ho chiesto in passato su questo forum e le persone hanno parlato di volere un sintetizzatore analogico controllato digitale.
Mi chiedo se le persone vogliono la deriva e le imprecisioni e, in tal caso, dovrebbero essere semplicemente programmate in un generatore di onde sinusoidali digitali? hummm, sto iniziando a cambiare idea sull'uso dell'analogico per questa applicazione.
"e avrà un rapporto segnale / rumore migliore" ... supponendo che lo implementi correttamente
Salute Endolith, mi ha dato un'altra idea per l'emulazione analogica: rumore falso :)
@Jim - Se crei il rumore con un generatore di congruenza lineare (LCG) con una durata del ciclo troppo breve, otterrai un suono da motoscafo, che sicuramente li convincerà che è analogico.
@stevenvh Bello, lo adoro, quindi è un po 'come il rumore in loop quindi c'è un po' di pulsazioni in corso? Sarebbe un'ottima funzionalità, grazie per tutte le fantastiche idee :)
@Olin grazie per la modifica, fai davvero il possibile! - Mi hai già convinto :)
Serve solo per la generazione di onde sinusoidali inferiori a 40Hz?Cosa succede se si devono generare 2kHz, è possibile mantenere una precisione simile?E inoltre, la tua risposta considera il DAC THD?Molte grazie.
@rich: L'algoritmo stesso è indipendente dalla frequenza.Il suo limite superiore dipende dalla velocità del processo.Come ho detto, penso che un dsPIC da 40 MIPS dovrebbe essere in grado di gestire le frequenze audio ragionevolmente facilmente.
@OlinLathrop Grazie per la risposta.Presumo che la frequenza audio sia compresa tra 20 e 20 kHz (o non è questo che intendi?).Se si deve generare un'onda sinusoidale di 20 kHz di alta qualità, il DAC deve campionare a 20 MHz.E l'SPI che collega MCU e DAC deve funzionare almeno a 320 MHz, il che è difficile da ottenere.Potrei avere la tua opinione?
L'audio HiFi di @rich: arriva a 20 kHz, ma ciò non richiede una frequenza di campionamento leggermente superiore a 40 kHz.Non ho idea da dove provengano i 20 MHz.Vedi Nyquist.
Hai menzionato 1028 segmenti per ciclo per produrre onde sinusoidali di alta qualità.Quindi 20 khz richiede una frequenza di campionamento di 20 Mhz.La mia comprensione è corretta?Del solo campione a 40 kHz ci deve essere molta distorsione.Potrei avere la tua opinione?
@rich: No, salti la tabella del seno alla velocità per ottenere la frequenza desiderata.Sì, ciò si traduce in una notevole distorsione delle frequenze più alte, ma quei componenti di distorsione vengono rimossi dal filtro di ricostruzione (che in alcuni casi può essere solo le tue orecchie).Di nuovo, devi davvero andare a capire cosa ha detto Nyquist.
stevenvh
2011-07-08 16:21:35 UTC
view on stackexchange narkive permalink

Il motivo per utilizzare una piccola lampada a incandescenza è che ha un coefficiente di temperatura positivo (PTC), necessario all'oscillatore per stabilizzare l'ampiezza. Il potenziometro non funziona.
Il resistore di feedback negativo dovrebbe essere almeno il doppio della resistenza del PTC.

La frequenza dell'oscillatore è determinata dai due resistori e dai due condensatori sul pin non invertente e lo schema sembra avere un errore: entrambi i resistori dovrebbero essere uguali (4k7 o 47k), così come il condensatori. La frequenza è

\ $ f = \ dfrac {1} {2 \ pi RC} \ $

Quindi puoi controllare la frequenza usando un potenziometro stereo per le resistenze. Entrambi i canali dovrebbero avere un buon monitoraggio.

Seguendo i suggerimenti, ho fornito una risposta separata su DDS , quindi i commenti al riguardo si riferiscono effettivamente a quella risposta.

Sono a conoscenza di questo fenomeno, ho il vaso in modo da poter produrre un seno a una frequenza fissa. Ho intenzione di utilizzare un componente con un PTC, probabilmente non una lampada a incandescenza. Grazie per l'equazione e i suggerimenti, li controllerò.
Un chip DDS è una buona soluzione, ma non vorrei rifiutare di fare tutto in un micro così rapidamente. L'OP ha detto che il compatto era importante. Inoltre, una tabella di ricerca sinusoidale a intervalli di 1000 1/4 sarà molto accurata. Ancora più preciso con l'interpolazione, ma con 1000 intervalli potrebbe non essere necessario per molte applicazioni. Anche l'incremento della tabella per campione non deve essere intero. È possibile utilizzare frazioni di bit per ottenere una precisione di frequenza arbitraria.
Grazie per la modifica, questo mi ha davvero aiutato a prendere una decisione, sono totalmente d'accordo: il digitale è la via per questa particolare applicazione.
@Jim - (Questo mi costerà i miei punti? ;-)) Il 9851 genera un solo segnale, quindi potrebbe essere una soluzione costosa se vuoi un banco completo di generatori di seno. Il MiniDDS di Jesper potrebbe essere più appropriato.
Domanda stoopid, l'AD9851 emette forme d'onda complesse o più di un'onda sinusoidale? avrei bisogno di un chip per ogni oscillatore?
@stevenvh cool, grazie per i suggerimenti, dovrò masticare un po ', ripensare un po'. Speravo di includere un micro Atmel per la programmazione e il controllo del synth usando Arduino, il DDS di Jesper sembra un buon punto di riferimento :)
@Olin Lathrop, Thx per gli ottimi suggerimenti sull'utilizzo di una tabella wave, darò sicuramente un'occhiata a questo approccio.
Il DDS dovrebbe essere una risposta separata in modo che le persone possano votare su o giù in modo indipendente
@endolith - fatto! (cosa intendi con: voto negativo ??? :-))
stevenvh
2011-07-08 19:23:00 UTC
view on stackexchange narkive permalink

Alcune persone mi hanno suggerito di aggiungere una risposta separata sul DDS. Così l'ho estratta dall'altra mia risposta.

La risposta di Olin è sensata: questa è l'era digitale. Come dice lui il tuo segnale sarà molto più stabile (precisione cristallina), ma l'uso di un microcontrollore non è la soluzione; la tabella di ricerca sinusoidale è fissa e i passi di frequenza potrebbero essere troppo grossolani.
Una soluzione migliore è DDS , sintesi digitale diretta. Questo viene spesso fatto con circuiti integrati DDS speciali, come AD9851, e consente un livello molto alto di controllo della frequenza (a seconda del clock fino alla risoluzione di milliHertz). Avrai bisogno di un microcontrollore per controllare il sysnthesizer, quindi non sarà l'applicazione più semplice, né quella più economica. Ma ci sono buone alternative: Jesper Hansen ha progettato una semplice implementazione DDS basata su un controller AVR.

Non è necessario che i passaggi di frequenza siano grossolani. Ovviamente la tabella di ricerca sinusoidale è fissa, ma di per sé non è un problema. Penso che ci sia qualche malinteso sul metodo di ricerca, quindi ho aggiunto maggiori dettagli nella mia risposta.
@Olin - Sì, hai assolutamente ragione (ovviamente! :-)). Grazie per i tuoi sforzi per spiegare in dettaglio.
MikeJ-UK
2011-07-08 18:37:05 UTC
view on stackexchange narkive permalink

Secondo (o terzo) gli argomenti di Steven e Olin. Sebbene sia perfettamente possibile costruire un sintetizzatore analogico, pone sfide significative. In cima alla lista c'è la stabilità della temperatura: dover risintonizzare frequentemente gli oscillatori non è divertente e scrivo per esperienza personale nella costruzione di un sintetizzatore tradizionale (sottrattivo) con solo due oscillatori alcuni anni fa.

E se lo sei appassionato di sintesi additiva, lascia perdere! Ti destreggerai con troppi oscillatori e non sarai in grado di tenere il passo con la deriva di frequenza. Ora so che alcune persone preferiscono ancora i sintetizzatori analogici al digitale per il loro suono grasso e in fase libera, ma non sono convinto.

C'è un ragazzo di nome Doug Curtis che ha fondato una società chiamata Curtis Electromusic Specialità nel 1979 per produrre circuiti integrati dedicati per le funzioni tradizionali di VCO, VCF ecc. E questi probabilmente hanno esteso la durata dei progetti di sintetizzatori analogici di alcuni anni essendo molto meno inclini alla deriva (e rendendo i progetti più economici), ma anche ha ceduto alla rivoluzione digitale nel 1988. C'è ancora una vecchia scorta delle sue fiches intorno alle quali andare a prezzi premium su eBay!

Sul tema della sintesi sonora FM, questo è stato l'argomento della mia tesi di laurea in 1981 e mentre sono riuscito a sviluppare un "motore" audio FM analogico, le mie conclusioni sono state che non poteva eguagliare un motore di sintesi digitale - e questo è stato 30 anni fa!

Ehi, qualcun altro che si ricorda delle Curtis Electromusic Specialties! Caspita, Mike, sei vecchio! :-)
Immagino che dovrò realizzare i miei oscillatori digitali con una modalità di emulazione analogica, in modo che si sfasino e si spostino - questo dovrebbe rendere felici gli audiofili puritani. Grazie per il tuo contributo.
@stevenvh - "Esperto" è la parola che stavi cercando! (... e questo fa di noi due: o)
@Jim - DDS funziona con un accumulatore di fase e penso che la maggior parte dei circuiti integrati DDS avrà un modulatore di fase (l'AD9851 lo fa), che aggiunge un offset all'accumulatore di fase. Quindi hanno una modulazione di fase incorporata.
@stevenvh cool- Buono a sapersi, grazie
@Jim: Potrebbero essere semplicemente impressionati dalla parola "analogico" più di qualsiasi altra caratteristica che abbia. Basta inserire delle valvole che non fanno nulla e diranno che ha "un suono valvolare davvero caldo".
@endolith lol, immagino! maledetti audiofili analogici, mi chiedo quanti di loro avrebbero superato la sfida coca cola / pepsi? non molti sospetto.
Per curiosità, sai perché molti sintetizzatori FM avevano una selezione limitata di rapporti di frequenza?Era semplicemente per ridurre al minimo il numero di bit di registro o c'era una ragione più grande?Il mio DX21 ha rapporti che sono generalmente abbastanza grossolani, ma poi ha una "regolazione fine" con una gamma che non è neanche lontanamente abbastanza grande da colmare il divario tra la maggior parte dei rapporti, ma consente 7.00 e 7.07 come scelte di rapporto di frequenza.
Leon Heller
2011-07-08 18:51:44 UTC
view on stackexchange narkive permalink

Ecco un approccio software DDS che ho usato, basato sul MiniDDS di Jesper Hansen, che genera un'onda sinusoidale fino a 200 kHz circa. Il filtraggio sarebbe utile in alcune applicazioni.

Grazie Leon, bel progetto, come anche il PCB fatto in casa - sembra fantastico in bianco :)
È un materiale composito di carta economico che utilizzo perché è molto più facile da tagliare e forare rispetto a FR4.
Bene, ottengo un tipo simile di cartone dal mio negozio locale, ma è di un giallo sgradevole. E hai ragione: FR4 è un incubo da tagliare in confronto. Ho appena tagliato il composito di carta con un coltello da falegname, è molto più adatto al fai da te.
@Leon, @Jim - quel tipo di scheda può anche avere [i suoi problemi] (http://electronics.stackexchange.com/questions/8129/how-do-components-fail/8154#8154). Leggi e rabbrividisci.


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