DDS/VFO CON MODULO AD9851

Aperto da Franco Balestrazzi, 02 Novembre 2018, 14:12:47

Discussione precedente - Discussione successiva

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

Franco Balestrazzi

Riprendo un mio vecchio post riguardante la realizzazione di un generatore DDS da 100Hz a 50MHz basato sul modulo che si trova in rete contenente l'AD9851. Questo dispositivo, a differenza del fratello minore AD9850 che arriva fino a 30MHz, funziona con un clock di 30MHz*6=180MHz. Basta che l'oscillatore a 30MHz si discosti di pochissimo che tale differenza si riperquote moltiplicara per 6 e quindi la frequenza di uscita sara' lievemente diversa da quella impostata dalla formula :


                                        32
word di programmazione= 2    * frequenza voluta (Hz) / 180000000Hz


La word di programmazione e' costituita da 40 bit e va programmata via seriale o parallela nell'AD9851. I moduli che si trovano in giro e il software che si trova in internet prevede la programmazione seriale.
Detto questo, una volta realizzato il generatore se impostate 10MHz in uscita e' possibile che in realta' venga generata una frequenza leggermente diversa e quindi occorre una taratura. Per fare questo occorre un frequenzimetro decente che legga il segnale dal generatore DDS per averne la conferma. La taratura si esegue modificando leggermente il valore del DDS CLOCK che di default e' stato impostato a 180MHz=180000000Hz. Poiche' tale valore e' posizionato al denominatore della formula soprascritta allora occorre abbassare tale valore se la frequenza di uscita e' inferiore a quella desiderata. Nel mio caso ho impostato 10MHz (10000000Hz) in uscita e ho notato una frequenza di uscita di 99999998.8Hz. Ho quindi introdotto nel FW una procedura che, una volta entrato in modalita' taratura, mi permettesse di ruotare l'encoder variando il valore di 180000000Hz con passi da 10Hz in modo da ripristinare la frequenza di uscita voluta. Uscendo dalla procedura di taratura il valore cosi' trovato del DDS CLOCK viene memorizzato in EEprom del microcontrollore e da quel momento, ad ogni riaccensione viene letto ed usato nel computo per generare la frequenza voluta.
Se non si esegue questa taratura si e' convinti di generare un segnale alla frequenza impostata ma invece quest'ultimo e' spostato, di poco, da quella voluta.
Saluti.
PS : questo problema e' meno sensibile nel modulo con AD9850 poiche' l'oscillatore funziona a 30MHz e non viene moltiplicato per 6.