Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

9
voti

DDS DA ZERO A 30 MHZ MODULATO IN AM ED FM

Indice

Introduzione


Salve.
Alcuni anni or sono, mi sono dilettato a sperimentare con un DDS, ovvero con un oscillatore a controllo numerico. I risultati ricordo che furono incoraggianti, anche perché il circuito ha trovato applicazione nella sostituzione di un quarzo, il cui valore era all’epoca dei fatti introvabile.
In rete si trovano molte pagine ricche e ben fatte sul principio di funzionamento di tali dispositivi, molto appetibili e sempre molto più diffusi. In questa occasione desidero parlarvi di un circuito un tantino più sofisticato rispetto al precedente, che può risultare utile in molte applicazioni.

Descrizione


Alla base di tutto vi è un moduletto acquistato in rete per pochi euro, equipaggiato con un AD9850 della “Analog Device” e pochi altri componenti, il tutto in pochissimi cm2 di spazio.
Le caratteristiche, considerato anche il rapporto qualità prezzo, come potrete constatare voi stessi sono molto interessanti. L’AD9850 in questione, funziona con un clock di 120 MHz, per cui come suggerisce il costruttore, è possibile fargli generare agevolmente segnali fino ad un limite massimo di 40 MHz, oltre il quale il segnale pur essendo ancora generato, comincia a degradarsi in termini di purezza spettrale.
Il moduletto in questione offre due possibilità di dialogo col mondo esterno, attraverso un’interfaccia che ne permette l’accesso in modo seriale oppure in modo parallelo. Ovviamente l’accesso più conveniente che riduce al minimo la complessità circuitale è quello seriale, ma è anche il più lento, e dato che il mio obbiettivo era quello di modulare in ampiezza oppure in frequenza il moduletto, obbligatoriamente ho dovuto optare per l’uso dell’accesso parallelo, molto più complesso dal punto di vista hardware ma anche molto più veloce.

Anche se i segnali ascoltati con un ricevitore idoneo allo scopo, risultano chiari e comprensibili, vi dico subito che, per quanto riguarda sia la modulazione AM che FM del moduletto, i risultati verificati strumentalmente non sono eccellenti, ma rimane pur sempre un valido generatore di segnali sinusoidali e comunque provate ad ascoltare il file di cui troverete il link più avanti.

nco_front2.jpg

nco_front2.jpg

Circuito Elettrico


Chi si occupa di gestire tutte le funzionalità del circuito è un microcontrollore, il PIC 16F876 prodotto dalla Microchip. L’accesso parallelo al moduletto è garantito dalla porta ”C” del PIC, che con le sue linee di output da C0 a C7, invia i dati al DDS, il cui controllo è affidato invece alle tre linee di output della porta ”A”, indicati rispettivamente con “CK” per il clock di sincronismo dei dati inviati, “FQ” per il caricamento dei dati stessi nel DDS ed “RS” per il reset.

In merito alla generazione dell’output dati e delle tre linee di controllo, invito chi interessato, alla consultazione del datasheet scaricabile direttamente dal sito della “Analog Device” che ho trovato molto completo ed esaustivo.

nco_sche.jpg

nco_sche.jpg


Come chiaramente si nota dallo schema elettrico, parte delle linee della porta “C”, dalla C4 alla C7, sono anche utilizzate per la gestione del tastierino alfanumerico, e più precisamente per scandire in rapida successione le colonne dello stesso, mentre per la lettura del tasto premuto sono utilizzate le linee d’input della porta “B” da B4 a B7.

Inoltre, sempre le linee della porta “C”, dalla C4 alla C7, sono utilizzate anche per inviare i dati al display da 2 righe da 16 caratteri ognuna, che assieme alle linee di controllo C3 e B2, rispettivamente di “RESET” e di “ENABLE”, implementano il noto protocollo di comunicazione HD44780 della “HITACHI” per la gestione del display.

Il triplice lavoro svolto dalla porta “C” che gestisce in rapida successione il DDS, il display ed il tastierino, è possibile grazie alle linee di controllo che smistano i dati in uscita a rotazione, ora al DDS, poi al display ed a seguire al tastierino.

Le linee B0 e B1, predisposte come ingressi d’interrupt, leggono, solo quando è azionato, lo stato dell’encoder incrementale ad esse collegato, andando ad incrementare o decrementare il valore di frequenza indicato sul display, con uno STEP che da default è impostato a 1KHz.

La linea B3, attiva il cicalino ad essa collegato per pochi millisecondi, generando un BIP ad ogni pressione esercitata sul tastierino, BIP disattivabile da menu.

Sulla linea A4, si può leggere un impulso di sincronismo ogni qualvolta è caricato un nuovo valore di frequenza sul DDS, funzione che spero di utilizzare in futuro, per sincronizzare l’ingresso di un P.C. al fine di ricavare la curva di risposta di un filtro, tipo vobulatore. Un po’ ambizioso forse ma se riuscirò vi terrò informati.

La linea d’input analogica A0, è usata per leggere il segnale di bassa frequenza, utilizzato per la modulazione in frequenza del DDS.

Le linee A2 ed A3 d’input, leggono le due tensioni prodotte dai due partitori resistivi ad esse collegate, pari a 1,5 V e 3,4 V circa, usate come riferimenti basso ed alto per il convertitore analogico digitale da 10 bit interno al PIC.

nco_cs.jpg

nco_cs.jpg


Modulazione


La tecnica usata per la modulazione in frequenza, impone l’uso del linguaggio ASM, al fine di velocizzare quanto più possibile tutte le operazioni necessarie che si racchiudono in quattro principali elaborazioni:

1) Convertire il segnale di BF da analogico a digitale;
2) Moltiplicare il segnale così campionato per 256, in modo da ottenere una sufficiente deviazione di frequenza;
3) Sommare il valore così ottenuto, al codice di base precedentemente elaborato che rappresenta il valore di frequenza della portante;
4) Inviare al DDS il codice completo di deviazione.


Tutte le operazioni fin qui elencate sono eseguite in un tempo inferiore a 22uS, che poi è anche il tempo necessario per ottenere un campionamento; infatti, dopo aver avviato ogni conversione, durante tutto il tempo necessario ai circuiti interni per portarla a termine, il pic si occupa di ripescare dalla sua memoria il valore del campionamento precedente, di eseguire la moltiplicazione di cui prima, sommare il risultato dell’operazione al codice che rappresenta il valore di frequenza della portante, ed inviare il risultato così ottenuto al DDS.

Ciò significa che la frequenza di campionamento è di circa 45 KHz, che coincide con la frequenza di aggiornamento del DDS, che determina la qualità del segnale modulato, che non è eccezionale, ma visti i mezzi utilizzati ci si può accontentare. Per rendervi conto del risultato, al seguente link è possibile ascoltare un minuto di registrazione.

Ascolta il segnale del DDS modulato in F.M.

Per rendere meno ingarbugliato lo schema elettrico, ho preferito dividerlo in due parti. Di seguito quindi, troverete la parte che riguarda la generazione di un tono di bassa frequenza e la commutazione tra AM ed FM.

BFxDDS.jpg

BFxDDS.jpg


Più dettagliatamente, AO1 configurato come multivibratore astabile, genera un segnale di 600 Hz circa. Tale segnale si può prelevare dal pin 1 dove è presente un’onda quadra, ma ho preferito prelevarlo dal pin 2, dove è presente un segnale quasi triangolare, reso quasi sinusoidale dal filtro passa basso, costituito dalla resistenza da 47 KΩ e dal condensatore da 33 nF.

Tale segnale prelevato ai capi di tale condensatore, è inviato al deviatore sul pannello frontale che ci consentirà di scegliere tra il segnale di BF interno od esterno, da inviare al DDS, per modularlo in AM oppure in FM.

Il pin 4 del pic svolge una doppia funzione, quando predisposto come imput, legge la tensione di riferimento pari a circa 1,5V sul partitore costituito dalle resistenze da 2,2 e 1 KOhm necessaria al convertitore ADC del pic; quando predisposto invece come output, comanda il mosfet 2N7000 che a sua volta chiude il relè per abilitare la modulazione AM. Col relè a riposo è abilitata la modulazione in FM.

Per quanto riguarda la modulazione AM, voglio precisare che, anche se il segnale può essere ascoltato con buona fedeltà da un qualsiasi ricevitore, in realtà come si può vedere dal datasheet del chip AD9850, oppure con un oscilloscopio collegato alla sua uscita, la variazione d’ampiezza è effettuata solo sui semiperiodi positivi dell’onda portante, ma ciò nonostante, il segnale modulato rimane comunque un valido riferimento.

Per finire, il potenziometro da 10 KΩ collegato al pin 7 di AO2, configurato come semplice amplificatore invertente, ci permetterà di dosare il segnale modulante e di conseguenza l’indice di modulazione in AM e la deviazione in FM.

Per quanto riguarda l’AM, occorre eseguire un collegamento sul moduletto, usando preferibilmente del filo molto morbido, per evitare di scollare con qualche brusco movimento le delicate piste del moduletto. Viste le dimensioni, la saldatura va fatta con molta cura, sul lato della R6 indicato nella foto da un pallino rosso, come vedete io ho usato una resistenza da 4,7 KΩ coi terminali molto flessibili.

nco_am.JPG

nco_am.JPG


Menu


Nei paragrafi precedenti ho fatto riferimento ad un menu, per la verità molto semplice ed intuitivo, che permette di eseguire alcune scelte.

Dopo l’accensione, è subito possibile variare la frequenza di lavoro visualizzata sul display nei seguenti modi:

a) attraverso l’encoder;
b) prelevandone il valore da una delle 32 memorie, semplicemente digitandone il numero composto da due cifre da 00 a 31;
c) digitandone il valore preceduto e terminato dall’asterisco, ad esempio per impostare 10,7 MHz, occorre digitare *10700000* , istantaneamente il nuovo valore sarà acquisito.

Durante l’inserimento, un numero erroneamente digitato può essere cancellato digitando #.


Per salvare il valore di frequenza indicato sul display in una delle 32 memorie disponibili, occorre digitarne il numero preceduto da cancelletto, ad esempio #18, salva il valore di frequenza indicato sul display nella memoria numero 18.

Col pulsante D si attiva o disattiva la modulazione FM.
Col pulsante C si attiva o disattiva la modulazione AM.
Col pulsante B si attiva o disattiva la scansione in frequenza entro i due limiti inferiore e superiore salvati nelle memorie 01 e 02.
Col pulsante A si entra od esce dal menu principale per modificare STEP, PAUSA, BIP ed IF (frequenza intermedia).

Dal menu principale digitando 4 si apre un sottomenu, dal quale digitando un numero compreso tra 1 e 6 si può cambiare lo STEP utilizzato in scansione o dall’encoder; 1 per le unità, 2 per le decine e cosi via fino a 6 per i milioni, oppure # per uscire.

Dal menu principale digitando 5 si apre un sottomenu, dal quale digitando un numero compreso tra 1 e 9 si può cambiare la velocità di scansione; valore espresso in ms. approssimativamente pari a 100*numero digitato, oppure # per uscire.

Dal menu principale digitando 6 si attiva o disattiva il BIP ascoltabile ad ogni pressione esercitata sul tastierino.
Dal menu principale digitando 7 si apre un sottomenu, dal quale:

a) digitando 1, al valore visualizzato sul display viene sommato il valore di IF;
b) digitando 2, al valore visualizzato sul display viene sottratto il valore di IF;
c) digitando 3, nessun valore di IF sarà inserito;
d) oppure # per uscire.

Ovviamente affinché tutto funzioni come previsto, occorre prima aver memorizzato il valore di IF desiderato nella memoria 00.

dds mod menu.png

dds mod menu.png


A proposito del menu, sono graditi eventuali suggerimenti che possano migliorare la funzionalità del generatore.

Prima di concludere volevo precisare che lo schema elettrico in alcuni punti differisce dal circuito stampato, solo perché alcune modifiche come la modulazione AM ed FM sono state fatte in corso d’opera ed in tempi diversi, quando cioè la basetta ramata col circuito stampato esisteva già da alcuni mesi; alcuni collegamenti infatti, sono stati eseguiti saldando degli spezzoni di filo direttamente sulle piste o sulle resistenze.

nco_comp.JPG

nco_comp.JPG



Cliccate qui per scaricare il file sorgente.

Con questo vi saluto ed auguro a tutti voi buon divertimento.

Francesco Mira.IT9DPX #135

4

Commenti e note

Inserisci un commento

di ,

Bel progetto, nella sua semplicità è interessante anche solo come generatore sinusoidale. Saluti.

Rispondi

di ,

Grazie... Per il vobulatore nei ritagli di tempo ci sto già lavorando con risultati incoraggianti... Vi terrò informati. Cercherò di essere più attento col le piste del pcb... Saluti.

Rispondi

di ,

Mi permetto una piccola "critica" (spero costruttiva) alla realizzazione :) c,è una cosa del PCB che non mi piace molto e sono gli spigoli vivi nei cambi di direzione delle piste che invece nella buona pratica andrebbero evitati in primis perché costituiscono dei punti deboli riguardo la adesività al supporto e secondariamente perchè in generale potrebbero comportarsi da "punte".

Rispondi

di ,

Bel progetto! Pur avendo da qualche tempo messo nel cassetto tutti i progetti elettronici, mi sembra molto ingegnosa l'idea di utilizzare port C per una molteplicità di funzioni, andando poi ad usare gli "Enable" dei singoli IC per eseguile il multiplexing. Bravo, speriamo di vedere il seguito, o una sua evoluzione.

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.