Germinimal – VCO

Germ_VCO_SimLa struttura dei 3 VCO è molto simile a quella utilizzata sul FatMan della PAiA, cioè viene usato come comparatore a finestra un NE555. Come detto nella descrizione del MIDI Keyboard Interface, non vengono impiegati convertitori esponenziali per pilotare gli oscillatori, la tensione di controllo viene generata da un microcontrollore con i valori corretti.

Ogni oscillatore può operare nei range:

  • 2′
  • 4′
  • 8′
  • 16′
  • 32′

Per ogni oscillatore sono presenti le seguenti forme d’ onda:

  • Ramp
  • Triangle
  • PWM
  • Sine
  • Xor (solo oscillatori 2 e 3)

Per gli oscillatori 2 e 3, è inoltre implementata il controllo di detuning in un range di ± 7 semitoni.

Dimensionamento

Tutta la parte relativa alla progettazione e la scelta dei componenti, l’ ho racchiusa in un documento:

  • Germ-VCO      (documento in formato PDF)

Schema elettrico

Il documento di seguito è lo schema elettrico del circuito:

Realizzazione

Ho implementato il tutto su un circuito stampato, utilizzando la tecnica del press’ n peel, devo dire con pessimi risultati, questo modo di costruire i cs va probabilmente bene per dimensioni contenute, nel mio caso 200×150, ha generato parecchi errori che si possono vedere nella foto:

E’ possibile vedere quante filature ho dovuto usare per ovviare agli errori.

Collaudo

Per verificare il funzionamento della scheda, ho utilizzato il MIDI Keyboard controller, precedentemente sviluppato, per generare le tensioni di controllo, il tutto pilotato da una tastiera MIDI.

La taratura l’ ho fatta sul Do centrale, dopodichè ho misurato il valore in frequenza di tutti i Do, per ogni piedaggio:

Germ_VCO_VCO1_1Si può notare come all’ aumentare della frequenza aumenta l’ errore, questo è dovuto all’ offset introdotto dal tempo di reset, quello che invece non dovrebbe esserci è un aumento dell’ errore diminuendo di frequenza. Il problema l’ ho individuato nelle correnti di leakage del multiplexer di ottava presente sulla Keyboard Controller come schematizzato nella figura di seguito:

Germ_VCO_MUXIn pratica gli interruttori aperti lasciano comunque passare un piccolissima corrente che si va a sommare a quella del partitore, generando un errore nella tensione di controllo. Ovviamente il caso peggiore è quello in cui viene usata l’ ottava più bassa in quanto si ha la somma di tutte le correnti di perdita. Per ovviare a questo inconveniente è bastato mettere in parallelo alla resistenza in questione (in realtà sono due in parallelo “R41 e R42”) un’ altra resistenza da 47,5k (“RM1”) in modo da fare rientrare il valore di tensione. Questa modifica incide poco o nulla sui valori di tensione delle altre ottave.

Un altro inconveniente è dovuto al disallineamento in frequenza dei tre VCO, dovuta alla differenza tra le tensioni di offset di ingresso dei vari operazionali (piuttosto contenuto comunque). Non è indispensabile avere 0V di offset, piuttosto che siano uguali per i tre oscillatori, li ho selezionati semplicemente misurando la tensione tra i due pin di ingresso con un normalissimo multimetro.

Dopo questi accorgimenti ho rimisurato le frequenze e questi sono i risultati:

Germ_VCO_MisureAnche la misura di linearità è piuttosto buona in quanto si mantiene sotto lo 0,5% entro tutto il range.

Misure

Di seguito riporto qualche misura presa con la versione dimostrativa di un audio analyzer:

  • Rampa

Germ_VCO_Ramp

  • Triangolare

Germ_VCO_Tri

  • Sinusoide

Germ_VCO_Sine

  • Modulazione

Germ_VCO_Modulation

Un po’ analisi spettrali:

  • Rampa

Germ_VCO_FFT_Ramp

  • Triangolare

Germ_VCO_FFT_Tri

  • Sinusoidale

Germ_VCO_FFT_SineSi può notare come la seconda armonica sia solo 40dB sotto la fondamentale, come pure la quinta. Non è insomma una sinusoide molto pura ma per il momento la lascio così.