Il generatore DDS in oggetto è venduto a pochi euro (7..8) su vari siti cinesi. Permette di avere un generatore di BF da 1Hz fino a 65535Hz con una risoluzione di 1Hz con le seguenti possibilità di generazione di forme d’onda:
Sinusoidale
Onda Quadra
Dente di sega
Rampa crescente
Rampa calante
ECG
Rumore bianco/rosa
In più dispone di una ulteriore uscita a sole onde quadre ad alta frequenza:
1Mhz
2Mhz
4Mhz
8Mhz
Tale generatore è poco più di un giocattolo, utile solo laddove non è necessaria particolare precisione della forma d’onda e dove l’ergonomia di utilizzo non è importante a causa di alcune note dolenti. Come pro abbiamo il fatto che gli integrati sono montati su zoccolo agevolando una eventuale riscrittura del firmware originario.
Le forme d’onda sono ottenute tramite un ladder di resistenze R/2R connesse alla porta A dell’atmega16A. La forma d’onda ottenuta è successivamente bufferata da un doppio operazionale LM358 che permette di variarne l’ampiezza ed il bias. Non esiste nessun tipo di filtrazione, anche se sarebbe stato meglio. La risoluzione della forma d’onda è a 8 bit, quindi abbastanza primordiale. La scelta della forma d’onda e della frequenza viene effettuata tramite pulsanti, operazione non proprio agevole anche a causa della spiacevole “features” per la quale il generatore non è in grado di funzionare mentre si opera sui menù (cambio di frequenza, cambio di forma d’onda etc…) quindi ogni volta è necessario fermare la generazione della forma d’onda, cambiare frequenza, far ripartire la generazione dell’onda. Scordatevi quindi uno sweep sia manuale che automatico.
La scheda va alimentata con le seguenti tensioni:
+5V
+12V
-12V
L’ampiezza dell’onda spazia tra i -5V ed i +5V con la possibilità di variare tramite il potenziometro del bias, senza soluzione di continuita, tra i -10V/0 e 0/+10V
Qui in basso lo schema elettrico:
Il cuore del sorgente è la routine di generazione delle forma d’onda ed è costituita da poche righe in assembler. Tale routine è l’unica attiva, in continuazione, durante la generazione dell’onda. Non può essere interrotta, per come è stato creato il sorgente, da null’altro ed ecco il perchè è necessario fermarla quando si opera sui menù. In pratica il pulsante start/stop agisce su un interrupt che fa cessare la routine. Un diverso approccio nella programmazione probabilmente permetterebbe di avere almeno la variazione della frequenza senza bloccare la generazione, una idea che cercherò di mettere in pratica a breve. Sarebbe anche da considerare l’impiego di un encoder anzichè di pulsanti.
In definitiva il circuito, pur essendo geniale nella sua ideazione, permette ben poco ciò che non vada oltre una mera generazione di segnale senza troppe pretese.
Alla pagina del progetto originale potete trovare il firmware sia in versione .hex da caricare sul micro sia in versione sorgente.