Musica con i microcontrollori
Musica con i microcontrolloriCapita a volte di dovere generare della musica o dei suoni tramite un micrococontrollore. Il sistema piu' semplice è quello di generare una frequenza utilizzando un timer, portare questo segnale fuori dal microcontrollore tramite un piedino ed amplificarlo.
Purtroppo il suono ottenuto è piatto, privo di timbro , il tipico suono da computer. Questo perché simulare da software un invilupp o non è proprio una pratica semplicissima e, molte volte, l' attenzione del progettista è catturata dalla funzione principale che il microcontrollore deve svolgere. Immaginiamo di dover realizzare una sveglia elettronica. Il suono della sveglia è un aspetto marginale e molte volte trascurato anche se, dal punto di vista pratico e di utilizzo, dovrebbe essere un aspetto curato.
Lo scopo di questo breve articolo e' di realizzare un suono che assomiglia a quello prodotto da un campanello senza dover intervenire tramite software ma utilizzando pochi componenti ed un circuito il più semplice possibile.
L' inviluppo
Un suono privo di inviluppo, o meglio con l' inviluppo più semplice possibile, inizia con un livello che di colpo va al massimo e rimane costante per tutta la durata della nota per poi interrompersi bruscamente. Per ottenere un suono che assomigli al rintocco di un campanello l' inviluppo deve avere un andamento decrescente con una curva esponenziale. Il sistema più semplice per ottenere questo inviluppo è la scarica di un condensatore. Se carichiamo un condensatore e lo scarichiamo tramite una resistenza, la curva che otterremo è una curva esponenziale che tende a zero senza mai arrivarci. L' intensità del suono di un campanello segue proprio questo andamento: inizia in modo repentino per poi decadere lentamente con andamento esponenziale. Riuscire ad ottenere un suono con questo inviluppo equivale a dare un tocco di classe, di musicalità alla nostra realizzazione. Il che non può che essere un bene.
Il circuito
SP32-20100219-014208.jpg
L' idea di base è di sfruttare la scarica di un condensatore per ottenere un inviluppo il più naturale possibile e modulare la tensione ai capi del condensatore con la frequenza generata dal microcontrollore. Abbiamo quindi bisogno di un comando che ci carichi il condensatore e di un semplice modulatore. Il comando che carica il condensatore è il segnale ENV (attivo basso). Quando portiamo ENV a 0V Q1 si satura e carica il condensatore C1. Per non caricare eccessivamente Q1 limitiamo la corrente di carica con R2 che introduce anche un lieve ritardo dando una pendenza all' attacco del segnale. Il segnale della nota da riprodurre e modulare è collegato all' ingresso FREQ. Questo segnale farà lavorare Q2 come un interruttore e il condensatore C1 si scaricherà a massa tramite la resistenza R4. Di solito il segnale prodotto dal timer è un' onda quandra, quindi con duty cycle del 50%. La resistenza equivalente di scarica di C1 sarà quindi il doppio del valore di R4. Anche la serie di R5 e P1 interviene nella scarica di C1 ma il suo valore è abbastanza alto da rendere il suo effetto trascurabile. Il condensatore C2 disaccoppia il segnale dalla componente continua. L' uscita OUT non è in grado di pilotare direttamente un altoparlante, con i componenti indicati il valore massimo picco-picco è di circa 0,87 V, piu' che sufficiente a pilotare un semplice amplificatore BF realizzato, ad esempio, con un TDA2003 o similare.
Pilotaggio
Per utilizzare questo circuito con un progetto che prevede un uscita audio è necessario e sufficiente utilizzare una uscita del microcontrollore che generi il segnale ENV. Le modifiche software sono veramente poche e semplici, si tratta di tenere l' uscita ENV a 0V per un breve tempo (consiglio 50/100 ms per motivi "musicali", 200 ms è la durata che rende il suono più gradevole) per assicurare la carica di C1, avere un certo tempo in cui il suono rimane costante e poi riportarlo a 5V (1 logico) e dare inizio alla scarica di C1. Il "sound" che si ottiene con questo circuito è veramente piacevole e vale la pena di provarlo. Un suono dolce, magari una musichetta monofonica ma ben fatta, è in grado di trasformare uno sgradevole ed odioso suono di sveglia in un piacevole risveglio.
Tardo Freack