Generatore di funzioni DDS fino a 10 MHz

Gli integrati operanti in tecnologia DDS (Direct Digital Synthesis) sono oggi facili da reperire, e semplificano enormemente la progettazione della parte analogica di un generatore di segnali o di funzioni. Non ci resta dunque altro da fare che sceglierne uno, aggiungere qualche componente esterno e un microcontrollore, definire l'interfaccia utente e iniziare a programmare. Questa è in sintesi la storia di come è nato questo progetto, basato sul componente DDS AD9834.

Introduzione

Alcuni anni fa, l'autore dell'articolo necessitava di un generatore di funzioni per il proprio laboratorio casalingo. Nello svolgimento della propria attività lavorativa, gli era già capitato di lavorare con dei modelli commerciali, anche molto costosi, e l'idea iniziale fu quella di acquistarne uno simile. Tuttavia, nessuno di essi era in grado di soddisfare le reali necessità pratiche (erano troppo complicati per un uso amatoriale), per cui venne presa la decisione di progettarne e di auto-costruirne uno. Alla fine la scelta ricadde su un componente basato sulla tecnologia DDS, anche se questa non fu l'unica soluzione presa in considerazione. Vediamo ora di esaminare i componenti selezionati per il progetto.

I componenti

Dopo aver esaminato diverse tecnologie esistenti sul mercato, l'autore si è orientato verso l'architettura di tipo Direct Digital Synthesis (DDS). Il DDS include un oscillatore digitale basato su un quarzo molto preciso, in grado di generare forme d'onda sinusoidali anche di elevata frequenza. Per quanto riguarda il microcontrollore, la scelta è ricaduta su un modello di Analog Devices, un marchio noto soprattutto per le rinomate famiglie di Digital Signal Processor (DSP). ADI dispone anche di un'ottima famiglia di microcontrollori ARM a 32-bit, supportati da una altrettanto valida documentazione. A differenza di altri produttori di microcontrollori che hanno bisogno di mille o più pagine per descrivere il funzionamento dei propri dispositivi, Analog Devices è in grado di fornire una completa descrizione di un microcontrollore con funzionalità avanzate in poco più di un centinaio di pagine. Analog Devices è anche specializzata nella realizzazione di integrati DDS, amplificatori operazionali, e altri componenti analogici, rendendola la scelta ideale da cui attingere i componenti richiesti per questo progetto. Inoltre, il loro servizio di fornitura di campioni gratuiti, ha permesso di intraprendere immediatamente l'esecuzione del progetto limitando gli investimenti richiesti.

La MCU selezionata è stata la ADuC7024B­STZ62, appartenente alla famiglia Precision Ana­log Microcontroller, disponibile in package a 64 bit e basata su un core ARM7TDMI funzionante alla frequenza di 44 MHz. Questi microcontrollori sono detti analogici in quanto includono degli ingressi e uscite di tipo analogico (ADC e DAC) e un compara­tore analogico. Inoltre, dispongono di funzionalità PWM, timer, e porte seriali standard (SPI, UART, I²C). Il microcontrollore utilizzato dispone di 8 KB di RAM e 62 KB di memoria flash, che può essere programmata in-circuit tramite una connessione seriale. Occorre notare come alcuni microcontrollori della stessa famiglia utilizzano un'interfaccia I²C per la programmazione della memoria flash: è pertanto importante prestare attenzione a scegliere il modello esatto di MCU, e non una con un part number leggermente diverso.

L'integrato DDS selezionato per il progetto è il noto AD9834. La frequenza massima dell'oscillatore esterno è pari a 75 MHz, che consente di raggiungere una frequenza di uscita massima di 37,5 MHz (pari a metà della frequenza di clock). Lo svantaggio di avere un segnale di clock così veloce è nella risoluzione in frequenza che ne deriva, pari a soli 0,28 Hz e determinata dal divisore di frequenza intero a 28 bit. Non si tratta certamente di un buon valore, che corrisponde a quasi lo 0,6% a 20 Hz. Per migliorare la situazione, è possibile diminuire la frequenza di clock, a discapito della massima frequenza di uscita ottenibile. A 1 MHz, per esempio, la risoluzione diventa pari a 0,004 Hz, corrispondente a un errore di 0,005% a 20 Hz, ma la massima frequenza in uscita si riduce a soli 500 kHz. In questo progetto la frequenza di clock scelta per il DDS è pari a 75 MHz, in modo tale da garantire un segnale relativamente pulito sino a 10 MHz; si è così cercato di ottenere un compromesso tra ris­oluzione e range di frequenze.

L'interfaccia utente rappresenta anch'essa una parte importante dello strumento di misura, per cui l'autore ha posto una particolare attenzione sulla sua definizione. E' stato utilizzato un display grafico, abbinato ad alcuni pulsanti per consentire un'agevole navigazione all'interno dei vari menu ed opzioni. Per regolare l'ampiezza e l'offset in continua del segnale di uscita sono stati impiegati due potenziometri multigiro. Per quanto riguarda il display, è stato utilizzato un modello economico impiegato nei cellulari, il Nokia 6100, che ha anche il vantaggio di essere ben documentato dalla comunità open source presente su Internet. Sfortunatamente, questo display esiste in due varianti (Epson e Philips), non pienamente compatibili tra loro. Ancor peggio, nella maggior parte dei casi non è possibile specificare il modello esatto al momento dell'acquisto. Per risolvere questo inconveniente, l'autore ha deciso di scrivere due versioni del software, in modo tale da supportare entrambi i modelli. Poiché anche l'estetica ha la sua importanza, tutta l'elettronica del circuito è stata racchiusa all'interno di un elegante contenitore di alluminio prodotto da Hammond. Il risultato è uno strumento dalla linea molto accattivante, che si è guadagnato un posto di rilievo sul banco del laboratorio.

Specifiche tecniche

Le principali caratteristiche tecniche dello strumento possono essere così sintetizzate:

  • sintesi digitale diretta (DDS) con front-end analogico
  • gamma di frequenze: 1 - 10 MHz
  • risoluzione in frequenza: 0,28 Hz
  • uscita: 0 -15 Vpp
  • THD+N (carico da 100 kΩ, B > 500 kHz):
    • 1 V, 1 kHz: 0,12% (0,09% per B = 22 kHz)
    • 5 V, 1 kHz: 0,1% (0,09% per B = 22 kHz)
    • 1 V, 10 kHz: 0,1% (0,09% per B = 80 kHz)
    • 5 V, 10 kHz: 0,09% (0,08% per B = 80 kHz)
    • 1 V, 100 kHz: 0,1%
    • 5 V, 100 kHz: 0,08%
  • rapporto S/N (riferito a 1 V): 72 dB
  • massima uscita (carico da 10 MΩ):
    • onda sinusoidale: 16 Vpp
    • onda triangolare: 16 Vpp
    • onda quadra: 18 Vpp
  • range di tensioni per l'offset in continua: da -10 a +10 V
  • impedenza di uscita: 50 Ω
  • duty cycle (onda quadra): 1 - 99%
  • tempo di salita e di discesa (80%, onda quadra): 100 ns
  • modalità sweep
  • assorbimento di potenza: 3 VA

In Figura 1 possiamo osservare il grafico di una FFT fino a 130 kHz, relativo a una forma d'onda sinusoidale a 1 V, 1 kHz (la frequenza fondamentale è stata soppressa). Il THD+N è dovuto principalmente alle armoniche del segnale. Sono inoltre visibili alcune componenti relative alla tensione di rete (50 Hz), ma comunque molto vicine al rumore di fondo.

Figura 1: FFT relativa a un segnale di uscita sinusoidale, 1 V, 1 kHz

Il circuito

In Figura 2 possiamo osservare lo schematico del generatore di funzioni DDS. La sezione relativa alla generazione del segnale si trova nella parte superiore dello schema, mentre nella parte inferiore sono visibili il microcontrollore e l'interfaccia utente. I componenti passivi posti attorno all'integrato IC3 (DDS) sono quelli raccomandati dal produttore. L'uscita dell'integrato è filtrata tramite la rete RC formata da R16/C18, prima di essere amplificata da IC5.A. Il motivo per cui si è utilizzato un filtro normale piuttosto che un filtro di ordine più elevato è legato alla sua semplicità. Il segnale in uscita da IC5.A segue due percorsi. Il percorso nella parte superiore è utilizzato per la generazione delle forme d’onda sinusoidali e triangolari (IC3 è in grado di gestirle entrambe). Questo percorso è collegato all’ingresso S2 di IC7, uno switch CMOS single-pole double-throw (SPDT) in grado di fornire un buon isolamento tra i suoi due ingressi e l’uscita. Il percorso nella parte inferiore dello schema è invece utilizzato per la generazione delle forme d’onda rettangolari, ed è collegato all’ingresso S1 di IC7.

Figura 2: La scheda principale del generatore contiene tutto il circuito escluso l’alimentatore

L’onda quadra è creata generando un segnale triangolare e facendolo passare attraverso IC5.B e IC6.B, collegati come comparatori veloci con un appropriato valore di isteresi. La tensione di riferimento richiesta dai comparatori è prelevata da una delle uscite analogiche (DAC0) del microcontrollore e bufferizzata da IC6.A. Ciò permette di ottenere una regolazione precisa del duty cycle. L’uscita di IC7 passa attraverso il potenziometro P2, e viene poi amplificata dall’operazionale ad alta velocità IC8. Questo amplificatore è molto veloce (lo slew rate è pari a 2500 V/ms) ed è in grado di pilotare dei carichi di bassa impedenza. Si noti come in questo caso sia stata utilizzata la versione per fori passanti, in modo tale da semplificarne la sostituzione nel caso in cui il componente si dovesse guastare. Il livello picco-picco o l’ampiezza del segnale di uscita è regolabile tramite il potenziometro P2. A causa delle capacità e induttanze parassite (che lo fanno funzionare come un filtro passa-basso), il potenziometro riveste un’importanza fondamentale nel determinare la qualità del segnale di uscita. La frequenza di taglio del potenziometro è legata al numero di giri e alla sua resistenza. Se il generatore viene utilizzato principalmente per generare onde sinusoidali di elevata frequenza, un potenziometro da 10 giri con una resistenza di 1 kΩ o superiore rappresenta la scelta ideale. Se, viceversa, si tende a prediligere la generazione di impulsi con fronti molto ripidi, è meglio orientarsi su un potenziometro a 5 giri con resistenza di 200 Ω o inferiore (Figura 3).

Figura 3: Un periodo di un’onda quadra a 1 MHz (50% di duty cycle) utilizzando per P2 un potenziometro 10 giri, 1 kΩ

Tutti i componenti, a partire dall’uscita di IC3 e includendo il circuito stampato, hanno un’ampiezza di banda limitata e contribuiscono in qualche misura al filtraggio passa-basso del segnale di uscita. Questo è il motivo per cui è stato aggiunto un semplice filtro RC del primo ordine composto da R16 e C18. Inoltre, se fosse stato utilizzato un filtro di ordine superiore, sarebbe stato necessario creare un terzo percorso per trasportare la forma d’onda triangolare, rendendo il progetto molto più complesso. L’offset in tensione del segnale di uscita è creato dai due riferimenti di tensione IC10 e IC11, e dal potenziometro P1, bufferizzato dall’amplificatore operazionale ad elevata precisione IC9. L’operazionale IC8 aggiunge questa tensione continua al segnale di uscita. Il segnale di uscita alimenta uno degli ingressi analogici (ADC0) del microcontrollore, dopo lo scalamento e la rimozione dell’offset in continua (IC2). Il suo scopo è quello di monitorare il livello del segnale di uscita come indicato sul display. Il circuito attorno al microcontrollore IC1 è abbastanza auto-esplicativo: troviamo otto pulsanti, un display grafico LCD, alcuni condensatori di disaccoppiamento e qualche pin header. La MCU opera con il proprio oscillatore interno, per cui non è richiesto alcun quarzo esterno. Si noti inoltre la presenza di un connettore JTAG, utilizzabile per programmare e debuggare il software. E’ anche disponibile una porta seriale, tramite la quale si può aggiornare il software utilizzando il bootloader (il jumper JP1 serve proprio a selezionare la modalità di avvio con il bootloader attivo).

Il circuito di alimentazione è di tipo classico (Figura 4), costruito attorno ai tradizionali LM317 e LM337. Lavorando in modo combinato, questi componenti sono in grado di generare una tensione duale stabile di ±15 V richiesta dallo stadio di uscita analogico, e una tensione di +3,3 V per il resto del circuito. A differenza di molti PCB quasi interamente coperti di componenti a montaggio superficiale (SMD), l’alimentatore è stato realizzato con componenti per fori passanti. E' stato utilizzato un singolo trasformatore con due avvolgimenti secondari di 15 V/5 VA ciascuno. Una potenza di 10 VA o similare è sufficiente per alimentare il generatore DDS. Per minimizzare le perdite di potenza nel regolatore da 3,3 V, è stato utilizzato un diodo separato (D5/D6) con un condensatore di filtraggio di valore relativamente piccolo (C17/C18). La tensione di ripple che rimane riduce leggermente la perdita di potenza nel regolatore IC3.

Figura 4: L'alimentatore del generatore di segnali include un certo numero di regolatori di tensione LM3x7

I diodi D1 e D2 sono di tipo Schottky, e il motivo è presto detto. In condizioni di massimo carico, la caduta di tensione su dei diodi "normali", combinata con il ripple su C5, fa sì che la tensione in ingresso a IC1 diventi pericolosamente vicina al suo valore minimo. Viceversa, alla corrente di 0,5 A la tensione forward dei diodi Schottky è inferiore a 0,45 V, mentre un classico 1N4007 provocherebbe una caduta di tensione almeno doppia. Sia per la scheda generatore che per la scheda alimentatore sono stati approntati degli appositi PCB. Particolare cura è stata posta nella realizzazione del PCB della scheda generatore, in modo tale da mantenere il segnale di uscita il più possibile lontano dalle interferenze prodotte dai segnali digitali di controllo ad elevata frequenza. La maggior parte dei componenti è di tipo SMD, ma l'assemblaggio delle schede non dovrebbe rappresentare un grosso problema, a condizione di utilizzare delle buone lenti di ingrandimento.

Il software

Il codice sorgente è scritto in C utilizzando il noto ambiente di sviluppo integrato μVision di Keil. Per semplificare le cose, non è stato utilizzato un sistema operativo real-time (RTOS), e il codice risultante è composto soltanto da poche istruzioni. I file header contengono le definizioni e i prototipi delle funzioni, mentre gli altri contengono il corpo delle funzioni stesse. Due di questi file servono a supportare i due diversi tipi di display grafici LCD, mentre il file "main.c" contiene il codice relativo al generatore di segnale. Il file "init.s" è invece scritto in assembler, e contiene le funzioni necessarie per inizializzare il microcontrollore. Questo file è stato scritto partendo da zero, e non fa parte dell'ambiente di sviluppo. Il driver LCD è parzialmente basato su un codice open source reperito su Internet, e integrato dall'autore del progetto. Poichè il dis­play non è stato collegato a una porta SPI hardware, il protocollo di comunicazione è stato emulato tramite la tecnica del bit-banging sui pin di GPIO. Le funzioni WriteLcdCommand e WriteLcd­Data implementano proprio questa funzionalità. La maggior parte dello sforzo programmativo relativo al driver si è concentrato sulla creazione di due font, uno di dimensioni più grandi e l'altro di dimensioni più piccole. I pulsanti vengono gestiti in polling all'interno del loop principale. Per contenere le dimensioni del codice e renderlo indipendente dal particolare IDE utilizzato, si è deciso di non utilizzare l'aritmetica in virgola mobile e le librerie matematiche. Tutti i file sorgenti sono stati compilati nella modalità thumb code di ARM (codice a 16 bit). Ciò non tanto per ridurre le dimensioni del file hex, ma piuttosto perchè la memoria flash del microcontrollore ha ampiezza di 16 bit, rendendo così il codice a 16 bit più veloce da eseguire. La dimensione totale dell'eseguibile è pari circa 8 Kb, più altri 20 Kb per memorizzare la splash screen che compare durante il power up. Non è stato necessario fare ottimizzazioni particolari, in quanto la memoria flash del microcontrollore ha dimensioni sufficientemente grandi per i nostri scopi.

Assemblaggio

Come anticipato in precedenza, sono stati approntati due PCB separati, uno per la scheda principale (Figura 5a) e uno per la scheda di alimentazione (Figura 5b).

Figura 5a: PCB relativo alla scheda principale del generatore

 

Figura 5b: PCB della scheda alimentatore (singola faccia, componenti through-hole)

L'assemblaggio del PCB relativo alla scheda generatore non è complicato, a condizioni di avere un'ottima vista o una buona lente di ingrandimento. Si noti come sia i pulsanti che il display LCD andranno montati sulla parte inferiore del PCB. L'LCD richiede una certa attenzione, in quanto il suo cavo piatto flessibile deve essere staccato dal supporto di plastica (Figura 6) in modo tale da poter essere piegato sul PCB, raggiungendo così il connettore K1 (Figura 7).

Figura 6: Il display originale (a sinistra), e quello adattato per il progetto (a destra)

 

Figura 7: Montaggio del display (usare del nastro biadesivo per fissarlo al PCB)

I due potenziometri devono essere montati sul PCB in modo tale che l'albero fuoriesca dalla parte inferiore. L'autore ha utilizzato dei dischi di gomma autocostruiti (ricavati da una vecchia camera d'aria di bicicletta) per evitare che i potenziometri si spostassero durante la loro regolazione. Un disco con diametro di 10 mm dovrebbe andare bene, mentre il diametro esterno dovrebbe essere leggermente inferiore a 22 mm. Nel caso del potenziometro P2, la gomma serve anche a prevenire danni alle tracce di rame poste sulla parte superiore del PCB, vicino al foro per il potenziometro.

Anche il PCB per l'alimentatore non dovrebbe presentare alcun problema. Si è scelto un trasformatore con due avvolgimenti primari in modo tale da supportare sia la tensione di rete di 115 VAC che quella di 230 VAC. Se si utilizza la tensione di rete a 230 VAC, occorre collocare uno spezzone di filo sul jumper JP1 (quello al centro delle tre linee tratteggiate). Se invece si utilizza la tensione di rete di 115 VAC, occorre collocare due spezzoni di fili sui jumper esterni. Attenzione a non chiudere tutti e tre i jumper. Non dimenticatevi, inoltre, di utilizzare il corretto valore per il fusibile principale: 100 mA(T) nel caso di 230 VAC e 200 mA(T) nel caso di 115 VAC, dove (T) rappresenta il tempo di ritardo. I tre regolatori richiedono un dissipatore, realizzato a partire da una striscia di alluminio di spessore pari a 2 mm (Figura 8). Non dimenticatevi di inserire un opportuno isolamento elettrico (foglio di mica o di plastica) sui tre regolatori. La vite M3 dovrebbe essere lunga circa 6 mm. Si consiglia di inserire una rondella metallica tra la testa della vite e il dado di plastica. Spesso capita che il dado di plastica sia leggermente lungo, per cui occorre tagliarlo alla lunghezza opportuna (utilizzando un coltellino da modellismo) prima di montare i regolatori e il dissipatore. Il connettore BNC K5 è isolato, e dovrebbe essere montato sulla parte frontale del pannello. Dopo aver fissato il PCB del generatore sul pannello frontale (incollando le viti sul retro del pannello), collegate il BNC al PCB con degli spezzoni corti di filo.

Figura 8: L'alimentatore assemblato. Si notino il radiatore autocostruito, e i jumper per la selezione della tensione (230 VAC) in questo caso

 

Figura 9: Il prototipo completo realizzato

Programmazione

Prima di poter utilizzare il generatore di segnali, occorre programmarlo con il software opportuno. Poichè non è possibile determinare il modello esatto di display solo guardandolo, il software corretto da associare al display deve essere selezionato sperimentalmente. Se quindi dopo aver programmato l'MCU il generatore non funziona correttamente, è probabile che occorra utilizzare l'altra versione di software. La programmazione può essere eseguita in due modi diversi: tramite il connettore JTAG, oppure attraverso il bootloader. La prima opzione richiede un adattatore JTAG, e mette inoltre a disposizione un'interfaccia di debug. Come adattatori JTAG si possono utilizzare i modelli J-LINK di Segger, e ULINK di Keil. L'interfaccia JTAG standard comprende 20 pin, ma può funzionare anche con soli 6 pin (K3). La seconda opzione è quella di utilizzare la porta seriale (K2). Si tratta di un'opzione basata esclusivamente sul software, e su questa interfaccia non è possibile eseguire il debugging dell'applicazione. Un cavo adatto può essere acquistato da Analog Devices, ma è altresì molto semplice realizzarne uno da sè utilizzando un cavo TTL-USB. Il software per la programmazione via seriale (ARM­WSD.exe) è liberamente scaricabile dal sito di Analog Devices. Dopo aver selezionato la porta USB corretta e caricato il file hex, il programma vi chiederà di premere il tasto "Download" e il pulsante "Reset" sulla board (Figura 10). Questo è il motivo per cui sono stati predisposti i due jumper JP1 e JP2, associati alle label "Download" e "Reset" del PCB, rispettivamente. Se il jumper viene posizionato su Download durante il power-on, il microcontrollore rimarrà nella modalità bootloader e il display rimarrà oscurato; non dimenticatevi, perciò, di rimuovere il jumper dopo aver eseguito la programmazione.

Figura 10: Programmazione tramite il tool ARMWSD

Manuale utente

Abbiamo visto come per controllare l'operatività del generatore di funzioni siano stati predisposti otto pulsanti, che unitamente al display LCD formano l'interfaccia utente. Il significato associato a ciascun pulsante (PB, acronimo di Push Button) è riassunto in Figura 11.

Figura 11: Significato dei pulsanti dell'interfaccia utente

Vediamo ora brevemente le procedure necessarie per controllare il funzionamento dello strumento:

  • Forma d'onda: premere Mode per commutare tra sinusoide, onda quadra, e triangolare.
  • Duty cycle: il duty cycle può essere impostato solo per l'onda quadra. Premere anzitutto Mode per attivare l'onda quadra: il duty cycle verrà indicato nella parte bassa del display. Regolare poi il duty cycle premendo +Up e -Down.
  • Frequenza: premere Set. Una cifra comincerà a lampeggiare: usare +Up e -Down per modificarne il valore, e usare Left e Right per spostarsi tra le cifre. Una volta completato l'inserimento, premere Set.
  • Ampiezza: regolabile tramite il potenziometro P2. Si noti come quest'operazione influisca anche sull'offset in continua.
  • Offset in continua: regolabile tramite il potenziometro P1.
  • Sweep di frequenza: premere Sweep per aprire il menu relativo. La cifra meno significativa della frequenza di start comincerà a lampeggiare. Utilizzare poi +Up e -Down per modificare il valore della cifra lampeggiante; usare invece Left Right per spostarsi tra le cifre. Una volta completato, premere Set per avanzare al parametro successivo. Impostare quindi la frequenza di stop, il tempo di sweep (chiamato “msec”) e la modalità di sweep (logaritmica oppure lineare). Premere Set per attivare lo sweep; ciò viene indicato dalla dicitura “sweep run” sulla prima linea del menu di sweep. Premere nuovamente Set per interrompere lo sweep (“sweep stop” viene visualizzato sulla prima linea del display). Premere Sweep per tornare al menu principale.
  • Contrasto: premere Calibration per aprire il menu di calibrazione, dove è possibile impostare il contrasto del display LCD. Usare Set per muoversi sino all'opzione relativa al contrasto, poi usare +Up e -Down per modificarne il valore. Premere Calibration per tornare al menu principale.
  • Calibrazione dei livelli di tensione: collegare un oscilloscopio all'uscita del generatore, e impostare il livello di uscita a 5 Vpp. Premere Calibration per aprire il menu di calibrazione, e selezionare Measurements per iniziare la calibrazione. (Se si è entrati per errore, l'unico modo per uscire è quello di togliere l'alimentazione.) Regolare P1 in modo tale da impostare il valore minimo del segnale di uscita (0,00 V), premere quindi Set quando si è completato. Regolare P1 in modo tale da impostare il valore massimo del segnale di uscita (12,00 V), e premere Set quando si è terminato. Un messaggio apparirà per indicare che la calibrazione è completata. Premere Calibration per tornare al menu principale.
  • Calibrazione della frequenza: collegare un frequenzimetro all'uscita del generatore, e premere Calibration per aprire il menu di calibrazione. Selezionare Frequency per avviare la procedura di calibrazione. (Se si è entrati per errore, l'unico modo per uscire è quello di togliere l'alimentazione.) Regolare la frequenza di uscita su 100 kHz premendo +Up e -Down. Premere Set quando si ha terminato. Un messaggio apparirà per indicare che la calibrazione è completata. Premere Calibration per tornare al menu principale.

Conclusioni

Se deciderete di costruire questo utilissimo generatore di funzioni DDS, non avrete più scuse per rifiutare richieste di riparazione di amplificatori o apparati similari. Produrre il grafico della funzione di trasferimento relativa a un filtro sarà un gioco da ragazzi, e la generazione di forme d'onda personalizzate diventerà per voi un'operazione molto familiare. Avrete sicuramente dotato il vostro laboratorio di uno strumento valido e dalle ottime prestazioni.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend