DDS VFO

Aperto da trodaf_4912, 08 Dicembre 2016, 16:36:15

Discussione precedente - Discussione successiva

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

trodaf_4912

Allego lo schema di un VFO basato sul modulo DDS AD9851 che si trova a poche decine di euro in rete.
E' controllato da un microcontrollore ATMEGA328 (quello di Arduino che si trova facilmente in commercio) del quale allego l'eseguibile che si puo' caricare direttamente attraverso un programmatore.
Come comando usa un encoder a due fasi con pulsante sullo stesso asse.
I limiti estremi sono definiti da 1MHz a 20MHz con passo 100KHz ma e' possibile entrare in modalita' setup all'accensione impostando la frequenza iniziale, quella finale, il passo (10Hz,100Hz,1KHz,10KHz,100KHz,1MHz) che sono memorizzati in eeprom.
Durante il funzionamento e' possibile variare istantaneamente il passo premendo ripetutamente il pulsante dell'encoder con relativa visualizzazione del passo. Ruotando l'encoder si aumenta o diminuisce la frequenza con passo selezionato. Ogni volta che che si varia la frequenza il modulo DDS viene aggiornato.
Se qualcuno ti dedica del tempo apprezzalo sempre perché lo toglie al suo per dedicarlo a te


luciano100

Può arrivare in 27 MHz ?
Lo scopo pilotare una 6aq5 fino ad un paio di watt (driver per  6DQ6)

inviato X11 using rogerKapp.


trodaf_4912

#2
Si, il modulo che si trova su ebay o amazon con l'AD9851 arriva fino a circa 70MHz ma in quella zona e' un po "sporco". Fino a 50MHz senza problemi. Se si usa il MMIC si ottiene circa 10dB in piu' in uscita. Il limite di 20MHz va cambiato all'interno del FW in quanto io lo ho definito come limite max per un normale vfo.
Se qualcuno ti dedica del tempo apprezzalo sempre perché lo toglie al suo per dedicarlo a te

trodaf_4912

Ho aggiornato il file vfo.hex che e' il FW del vfo.
Se qualcuno ti dedica del tempo apprezzalo sempre perché lo toglie al suo per dedicarlo a te


luciano100

Bene! Volendo si potrebbe "purificare" l'emissione poco pulita.
L'idea di utilizzare una "roccia" di stabilità,vfo allo stato solido,mi stuzzica da anni.
..ps: se hai una foto della forma d'onda generata ,te ne sarei grato.
Grazie , Luciano.

inviato X11 using rogerKapp.


carlo_forever

Scusa, il FW prevede anche addizione-sottrazione di IF, offset USB-LSB ed eventualmente bande?

Carlo.
Inter poenas et tormenta
vivit anima contenta
casti amoris
sola spe


trodaf_4912

#6
Attualmente non lo prevede poiche' e' nato come sostituzione di un vfo analogico per l'FT101ZD che tipicamente va da 4.9MHz a 5.6MHz. La commutazione del modo di emissione viene eseguita dall'rtx.  Questo schema nasce da un precedente progetto di un generatore DDS da 1Hz a 70MHz. Ho scelto invece 10Hz come risoluzione per il vfo (passo minimo). If FW controlla che non si scenda sotto il limite inferiore o si superi quello superiore entrambe programmabili attraverso la procedura di setup all'accensione. Quando lo si accende per la prima volta i limiti sono 1MHz e 20MHz. Poi e' possibile entrare in setup per modificarli insieme al passo che puo' assumere i valori : 10Hz,100Hz,1KHz,10KHz, 100KHz, 1MHz. Questi tre parametri sono salvati in eeprom e da quel momento diventeranno quelli di funzionamento. Se pero', durante il funzionamento normale, occorre modificare il passo, basta premere il pulsante situato sull'encoder rotativo che il passo commuta temporaneamente fino alla prossima pressione. La commutazione tra un passo e quello successivo e' ciclica :
10Hz->100Hz->1KHz->10KHz->100KHz->1MHz-> 10Hz e cosi' via. Il passo corrente come la frequenza corrente sono visualizzati su un display LCD 2 righe 16 colonne. La variazione del passo corrente e' voluta per muoversi piu' agevolmente tra i due limiti di frequenza o per centrare un segnale con una risoluzione migliore. Se non e' necessaria l'amplificazione del MMIC e' possibile utilizzare direttamente l'uscita del modulo DDS e se si vuole qualcosa in piu' dalla sua uscita basta sostituire la resistenza da 3.9K con una da 2.2K (SMD) ottenendo gia' un significativo incremento senza generare un segnale "sporco".
Sono in commercio moduli DDS con l'AD9850 che arriva a 30MHz pulito poi fino a 50MHz ma con un po di sporcizia. La programmazione di questi moduli differisce , anche se di poco, con quelli che montano l'AD9851 e quindi il FW va modificato.
Se qualcuno ti dedica del tempo apprezzalo sempre perché lo toglie al suo per dedicarlo a te


trodaf_4912

Accludo le foto del segnale di uscita. Sull'analizzatore di spettro il segnale era a 20MHz con attenuatore da 20dBm. Sull'oscilloscopio l'uscita era a 12MHz.
Se qualcuno ti dedica del tempo apprezzalo sempre perché lo toglie al suo per dedicarlo a te

carlo_forever

Ok, perfetto. Che componente è quello siglato AVR_ISP_6?

Carlo.
Inter poenas et tormenta
vivit anima contenta
casti amoris
sola spe


trodaf_4912

E' una strip doppia da 6 pin per la programmazione in circuit del microcontrollore. Se uno preferisce puo' programmare il micro stand alone con un programmatore esterno. Io preferisco lasciarlo montato ma bisogna avere l'accortezza di interrompere i +5 verso il micro con un jumper in modo che l'alimentazione la prenda dal programmatore JTAG.
Se qualcuno ti dedica del tempo apprezzalo sempre perché lo toglie al suo per dedicarlo a te

luciano100

Okk! Grande! Belle foto!
Ottimo lavoro! Grazie per i consigli!
Devo mandare in pensione il vfo casereccio clone Geloso!
AD 9851 capita a fagiolo!

Grazie ! Luciano.

inviato X11 using rogerKapp.


trodaf_4912

Ho aggiornato il FW con la funzione di controllo prima accensione. In pratica il FW all'accensione controlla se questa e' la prima in assoluto oppure no. Nel primo caso salva in eeprom i limiti estremi 20MHz-1MHz. Con la release precedente l'utente era obbligato a entrare in modalita' setup per impostare i due limiti di frequenza alla prima accensione se no sul diplay veniva visualizzata una frequenza iniziale sbagliata.
Allego nuova release
Se qualcuno ti dedica del tempo apprezzalo sempre perché lo toglie al suo per dedicarlo a te

carlo_forever

Se tento il download mi da error 404.

Carlo.
Inter poenas et tormenta
vivit anima contenta
casti amoris
sola spe


r5000

73 a tutti, è successo qualcosa  con l'ultimo aggiornamento, non funzionano più i link, se non si sistemano mandami una mail che ti giro il file, l'ho salvato quando funzionava...
ps: complimenti a IK4MDZ, io ci capisco zero ma un file riesco a caricarlo (forse...) e aggiungere il dds al posto del quarzo in un'apparato nato senza vfo lo trasforma...
non dare da mangiare al troll    https://www.rogerk.net/forum/index.php?msg=858599

trodaf_4912

#14
Per programmarlo uso il programmatore USBASP acquistato su amazon per 11,99 euro. I suoi driver da installare li trovi in rete in quanto e' un clone di uno costruito da un tedesco (Fische). Come software di programmazione uso EXTREME BURNER 1.4.3 che nella lista dei micro programmabili contiene anche l'ATMEGA328 (le versioni precedenti   no). Con il programmatore viene fornito un cavo a 10 poli terminato su un connettore a 10 pin. Si puo' costruire una schedina con uno zoccolo da 28 pin per il micro, il quarzo da 16MHz e i due condensatori per il l'oscillatore e una resistenza da 10K per il reset. Questa diventa la scheda di programmazione del micro che, una volta programmato, si mette sul vfo o su un atro prototipo.
Nel caso si voglia programmare in circuit il micro con il connettore ISP occorre fare un codino di adattamento che porti gli unici 6 fili utili del flat cable a 10 pin in un connettore a 6 pin attenendosi alle indicazioni :
SCK con SCK
RESET con RESET
MISO con MISO
MOSI con MOSI
Vcc con Vcc
GND con GND
Oppure sulla scheda vfo installare direttamente una strip doppia da 10 pin e connettere direttamente il flat che arriva dal programmatore.
Appena ho tempo invio qualche foto.
Se qualcuno ti dedica del tempo apprezzalo sempre perché lo toglie al suo per dedicarlo a te

trodaf_4912

#15
Ecco qui, accludo la foto del programmatore con collegamento usb al PC e dall'altra parte alla schedina dove andra' alloggiato il micro per scaricargli in programma vfo.hex. Come si vede ho usato lo stesso cavo in dotazione al programmatore ed ho realizzato una schedina semplicissima. In questo caso occorre posizionare il micro sullo zoccolo, inserire pa presa usb nel pc e lanciale EXTREME BURNER AVR. Una volta che il programma ha riconosciuto il programmatore, si seleziona tra le opzioni il micro ATMEGA328 che sia P o no non importa basta selezionare la voce congruente con il micro che si ha. Poi si fa' un ERASE del micro e si carica nella FLASH memory il FW vfo.hex. Se e' un micro vergine occorre programmare i FUSE attraverso la voce dedicata per dirgli di funzionare con un odcillatore quarzato con frequenza 16MHz e altre cosette. In questo caso vi passero' volentieri i byte da inserire nelle voci dei FUSE.
Se si vuole lasciare il micro sulla schedaa del VFO occorre implementare su quest'ultima la medesima connessione della schedina esterna con i segnali riportati nel mio precedente intervento e con l'accortezza, ripeto molto importante, di inserire un jumper che va ad escludere l'alimentazione al micro durante la fase di programmazione.
Se qualcuno ti dedica del tempo apprezzalo sempre perché lo toglie al suo per dedicarlo a te

trodaf_4912

Un'ultima cosa, un semplice consiglio  per chi vuole sviluppare qualcosa basato su un microcontrollore. Normalmente per scrivere ma soprattutto testare un FW sulla scheda prototipo si usa un EMULATORE che "emula" il microcontrollore. In sintesi e' come se ci fosse il micro sulla scheda ma in realta' e' un HW esterno che ne fa le veci. In questo modo con il PC si possono visualizzare tutte le variabili, gli stati del programma e inserire dei breakpoint il tutto per il "DEBUG" del FW. Un emulatore serio costa una cifra e quindi se ci si vuole divertire lo stesso senza spendere un botto vi consiglio di basarvi sulla piattaforma ARDUINO e nel caso specifico, come potete vedere dalla foto, la scheda ARDUINO UNO R3. Se realizzate, come in foto uno zoccolo collegato ai pettini presenti su arduino, senza ovviamente collegare i due fili dell'oscillatore (si utilizza quello presente sulla scheda arduino, potrete realizzare un microemulatore povero ma che vi consentira' attraverso il PC di verificare il funzionamento del vostro FW utilizzando il comando Serial.print. Attraverso questo comando potrete visualizzare su terminale dell'IDE (ambiente di sviluppo gratuito di arduino) le variabili e gli stati dei pulsanti o di altro ancora. Se volete fermare il FW in un punto e verificare lo stato in quel momento inserite una istruzione while(1);  nel vostro FW e l'esecuzione del programma si blocchera' in quel punto. Lo so non e' come un vero e proprio emulatore collegato ad AVRSTUDIO dove avete "il micro aperto davanti a voi" con la possibilita' di leggere in tempo reale la eeprom , i registri interni ecc... . Ma per cose semplici e' molto utile e istruttivo. Se poi insieme utilizzate anche AVRSTUDIO5 (gratuito) in modalita' simulatore allora potrete provare in quest'ultimo ambiente le procedure che non richiedono operazioni di I/O e metterle a punto con una notevole celerita' e risparmio di tempo. Occorre conoscere pero' il linguaggio C e questa e' la base per divertirsi.
Io comunque sono in ascolto per eventuali delucidazioni ed aiuto.
Se qualcuno ti dedica del tempo apprezzalo sempre perché lo toglie al suo per dedicarlo a te