Università degli studi di Modena e Reggio Facoltà di Ingegneria di Modena Corso di laurea in Ingegneria Elettronica PROGETTAZIONE E REALIZZAZIONE DI STRUMENTO A PERCUSSIONE ELETTRONICO Relatore: Prof. Rita Cucchiara Candidato: Sala Augusto Anno accademico 2006/2007 INDICE 1. INTRODUZIONE 2. ANALISI DEI REQUISITI 2.1. Obbiettivi funzionali 2.2. Prodotti esistenti 2.3. Analisi strumento acustico 2.4. Passi per una simulazione realistica 3. DESCRIZIONE 3.1. Ingressi e uscite 3.2. Prestazioni del firmware 4. SCHEMA A BLOCCHI 4.1. Introduzione ai blocchi 4.1.1. Microcontrollore 4.1.2. Condizionamento del segnale 4.1.3. Multiplexer analogico 4.1.4. Calibrazione analogica 4.1.5. Riconoscimento del contatto 4.1.6. Tastiera 4.1.7. Memoria per i campioni 4.1.8. Convertitore DAC 4.1.9. Mixer 4.1.10. Amplificatore 4.1.11. Display LCD 4.2. Descrizione dei blocchi 4.2.1. Microcontrollore 4.2.2. Memoria per i campioni 4.2.3. Convertitore DAC 4.2.4. Amplificatore stereo 4.2.5. Multiplexer analogico 1 5. SCELTE ADOTTATE E SCHEMA CIRCUITALE 5.1. Multiplexer analogico 5.2. Condizionamento del segnale 5.3. Calibrazione analogica 5.4. Riconoscimento del contatto 5.5. Tastiera 5.6. Display LCD 5.7. Memoria per i campioni 5.8. Convertitore DAC 5.9. Mixer 5.10. Amplificatore 5.11. Microcontrollore e collegamenti 6. FIRMWARE 6.1. Principio di realizzazione 6.2. Il problema della memoria seriale 6.3. Schema del funzionamento del firmware 6.4. Lettura e bufferizzazione di un suono 6.5. Metodo usato per rilevare la potenza dei colpi 6.6. La strategia per l’interruzione dei suoni 7. INTERFACCIA UTENTE 8. IMPLEMENTAZIONE 9. CONCLUSIONI 10. APPENDICE 10.1. Indice delle figure 10.2. Indice delle tabelle 10.3. Termini tecnici e sigle usate 10.4. Programmi usati 11. BIBLIOGRAFIA 2 1. Introduzione Il progetto consiste nello sviluppo di uno strumento musicale a percussioni di tipo elettronico. Tale strumento si basa su una centralina che genera suoni simili a quelli di una batteria acustica quando l’utente colpisce determinate superfici sensorizzate. 2. Analisi dei requisiti Come primo passo per la realizzazione dello strumento, si è fatta una analisi sugli aspetti di una batteria acustica da simulare, sulle prestazioni minime del sistema ed in generale sulle scelte da adottare in seguito. 2.1. Obbiettivi funzionali L’obbiettivo preposto ad inizio progetto era la realizzazione di un sistema molto economico, con prestazioni discrete, sufficienti alla pratica, senza pretese di diventare uno strumento per esibizioni pubbliche o registrazioni. Proseguendo in quest’ottica si è pensato che lo strumento avrebbe dovuto essere prima di tutto pratico quindi integrare tutto il necessario per studiare l’esecuzione dei brani con facilità, a questo scopo è stato inserito un amplificatore di media potenza capace di pilotare altoparlanti con potenza più che sufficiente a coprire il suono dei colpi sui pad, inoltre si è pensato di inserire un mixer stereo per poter riprodurre il suono proveniente da una fonte esterna direttamente sugli stessi trasduttori (siano essi altoparlanti o cuffie) insieme al suono generato dalla centralina. Il sistema avrebbe poi dovuto avere la possibilità di interfacciarsi al PC per l’upload dei campioni o per interagire con esso (si è pensato alla realizzazione di programmi per la pratica della batteria o videogiochi a punti da usare con l’ausilio di un calcolatore). Infine il sistema avrebbe dovuto avere memoria sufficiente per avere più suoni in memoria a disposizione dell’utente, il quale avrebbe dovuto avere la possibilità di associarli ai pad a piacimento tramite una qualche interfaccia utente. 3 2.2. Prodotti esistenti Prodotti di questo tipo sul mercato sono già presenti. I prezzi sono però elevati. I prezzi e le specifiche provengono da bibliografia [7], [9], [10] e [11]. L’azienda dominante del mondo delle batterie elettroniche è la Roland. Il suo modello base, il TD-3 costa intorno ai 270 € ed integra 114 suoni (non aggiornabili), 32 kit, un ingresso ed una uscita MIDI, un mixer con ingresso analogico, 9 ingressi analogici (per 11 sensori), Figura 1: Roland TD-3 un metronomo ed effetti di Ambience (riverbero). Un modello appena superiore è il TD-6V che costa sui 420 € ed integra 1024 suoni predefiniti più 262 suoni personalizzabili e 99 kits. Questo modello riproduce 64 suoni contemporaneamente (polifonia) ed accetta Figura 2: Roland TD-6V in ingresso fino ad 11 sensori, presenta un diplay LCD ed un equalizzatore e due bande. Il modello di riferimento nel mondo delle batterie elettroniche è sicuramente il TD-20 che integra innumerevoli funzioni e un polifonia di 64 suoni. Sono presenti 500 suoni predefiniti ma modificabili graficamente in termini di componenti frequenziali, interfaccia con schede Compact Flash e molto altro. Il prezzo si Figura 3: Roland TD-20 aggira però sui 1500 €. Una marca molto nota per il buon rapporto qualità-prezzo è la Alesis la quale produce uno dei pochi modelli con interfaccia USB: l'Alesis Trigger I/O. Questo modulo del costo di circa 115 € integra 10 ingressi per sensori ma non si occupa di generare i suoni, invia solo comandi tramite porta USB o MIDI ad un PC o sintetizzatore MIDI che si occuperà di generarli. Un modello più confrontabile quindi con quello progettato è il noto Alesis DM5 che nel prezzo di 270 € offre 12 ingressi e 550 campioni a 18 bit e 48 KHz a cui sono applicabili effetti come il riverbero. La polifonia fornita è di 16 suoni e sono salvabili 21 kit. 4 Un'altra marca famosa che sta però perdendo popolarità (nell’ambito delle batterie elettroniche) è la Yamaha il cui modello intermedio DTXplorer (venduto solo inclusivo di pad e meccaniche a circa 660 €) incorpora 214 suoni a 16 bit con polifonia a 32 voci, 32 kit predefiniti più 10 kit personalizzabili, un metronomo, 9 ingressi per sensori, un mixer ed il display LCD 16x2. 2.3. Analisi strumento acustico Analizzando lo strumento acustico salta subito all’attenzione la necessità di una risposta del sistema proporzionale alla potenza del colpo. Gli aspetti da simulare risultano molto numerosi e difficilmente realizzabili per via elettronica. Un esempio è l’effetto per cui ogni componente di una batteria acustica se suonato in punti diversi produce suoni anche parecchio differenti. Per proseguire nell’analisi dei requisiti è bene però fornire un po’ di conoscenza sugli elementi componenti una batteria acustica. La figura 4 mostra un modello di tale strumento: Figura 4: Modello di batteria acustica 5 Gli elementi in ordine di importanza sono: • Grancassa (pelle in blu): tamburo pilotato da un pedale, ha un suono molto basso e secco, conferisce riempimento al brano suonato. In alcuni casi i pedali ad essa collegati sono due, per permettere “rullate” (susseguirsi rapido di colpi) sulla grancassa tramite l’uso di entrambi i piedi. • Rullante (pelle in rosso): si può considerare il protagonista, ha un suono secco con componenti frequenziali distribuite in una banda ampia. E’ dotato di una rete metallica chiamata “cordiera” a contatto della pelle inferiore che ne caratterizza il suono. Tale componente è in una batteria acustica allontanabile dalla pelle per mezzo di un meccanismo posto sul lato del tamburo. A “cordiera” disinserita il suono del rullante è molto simile a quello di un tom ma più acuto. Tuttavia la cordiera viene quasi sempre tenuta inserita. In alcuni casi viene usato colpendolo di costa (ovvero sul bordo invece che sulla pelle) per produrre un suono meno tagliente e più d’accompagnamento. Costa e pelle possono anche venir colpiti insieme per creare un suono forte e tagliente. • Charleston (piatto in giallo): è il piatto per eccellenza da accompagnamento, è composto in realtà da due piatti sovrapposti che possono essere allontanati tra di loro tramite un pedale posto alla base della staffa. Con questo sistema può produrre suoni molto brevi, se i due piatti sono a contatto, o molto lunghi se sono ben distanziati. Questo aspetto è difficile da simulare per via elettronica, è stato utilizzato uno stratagemma per semplificare il problema (affrontato nel capitolo 6.6). • Crash (piatto in verde): è il famoso “piatto”, quello che si suona per staccare o sottolineare parti del brano. Produce un suono lungo ma può venire opportunamente afferrato con la mano per smorzarne le vibrazioni ed interromperne il suono. • Tom acuto, tom basso e timpano (i tre tamburi in diverse tonalità di fucsia, a partire da sinistra): producono suoni di differente tonalità (da acuto a basso) che possono essere anche lunghi e vengono usati per realizzare i “fill” colpendoli con le bacchette in ordine per produrre una scala di tonalità (di solito dal più acuto al più grave). 6 • Ride (piatto in celeste): è un piatto che viene usato come accompagnamento in opposizione al charleston, produce un suono più simile ad un campanello. Se colpito sulla campana (la calotta sferica al centro del piatto) genera un suono più grave. Se colpito di taglio produce suoni simili a quelli del crash. 2.4. Passi per una simulazione realistica Dando un'occhiata ad una batteria acustica e studiando la tecnica necessaria a suonarla si può fare una classifica delle caratteristiche che il progetto dovrebbe avere ordinata per importanza: 1. Sensori per grancassa, rullante, charleston ed un piatto Questi sono gli elementi base per poter iniziare effettivamente a suonare. 2. Effetto del pedale del charleston Questo elemento migliora notevolmente la simulazione, rendendo possibili più sfumature e stili di suonata. 3. Sensori per tom (due o tre) Introducendo questo aspetto si rendono possibili le "rullate" ed i "fill". 4. Sensore per il ride Consente l'accompagnamento di rullante e cassa in alternativa al charleston. 5. Riconoscimento della pressione della mano sui piatti per interrompere eventualmente la riproduzione dei suoni ad essi associati. Consente l'interruzione dei suoni dei piatti con l'uso della mano, pratica comune nell'esecuzione su batteria acustica dove il batterista, per interrompere le vibrazioni di un piatto che altrimenti produrrebbe un suono troppo lungo, va a stringere con la mano il bordo del piatto stesso. 7 6. "Rim shot" ovvero sensibilità alla posizione in cui il colpo avviene in un determinato elemento. Cerca di approssimare l'effetto per cui in una batteria acustica gli elementi, siano essi piatti o tamburi, producono suoni leggermente diversi se colpiti in zone differenti. Principalmente ci si riferisce ai colpi di costa sul rullante ed ai colpi di taglio e sulla campana del ride. 7. Secondo pedale per la grancassa, e più ingressi per suoni generici. Per arricchire al massimo lo strumento e mettere a disposizione del batterista numerosi suoni quali altri piatti o tamburi speciali. 3. Descrizione L’unità è stata progettata tenendo conto delle linee guida appena presentate (nel cap. 2), per raggiungere risultati soddisfacenti. 3.1. Ingressi e uscite L'unità progettata è dotata di 12 ingressi analogici per altrettanti sensori di vibrazione, più 4 ingressi destinati all’interruzione dei suoni generati da 4 dei 12 ingressi analogici (per consentire la simulazione dell'arresto delle vibrazioni di un piatto o della pelle di un tamburo manualmente) più un ingresso per il pedale del charleston. Inoltre sono presenti un ingresso per audio stereo diretto al mixer, un’uscita non amplificata per collegare un amplificatore esterno, due uscite stereo amplificate per auricolari e un’uscita stereo amplificata per il collegamento di una coppia di casse passive. 8 3.2. Prestazioni del firmware Il microcontrollore scelto per numerosità di funzioni integrate, costo e reperibilità (nel cap. 3.2.1 verranno approfondite le motivazioni della scelta effettuata) non ha però dimostrato di avere prestazioni computazionali tali da garantire numerosi suoni contemporaneamente ad alta fedeltà, è stato necessario quindi scendere a compromessi su frequenza di campionamento e livelli di quantizzazione per ottenere buoni risultati di simulazione. Il firmware realizzato genera fino a 16 suoni monofonici contemporaneamente ad una frequenza di campionamento di 22 KHz ed una risoluzione di 8 bit (il codice è stato scritto direttamente in assembly ed ha subito aggressive ottimizzazioni per ottenere tali prestazioni dal microcontrollore usato con così tanti ingressi da analizzare). Qualche miglioria sarebbe stata raggiungibile tramite l’eliminazione di qualche ingresso o di effetti come l’interruzione dei suoni, tali migliorie non erano però molto significative e non miglioravano notevolmente la qualità dei suoni. Il limite teorico raggiungibile con poche modifiche software e senza eliminare ingressi sarebbe comunque stato 12 suoni di polifonia ad 8 bit per 28 KHz. E’ stato anche pensato l’utilizzo di più microcontrollori per suddividere il carico computazionale ma si sarebbero verificati problemi di condivisione della memoria per i campioni. 9 Schema a blocchi Lo schema a blocchi funzionale del progetto è il seguente: Collegamento a PC Riconoscimento del contatto 4 Microcontrollore Condizionamento del segnale Multiplexer analogico Mixer 2 Calibrazione analogica Display LCD Amplificatore 2 3 x Uscite audio stereo amplificate Ingresso pedale charleston 2 12 Convertitore DAC 10 12 Uscita audio stereo 4 Memoria per i campioni Ingresso audio stereo 4 3+3 2 Ingressi sensori pad Ingressi sensori tattili Tastiera 4 Segnale analogico Bus analogico Segnale digitale Bus digitale 2 4. Figura 5: Schema a blocchi 4.1. Introduzione ai blocchi 4.1.1. Microcontrollore Il microcontrollore è il cuore del sistema e si occupa di analizzare i segnali analogici in ingresso per rilevare i colpi e la loro forza, genera tutti i suoni e ne miscela i campioni per mandarli al DAC. Inoltre realizza l'interfaccia con l'utente. 10 4.1.2. Condizionamento del segnale Il segnale generato dai sensori contiene componenti ad alta frequenza, per renderlo più facilmente interpretabile dalla MCU, che campiona ciascun canale solo ad un frequenza di circa 1400 Hz, è stato inserito questo blocco (si tratta di un allungatore di picco), il blocco presenta anche un trimmer per regolare la sensibilità dell'ingresso stesso ed adattarsi a diversi sensori e pad. 4.1.3. Multiplexer analogico Per rendere possibile da parte della MCU la conversione AD di così tanti canali si è reso necessario l'inserimento di un multiplexer analogico. 4.1.4. Calibrazione analogica Per consentire il collegamento di diversi tipi di pedali del charleston (con diverse resistenze a pedale aperto, chiuso e a mezza via) è stato introdotto questo blocco di calibrazione analogica al quale si affiancherà poi un ulteriore algoritmo di calibrazione in digitale per consentire una completa compatibilità con qualunque tipo di pedale. 4.1.5. Riconoscimento del contatto Questo blocco si occupa di riconoscere il contatto della mano con i sensori posti sui pad che dispongono di interruzione suono, e di inviare un segnale alla MCU in caso di contatto. 11 4.1.6. Tastiera Si compone di quattro tasti. A causa delle limitate linee di I/O della MCU, l'uscita della tastiera è stata sovrapposta (come OR logico) con l'uscita dello stadio di riconoscimento del contatto. Per distinguere la fonte del segnale inoltre la tastiera ha un'ulteriore uscita dedicata direttamente connessa alla MCU che realizza l'OR logico tra tutti i tasti. 4.1.7. Memoria per i campioni La memoria è incaricata di immagazzinare i campioni dei suoni a disposizione dell'utente ed un indice per consentire una facile individuazione, da parte della MCU, dei diversi suoni presenti. 4.1.8. Convertitore DAC Il convertitore DAC genera il suono analogico a partire dai campioni forniti dalla MCU. 4.1.9. Mixer Un mixer a due canali stereo è stato inserito per consentire di miscelare il segnale generato con quello proveniente da un ingresso analogico, per inviare poi il segnale mixato all'amplificatore e riprodurre il tutto su una sola coppia di altoparlanti. Il mixer ha anche una uscita non amplificata ed un collegamento interno al multiplexer analogico per consentire alla MCU (in un futuro aggiornamento) la registrazione dei campioni direttamente dall'ingresso analogico. 12 4.1.10. Amplificatore L'amplificatore stereo è incaricato di abbassare l'impedenza d'uscita della linea per altoparlanti e auricolari in modo da poterli pilotare con potenza sufficiente. 4.1.11. Display LCD Consente un'interfaccia con l'utente più semplice e visualizza grafica animata durante l’esecuzione di suoni. 13 4.2. Descrizione dei blocchi 4.2.1. Microcontrollore Il microcontrollore usato è un PIC18F4550 della nota serie dei microcontrollori ad 8 bit prodotti da Microchip, è stato scelto per il numero elevato di pin di I/O pur rimanendo in un package di tipo PDIP (vincolo per la saldatura through-hole), la presenza di un controller USB integrato (utile per future espansioni), di un modulo UART (adatto per comunicazioni seriali con RS-232) e MSSP (usato per comunicare in SPI con le EEPROM seriali attualmente in commercio, e compatibile con le diffusissime memorie flash denominate SD) oltre ad un convertitore A/D integrato di prestazioni sufficienti allo scopo. Inoltre è stato avvantaggiato dalla possibilità da parte del programma di scrivere nello spazio di memoria non volatile destinato al codice. Ciò ha permesso l'utilizzo di un boot-loader, ovvero un programma che esegue prima del codice fornito dall'utente e consente, prima di passare il controllo al programma dell'utente allo scadere di un timeout, di aggiornare tale codice senza nemmeno togliere il chip dallo zoccolo. Infine ma non per minor importanza è stato avvantaggiato dal basso costo e dalla facile reperibilità. 4.2.2. Memoria per i campioni Il blocco denominato "Memoria per i campioni" è composto da più chip EEPROM che condividono lo stesso bus, un demultiplexer si incarica di generare il segnale di chip select in base alle richieste della MCU. Le EEPROM scelte sono le 25LC1024 sempre della Microchip, scelte per semplicità d'uso, capacità elevata e basso costo, sono di tipo seriale con interfaccia SPI e memorizzano 1 Mbit ovvero 128 Kbyte. Nel sistema sono inseribili fino a 6 chip più 2 chip extra (per i quali non sono previsti per il momento zoccoli, per questioni di spazio, tuttavia tutti i segnali per tali chip sono disponibili) per raggiungere una memoria totale di 768 Kbyte o 1 Mbyte che per suoni monofonici ad 8 bit e 22 Khz equivale a 35 o 47 secondi. 14 4.2.3. Convertitore DAC Il blocco denominato convertitore DAC è incaricato della conversione DAC con interpolazione e del filtraggio analogico. Per questioni di tempo tale blocco è per ora costituito solo da un convertitore DA seriale a 12 bit e quindi non si occupa effettivamente ne dell'interpolazione ne del filtraggio. Il blocco finale sarà probabilmente costituito da un ulteriore microcontrollore incaricato di ricevere i campioni dal bus seriale della MCU principale e ritrasmetterli ad un chip (il MAX 5556 della Maxim) tramite un'altra interfaccia seriale. La necessità di un secondo microcontrollore è introdotta da problemi di temporizzazione dei segnali. Il MAX5556 richiede un segnale di clock ed un segnale di left/right di frequenza pari ad 1/256 rispetto al clock e di un segnale di clock per i dati seriali. Tutti questi segnali di temporizzazione devono essere sincroni e quindi per semplicità viene introdotta la MCU secondaria per generarli. L’MCU si rende necessaria anche perché la frequenza massima del clock per i dati seriali in ingresso al MAX5556 risulta essere molto bassa (2 MHz contro i 12 MHz usati nel resto del circuito) e per evitare di rendere questo componente il collo di bottiglia del sistema, tale MCU opera anche una sorta di “store and forward”. Il vantaggio dell'utilizzo del MAX5556 è che esso opera automaticamente una interpolazione digitale con 8 fold oversampling e successivo ulteriore oversampling a 64 volte la frequenza di campionamento originale. Grazie a tali strategie un semplice filtro analogico passa basso del primo ordine con frequenza di taglio intorno ai 20KHz è più che sufficiente per eliminare tutto l'aliasing. 4.2.4. Amplificatore stereo Per realizzare l'amplificazione audio sono stati usati due circuiti integrati della ST Microelectronics (i TDA2003) che dispongono di una potenza di uscita massima di 17W su un carico che può scendere fino a 1.6 ohm ed una alimentazione compresa tra gli 8 e i 18 volt. Nel contesto i circuiti sono alimentati a 12 volt, e le capacità di disaccoppiamento sono dimensionate per garantire una frequenza di taglio inferiore di banda di 40 Hertz con un carico di 4 ohm. Su tale carico e con tale alimentazione la potenza generata si aggira sui 4 W per ciascun canale. 15 4.2.5. Multiplexer analogico Con lo scopo di avere più pin di IO liberi è stato scelto di utilizzare solo due dei 13 ingressi analogici disponibili nella MCU per la conversione AD. Tale scelta è stata soddisfatta con l’utilizzo di due multiplexer analogici 8:1 della ST Microelectronics (gli HCF4051B). In questo modo si hanno 16 ingressi disponibili, 12 occupati dai sensori montati sui pad, uno per rilevare la posizione del pedale del charleston ed uno per il collegamento al mixer (l'hardware consente di campionare il segnale analogico in ingresso al mixer per registrare nuovi suoni). I restanti due ingressi sono liberi per future implementazioni. 16 5. Scelte adottate e schema circuitale Il progetto è stato realizzato con un metodo molto usato in ambito hobbistico ovvero il montaggio e la saldatura through-hole su basetta millefiori. Una tecnica speciale è stata adottata per consentire un rapido aggiornamento dei singoli elementi che compongono la centralina (mixer, DAC, rilevamento del contatto, etc.), come si vede dalla tabella 1, tali componenti sono stati realizzati su basette separate e montati sulla scheda principale tramite connettori, in questo modo è stato possibile testare e modificare i singoli moduli senza modificare la scheda principale. Sede per il modulo sulla scheda principale. Modulo montato sul suo alloggiamento. Scheda principale con connettori per il modulo e il modulo stesso scollegato. Tabella 1: Tecnica per la modifica flessibile dei circuiti 17 5.1. Multiplexer analogico I multiplexer usati sono due HCF4051B della ST Microelectronics. Il pinout di tale componente, ricavabile dai datasheet, è mostrato in tabella 2: Pin A, B, C INH Funzione Indirizzo digitale della porta Porta l’uscita ad alta impedenza X Uscita analogica (o ingresso*) X0, … , X7 Ingressi analogici (o uscite*) VDD Alimentazione (3V ≤ Vdd ≤ 18V) VEE Minima tensione analogica inseguibile VSS Tensione di zero logico * l’HCF4051B può essere usato anche come demultiplexer Tabella 2: Pinout di HCF4051B Nel progetto, il circuito relativo ai multiplexer è stato realizzato nel seguente modo: Figura 6: Circuito per la multiplazione degli ingressi 18 I pin INH, VEE e VSS sono stati collegati tutti insieme alla massa per i segnali analogici (in fase di progetto si è provveduto a tenere separate le masse dei segnali digitali e quelle di quelli analogici per ridurre i rumori) poiché ciascuno dei multiplexer ha l’uscita direttamente collegata con un pin del microcontrollore e non si è resa necessaria un’ulteriore multiplazione. I pin per l’indirizzo digitale della porta dei due chip sono collegati in parallelo, in modo che con solo 3 pin il microcontrollore riesce a gestire l’indirizzo di entrambi e scegliendo da quale dei due ingressi campionare si ottiene la possibilità di convertire 16 canali. I primi 12 canali sono occupati dai sensori dei pad, poi un ingresso è destinato a rilevare la posizione del pedale del charleston e l’ingresso 14 è collegato tramite il mixer al canale sinistro dell’ingresso audio, con questo accorgimento praticamente gratuito sarà possibile in futuri aggiornamenti, introdurre la possibilità di campionare i suoni direttamente da un segnale analogico fornito in line-in senza l’utilizzo del PC. 5.2. Condizionamento del segnale I segnali provenienti dai sensori, hanno componenti frequenziali ad alta frequenza e sono difficilmente interpretabili dal microcontrollore che campiona i segnali ad una frequenza di campionamento piuttosto bassa (circa 1400 Hz per ciascun canale), per facilitarne il compito è stato introdotto il blocco di condizionamento del segnale che introduce anche un’amplificazione regolabile, per poter regolare la sensibilità dei pad e collegare alla centralina anche pad strutturalmente differenti. Il circuito di condizionamento del segnale è stato progettato partendo da uno schema presente in un progetto simile (bibliografia [1]). Tale progetto si occupava solo di riconoscere i colpi ed inviare comandi tramite porta seriale ad un PC o sintetizzatore che si occupasse di generare i suoni. Il circuito di condizionamento presente in tale progetto era particolarmente adatto all’utilizzo in questa sede ed è stato modificato per ridurre il rumore e permettere un maggior range di sensibilità selezionabile, inoltre si è provveduto anche ad una semplificazione del circuito tramite l’eliminazione di componenti superflui. 19 Essenzialmente il blocco di condizionamento non è altro che un allungatore di picco con guadagno regolabile, il suo schema è il seguente: Figura 7: Circuito per il condizionamento del segnale Importante è l’inserimento del diodo Shottky (D1) che previene dall’applicazione di una tensione inferiore a quella di alimentazione all’op-amp quando il segnale in ingresso va nel semipiano negativo delle tensioni. Tramite il trimmer RV1 si può regolare il guadagno del blocco per adattarlo a tutti i pad e sensori. La capacità C2 si scarica lungo RV1 e produce un segnale a decadimento esponenziale che conserva per un breve periodo una memoria del picco massimo assunto dal segnale in ingresso. La capacità C1 serve per disaccoppiare il sensore dal blocco di calibrazione ed ha frequenza di taglio inferiore dipendente dalla resistenza serie del sensore e comunque non superiore ai 30 Hz per i sensori utilizzati. Grazie a questo modulo si rilassa molto il problema della bassa frequenza di campionamento poiché il microcontrollore può controllare gli ingressi anche ad intervalli lunghi (qualche millisecondo). 20 Gli op-amp utilizzati, scelti per facile reperibilità e numerosità di circuiti integrati all’interno dello stesso chip, sono gli LM324 della National Semiconductor che integrano 4 op-amp in un unico chip. Il pinout di tali chip è il seguente: Pin 1-, 2-, 3-, 41+, 2+, 3+, 4+ Funzione Ingressi invertenti degli op-amp Ingressi non invertenti degli op-amp 1O, 2O, 3O, 4O Uscite dei quattro op-amp VCC Alimentazione (3V ≤ Vdd ≤ 32V) GND Massa Tabella 3: Pinout di LM324 La risposta tipica ad un colpo su pad di un sensore montato su di esso è tracciata in rosa nel grafico in figura 8, mentre in verde si mostra l’andamento dello stesso segnale dopo il blocco di condizionamento: Figura 8: Risposta di un sensore ad un colpo, con e senza circuito di condizionamento del segnale. 21 5.3. Calibrazione analogica Il pedale del charleston dovrà essere un resistenza variabile o un generatore di corrente variabile dipendenti dalla posizione di tale pedale. Questo blocco è stato introdotto più come blocco logico che per effettiva necessità. Si sarebbe potuto in alternativa fissare le metodologie di funzionamento del pedale ovvero per esempio porre che il pedale avrebbe dovuto avere resistenza variabile linearmente con la posizione del pedale in un range compreso tra 0 e 100 Kohm. Per non perdere in generalità è stato però introdotto questo blocco incaricato di amplificare il segnale di una costante a scelta dell’utente e sommargli una tensione di offset. Con questi accorgimenti più un opportuno sistema di calibrazione in digitale è possibile adattare un qualunque tipo di pedale (purchè a variazione di resistenza o corrente) per renderlo compatibile col sistema. Il blocco definitivo e general purpose non è ancora stato progettato e per adesso si è inserito un semplice amplificatore, basato su operazionale, a guadagno variabile. 5.4. Riconoscimento del contatto Per poter interrompere i suoni dei piatti è necessario che il microcontrollore abbia modo di capire quando l’utente sta afferrando con la mano il pad relativo, a tale scopo si introduce questo blocco. Ci sono vari metodi per percepire il contatto con il corpo umano, quelli basati sulla capacità verso massa che il corpo rappresenta e quelli basati sulla conduttività della pelle e del corpo. Entrambi i sistemi hanno i propri pregi e difetti: L’enorme pregio del sistema che rivela la capacità è la possibilità di ottenere una rilevazione di un corpo anche a distanza (purchè piccola dell’ordine dei millimetri) inoltre la rivelazione necessita di un solo conduttore e un solo corpo conduttivo (da usare come armatura) poiché il circuito viene poi chiuso virtualmente a massa. Il difetto di questi sistemi è la difficoltà di lettura, l’accoppiamento indesiderato con altri oggetti e la generazione di disturbi sulle linee di alimentazione, questo perché per rilevare capacità si usa in generale una corrente alternata e si misura l’impedenza che questa ha nei confronti di tale corrente. La necessità di corrente 22 alternata provoca problemi di accoppiamenti parassiti e richieste di correnti alternate dall’alimentazione col rischio di introdurre (se la distribuzione dell’alimentazione è progettata male) delle componenti frequenziali (a frequenza non nulla) sulle linee di alimentazione e disturbare tutti gli altri circuiti. Il pregio che ha invece il metodo di rilevazione a conduttività è la semplicità dei circuiti necessari alla rilevazione e l’introduzione di disturbi praticamente trascurabile. Il difetto di questi sistemi è la necessità di utilizzare due conduttori ravvicinati che se toccati (entrambi contemporaneamente) con un dito si portano ad avere una resistenza reciproca non più infinita (diventa dell’ordine del megaohm). Il metodo scelto, per stare in linea con gli obbiettivi di semplicità posti ad inizio progetto è quello che sfrutta la conduttività del corpo umano. Il circuito progettato a tale scopo è mostrato in figura 9: Figura 9: Circuito di riconoscimento del contatto Quando l’utente tocca con un dito contemporaneamente il pin SENS e massa, si viene a formare un partitore di tensione sull’ingresso invertente del comparatore che ne abbassa la tensione (prima uguale a VDD). Se la resistenza che il corpo oppone al passaggio della corrente è inferiore a 6.8 megaohm, il comparatore scatta e manda in uscita un uno logico. Il chip usato (LM339) ha in uscita dei buffer open collector ovvero dei transistor con emettitore collegato a massa e collettore all’uscita senza integrare però alcuna resistenza o circuito di pull-up, si rende necessaria quindi la resistenza R4 in uscita per poter avere delle uscite logiche alte. 23 I comparatori utilizzati sono gli LM339 della National Semiconductor che integrano 4 comparatori in un unico chip, in tal modo si possono creare con un solo chip i circuiti di riconoscimento del contatto per quattro pad. Il pinout di tali chip è il seguente: Pin 1-, 2-, 3-, 41+, 2+, 3+, 4+ Funzione Ingressi invertenti dei comparatori Ingressi non invertenti dei comparatori 1O, 2O, 3O, 4O Uscite dei quattro comparatori VCC Alimentazione (2V ≤ Vdd ≤ 36V) GND Massa Tabella 4: Pinout di LM339 5.5. Tastiera La tastiera pensata ha quattro tasti: due per la selezione delle funzioni (UP, DOWN) uno per la conferma (OK) e uno per annullare le operazioni ed entrare nel menu (MENU). Genera un segnale per tasto premuto più un segnale che avvisa il microcontrollore che è stato premuto un tasto. Si tratta di un circuito abbastanza semplice, il suo schema è il seguente: Figura 10: Circuito relativo alla tastiera 24 La complessità del blocco sta nella multiplazione con il blocco di riconoscimento del contatto resa necessaria dal numero ridotto di pin di IO. Lo schema usato per multiplexare i due segnali è comunque semplice: Figura 11: Circuito di multiplazione tastiera-contatto Questo schema ripetuto per ciascuno dei quattro tasti e dei quattro contatti (uscite del circuito di rilevazione del contatto) consente di multiplexare le due fonti. Quando un tasto della tastiera viene premuto, esso impone sull’output un uno logico, altrimenti l’uscita sarà data dell’uscita del rilevatore di contatto. Ciò che consente al microcontrollore di discriminare la provenienza dell’uno logico è il segnale di BUTTON. Il microcontrollore agirà normalmente come se gli ingressi provenissero dal riconoscimento del contatto, nel frattempo farà un polling sul pin connesso al segnale di BUTTON. Nel caso trovi che tale segnale è un uno logico, passerà il controllo ad una routine di servizio tasti dopo aver atteso qualche millisecondo per assicurarsi che i segnali provenienti dai tasti siano stabili. Nel caso si verifichino problemi con la multiplazione quali l’arrivo al microcontrollore del segnale di TASTO prima del segnale di BUTTON, il peggior effetto che si otterrà sarà l’interruzione indesiderata di un suono. Il problema è quindi trascurabile dato che nell’istante di pressione dei tasti poco importa se un suono viene interrotto. Un algoritmo per evitare la ripetizione dei tasti è stato implementato e prevede l’interruzione della routine di servizio tasti finché il segnale BUTTON non sia tornato a zero logico. Inoltre è stata anche implementata una routine che trascorso un ritardo definito, consente la ripetizione dei tasti con frequenza definita in fase di programmazione. 25 5.6. Display LCD Il display utilizzato è un display alfanumerico retroilluminato a 16 caratteri per 2 righe. Tale display integra un controllore compatibile con i noti HD44780 della Hitachi (lo standard industriale dei display alfanumerici). È stato utilizzato in modalità 8 bit per semplificare la realizzazione del programma e velocizzare le operazioni di scrittura ma senza alcuna modifica hardware e con poche modifiche software si potrebbe usare in modalità 4 bit per avere altri 4 pin di IO disponibili sul microcontrollore. Figura 12: Display LCD alfanumerico 16x2 Tali display funzionano con comandi ad 8 bit (più due segnali di controllo, RS ed R/W) inviati sul bus, vengono scritti in modo sequenziale con caratteri preregistrati sul controller HD44780 (caratteri da 32 a 127 molto simili ai caratteri ASCII). Inoltre i caratteri da 1 a 8 possono essere personalizzati inviando la matrice di pixel (5*8) componente il carattere. Tali caratteri sono stati usati per creare le barre indicanti il livello percepito dai vari canali. In modalità a 4 bit semplicemente si divide in due invii un comando ad 8 bit (in seguito verranno affrontati i comandi principali). 26 Il pinout di tali display è il seguente (tradotto da bibliografia [13]): Pin numero Simbolo I/O Funzione 1 VSS - Massa (GND) 2 VCC - Tensione di alimentazione (+5V) 3 Vee - Regolazione contrasto (0 -> 5V) 0 = Instruction input 4 RS I 1 = Data input 0 = Scrivi sul modulo LCD 5 R/W I 1 = Leggi dal modulo LCD 6 E I Segnale di enable (positive edge triggered) 7 B0 I/O Bus di dati pin 0 (LSB) 8 B1 I/O Bus di dati pin 1 9 B2 I/O Bus di dati pin 2 10 B3 I/O Bus di dati pin 3 11 B4 I/O Bus di dati pin 4 12 B5 I/O Bus di dati pin 5 13 B6 I/O Bus di dati pin 6 14 B7 I/O Bus di dati pin 7 (MSB) 15 VCC,BKL - Alimentazione per retroilluminazione (~15 mA) 16 VSS,BKL - Massa per la retroilluminazione Tabella 5: Pinout del display alfanumerico 27 I comandi disponibili su tali display sono i seguenti (tradotto da bibliografia [14]): Istruzione Codice RS R/W B7 B6 B5 B4 B3 B2 B1 B0 Clear display 0 0 0 0 0 0 0 0 0 1 Cursor home 0 0 0 0 0 0 0 0 1 - Entry mode set 0 0 0 0 0 0 0 1 I/D S Display ON/OFF 0 0 0 0 0 0 1 D C B Cursor/display 0 shift 0 0 0 0 1 S/C R/L - Function set 0 0 0 0 1 DL N 0 0 0 1 0 0 1 0 1 BF 1 0 Dati da scrivere in RAM 1 0 Dati letti dalla RAM Set CGRAM address Set CGRAM address Read busyflag and address Write to CG/DDRAM Read from CG/DDRAM F - Indirizzo CGRAM Indirizzo DDRAM Indirizzo CGRAM / DDRAM - - Descrizione T. di esecuz. Cancella il display e porta il cursore al primo carattere 1.64 ms della prima riga (indirizzo 0). Porta il cursore al primo 40us carattere della prima riga (indirizzo 0). Imposta la direzione di movimento del cursore (I/D), e specifica se shiftare il 40us display o spostare il cursore ad ogni scrittura (S = shift) Attiva o disattiva il display (D), mostra o no il cursore (C), mostra il cursore come 40us carattere nero lampeggiante o barra inferiore (B = blink) Specifica se shiftare il display o spostare il cursore ad ogni scrittura (S/C) e la 40us direzione di spostamento (R/L) Imposta la modalità di interfaccia (a 4 o 8 bit) (DL), 40us il numero di righe (N) ed il font (F) Imposta l’indirizzo in cui 40us scrivere sul CGRAM Imposta l’indirizzo in cui 40us scrivere sulla DDRAM Legge il busy-flag (B) che indica se è in atto una operazione e legge l’indirizzo 0us attuale del CG/DDRAM (in base alla precedente istruzione) Scrive dati sulla RAM 40us CGRAM o DDRAM Legge i dati dalla RAM 40us CGRAM o DDRAM Tabella 6: Instruction set dei controllori per display HD44780 I tempi d’esecuzione indicati sono corretti se la frequenza di clock del controllore del display è 250 KHz (normalmente è così). 28 Ci sono due modi per accertarsi che l’esecuzione di un comando sia completata: il polling del busy-flag o l’attesa del tempo di esecuzione (nota Fosc del controllore del display). Nel progetto si è scelto di optare per l’attesa del tempo di esecuzione in modo da poter connettere il pin R/W direttamente a massa, semplificando il layout e risparmiando un pin di IO del microcontrollore. Dopo una verifica sperimentale si è notato che il display utilizzato incorpora un set di caratteri diverso dall’originale set di caratteri dell’HD44780 (consultabile sul datasheet del controller), l’attuale set di caratteri è molto più simile a quello ASCII poiché integra anche le vocali accentate (à è ì ò ù) molto usate in lingua italiana. Il set di caratteri del display utilizzato è stato estratto sperimentalmente e confrontato, con il set di caratteri ASCII normalmente in uso su un calcolatore (il confronto è stato fatto per i soli caratteri di interesse: i caratteri ASCII da 176 in poi sono stati ignorati). In verde sono sottolineate le similitudini tra i set mentre in celeste sono indicati i caratteri che possono essere personalizzati sull’LCD. LCD Charset ASCII Charset 0x 1x 2x 3x 4x 5x 6x 7x 8x 9x Ax Bx Cx Dx Ex Fx 0x 1x 2x 3x 4x 5x 6x 7x 8x 9x Ax x0 x0 x1 x1 x2 x2 x3 x3 x4 x4 x5 x5 x6 x6 x7 x7 x8 x8 x9 x9 xA xA xB xB xC xC xD xD xE xE xF xF Figura 13: Confronto tra set di caratteri del controllore per display utilizzato e set ASCII. 29 Come si nota dalle tabelle, il grave problema dell’assenza di vocali accentate (è à ò ì ù) del set di caratteri originale dell’HD44780 non sussiste. Questo semplifica e rende più efficiente la creazione del firmware, che non dovrà usare strategie particolari (come la creazione del carattere tra quelli personalizzati o l’uso di apostrofi) per inserire tali caratteri. 5.7. Memoria per i campioni La memoria scelta è di tipo seriale con interfaccia SPI (diffusa interfaccia di comunicazione creata da Motorola). In realtà si tratta di otto chip (due dei quali in realtà difficilmente installabili a causa dell’assenza di zoccoli (per carenza di spazio sulla basetta)) che condividono lo stesso bus. Il segnale di chip select viene creato da un decoder 1:8 (l’M74HC138 della ST Microelectronics): Pin Funzione A, B, C Indirizzo del chip da abilitare (C = MSB) CS0, … , CS7 Uscite digitali di chip select (in logica negata) EN1, Ingressi di Enable (negati) se uno di essi è posto a EN2 uno logico, si disabilitano tutti i chip select EN3 Ingresso di Enable se posto a zero logico, si disabilitano tutti i chip select GND Massa VDD Alimentazione (Vdd ≤ 7V) Tabella 7: Pinout di M74HC138 Nel progetto dei tre segnali di enable ne è stato usato solo uno (EN3), gli altri due sono stati posti a massa. EN3 è stato usato come se fosse un bit di indirizzo ancora più significativo di C, in questo modo, per abilitare il primo dei chip EEPROM, il programma chiama l’indirizzo 8, per abilitare l’ultimo dei chip, l’indirizzo chiamato diventa quindi 15. 30 Tramite l’uso di un decoder, il programma può semplicemente inviare I primi 4 bit dell’indirizzo che desidera leggere (il primo dei quali sarà un uno per abilitare i chip select) al decoder, così si semplifica notevolmente l’inserimento di più chip sullo stesso bus. Le memorie scelte (le 25LC1025 della Microchip) hanno il seguenti pinout: Pin Funzione CS Segnale di chip select (negato) HOLD Segnale per sospendere una comunicazione (negato) SCK Ingresso clock per dati seriali SI Ingresso dati seriale SO Uscita dati seriale VCC Alimentazione (2.5V ≤ Vdd ≤ 5.5V) VSS Massa WP Segnale di protezione da scritture (negato) Tabella 8: Pinout di 25LC1024 In questo progetto per semplicità si è connesso il pin di WP direttamente a VSS in modo da disabilitare la protezione di scrittura hardware (i 25LC prevedono anche un metodo software di protezione dalle scritture), ed il pin HOLD, vista l’assenza di necessità, è stato collegato direttamente a VCC. Grazie a queste scelte l’unico pin che in ciascun chip necessita un collegamento dedicato è il segnale di chip select (il collegamento al decoder), tutti gli altri pin (VSS, VCC, SO, SI, SCK) possono venire collegati a bus e condivisi da tutti i chip, questo semplifica molto il layout perché riduce il numero di linee necessarie (praticamente elimina 2 pin in ciascun chip). 31 Lo schema generale del bus e decoder inerenti le memorie è il seguente: Figura 14: Schema del bus SPI e delle memorie Sono stati lasciati sottointesi i chip di memoria IC3, IC4, IC5, IC6, IC7. Il segnale di uscita chiamato SO andrà collegato al pin SDI (serial data input) del microcontrollore mentre il segnale SI andrà collegato al pin SDO del microcontrollore. Il segnale SCK sarà collegato direttamente al pin SCK del microcontrollore e fornirà alle memorie il clock per la sincronizzazione della comunicazione. 32 5.8. Convertitore DAC Il convertitore DAC che si pensa usare è il MAX5556 ma attualmente si sta usando un convertitore seriale della Microchip (l’MCP4921) il cui pinout è il seguente: Pin Funzione AVSS Massa dei segnali analogici CS Segnale di chip select (negato) LDAC Ingresso per bufferizzare l’uscita (negato) SCK Ingresso clock per dati seriali SDI Ingresso dati seriale VDD Alimentazione (2.5V ≤ Vdd ≤ 5.5V) VOUT Uscita analogica VREFA Tensione di riferimento per il convertitore DA Tabella 9: Pinout di MCP4921 Nel circuito creato si è utilizzato un generatore di tensione di riferimento della Microchip (l’MCP1541 che genera 4,096 volt) da collegare a VREFA , questo accorgimento aiuta a ridurre notevolmente il rumore in uscita (dovuto alle linee di alimentazione poco stabili). Il segnale di LDAC è stato collegato a massa in modo da disabilitare il meccanismo di bufferizzazione (inutile per lo scopo preposto). 33 5.9. Mixer Il mixer è di particolare importanza per la pratica con basi musicali in sottofondo. Per garantire una miglior qualità, soprattutto dell’audio in ingresso, nonostante il segnale generato dal convertitore AD sia monofonico, si è reso il sistema stereofonico dal mixer a valle (ovvero mixer, amplificatore, connettori e trasduttori). Per cui sono stati generati in realtà due moduli col seguente schema, uno per il canale sinistro ed uno per il canale destro. Figura 15: Circuito per il mixaggio dei suoni interni ed esterni La capacità C2 serve per disaccoppiare il segnale analogico d’ingresso, il partitore R1-R2 impone una tensione a riposo in modo da ottenere variazioni della tensione nell’ingresso non invertente dell’OP-B comprese nel range di alimentazione e quindi inseguibili da tale op-amp che si occuperà anche di amplificare il segnale (da 1.4 Vpp a 4.5 Vpp). La sezione per il DAC è invece costituita da un semplice inseguitore di tensione collegato all’uscita del DAC (che genera una tensione di circa 3.5 Vpp, se realizzato con MAX5556, o 4.096 Vpp, se realizzato con MCP4921), essa non necessita di disaccopiamento. Le uscite delle due sezioni vengono mixate dal partitore di tensione R8-R7 ed inviate ad un inseguitore di tensione che manda la propria uscita direttamente agli amplificatori e, tramite un partitore di tensione (R5-R6 che riportano la tensione di uscita a livelli di linea (circa 1.4 Vpp)) ed un altro inseguitore di tensione, alla capacità di disaccoppiamento collegata al connettore di line-out. 34 Con due moduli come questi si ottiene la funzionalità di “mixer stereo”, in particolare i due ingressi DAC IN saranno collegati insieme ed all’unica uscita del convertitore DA. 5.10. Amplificatore stereo Per realizzare l’amplificatore stereo ci si è avvalsi dei chip TDA2003 della ST Microelectronics. L’amplificatore stereo è stato realizzato seguendo lo schema circuitale descritto nel datasheet di tali integrati. Con due circuiti come quelli fra breve schematizzati, è stato realizzato un amplificatore stereo a medio-alta potenza. Figura 16: Circuito di amplificazione audio di potenza RV1 è il potenziometro per la regolazione del volume, l’andamento della resistenza di tale potenziometro è logaritmico per consentire alla potenza percepita dall’orecchio umano (organo a sensibilità fortemente logaritmica) di essere più o meno proporzionale alla posizione del potenziometro. C1 e C3 sono le capacità di disaccoppiamento di ingresso ed uscita. In particolare C3 introduce, a causa della ridotta resistenza di carico, una frequenza di taglio inferiore di banda molto elevata (pari a 1 / 2πRLC3 , con RL = 4 ohm) che si aggira sui 40 Hertz, il che resta comunque accettabile. R1 ed R2 fissano il guadagno a 101 ~ 40 dB. R3 e C4 sono necessari per questioni di stabilità. 35 TDA2003 è il circuito integrato della ST Microelectronics scelto come amplificatore per questioni di prezzo, potenza e semplicità d’uso (anche grazie alla singola alimentazione). Il suo pinout è il seguente: Pin Funzione I- Ingresso non invertente I+ Ingresso invertente GND Massa OUT Uscita analogica VCC Alimentazione (8V ≤ Vdd ≤ 18V) Tabella 10: Pinout di TDA2003 5.11. Microcontrollore e collegamenti Il microcontrollore, un PIC18F4550 della Microchip, presenta 40 pin (il pinout per termini di sintesi non verrà citato ma è consultabile direttamente sul datasheet). I pin di IO di tale circuito sono raggruppati in porte da 8 bit (PORTA, PORTB, PORTC, PORTD e PORTE) ma non tutte le porte presentano tutti i pin relativi ai bit di tali registri. Tali pin sono però multiplexati con le numerose funzioni del microcontrollore. Per citarne uno, il pin denominato RC7 corrispondente al bit 7 del registro PORTC, se configurato opportunamente può fungere da RX (pin per la ricezione per il modulo EUSART) oppure da SDO (pin di output seriale per il modulo MSSP (quello usato per interfacciarsi al mondo esterno tramite un bus SPI)), è quindi evidente uno dei limiti più antipatici tra quelli incontrati su questo microcontrollore ovvero il fatto che la multiplazione molto spinta dei pin limiti l’utilizzo dei moduli, nell’esempio il microcontrollore non potrà ricevere dati dalla porta RS232 durante operazioni sul bus SPI ed essendo tali operazioni eseguite continuamente durante l’utilizzo normale dello strumento, ogni ricezione dalla porta RS-232 in fase di riproduzione dei suoni verrà ignorata. Il microcontrollore viene pilotato da un clock generato da un cristallo a 16 MHz, tale segnale viene passato attraverso divisori interni al microcontrollore fino a raggiungere 4 MHz ed una PLL (sempre integrata nel chip) per portare la frequenza di clock a 96 MHz (frequenza di 36 lavoro per il modulo USB interno al microcontrollore), tale segnale viene infine diviso per 2 per pilotare il microcontrollore con una frequenza di clock di 48 MHz (la massima consentita dalle specifiche disponibili sul datasheet) che corrisponde a 12 milioni di istruzioni al secondo (si tratta di un processore RISC ed ogni istruzione viene completata in 4 cicli di clock). Di conseguenza la massima frequenza di campionamento dei suoni immagazzinati è data da: f MAX = Fclk N I ,MAX dove NI,MAX è il numero di cicli necessario nel peggiore dei casi per generare il campione audio successivo (leggendo e sommando i 16 campioni dei suoni) ed inviarlo al DAC oltre a rilevare i colpi e gestire la grafica. Con grandi ottimizzazioni si è ridotto al massimo il numero di cicli usati, portandoli a circa 541, consentendo quindi di usare la frequenza standard 22.050 Hz come frequenza di campionamento per i suoni. Per ottimizzare le prestazioni del firmware si è spinto il modulo SPI del microcontrollore a lavorare con un clock (FINST / 1 = Fclk / 4) molto alto che però resta sotto alle specifiche di tutti i componenti inseriti sul bus (memorie e DAC) e non necessita di modifica neppure se si sostituisse ai chip EEPROM usati una memoria flash di tipo SD (in modalità SPI il clock massimo accettato da tali schede è 25 MHz > 12 MHz). I moduli interni al microcontrollore che sono stati sfruttati nel presente progetto sono: • Modulo MSSP: per dialogare con le memorie e il DAC sul bus SPI • Modulo EUSART: per interagire con il PC tramite porta RS-232 • Modulo ADC: per campionare i segnali in ingresso dei sensori • EEPROM interna: per memorizzare variabili e associazioni pad-suono • 2 Timer: per la temporizzazione dei campioni e la ripetizione dei tasti premuti In un futuro aggiornamento si pensa di usare il modulo USB per fornire una connettività compatibile anche con PC moderni in cui spesso non trovano posto le porte seriali RS-232. I collegamenti microcontrollore-sistema sono molto numerosi e complicati, ed esprimerli in uno schematico sarebbe difficile perciò si è pensato di inserire tali informazioni in una tabella (mostrata nella prossima pagina) in cui vengono mostrati i pin usati, in quale modalità e per quale scopo. 37 Sono stati evidenziati con diversi colori i pin appartenenti agli svariati bus, in modo da rendere più intuitiva la lettura della tabella, secondo la seguente legenda: Bus degli indirizzi per il decoder di chip select delle memorie Bus degli indirizzi per i due multiplexer analogici Segnali relativi al bus USB (per future implementazioni) Bus di dati/istruzioni per il display LCD Segnali relativi al bus SPI Bus dei segnali provenienti dalla tastiera (già multiplexati ai segnali di choke) Pin Funzione RE3: 1 Input digitale AN0: 2 Input analogico 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 AN1: Input analogico RA2: Output digitale RA3: Output digitale RA4: Output digitale RA5: Output digitale RE0: Output digitale RE1: Output digitale RE2: Output digitale VDD: Alimentazione VSS: Massa OSC1: Input cristallo OSC2: Output cristallo RC0: Output digitale RC1: Output digitale RC2/CCP1/P1A 18 VUSB: Scopo Collegamento del segnale che avvisa che un tasto della tastiera è stato premuto Collegamento dell’uscita di uno dei multiplexer analogici usati per multiplexare i primi 8 ingressi dei sensori. Collegamento dell’uscita dell’altro multiplexer analogico usato per multiplexare gli altri 4 ingressi dei sensori, la posizione del pedale del charleston e l’ingresso audio del mixer. Bit meno significativo (0) dell’indirizzo da inviare al decoder per selezionare la memoria desiderata Bit (1) dell’indirizzo da inviare al decoder per selezionare la memoria desiderata Bit (2) da inviare al decoder per selezionare la memoria desiderata Bit più significativo (3) dell’indirizzo da inviare al decoder per selezionare la memoria desiderata Bit meno significativo (0) dell’indirizzo da inviare ad entrambi i multiplexer per la selezione di un ingresso. Bit (1) dell’indirizzo da inviare ad entrambi i multiplexer per la selezione di un ingresso. Bit più significativo (2) dell’indirizzo da inviare ad entrambi i multiplexer per la selezione di un ingresso. Alimentazione per circuiti digitali 5V Massa per circuiti digitali Input per il cristallo destinato a pilotare l’oscillatore. Output per il cristallo destinato a pilotare l’oscillatore. Connesso al pin di enable del display LCD per asserire il latch delle istruzioni dal bus di dati. Connesso al pin RS del display LCD per informare il display della tipologia di dati inviati (istruzioni o dati). Pin libero per future espansioni. Pin da connettere all’alimentazione fornita dal PC tramite porta USB in future implementazioni. 38 Pin Funzione RD0: 19 Output digitale RD1: 20 Output digitale RD2: 21 Output digitale RD3: 22 Output digitale 23 RC4/D-/VM 24 RC5/D+/VP 25 26 27 28 29 30 31 32 33 34 TX: Output digitale RX/SDO: Input/output digitale RD4: Output digitale RD5: Output digitale RD6: Output digitale RD7: Output digitale VSS: Massa VDD: Alimentazione SDI: Input digitale SCK: Output digitale RB2: 35 Input digitale 36 37 38 39 40 RB3: Output digitale RB4: Input digitale RB5: Input digitale RB6: Input digitale RB7: Input digitale Scopo Bit meno significativo (0) del bus di dati condiviso col display. Bit (1) di tale bus. Bit (2) di tale bus. Bit (3) di tale bus. Pin lasciato libero per futuro interfacciamento con USB (pin D) Pin lasciato libero per futuro interfacciamento con USB (pin D+) Usato per inviare dati tramite il modulo EUSART su RS-232 Usato sia per ricevere dati da RS-232 che per inviare dati su SPI, il programma si incarica di configurare di volta in volta il pin a seconda del compito da svolgere. Bit (4) del bus di dati condiviso col display. Bit (5) di tale bus. Bit (6) di tale bus. Bit più significativo (7) del bus di dati condiviso col display. Massa per circuiti digitali Alimentazione per circuiti digitali 5V Input per i dati seriali provenienti dal bus SPI Clock per il bus SPI In future implementazioni potrebbe essere che sia il modulo DAC a temporizzare la generazione di nuovi campioni, questa linea potrebbe essere usata. Segnale di chip select per il modulo DAC Segnale di tasto OK e choke dell’ingresso A (gli ingressi sono numerati da 1 ad 8 ed il nono si chiama A, il decimo B, etc.) Segnale di tasto UP e choke dell’ingresso B (ingresso 10) Segnale di tasto MENU e choke dell’ingresso C (ingresso 11) Segnale di tasto DOWN e choke dell’ingresso D (ingresso 12) Tabella 11: organizzazione dei pin del microcontrollore e dei collegamenti coi diversi circuiti del sistema 39 6. Firmware Il firmware è stato realizzato interamente in linguaggio assembly per consentire prestazioni elevate al sistema. Il problema principale che ha portato a tale scelta è il sistema inefficiente con cui i compilatori C adatti al microcontrollori usato gestiscono gli array, oltre alla possibilità per un programma scritto in assembly di spingere molto oltre l’ottimizzazione eseguendo per esempio istruzioni durante l’invio o la ricezione di dati dalle EEPROM, evitando di controllare che tali trasmissioni siano state completate se si è sicuri che il tempo necessario sia trascorso, conoscendo sempre il contenuto dell’accumulatore per evitare di dover fare operazioni ridondanti, etc. 6.1. Principio di realizzazione Il firmware è stato creato intorno all’operazione principale e più critica: la lettura da memoria, somma e riproduzione dei campioni dei diversi suoni. Seguendo questo criterio, il sistema si occupa continuamente di caricare campioni dalle EEPROM, sommarli (tenendo conto del rispettivo volume) e riprodurli. Nel tempo rimanente (durante le letture di campioni dal bus SPI) si occupa di controllare se è necessario creare un nuovo suono, visualizzare la grafica sul display e controllare se è stato premuto un tasto (nel qual caso passa il controllo ad una routine di servizio tasti, senza preoccuparsi se il suono in uscita subirà alterazioni a causa del ritardo introdotto da tale routine). 6.2. Il problema della memoria seriale Sin dall’inizio della realizzazione, si era coscienti del problema prestazionale che si sarebbe dovuto affrontare utilizzando memorie seriali. La comunicazione con le memorie infatti si sarebbe complicata e soprattutto rallentata di molto. Nonostante ciò si è voluto proseguire in questa direzione per semplificare notevolmente il circuito e perché sfruttando alcuni accorgimenti (esposti in seguito) si è riusciti a ridurre il divario tra i due tipi di memorie (in termini di prestazioni). 40 Il problema principale delle memorie seriali è la necessita di un invio sequenziale dei bit costituenti un byte (alla massima velocità di comunicazione consentita dal microcontrollore si può trasmettere un bit per ogni istruzione più quattro istruzioni di “overhead”). La tabella seguente mostra le istruzioni necessarie per leggere un byte da una memoria parallela. Lettura di un byte con indirizzo a 24 bit da una memoria parallela Operazione Istruzioni Il segnale di chip select della memoria viene portato basso 1 Caricamento sull’accumulatore dell’MSB dell’indirizzo 1 Invio alla porta di I/O ad 8 bit di tale indirizzo 1 Settaggio del segnale di “latch” del registro legato all’MSB 1 Caricamento sull’accumulatore del 2° byte dell’indirizzo 1 Invio alla porta di I/O ad 8 bit di tale indirizzo 1 Settaggio del segnale di “latch” del registro legato al 2° byte di indirizzo 1 Caricamento sull’accumulatore dell’LSB dell’indirizzo 1 Invio alla porta di I/O ad 8 bit di tale indirizzo 1 Settaggio del segnale di “read” della memoria parallela 1 Caricamento sull’accumulatore del dato letto dalla porta di I/O 1 Il segnale di chip select della memoria viene riportato alto 1 Totale 12 Tabella 12: Lettura di un byte da una memoria parallela In seguito verrà invece mostrato il numero di istruzioni necessarie per effettuare tale operazione con memorie seriali: Lettura di un byte con indirizzo a 24 bit da una memoria seriale (SPI) Operazione Istruzioni Il segnale di chip select della memoria viene portato basso 1 Caricamento sull’accumulatore del comando di lettura da inviare alla 1 memoria Invio sul bus seriale di tale byte 12 Caricamento sull’accumulatore dell’MSB dell’indirizzo (durante l’invio) Invio sul bus seriale di tale byte 12 Caricamento sull’accumulatore del 2° byte dell’indirizzo (durante l’invio) Invio sul bus seriale di tale byte 12 Caricamento sull’accumulatore dell’LSB dell’indirizzo (durante l’invio) Invio sul bus seriale di tale byte 12 Invio sul bus seriale di un byte nullo (necessario per generare il clock e 12 ricevere un byte dal bus SPI) Il segnale di chip select della memoria viene portato alto 1 Caricamento sull’accumulatore del dato ricevuto dal bus 1 Totale 64 Tabella 13: Lettura di un byte da una memoria seriale 41 Come mostrato dalle tabelle sembrerebbe insensato orientarsi verso memorie seriali se le prestazioni sono un aspetto critico del sistema. Ciò non è però del tutto vero grazie a due accorgimenti: innanzitutto le memorie seriali scelte consentono di ricevere più byte consecutivi senza inviare ne comandi ne indirizzi (solo byte nulli per generare il clock sul bus SPI), inoltre dei 12 cicli necessari all’invio/ricezione di un byte, 9 sono in realtà di attesa (il modulo SPI del microcontrollore sta inviando il byte ed in questo tempo si possono eseguire altre istruzioni). Caricando perciò dalla memoria i byte a pacchetti (di 16 byte) si riduce notevolmente l’overhead causato dalle 51 istruzioni di inizializzazione della comunicazione, inoltre durante i 9 cicli liberi contemporanei alla ricezione dei byte, si può procedere con altre operazioni. Dopo tali analisi è stato scelto di proseguire con l’utilizzo delle memorie seriali poiché impegnano solo tre pin di IO del microcontrollore (clock, data in, data out) in opposizione alle memorie parallele che necessitano di 18 pin (bus di dati, bus di indirizzi, segnali di read e write) oltre che di 2 registri con i relativi due pin impegnati per i segnali di clock. I segnali di chip select sono stati ignorati in questo conteggio poiché dipendono dal numero di memorie che si inseriscono in parallelo. 42 6.3. Schema del funzionamento del firmware Ecco lo schema a blocchi del firmware: Attesa temporizzazione (attendo che il DAC richieda un campione) Inizializzazione Volume = 0 (inizializza tutte le variabili e i moduli del microcontrollore) Controllo volume del canale attuale (zero indica suono da saltare) Volume > 0 Invio campione principale al DAC Pongo a zero il volume del suono Campione = 0 Controllo il campione attuale del canale (zero indica suono da saltare) (zero indica fine suono) Campione != 0 Controllo pressione dei tasti Nessun tasto è stato premuto Sommo il campione del canale (moltiplicato per il volume) al campione principale Rilevata pressione di un tasto Algoritmo di servizio tasti (Reazione ai tasti premuti) Lettura e bufferizzazione campioni di un suono Indice >= 16 (vedere capitolo apposito) Incremento l'indice di "canale attuale" e lo controllo (l'indice dovrà variare tra 0 e 15) Indice < 16 Azzero il campione principale e l'indice di "canale attuale" Figura 17: Schema a blocchi del firmware La centralina funziona sempre su questo ciclo, l’algoritmo di servizio tasti conserva uno stato sul menu attuale, la posizione all’interno di un menu e tutto quanto concerne l’interfaccia utente “interattiva”. Ricevuto un tasto, tale algoritmo si occupa di reagire in modo conforme con tutte le variabili di stato appena descritte. Finito il suo compito riporta il controllo al ciclo principale, in questo modo si interagisce con i pad e si riproducono i suoni anche se l’utente è all’interno di un menu consentendo quindi anche di vedere l’effetto della modifica di una variabile in tempo reale semplicemente suonando e senza dover uscire dal menu di modifica. 43 6.4. Lettura e bufferizzazione di un suono Il firmware è stato realizzato sfruttando i due accorgimenti esposti nei paragrafi precedenti, in particolare, si ricevono i byte a pacchetti di 16, per cui ad ogni ciclo principale del programma, ci si occupa della bufferizzazione dei 16 byte di uno dei sedici suoni disponibili. In parallelo alla ricezione, si analizzano i segnali provenienti dai sensori per creare opportunamente i suoni ad essi associati, tale analisi impegna tutti i cicli liberi durante la ricezione di tutti e 16 i byte, considerando però che i sensori da controllare sono solo 12, restano 4 cicli di “bufferizzazione campioni” liberi, nei quali sono stati inseriti gli algoritmi relativi alla visualizzazione sul display dei canali in uso (barre verticali proporzionali al volume dell’ultimo suono per ogni canale) e quelli relativi allo smorzamento dei suoni (se richiesto dal pedale del charleston o dai contatti manuali montati sui piatti). 6.5. Metodo usato per rilevare la potenza dei colpi Dopo una analisi delle forme d’onda provenienti dal blocco di condizionamento dei segnali, si è giunti alla sintesi di un algoritmo per la rilevazione della potenza dei colpi. Il problema principale in questo ambito era discriminare il rumore dai veri e propri colpi e limitare i danni dovuti a pad mal progettati. Inoltre era necessario avere buone capacità di rilevamento per colpi anche molto ravvicinati (sperimentalmente si è verificato che i colpi possono arrivare anche a successioni di 20 al secondo nelle rullate veloci). 44 Il grafico seguente mostra la tipica risposta del blocco di condizionamento del segnale ad un colpo su un pad: Figura 18: Andamento del segnale a valle del blocco di condizionamento per un colpo su pad. Ciò che rende identificabile il colpo è la presenza di campioni maggiori in valore rispetto ai campioni precedenti. L’idea base dell’algoritmo è quella di attendere un campione superiore a quello precedente ed una volta ricevuto (fase di carica del condensatore) attendere un campione inferiore a quello immediatamente precedente (per identificare la fine della fase di carica) tenendo traccia del campione di valor maggiore (indice della potenza del colpo). Le cose andrebbero bene se non fosse per il rumore che si somma al segnale utile, infatti come si può notare dal grafico (nei primi millisecondi), anche in stato di quiete, il segnale proveniente dal blocco di condizionamento non è nullo ma presenta del rumore. Altro rumore si somma al segnale proveniente dalla capacità durante la scarica della stessa. L’algoritmo dovrà quindi prevedere una soglia entro la quale considerare il segnale ricevuto “rumore”, tale soglia dovrà essere non in valore assoluto bensì relativa al campione precedente (per annullare l’effetto del rumore anche durante la fase di scarica della capacità). Il sistema della soglia introduce però una restrizione sul fronte di salita del segnale che deve essere sufficientemente rapido a meno di considerare una soglia relativa alla media dei precedenti n campioni. Per evitare complicazioni eccessive si è supposto che il fronte di salita risponda a tali requisiti (sperimentalmente si è verificato che ciò è vero per soglie anche elevate data la bassa frequenza di campionamento del microcontrollore). 45 Nel seguente grafico viene mostrato il funzionamento del sistema della soglia, in verde è mostrato il valore del campione precedente sommato ad una data soglia, mentre in rosso si mostrano i campioni appena ricevuti: Figura 19: Funzionamento del meccanismo della soglia Grazie al sistema della soglia si è perciò ridotto il problema del rumore senza limitare la massima frequenza di “colpi ravvicinati”, resta però un problema ovvero le imperfezioni che le risposte hanno in alcuni casi (molto evidenti se i pad sono mal progettati). I grafici seguenti sottolineano tali imperfezioni: Figura 20: Imperfezioni delle risposte ai colpi Le cose in realtà non stanno così male poiché nei grafici si sono mostrati i segnali campionati con frequenza 11 KHz mentre il microcontrollore campiona a circa 1400 Hz, il che rilassa molto il problema in questione. 46 Se i pad sono invece progettati male diventa impossibile distinguere un colpo singolo da una successione ravvicinata di colpi come mostra il grafico seguente: Figura 21: Imperfezioni dei pad La soluzione ideata per ovviare a questi problemi è l’introduzione di un ritardo prima di tornare in attesa di un campione superiore al precedente e generare il suono, durante questo ritardo si continua a controllare la presenza di campioni superiori al massimo fino ad ora rilevato ed in tal caso si riprende da capo il ritardo, usciti da questo ciclo si avrà un segnale indipendente dai disturbi prima illustrati. Impostando opportunamente tale ritardo, si possono limitare anche gli effetti dovuti ad un’oscillazione del pad che introduce più denti di carica-scarica del condensatore, ovviamente se il ritardo diventa molto grande si limita la possibilità di rilevare colpi successivi distanziati di poco (per esempio quelli dovuti a rullate sui pad) e si rischia anche di introdurre un ritardo apprezzabile tra colpo e generazione del suono. 47 Lo schema a blocchi dell’algoritmo finale usato è il seguente: Il campione è superiore al campione precedente sommato alla soglia? Creo il suono di volume uguale alla variabile "campione massimo" Ricevo un nuovo campione NO SI Pongo a 0 la variabile di campione massimo. Ricevo un nuovo campione NO Il campione è superiore al massimo? NO Incremento la variabile di tempo atteso SI La variabile tempo atteso è superiore alla variabile tempo da attendere? SI Pongo a 0 la variabile di tempo atteso, pongo il campione massimo uguale al campione attuale Ricevo un nuovo campione Figura 22: Schema a blocchi dell’algoritmo di rilevamento dei colpi 6.6. La strategia per l’interruzione dei suoni Per semplificare notevolmente la realizzazione del firmware si è considerato il suono del charleston come il suono di un charleston aperto (molto lungo) interrotto con una velocità dipendente dalla posizione del pedale di controllo (se il pedale è chiuso, l’interruzione avviene alla massima velocità, se esso è aperto non si procederà nemmeno allo smorzamento). In realtà in una batteria acustica non è proprio così: il charleston chiuso ha un timbro lievemente diverso dallo stesso charleston aperto (supponendo di smorzarne a posteriori il suono). Ciò nonostante, l’obbiettivo prefissato del progetto non è l’alta fedeltà e le prestazioni d’avanguardia perciò si è proseguito con tale semplificazione che, d’altro canto, velocizza le operazioni ed aumenta quindi le prestazioni in termini di massima frequenza di campionamento dei suoni ovvero aumenta la qualità audio. 48 In questa prospettiva si può vedere il charleston come un altro suono da smorzare (con velocità dipendente dal pedale) in aggiunta ai quattro suoni dei piatti (che verranno smorzati ad una velocità fissata, e selezionabile dall’utente, nel caso il rilevatore di contatto lo richieda). Per smorzare i suoni si sono usate tre variabili, una contenente la velocità di smorzamento, un contatore ed il volume vero e proprio del suono. Ad ogni ciclo si procede a sommare la velocità di smorzamento al contatore e nel caso si abbia un riporto si procederà a decrementare il volume (a meno che questo non sia già nullo). In realtà per far si che suoni deboli impieghino lo stesso tempo a smorzarsi rispetto ai suoni potenti, si decrementa una variabile di volume massimo (che viene inizializzata al volume massimo ottenibile da un colpo durante la creazione di un suono) ed il volume verrà posto pari a tale variabile se esso è superiore ad essa o rimarrà invariato in caso contrario. 7. Interfaccia utente L’interfaccia utente realizzata risulta molto completa in termini di opzioni configurabili e più precisamente consente le seguenti operazioni: • Passaggio rapido da un set di suoni al successivo o precedente (ce ne sono 8) • Modifica dell’associazione pad-suono per ciascuno dei 12 canali del set di suoni selezionato. • Scambio degli indici di due set di suoni. • Modifica della velocità con cui cadono tutte le barre di visualizzazione della potenza dell’ultimo colpo (una barra per ogni canale più due barre di potenza audio in ingresso ed in uscita) • Impostazione della soglia di rilevazione e della attesa • Impostazione del minimo e massimo volume da attribuire ai colpi (swing del volume). • Impostazione della relazione “volume potenza colpo” tra LOGARITMICA, SEMILOGARITMICA o LINEARE. 49 • Attivazione e disattivazione dell’anteprima dei suoni durante la scelta in fase di associazione pad-suono. • Attivazione e disattivazione del pedale del charleston ed impostazione della velocità di fade per il suono del charleston in caso di disattivazione del pedale. • Impostazione delle modalità di choke: il volume massimo potrà variare tra “volume massimo generale” (garantisce durata dei suoni in fase di choke indipendente dalla potenza dei colpi), “intermedio” (buon compromesso e più fedele alla realtà), “volume originale del colpo” (i suoni a bassissimo volume vengono smorzati immediatamente, quelli più forti rimangono più a lungo). • Impostazione della velocità di choke per ciascuno dei quattro piatti (indipendentemente). • Metronomo (non ancora realizzato ma di facile implementazione futura) • Aggiornamento del firmware • Visualizzazione informazioni sullo stato della memoria, sui suoni a disposizione e sul progetto in generale. • 8. Connessione al computer tramite porta seriale. Implementazione Per l’implementazione si è cercato di ridurre al massimo la dimensione del prodotto finale per inserire la scheda all’interno di una custodia per videocassette (lievemente modificata), tale scelta è stata probabilmente tra le meno azzeccate di tutto il progetto poiché a costretto ad attuare strategie di realizzazione dei circuiti particolari molto disordinate e difficilmente implementabili in via manuale. Le figure seguenti mostrano la centralina allo stato attuale. Sul lato superiore sono stati inseriti il display e la tastiera, su quello sinistro il pomello del volume, l’interruttore di accensione e 4 connettori stereo, 2 di uscita amplificata, uno per l’ingresso audio ed uno per il line-out. Nel lato posteriore trovano posto gli ingressi per i sensori, l’ingresso per l’alimentazione, i dissipatori per gli amplificatori ed i connettori per gli altoparlanti. Sul lato destro è situato il connettore seriale mentre su quello anteriore i 12 trimmer per la regolazione della sensibilità degli ingressi. 50 Figura 23: Centralina allo stato attuale Figura 24: Centralina, lato sinistro 51 Figura 25: Centralina, lato posteriore Figura 26: Centralina, lato destro 52 Figura 27: Centralina, display ed interno del contenitore Per la parte meccanica si è provveduto a realizzare un telaio in tubi di metallo e dei pad di prova composti in legno e rivestiti di gomma (in foto sono montati solo 3 pad più il pedale): Figura 28: Batteria al completo con pad di prova 53 Essendo tutti componenti di tipo through-hole (realizzare il progetto in SMD non è stato praticato per poter testare diversi circuiti, sostituire componenti e fare un po’ di sperimentazione sul circuito finale), la compressione del layout è stata ottenuta spesso con la sovrapposizione dei componenti come si vede nelle prossime figure che mostrano la realizzazione dei moduli discussi in precedenza: Blocco di condizionamento del segnale (per 4 ingressi) Blocco di rilevamento del contatto (per 4 ingressi) Mixer analogico Tabella 14: Blocchi circuitali definitivi La figura seguente mostra la scheda principale senza i moduli (con un solo chip di memoria): Figura 29: Scheda principale senza moduli Infine la prossima figura mostra la scheda principale con i moduli montati. Mancano un modulo per il condizionamento del segnale (per i 4 canali dal 5 all’8), il display e la tastiera 54 che si collegano a connettori via cavo e il circuito di amplificazione (è montato direttamente sulla scatola della centralina), oltre a 5 chip di memoria (è montato solo uno per 128KB) : Figura 30: Scheda principale con moduli montati Lo spazio inutilizzato che si può notare in fondo a sinistra è stato lasciato per futuri aggiornamenti del modulo DAC che potrebbe diventare anche molto grande se si occupasse di interpolazione e filtraggio. Lo spazio libero che si vede invece in primo piano al centro è quello dove prenderà posto il modulo di condizionamento del segnale mancante. 55 9. Conclusioni Il progetto allo stato attuale rispetta largamente le prerogative preposte (la frequenza di campionamento dei suoni è di 22 KHz, superiore ai 16 KHz su cui si puntava ad inizio progetto), il maggior neo rilevato è la grande quantità di disturbi e rumore generata sia sull’uscita audio che sui circuiti di condizionamento del segnale. Tali disturbi riducono la sensibilità massima ottenibile nell’interfacciamento con i pad e deteriorano (anche se in lieve misura) il segnale audio in uscita. Si sospetta che la causa di tali disturbi sia da ricercare nella sezione di alimentazione carente in filtri, in cui solo i regolatori lineari di tensione (LM7805 per la sezione digitale ed LM7809 per quella analogica) e poche capacità a valle di essi si occupano di filtrare le impurità della rete. Un altro sospettato è la eccessiva riduzione in termini di spazio con cui si è cercato di realizzare il sistema. I componenti sono stati montati uno di fianco all’altro e addirittura sovrapposti quindi potrebbero verificarsi accoppiamenti capacitivi o induttivi. In conclusione tali disturbi sono però ridotti e non pregiudicano affatto il funzionamento ed il raggiungimento delle prerogative preposte, l’attenzione, una volta esaurita l’implementazione di tutte le funzioni e di tutti i componenti in buona qualità (pad e strutture meccaniche comprese), sarà rivolta a migliorare i circuiti di alimentazione del sistema. In definitiva lo strumento è efficace, funzionale e senza gravi difetti di progettazione. 56 10. Appendice 10.1. Indice delle figure Figura Capitolo Titolo 1 2.2 Roland TD-3 2 2.2 Roland TD-6V 3 2.2 Roland TD-20 4 2.3 Modello di batteria acustica 5 4 Schema a blocchi 6 5.1 Circuito per la multiplazione degli ingressi 7 5.2 Circuito per il condizionamento del segnale Risposta di un sensore ad un colpo con e senza circuito di 8 5.2 condizionamento del segnale 9 5.4 Circuito di riconoscimento del contatto 10 5.5 Circuito relativo alla tastiera 11 5.5 Circuito di multiplazione tastiera-contatto 12 5.6 Display LCD alfanumerico 16x2 Confronto tra set di caratteri del controllore per display 13 5.6 utilizzato e set ASCII. 14 5.7 Schema del bus SPI e delle memorie 15 5.9 Circuito per il mixaggio dei suoni interni ed esterni 16 5.10 Circuito di amplificazione audio di potenza 17 6.3 Schema a blocchi del firmware Andamento del segnale a valle del blocco di 18 6.5 condizionamento per un colpo su pad. 19 6.5 Funzionamento del meccanismo della soglia 20 6.5 Imperfezioni delle risposte ai colpi 21 6.5 Imperfezioni dei pad 22 6.5 Schema a blocchi dell’algoritmo di rilevamento dei colpi 23 8 Centralina allo stato attuale 24 8 Centralina, lato sinistro 25 8 Centralina, lato posteriore 26 8 Centralina, lato destro 27 8 Centralina, display ed interno del contenitore 28 8 Batteria al completo con pad di prova 29 8 Scheda principale senza moduli 30 8 Scheda principale con moduli montati Tabella 15: Indice figure 57 10.2. Indice delle tabelle Tabella Capitolo Titolo 1 5 Tecnica per la modifica flessibile dei circuiti 2 5.1 Pinout di HCF4051B 3 5.2 Pinout di LM324 4 5.4 Pinout di LM339 5 5.6 Pinout del display alfanumerico 6 5.6 Instruction set dei controllori per display HD44780 7 5.7 Pinout di M74HC138 8 5.7 Pinout di 25LC1024 9 5.8 Pinout di MCP4921 10 5.10 Pinout di TDA2003 Organizzazione dei pin del microcontrollore e dei 11 5.11 collegamenti coi diversi circuiti del sistema 12 6.2 Lettura di un byte da una memoria parallela 13 6.2 Lettura di un byte da una memoria seriale 14 8 Blocchi circuitali definitivi 15 10.1 Indice figure 16 10.2 Indice tabelle 17 10.3 Termini tecnici e sigle usate 18 10.4 Programmi usati Tabella 16: Indice tabelle 58 10.3. Termini tecnici e sigle usate In seguito si fornirà una lista dei termini tecnici usati, per consentire una più agevole comprensione del testo: Termine Accezione / significato ADC Analog Digital Converter, si tratta di un circuito incaricato di rigenerare un segnale analogico a partire da campioni digitali forniti in ingresso. CHOKE Smorzamento del suono di un piatto con la pressione della mano. DAC Digital Analog Converter, si tratta di un circuito che si occupa di campionamento e quantizzazione di un segnale analogico e fornisce in uscita una sequenza di campioni digitali che ne descrivono l’andamento. FILL Variazioni ai ritmi normali con cui si suona, passaggi sui tom o rullate con accenti particolari. EEPROM Electrically Erasable Programmable Read Only Memory, sono un tipo di memoria non volatile di solo lettura riprogrammabile elettronicamente. EUSART Vedi USART KIT Nelle batterie elettroniche un kit è un set di assegnazioni pad suono. IDE Integrated Development Enviroment, si tratta di un programma atto alla produzione di software in un particolare linguaggio di programmazione in maniera semplice ed efficiente che solitamente integra un editor, un compilatore ed un debugger. LSB Least Signuficant Bit (Byte), è il bit / byte meno significativo (quello di peso 1 / <256) di una parola a più bit / byte MCU Micro Controller Unit, con questo termine si intende il microcontrollore MSB Most Signuficant Bit (Byte), è il bit / byte più significativo (quello di peso maggiore) di una parola a più bit / byte MSSP Master Synchronous Serial Port, è un’interfaccia seriale disponibile sul microcontrollore usato che può operare in modalità SPI o I2C. PAD Nelle batterie elettroniche un pad è un corpo sensorizzato rivestito in gomma su cui colpire con le bacchette per generare i suoni. Alcuni pad più raffinati sono realizzati con pelli come i tamburi acustici. 59 Termine Accezione / significato PDIP Un tipo di package per circuiti integrati, diffuso in ambiente hobbistico a causa della facilità di saldatura dei pin (essi sono molto distanziati data le grosse dimensioni ed inoltre sono veri e propri piedini che possono essere inseriti in fori sulla basetta per semplificare la saldatura). E’ uno dei pochi package saldabili manualmente senza l’uso di complessi e costosi macchinari. PIN Un pin è un “piedino” di un componente elettronico, sono le connessioni tramite le quali si pilota ogni componente. RULLATA Successione di colpi con le bacchette su un tamburo. SD Secure Digital, è un tipo di memoria Flash ad accesso seriale molto diffuso grazie alla popolarità delle fotocamere digitali, le capacità variano da pochi MB a qualche GB (ora come ora sono disponibili SD fino ad 8 GB) USART Universal Synchronous Asynchronous Receiver Transmitter, è un modulo per trasmissioni seriali (sia sincrone che asincrone) presente sul microcontrollore usato in versione EUSART (Enhaced) utilizzabile per comunicare tramite RS232 o con interfacce MIDI. USB Universal Serial Bus, bus seriale di comunicazione molto diffuso sui PC. Tabella 17: Termini tecnici e sigle usate 60 10.4. Programmi usati Nella realizzazione del progetto sono stati usati i seguenti programmi: Programma Scopo Autodesk AutoCAD 2000 Grafica vettoriale 2D e 3D, schemi a blocchi e circuitali, pinout. Corel Photo Paint 7 Grafica bitmap e grafici. Cute PDF Writer Redazione testuale 5Spice Analysis 1.22 Progettazione e simulazione dei circuiti. Syntrillium Cool Edit Pro 2.0 Creazione e modifica suoni, analisi risposte dei pad, graficazione. Microchip MPLAB IDE 7.5 Programmazione, compilazione e debug in assembly. Colt Bootloader Bootloader per il microcontrollore WinPic800 Scrittura del programma sul microcontrollore Microsoft Visual Basic 6.0 Programmazione software per PC per la connessione con la centralina, l’upload dei suoni e l’interazione in generale. BreakPointSoftware Hex Analisi del contenuto delle memorie EEPROM per il Workshop 4.0 debug del firmware Microsoft Word 2000 Redazione testuale. Tabella 18: Programmi usati 61 11. Bibliografia Nella realizzazione del progetto si è attinto a numerose fonti quasi esclusivamente di tipo informatico. Il numero di siti visitati per la creazione di una cultura di base nell’ambito studiato è enorme, in seguito sono elencati le principali fonti e i siti di maggior importanza: [01]: Web http://www.edrum.info/ (30/05/07) Sito contenente schemi , layout ed idee per realizzare una batteria elettronica senza generatore di suoni, con il solo collegamento seriale / MIDI out. Progetto di grande interesse data anche la serietà con cui è stato sviluppato. [02]: Web http://www.microchip.com/ (30/05/07) Sito dell’azienda produttrice dei microcontrollori e delle memorie usate, contiene datasheet sui componenti e MPLAB (l’IDE freeware per sviluppare firmware in assembly) [03]: Web http://www.maxim-ic.com/ (30/05/07) Sito di un’azienda molto nota di circuiti integrati, analogici e digitali, produttrice dei MAX5556 usati nel progetto. Sul sito si trovano datasheet sui prodotti. [04]: Web http://www.st.com/ (30/05/07) Sito dell’azienda produttrice dei circuiti amplificatori, dei multiplexer analogici e dei decoder usati, contiene datasheet sui componenti. [05]: Web http://www.national.com/ (30/05/07) Sito dell’azienda produttrice degli op-amp e dei comparatori utilizzati, nonché dei regolatori lineari di tensione LM7805 ed LM7812. Il sito contiene datasheet sui componenti e note sull’utilizzo di essi. [06]: Web http://www.ti.com (30/05/07) Sito dell’azienza produttrice di integrati, utile per datasheet e confronto di componenti. E’ inoltre una delle aziende leader nell’ambito dei DSP. 62 [07]: Web http://www.sweetwater.com/shop/drums-percussion/ (30/05/07) Rivenditore di strumenti musicali negli Stati Uniti, sito usato per confrontare prezzi e prestazioni di prodotti diversi. [08]: Web http://en.wikipedia.org/wiki/Electronic_drum (30/05/07) Poche informazioni molto generali sulle batterie elettroniche. [09]: Web http://shopping.kelkoo.co.uk/b/a/ssc_152401_electronic_drum_kit.html (30/05/07) Rivenditore di strumenti musicali negli Stati Uniti, sito usato per confrontare prezzi e prestazioni di prodotti diversi. [10]: Web http://www.roland.it/prodotti/batterie_percussioni/default.asp (30/05/07) Sito italiano della Roland, usato per confrontare specifiche tecniche dei diversi prodotti. [11]: Web http://www.yamaha-europe.com/yamaha_europe/english_master/ … … 10_musical_instruments/40_drums/40_electronic_drums/08_dtxplorer/ … … 10_no_series/10_dtxplorer/specs/index.html (30/05/07) Sito europeo della Yamaha, usato per confrontare specifiche tecniche dei diversi prodotti. [12]: Web http://www.sparkfun.com/datasheets/LCD/HD44780.pdf (30/05/07) Datasheet del controller per display alfanumerici Hitachi HD44780 [13]: Web http://home.iae.nl/users/pouweha/lcd/lcd0.shtml (29/09/03) Sito con breve ma completa rassegna di informazioni sui diplay LCD alfanumerici come instruction set, charset e pinout. [14]: Web http://www.doc.ic.ac.uk/~ih/doc/lcd/index.html (29/09/03) Informazioni sui display LCD alfanumerici. 63