DDS Signal Generator

Generatore di segnali DDS controllato da Arduino.


I sintetizzatori DDS (Direct Digital Synthesis) AD9850 e AD9851, prodotti dalla Analog Devices, sono molto diffusi e facilmente reperibili per la presenza dal mercato orientale di schede preassemblate complete di oscillatore. Da ormai più di dieci anni avevo acquistato il kit DDS-60 della American QRP Club con AD9851 e dopo alcune prove giaceva inutilizzato in un cassetto, finché recentemente l’ho tirato nuovamente fuori per sperimentarne il controllo con un modulo Arduino.
Il generatore è controllato tramite un LCD KeyPad Shield (importante: leggere note in calce) che permete di selezionare e visualizzare la frequenza.

Connessioni

Il trasferimento dati di Arduino verso il DDS avviene in modalità seriale, pertanto è sufficiente una sola linea data, il clock e la linea di abilitazione, oltre a tutto quanto necessario al funzionamento del chip: alimentazione, oscillatore di riferimento, ecc.

DDS Signal Generator - Schematic
DDS Signal Generator – Schematic

Codice

Il codice è molto semplice e si basa su librerie già implementate da altri autori, alle quali ho apportato opportune modifiche. Il trasferimento seriale utilizza il bus SPI di Arduino. Lo sketch è liberamente utilizzabile e modificabile.

Versione Data Change log
1.0 14/11/2019 Prima release
1.1 16/11/2019 + Display LCD con visualizzazione frequenza
1.2 23/11/2019 + Tastiera
* Nuova configurazione pin per compatibilità con LCD Keypad shield
1.3 28/11/2019 * Risolto bug che saltuariamente impediva la corretta inizializzazione del DDS
+ Aggiunto comando terminale “Init”

Legenda: + Nuovo; – Rimosso; * Aggiornato.

Comandi

Sulla tastiera dell’LCD keypad shield, premere select per abilitare l’inserimento della frequenza, spostare il cursore con left o right sul decimale desiderato ed utilizzare up o down per cambiarne il valore. Ripremere select per confermare il cambio di frequenza.

Inoltre, il controllo del generatore può avvenire tramite comandi impartiti ad Arduino con il terminale via porta USB (9600 baud). Quelli attualmente disponibili sono:
help – Elenca a video la lista dei comandi disponibili
freq Hz – Imposta la frequenza in Hz del segnale
cal Hz – Indica la frequenza realmente prodotta dal generatore, in modo che possa calibrare l’esatto valore del generatore di riferimento
down – Mette in stand-by il DDS
init – Re-inizializza il DDS

DDS Signal Generator - Terminal
DDS Signal Generator – Terminal

Note

L’LCD keypad shield è molto comodo per la realizzazione di prototipi ed ha la piedinatura compatibile per il montaggio diretto su Arduino UNO. Tuttavia si deve porre attenzione, perché ne esistono diversi cloni ed alcuni presentano un grave problema sul pin D10, che dovrebbe servire al controllo della luminosità del display. Nei modelli difettosi D10 è collegato direttamente alla base del transistor NPN che accende la retroilluminazione, senza alcuna resistenza di limitazione, ciò può comportare il danneggiamento dell’uscita di Arduino quando posta a livello alto, chiudendo verso ground attraverso la giunzione B-E. Nel dubbio eliminare il collegamento dal pin header dello shield.
Altro problema, meno grave, i pulsanti possono dare lettura diversa, tra modello e modello, sull’ingresso analogico. In tal caso intervenire via software sulle soglie impostate nello sketch.

Riferimenti

Related Posts


Licenza Creative Commons Questa opera è distribuita con:
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Italia.

Si declina ogni responsabilità per eventuali errori ed omissioni e gli eventuali danni che ne dovessero conseguire. Per ulteriori informazioni consultare le note legali.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *