Sommario:

Generatore di funzioni: 12 passaggi (con immagini)
Generatore di funzioni: 12 passaggi (con immagini)

Video: Generatore di funzioni: 12 passaggi (con immagini)

Video: Generatore di funzioni: 12 passaggi (con immagini)
Video: GUARDATE COSA è successo in classe! Ho promesso di mettere 10 a chi stacca i quaderni #shorts 2024, Novembre
Anonim
Generatore di funzioni
Generatore di funzioni
Generatore di funzioni
Generatore di funzioni

Questa istruzione descrive la progettazione del generatore di funzioni basato sul circuito integrato analogico MAX038 di Maxims

Il generatore di funzioni è uno strumento molto utile per i fanatici dell'elettronica. È necessario per sintonizzare circuiti di risonanza, testare apparecchiature audio e video, progettare filtri analogici e per molti altri scopi diversi.

Oggi ci sono due tipi principali di generatori di funzioni; digitali, (basati su DSP, DDS…) che sono sempre più usati e analogici, che ne furono le origini.

Entrambi i tipi hanno i loro vantaggi e svantaggi. I generatori digitali possono generare segnali con frequenza molto stabile, ma hanno problemi con la generazione di segnali sinusoidali molto puri (cosa che non è un problema per quelli analogici). Anche i generatori di funzioni principalmente diffusi basati sull'approccio DDS non hanno un intervallo di generazione di frequenza così ampio.

Da tempo desideravo progettare un utile generatore di funzioni, che potesse in qualche modo combinare alcuni dei vantaggi di entrambi i tipi di generatori (analogici e digitali). Ho deciso di basare il design sul chip Maxim MAX038*

* Nota: questo chip non è più prodotto e venduto da Maxim. È obsoleto. È ancora possibile trovarlo su eBay, Aliexpress e altri siti per componenti elettronici.

Esistono anche altri chip per generatori di funzioni analogiche (XR2206 di Exar, icl8038 di Intersil), ma avevo

un MAX038 disponibile, e l'ho usato. Le caratteristiche digitali del generatore di funzioni sono state eseguite da un chip Atmega328. Le sue funzioni sono le seguenti:

  • controlla la selezione della gamma di frequenza
  • controlla il tipo di segnale (sinusoidale, rettangolare, triangolare, a dente di sega)
  • misura l'ampiezza del segnale
  • misura l'offset DC
  • misura la frequenza del segnale
  • misura il THD del segnale sinusoidale nella gamma audio (questo deve ancora essere implementato)
  • visualizza tutte queste informazioni su un display LCD a caratteri 16x2.

Passaggio 1: MAX038 Descrizione

MAX038 Descrizione
MAX038 Descrizione

Ho allegato il datasheet MAX038. Si possono vedere i parametri più importanti del chip:

Intervallo di frequenza operativa da 0,1Hz a 20MHz

♦ Forme d'onda triangolari, a dente di sega, sinusoidali, quadrate e a impulsi

♦ Regolazioni indipendenti della frequenza e del ciclo di lavoro

♦ Intervallo di scansione di frequenza da 350 a 1

♦ Ciclo di lavoro variabile dal 15% all'85%

♦ Buffer di uscita a bassa impedenza: 0.1Ω

♦ Deriva di temperatura bassa di 200 ppm/°C

Un altro requisito importante è la necessità della doppia alimentazione (±5V). L'ampiezza di uscita è fissa (~ 2 VP-P con offset di 0 V CC).

A pagina 8 del datasheet è visibile lo schema a blocchi del chip. A pagina 11 si può vedere il circuito più semplice, che può essere utilizzato per la generazione del segnale sinusoidale. Questo circuito è stato preso come base per la progettazione del generatore di funzioni.

Fase 2: Il circuito …

Il circuito …
Il circuito …

Nella foto è presentato il circuito del generatore di funzioni Ho fatto questa immagine con la massima risoluzione possibile per garantire che ogni valore di.device possa essere letto correttamente. Lo schema sembra piuttosto complesso e per essere compreso meglio spiegherò le sue parti principali separatamente. Molti lettori potrebbero rimproverarmi che il circuito sia troppo ridondante. Questo è vero. All'inizio puoi vedere che contiene due chip MAX038. Il motivo è che il PCB supporta entrambi i tipi di pacchetti SO e DIP. La ridondanza si nota anche in alcune funzioni -

1) I LED mostrano la gamma di frequenza attiva corrente, ma viene anche visualizzata sul display LCD;

2)I LED sono usati anche per indicare il tipo di segnale, ma anche il display LCD mostra queste informazioni

Il design è fatto in questo modo per consentire una maggiore flessibilità all'utente: se lo desidera, non potrebbe utilizzare l'LCD o semplicemente può omettere la saldatura dei LED. Li ho saldati per poter eseguire il debug della funzionalità durante le fasi di progettazione.

Si può notare anche che uso molti operazionali. Alcuni di essi possono essere omessi senza problemi, in particolare i buffer. Al momento gli operazionali da soli offrono una grande ridondanza - in un pacchetto puoi trovare 2, 4 anche 8 amplificatori separati, e questo a un prezzo relativamente basso. Perché non usarli?

Ridondanti sono anche i condensatori di filtraggio: ogni chip analogico utilizzato ha il proprio banco di condensatori (tantalio + condensatori ceramici per entrambe le alimentazioni). Alcuni di essi possono anche essere omessi.

Fase 3: Spiegazione del circuito - Alimentazione (1)

Spiegazione del circuito - Alimentazione (1)
Spiegazione del circuito - Alimentazione (1)

Come ho detto questo generatore richiede una doppia alimentazione. La tensione positiva è creata dall'uso del regolatore di tensione lineare 7805. L'alimentazione negativa è generata dal chip 7905. Il punto di presa centrale del trasformatore 2x6V è collegato alla massa comune della scheda. Gli alimentatori generati - sia il positivo che il negativo sono separati in analogico e digitale da cunei. Due led segnalano la presenza di ogni alimentazione.

Fase 4: Spiegazione del circuito - Controllo della gamma di frequenza (2)

Spiegazione del circuito - Controllo della gamma di frequenza (2)
Spiegazione del circuito - Controllo della gamma di frequenza (2)

Per coprire un'ampia gamma di frequenze viene utilizzato un banco di condensatori multiplo. I condensatori hanno valori diversi e definiscono diversi sottocampi di frequenza. Durante il lavoro viene utilizzato solo uno di questi condensatori - la sua piastra inferiore è collegata a terra tramite un interruttore a transistor MOS. La piastra inferiore dei condensatori da mettere a terra è controllata dall'Atmega328 mediante l'uso del chip demultiplexer 74HC238. Come interruttori MOS ho usato transistor BSS123. Il requisito principale per questo interruttore è avere un Ron basso e la capacità di drain più bassa possibile. Il controllo digitale del banco di condensatori può essere omesso: il PCB contiene fori per la saldatura dei fili per l'interruttore rotante meccanico.

Passaggio 5: Spiegazione del circuito - Regolazione della frequenza (3)

Spiegazione del circuito - la regolazione della frequenza (3)
Spiegazione del circuito - la regolazione della frequenza (3)

In figura sono mostrati i circuiti di controllo della frequenza e del duty cycle. Lì ho usato l'opamp standard LM358 (doppio amplificatore in un unico pacchetto). Ho usato anche due potenziometri da 10K.

Il chip MAX038 genera un riferimento di tensione interno 2,5 V, che viene normalmente utilizzato come riferimento per tutte le regolazioni.

Questa tensione viene applicata all'ingresso invertente di IC8a e genera un riferimento di tensione negativo utilizzato per il DADJ (regolazione del duty cycle). Entrambe le tensioni sono applicate al potenziometro per il DADJ, il cui tap centrale è bufferizzato e applicato al pin DADJ del chip MAX038. Il jumper JP5 può essere utilizzato per disabilitare la funzione DADJ, quando connesso a massa. Il controllo di frequenza "Course" viene eseguito modificando la corrente affondata / originata nel pin "IIN" di MAX038. Questa corrente è definita dal resistore R41 e dalla tensione di uscita dell'amplificatore operazionale che bufferizza la presa centrale del potenziometro di controllo della frequenza di rotta. Tutti questi possono essere sostituiti da un singolo potenziometro (in connessione reostat) tra i pin REF e IIN MAX038.

Passaggio 6: Spiegazione del circuito - Controllo dell'ampiezza, generazione del segnale SYNC… (4)

Spiegazione del circuito - Controllo dell'ampiezza, generazione del segnale SYNC… (4)
Spiegazione del circuito - Controllo dell'ampiezza, generazione del segnale SYNC… (4)
Spiegazione del circuito - Controllo dell'ampiezza, generazione del segnale SYNC… (4)
Spiegazione del circuito - Controllo dell'ampiezza, generazione del segnale SYNC… (4)
Spiegazione del circuito - Controllo dell'ampiezza, generazione del segnale SYNC… (4)
Spiegazione del circuito - Controllo dell'ampiezza, generazione del segnale SYNC… (4)
Spiegazione del circuito - Controllo dell'ampiezza, generazione del segnale SYNC… (4)
Spiegazione del circuito - Controllo dell'ampiezza, generazione del segnale SYNC… (4)

Come scritto nel datasheet il segnale di uscita del MAX038 ha ampiezza ~1 V con tensione DC pari al potenziale di massa.

Volevo avere la possibilità di controllare l'ampiezza del segnale e poter definire da solo l'offset DC. Come caratteristica aggiuntiva volevo avere un segnale SYNC con livelli CMOS in parallelo con il segnale in uscita. Di default il chip MAX038 genera tale segnale, ma nel datasheet leggo che se questa funzione è abilitata (cosa significa - pin DV+ connesso a 5V), si possono osservare dei picchi (rumore) nel segnale analogico in uscita. Volevo mantenere è il più pulito possibile e per questo motivo ho generato il segnale SYNC esternamente. Il PCB è fatto in modo che il pin DV+ possa essere facilmente collegato all'alimentazione principale. Il pin SYNC è indirizzato al connettore BNC - solo il resistore da 50 Ohm deve essere saldato. In questo caso, il circuito di generazione del segnale SYNC può essere omesso. Qui come vedete uso anche doppi potenziometri, ma non sono collegati in parallelo. Il motivo è che misuro l'ampiezza in modo relativo. La tensione nel punto medio di un potenziometro viene rilevata dall'ADC Atmega328 e l'ampiezza del segnale viene calcolata in base a questo valore. Ovviamente questo metodo non è molto preciso (si basa sull'accoppiamento di entrambe le sezioni del potenziometro, cosa che non sempre avviene), ma è abbastanza preciso per le mie applicazioni. In questo circuito IC2A funziona come buffer di tensione. anche IC4A. L'amplificatore operazionale IC2B funziona come amplificatore sommatore - crea il segnale di uscita del generatore funzionale come somma della tensione di offset e del segnale principale con ampiezza regolata. Il partitore di tensione R15. R17 genera un segnale di tensione adatto per misurare l'offset del segnale principale CC. Viene rilevato dall'ADC Atmega328. L'amplificatore operazionale IC4B funziona come comparatore - controlla l'inverter di generazione SYNC realizzato dai due transistor MOS (BSS123 e BSS84). L'U6 (THS4281 - Texas Instruments) sposta il segnale di uscita generato dal MAX038 DC con 2,5 V e lo amplifica 1,5 volte. Il segnale così generato viene rilevato dall'ADC dell'AVR ed elaborato ulteriormente con l'algoritmo FFT. In questa parte ho utilizzato operazionali rail to rail di alta qualità con larghezza di banda di 130 MHz (TI - LMH6619).

Per essere facile capire come funziona esattamente la generazione del segnale SYNC, includo alcune immagini delle simulazioni LTSpice del circuito. Nella terza immagine: il segnale blu è la tensione di offset (ingresso dell'IC2B). Quello verde è il segnale di uscita con ampiezza regolata. Quello rosso è il segnale di uscita del generatore funzionale, La curva ciano è il segnale SYNC.

Passaggio 7: progettazione PCB

Progettazione PCB
Progettazione PCB

Ho usato "Eagle" per la progettazione del PCB. Ho ordinato i PCB su "PCBway". Ci sono voluti solo quattro giorni per produrre le tavole e una settimana per consegnarle. La loro qualità è alta e il prezzo è estremamente basso. Ho pagato solo 13 USD per 10 PCB!

Inoltre, potrei ordinare PCB di colore diverso senza aumento di prezzo. Ho scelto quelli gialli:-).

Allego i file gerber secondo le regole di progettazione "PCBway".

Passaggio 8: saldatura

Image
Image
saldatura
saldatura
saldatura
saldatura

Per prima cosa ho saldato i dispositivi dei circuiti di alimentazione..

Dopo aver testato il blocco di alimentazione, ho saldato il chip Atmega328 con i suoi dispositivi di supporto: cristallo di quarzo, condensatori, cappucci filtranti e il connettore ISP. Come vedi ho un ponticello nella linea di alimentazione del chip AVR. Lo scollego quando programmo il chip tramite l'ISP. Uso il programmatore USBtiny per questo scopo.

Come passo successivo ho saldato il chip de-mux 74HC238, i LED che indicano la gamma di frequenza. Ho caricato un piccolo programma Arduino nel chip Atmega, che stava testando il multiplexing. (guarda il video sotto il link sopra)

Passaggio 9: saldatura…

Saldatura…
Saldatura…
Saldatura…
Saldatura…
Saldatura…
Saldatura…

Come passo successivo ho saldato gli operazionali funzionanti in modalità DC (LM358) e i potenziometri di regolazione della frequenza e DADJ e ho verificato tutte le loro funzioni.

Inoltre ho saldato gli interruttori BSS123, i condensatori che determinano la frequenza e il chip MAX039. Ho testato il generatore funzionale sondando il segnale all'uscita del segnale del chip nativo. (Potete vedere il mio vecchio oscilloscopio sovietico, prodotto nel 1986, ancora funzionante in azione:-))

Passaggio 10: più saldature…

Altro Saldatura…
Altro Saldatura…
Altro Saldatura…
Altro Saldatura…
Altro Saldatura…
Altro Saldatura…

Successivamente ho saldato la presa per il display LCD e l'ho testata con lo sketch "Hello world".

Ho saldato gli altri operazionali rimanenti, i condensatori, i potenziometri e i connettori BNC.

Passaggio 11: software

Image
Image
Software
Software

Per la creazione del firmware Atmega328 ho utilizzato l'IDE Arduino.

Per la misurazione della frequenza ho utilizzato la libreria "FreqCounter". Il file di schizzo e la libreria utilizzata sono disponibili per il download. Ho creato simboli speciali per rappresentare la modalità attualmente utilizzata (seno, rettangolo, triangolo).

Nell'immagine sopra si possono vedere le informazioni mostrate sul display LCD:

  • Frequenza F=xxxxxxxx in Hz
  • Gamma di frequenza Rx
  • Ampiezza in mV A=xxxx
  • Offset in mV 0=xxxx
  • tipo di segnale x

Il generatore di funzioni ha due pulsanti sulla parte anteriore sul lato sinistro: vengono utilizzati per modificare la gamma di frequenza (step up - step down). A destra di essi si trova l'interruttore a scorrimento per il controllo della modalità, dopo di esso da sinistra a destra seguire il potenziometro per il controllo della frequenza (corso, fine, DADJ), dell'ampiezza e dell'offset. Vicino al potenziometro di regolazione dell'offset è posto l'interruttore utilizzato per commutare tra l'offset fisso a 2,5V DC e quello sintonizzato.

Ho trovato un piccolo errore nel codice "Generator.ino" nel file ZIP: i simboli per le forme d'onda sinusoidali e triangolari sono stati scambiati. Nel singolo file "Generator.ino" qui allegato, l'errore viene corretto.

Passaggio 12: da fare…

Image
Image

Come ultimo passaggio intendo implementare funzionalità aggiuntive: la misurazione del THD del segnale sinusoidale della frequenza audio in tempo reale utilizzando FFT. Ciò è necessario, poiché il ciclo di lavoro del segnale sinusoidale potrebbe differire dal 50%, cosa che può essere causata da disallineamenti interni del chip e altri motivi e potrebbe creare distorsioni armoniche. Il duty cycle può essere regolato dal potenziometro, ma senza osservare il segnale sull'oscilloscopio o sull'analizzatore di spettro è impossibile rifinire bene la sua forma. Il calcolo del THD basato sull'algoritmo FFT potrebbe risolvere il problema. Il risultato dei calcoli THD verrà visualizzato sul display LCD nello spazio vuoto in alto a destra.

Sul video è visibile lo spettro del segnale sinusoidale generato dal MAX038. L'analizzatore di spettro si basa sulla scheda Arduino UNO + schermo TFT da 2,4 . L'analizzatore di spettro utilizza la libreria Arduino SpltRadex sviluppata da Anatoly Kuzmenko per eseguire FFT in tempo reale.

Non ho ancora deciso: utilizzare questa libreria o utilizzare la libreria FHT creata dai Musiclabs.

Intendo utilizzare le informazioni ricavate dalle misurazioni del frequenzimetro per calcolare la finestra di campionamento corretta e sospendere l'uso di finestre aggiuntive durante i calcoli FFT. Ho solo bisogno di trovare un po' di tempo libero per farlo accadere. spero di avere presto dei risultati….

Consigliato: