progettazione e realizzazione di strumento a percussione

Transcript

progettazione e realizzazione di strumento a percussione
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