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.
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
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
- Analog Devices AD9851
- Arduino SPI reference
- AD9850 and AD9851 SPI Library for Arduino, K2ZIA
- Simple Command Line Interface, mikefarr
- LCD Keypad Shield
Related Posts
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.