TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti...

17
Tesina esame di stato 2015 TASTIERA ELETTRONICA CONTROLLATA DA UN MICROPROCESSORE Marchi Michele, Sidibe David 5aeln

Transcript of TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti...

Page 1: TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti verranno acquisiti dal micro e ... numerica deve controllare una grandezza di tipo analogico.

Tesina esame di stato 2015

TASTIERA ELETTRONICA CONTROLLATA DA UN MICROPROCESSORE

Marchi Michele, Sidibe David

5aeln

Page 2: TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti verranno acquisiti dal micro e ... numerica deve controllare una grandezza di tipo analogico.

Indice

Descrizione progetto pag. 1

Schema a blocchi pag. 2

Schema elettrico pag. 3

o Micro dsPIC33FJ128MC706A pag. 4

o Alimentazione pag. 6

o Pulsanti pag. 6

o DAC MCP4822 pag. 7

Amplificatore LM386 pag. 10

Software pag. 10

Conclusioni pag. 14

Page 3: TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti verranno acquisiti dal micro e ... numerica deve controllare una grandezza di tipo analogico.

Descrizione progetto

Il nostro obiettivo era quello di realizzare una tastiera elettronica controllata da un microprocessore e composta da due ottave, più precisamente la quarta e la quinta. Un'ottava è un intervallo di 8 note (do, re, mi, fa, sol, la, si, do) più 5 semitoni (diesis), posizionate a diverse frequenze nella scala musicale. Nel nostro caso, per motivi di spazio, abbiamo dovuto tralasciare l’ ultimo Do di entrambe le ottave, in modo da ottenere 7 note e 5 semitoni per ottava. La nostra risulta quindi una tastiera composta da 14 note più 10 semitoni. Per quanto riguarda le frequenze attribuite a ciascuna nota, si è stabilito che la nota La della quarta ottava corrisponda ad una frequenza di 440 Hz, mentre per calcolare la frequenza delle altre note si usa la seguente formula:

fnota = 440 * 2n/12 (dove n è la distanza della nota scelta dalla nota La della quarta ottava)

Se ad esempio volessimo ricavare la frequenza della nota Fa# della quarta ottava la formula risulterebbe:

fnota= 440 * 2-3/12 = 369,99 Hz

Di seguito uno schema riportante le frequenze delle 13 note della quarta ottava:

Page 4: TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti verranno acquisiti dal micro e ... numerica deve controllare una grandezza di tipo analogico.

Pag. 1

Schema a blocchi

I tasti rappresentano il nostro sistema di input.

Premendoli, sceglieremo quale nota verrà suonata.

I segnali dei tasti premuti verranno acquisiti dal micro e

in seguito verranno creati e rielaborati i campioni digitali della

nota scelta.

Conversione del segnale digitale in ingresso in un segnale

analogico.

Amplificazione del segnale analogico (regolazione volume).

Le casse (speakers) emetteranno le note scelte.

TASTI

MICRO

CONTROLLORE

DAC

AMPLIFI

CATORE

Page 5: TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti verranno acquisiti dal micro e ... numerica deve controllare una grandezza di tipo analogico.

Pag. 2

Schema elettrico

Page 6: TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti verranno acquisiti dal micro e ... numerica deve controllare una grandezza di tipo analogico.

Pag. 3

Micro dsPIC33FJ128MC706A

Il pic da noi utilizzato necessita di una tensione di alimentazione di 3.3V, abbiamo quindi

dovuto convertire i 5V tramite l' LM1117.

Caratteristiche principali:

RD10RD9

RD11

RE0RE1RE2RE3RE4RE5RE6RE7

RF1RF0

RF2RF3

RF5RF4

RG3RG2

RF6

RG7RG6

RG9RG8

R27

100

U?

dsPIC33FJ128MC706A

PWM3H/RE51

PWM4L/RE62

PWM4H/RE73

SCK2/CN8/RG64

SDI2/CN9/RG75

SDO2/CN10/RG86

MCLR7

SS2/CN11/RG98

Vss

9

Vdd

10

AN5/QEB/IC8/CN7/RB511 AN4/QEA/IC7/CN6/RB412 AN3/INDX/CN5/RB313 AN2/SS1/CN4/RB214 PGEC3/AN1/Vref -/CN3/RB115 PGED3/AN0/Vref +/CN2/RB016 PGEC1/AN6/OCFA/RB6

17PGED1/AN7/RB718

AV

dd

19

AV

ss

20

U2CTS/AN8/RB821

AN9/RB922

TMS/AN12/RB1023

TDI/AN13/RB1124

Vss

25

Vdd

26

TCK/AN12/RB1227

U2RTS/AN14/RB1429

AN15/OCFB/CN12/RB1530

U2RX/SDA2/CN17/RF431

U2TX/SCL2/CN18/RF532

U1TX/SDO1/RF333U1RX/SDI1/RF234

U1RTS/SCK1/INT0/RF635

SDA1/RG336SCL1/RG237

Vdd

38

OSC1/CLKIN/RC1239

OSC2/CLKO/RC1540

Vss

41

IC1/FLTA/INT1/RD842

IC2/U1CTS/FLTB/INT2/RD943

IC3/INT3/RD1044

IC4/INT4/RD1145

OC1/RD046

PGED2/SOSCI/T4CK/CN1/RC1347

PGEC2/SOSCO/T1CK/CN0/RC1448

OC2/RD149

OC3/RD250

OC4/RD351

OC5/IC5/CN13/RD452

OC6/IC6/CN14/RD553

OC7/CN15/RD654

OC8/UPDN/CN16/RD755

Vca

p/V

dd

co

re56

C1RX/RF058

C1TX/RF159

PWM1L/RE060

PWM1H/RE161

PWM2L/RE262

PWM2H/RE363

PWM3L/RE464

TDI/AN13/RB1328

Vdd

57

C?.1uF

C?10uF

C25.1uF

C?.1uF

JP1

HEADER 5

12345

R2610K

C?.1uF

C?.1uF

D3

1N4148 SMD

C?.1uF

C261nF

RB0

RB3RB2RB1

RB8RB5RB4

RB11

RB9RB10

RB13RB12

RC12

RB14RB15

RC15

RC13

RD1RD0

RC14

RD5

RD2RD3

RD7

RD4

RD8RD9

RD6

RE0

RD10RD11

RE2RE1

RE6RE7

RE3

RF0

RE5RE4

RF2RF1

RF5RF4RF3

RG3RG2

RF6

RG7RG6

RG9RG8

3.3V

3.3V

PROGRAMMAZIONE E

DEBUG

RB7RB6

RB2RB1RB0

RB4RB3

RB9RB8RB5

RB11RB10

RB14RB13RB12

RC12

RB15

RC15RC14RC13

RD2RD1RD0

RD4RD3

RD7RD6RD5

RD8

Architettura 16-bit

Velocità CPU 40 MIPS

Tipo di memoria Flash

Memoria programmabile 128 KB

RAM 16,384 KB

Piedini totali 64

Page 7: TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti verranno acquisiti dal micro e ... numerica deve controllare una grandezza di tipo analogico.

Comunicazione digitale periferica 2-SPI Pag. 4

Il pic che abbiamo utilizzato fa parte della famiglia dei DSC (Digital Signal Controller). I membri di tale famiglia integrano delle innovative caratteristiche riducendo contemporaneamente i consumi, e sono inoltre molto più veloci dei vecchi micro. In particolare, il nostro pic è molto veloce nelle risposte degli interrupt e offre periferiche di comando come il PWM o il watchdogs molto precise, anche se noi non le abbiamo utilizzate. I pic della famiglia DSC sono utilizzati in una vasta gamma di applicazioni, ma la maggior parte sono utilizzati per il controllo del motore, conversione di potenza e applicazioni di elaborazione di un sensore. Attualmente i DSC vengono commercializzati come le tecnologie verdi per il loro potenziale di ridurre il consumo energetico nei motori elettrici e alimentatori. La struttura dell' integrato è davvero ridotta, 12 mm x 12 mm, con un totale di 64 piedini. Date le sue piccolissime dimensioni ci siamo dovuti fornire di un adattatore per la nostra basetta a mille fori.

Porte utilizzate: Abbiamo utilizzato tutti ingressi digitali per la lettura dei tasti: Da RB0 a RB5 Da RB8 a RB15 Da RD0 a RD7 RC12 e RC15 Per programmare il pic e per effettuare il debug con l’ ICD3 abbiamo utilizzato le seguenti porte: RB6 e RB7, corrispondenti a PGEC1 e PGED1 Per la comunicazione SPI con il Dac abbiamo utilizzato le seguenti porte: RF6 per il segnale del clock RF3 comunicazione SDI RE5 per il chip set RG5 per il latch del DAC Non abbiamo utilizzato l’ oscillatore al quarzo perché l oscillatore interno è sufficientemente veloce. Sul piedino MCLR abbiamo inserito un circuito di precauzione con un diodo 1N4148, una resistenza R26 e un condensatore C25. Questi componenti sono necessari per prevenire eventuali sovratensioni provenienti dal piedino 1 dello zoccolo di programmazione, che potrebbero influenzare l' alimentazione del circuito.

Timers 9 x 16-bit 4 x 32-bit

Page 8: TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti verranno acquisiti dal micro e ... numerica deve controllare una grandezza di tipo analogico.

Pag. 5

Alimentazione

Per far fronte al range di funzionamento del nostro micro compreso tra 3 e 3.6V abbiamo dovuto utilizzare l' LM1117. Esso si tratta di un regolatore di tensione grazie al quale possiamo diminuire la tensione in entrata Vin, nel nostro caso 5V, ad un valore Vout a scelta tra 1.8V, 2.5V, 2.85V, 3.3V o 5V. La Vref applicata al resistore R1 è di 1.25V, come suggerito dal datasheet, e genera una corrente costante I1. In seguito la corrente I1 attraversa il resistore R2 e possiamo così, attraverso la regolazione dei due resistori impostare la Vout ad un valore desiderato. Nel nostro caso per trasformare la Vin da 5V a 3.3V abbiamo impostato R1 a 110 Ω e R2 a 180Ω. Sostituendo tali valori alla formula di seguito riportata, e tenendo presente che la Iadj è tendente a 0, si nota come Vout = 3.3:

Vref (1+

Pulsanti

I segnali digitali provvenienti dall'

alimentazione a 3.3V passano attraverso i

tasti e successivamente su una resistenza di

pull-down da 10k per garantire l' ingresso

logico del pic.

Il valore delle resistenze di ciascun pulsante è

stato impostato a 10k poiché, anche se

R3210K

SW8

SW PUSHBUTTON

VCC

DO

Page 9: TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti verranno acquisiti dal micro e ... numerica deve controllare una grandezza di tipo analogico.

venissero premute più note insieme, la somma di tutte le correnti deve stare entro certi

limiti per evitare il danneggiamento del micro.

Pag. 6

DAC MCP4822

Cenni riguardanti i DAC:

Il Digital to Analog Converter (DAC) è un componente elettronico in grado di produrre in uscita un determinato livello di tensione o di corrente, in funzione di un valore numerico al suo ingresso.

Una larga diffusione ad uso domestico dei DAC si ha nei riproduttori digitali di suoni, nel controllo dell'apertura del diaframma nelle macchine fotografiche, nei controlli digitali (volume, luminosità) dei televisori e in tutte quelle situazioni nelle quali un'informazione numerica deve controllare una grandezza di tipo analogico.

Una delle caratteristiche da tenere maggiormente in considerazione nei DAC è la risoluzione. Si passa dagli 8 bit (256 livelli di tensione) dei DAC più semplici (telecomandi ecc.), ai 12 bit per i controlli di precisione (strumenti di misura, multimetri, oscilloscopi), ai 16 bit per i riproduttori musicali ad alta fedeltà, fino ad arrivare al DVD, con i suoi 24 bit di risoluzione. All'aumentare della risoluzione corrisponde però un maggior numero di elaborazioni per ottenere la tensione d'uscita; in altre parole, più è elevata la risoluzione del DAC e più la sua elaborazione ne risulterà rallentata.

Nel nostro caso abbiamo utilizzato il DAC MCP4822 per convertire i dati della sinusoide in uscita del pic in un segnale analogico.

Page 10: TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti verranno acquisiti dal micro e ... numerica deve controllare una grandezza di tipo analogico.

pag. 7 Le principali caratteristiche del nostro DAC sono:

n° bit: 12 bit

Vref: 2,048 V

Tensione di alimentazione: 2.7 - 5.5 V

INL: ± 2 LSB

DNL: ± 0.2 LSB Il massimo errore di quantizzazione, secondo la seguente formula, è di circa 0.00025.

dove N=

Il valore dell' LSB, cioè del bit meno significativo, è di 0.5mV, ovvero il valore del quanto.

L' MCP4822 presenta un errore di offset di circa ±0.02%, ossia potremmo trovare un errore di più o meno 1.024mV. Altri parametri da tenere in considerazione sono gli errori di INL e DNL. L' INL è il massimo spostamento tra la caratteristica della curva reale e quello della retta ideale, mentre il DNL è la massima variazione rispetto alla variazione ideale al cambio del bit meno significativo.

L' INL e il DNL devono essere compresi tra

e -

per garantire la monotonia della

mia funzione.

Page 11: TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti verranno acquisiti dal micro e ... numerica deve controllare una grandezza di tipo analogico.

IL settling time, il tempo di assestamento, è un altro parametro importante e descrive il tempo necessario alla Vo per mantenersi in una frazione del valore finale. Nel nostro caso corrisponde a 4.5 µs. pag. 8

Il tipo di interfaccia che abbiamo utilizzato è la SPI (Serial Peripheral Interface). Questa connessione presenta un master, ovvero il micro, e uno o più slave, nel nostro caso solamente uno ossia il dac, collegati tra di loro attraverso 4 segnali:

o SCK (Serial Clock): clock seriale che scandisce gli istanti di emissione e di lettura dei bit sulle linee di dati. È un segnale emesso dal master ed è quindi quest'ultimo a richiedere di volta in volta la trasmissione di un segnale.

o SDI (Serial Data Input): linea attraverso cui il dispositivo (master o slave) riceve il dato seriale emesso dalla controparte.

o SDO (Serial Data Output): linea di output di dato. o CS(Chip Select): emesso dal master per scegliere con quale dispositivo slave vuole

comunicare. Il bus di dati è di tipo seriale sincrono e la trasmissione e ricezione può avvenire contemporaneamente.

Page 12: TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti verranno acquisiti dal micro e ... numerica deve controllare una grandezza di tipo analogico.

pag. 9

Amplificatore LM386

Questo componente è un circuito integrato con un operazionale al suo interno. All' uscita del dac c' è un condensatore di accoppiamento da 1uF per collegarsi al circuito in figura. Questo componente è stato usato per amplificare la piccola tensione che troviamo in uscita al dac. Allo schema fornito dal datasheet sono stati sostituiti vari componenti essenzialmente per una questione di disponibilità del materiale. Ad esempio è stato cambiato il condensatore sul piedino numero 8 con uno

più piccolo da 1uF poiché con il valore imposto in precedenza produceva troppa distorsione. Il condensatore posto di seguito alla resistenza sul piedino 5 è stato invece sostituito da uno da 100nF mentre l' ultimo condensatore da 250uF è stato sostituito da uno da 220 uF.

Software

IL caricamento del software nel PIC dal PC avviene tramite un programmatore esterno, come ad esempio il Pick-it o l ICD3. L interfaccia software invece viene fornita dalla Microchip stessa: MPLAB X infatti, oltre a permettere lo sviluppo del software, offre anche la possibilità di lanciare il debug, ossia di eseguire le istruzioni una alla volta per individuare eventuali errori nel funzionamento del software. La parte principale del programma scritto in linguaggio C è su un file chiamato main. Al programma principale è stato necessario includere delle librerie di intestazione, in cui sono dichiarate le funzioni standard di input/output del C. #include <xc.h> #include <stdio.h> #include <string.h>

Page 13: TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti verranno acquisiti dal micro e ... numerica deve controllare una grandezza di tipo analogico.

#include <math.h> #include <stdbool.h> #include <stddef.h> pag. 10 #include <stdint.h> #include "Spi.h" #include "Rout.h" #include "Menu.h" #include "tglPin.h" #include "Tast.h" #include "Main.h" All' inizio del programma vengono impostati I vari parametri dell' oscillatore interno, nel nostro caso viene configurato a 40 MHz. La frequenza a cui opera il dispositivo è:

Fcy =

Sono stati poi impostati i vari bit per la configurazione di N1 del prescaler, N2 del postscaler e l' M, il moltiplicatore del PLL.

Fosc = Fn

,

La frequenza nominale è di 7.37KHz. Per prima cosa è stata creata una funzione per la lettura dei tasti attraverso uno switch. Nel primo stato viene presupposto che nessun tasto sia premuto, successivamente invece, nel secondo stato, viene inserita un' attesa dell' antirimbalzo. A questo punto se un tasto viene premuto viene ritenuto valido. Per finire è presente la decodifica e la lettura del tasto per sapere quale tasto è stato premuto, il quale viene messo all' interno di una variabile. Sono stati poi inizializzati dei prototipi delle funzioni dei due timer: void Init_Timer6( void ); // TIMER A 2 ms void Init_Timer8(void); // TIMER IN FREE RUNNING PER INTERVALLO CONTROLLI IL PRIMO TIMER void Init_Timer6( void ) T6CON=0; // IL TIMER viene RESETTATO IFS2bits.T6IF = 0; // viene resettato l interrupt del timer1 IPC11bits.T6IP = 2; // priorità dell' interrupt di livello 3 TMR6= 0x0000; PR6 = 40000; // periodo del registro Timer1 = 1ms IEC2bits.T6IE = 1; // Abilita interrupt del Timer6

Page 14: TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti verranno acquisiti dal micro e ... numerica deve controllare una grandezza di tipo analogico.

T6CONbits.TON = 1; // Abilita il conteggio del Timer6 pag. 11 Queste impostazioni servono per la gestione dei tempi con la comunicazione con lo slave, ovvero il dac. Il timer 8 lo abbiamo invece utilizzato per una semplice divisione tra la frequenza di del clock fissata a 40 MHz e la frequenza di campionamento fissata a 22kHz. void Init_Timer8( void ) T8CON=0; // TIMER RESET IFS3bits.T8IF=0; TMR8= 0x0000; PR8=TIMER8LOAD; // IEC3bits.T8IE = 1; // Abilita interrupt del Timer8 T8CONbits.TON = 1; // Abilita il conteggio del Timer8 In seguito questi interrupt vengono gestiti attraverso la SIR (service interrupt routine) in

generale, l'utente deve azzerare il flag interrupt posto nell' adeguato registro IFSx per la

fonte di interrupt che SIR gestisce. In caso contrario, il SIR sarà attivato di nuovo dopo

l'uscita dalla routine. Quindi il SIR controlla soltanto le interruzioni del programma.

Il SIR invece per l' interrupt del timer8 sostanzialmente permette di avere una struttura per

le note con il valori di ogni nota e il numero di campioni.

IFS3bits.T8IF = 0; //reset timer tglPin(); Acc=0l; nSum=1; for(i=0; i < NUMNOTE;i++) if (Note[i].Enabled) k=Note[i].Index; l=Note[i].Limit; data=Note[i].Camp[k++]; if (k >=l) k=0; Note[i].Index=k;

Page 15: TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti verranno acquisiti dal micro e ... numerica deve controllare una grandezza di tipo analogico.

pag. 12 Acc+=(long)data; // Aggiunge alla variabile a sinistra il valore a destra

nSum++; data =(int) (Acc / nSum); LoadDac(data + 2047); Da qui si è deciso che ogni singola nota avrà un numero massimo di 200 campioni e la frequenza di campionamento per rispettare il teorema di Shennon è stata fissata a 22Khz, cioè almeno il doppio della F massima. Poi è stata inizializzata la tabella per le note attraverso un ciclo for in cui viene fatta una semplice divisione tra la frequenza di campionamento e la frequenza di ogni singola nota. Così abbiamo trovato i campioni per ogni nota. Viene creato poi l' angolo di 2π pari a 360° comprendente il primo semicerchio positivo e il secondo semicerchio negativo. Adesso c' è un piccolo step riguardante l'angolo: viene fatta una semplice divisione tra l'angolo giro completo e i campioni trovati prima per ogni nota. Successivamente viene controllato se il numero di campioni per nota non supera il numero 200, precedentemente fissato per il numero massimo di campioni, così attraverso un altro ciclo for inizio a ricostruire i vari valori della sinusoide che voglio comporre per le varie note. È da ricordare che il dac è a 12 bit quindi ho 4096 livelli possibili da assumere per la sinusoide. Quindi vengono utilizzati 2048 valori per la parte positiva e 2048 per la parte negativa.

for (i=0;i < NUMNOTE;i++)

Nstep=(int) (((float) FCAMP / (float)tabNote[i]) + 0.5 ); // CAMPIONI PER NOTA StepAngolo=(2.0 * pi) / (float) Nstep; //360°/campioni Angolo=0; if ( Nstep < STEPNOTE) for (k=0; k < Nstep;k++) tmp=(float) MAXDAC * sin(Angolo); Note[i].Camp[k]=(int) tmp; Angolo+=StepAngolo; // Aggiunge alla variabile a sinistra il valore a destra Note[i].Limit=Nstep; Note[i].Index=0;

Page 16: TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti verranno acquisiti dal micro e ... numerica deve controllare una grandezza di tipo analogico.

Note[i].Enabled=false; pag. 13

CONCLUSIONI

La scheda realizzata funziona correttamente ed è stata testata per quanto riguarda gli ingressi digitali e l' uscita del dac. Il pic inoltre è stato correttamente programmato con l' ICD3 . Durante l esperienza sono emerse alcune difficoltà riguardanti le resistenze di pull-down che hanno un maggior consumo di corrente. Ma tutto sommato sono la stessa cosa per questo tipo di applicazioni. Inoltre sono state apportate alcune modifiche esterne riguardanti la tensione di alimentazione per i tasti. Inizialmente erano stati portati due fili esterni attraverso un header, in seguito però per motivi di spazio sono stati spostati attraverso un bus di cavi.

Page 17: TASTIERA ELETTRONICA CONTROLLATA DA UN … · 2015. 11. 20. · I segnali dei tasti premuti verranno acquisiti dal micro e ... numerica deve controllare una grandezza di tipo analogico.

pag. 14