Relazione ADC

7
23 gennaio 2014 Mencarelli Simone V B Elettonica e Telecomunicazioni _________________________________________________________________________________ Relazione di sistemi Oggetto : il convertitore analogico digitale del pic 16f887 Schema pic16F887 Introduzione e funzionamento dell’ADC: Il Pic 16f887 possiede internamente un convertitore analogico digitale a 10 bit che sfrutta il metodo di conversione ad approssimazioni successive (il segnale, che deve essere compreso tra Vref- e Vref+, viene comparato con tensioni sempre meno approssimate per 10 volte) L’uscita è quindi un numero binario a 10 bit, che può assumere quindi 2 10 valori diversi con un quanto pari a (Vref+ - Vref- )/2 10 . Il convertitore analogico digitale di questo dispositivo è collegato _________________________________________________________________________________ -1-

description

Relazione su ADC ITIS elettronica e telecomunicazioni lostati riferiti al pic16f887

Transcript of Relazione ADC

23 gennaio 2014Mencarelli SimoneV B Elettonica e Telecomunicazioni_________________________________________________________________________________Relazione di sistemi

Oggetto: il convertitore analogico digitale del pic 16f887Schema pic16F887Introduzione e funzionamento dellADC:Il Pic 16f887 possiede internamente un convertitore analogico digitale a 10 bit che sfrutta il metodo di conversione ad approssimazioni successive (il segnale, che deve essere compreso tra Vref- e Vref+, viene comparato con tensioni sempre meno approssimate per 10 volte) Luscita quindi un numero binario a 10 bit, che pu assumere quindi 210 valori diversi con un quanto pari a (Vref+ - Vref- )/210.Il convertitore analogico digitale di questo dispositivo collegato su 14 ingressi multiplexati su uno stesso sample and hold (che non pu essere bypassato) utilizzato dal convertitore il cui risultato viene memorizzato su i registri ADRESL e ADRESH e pu essere allineato a destra o a sinistra tramite il registro di configurazione ADCON1.ADFM (bit7).Le tensioni di fondoscala possono essere prese sia come interne che come esterne tramite una configurazione via software . Infine il convertitore analogico digitale pu generare un interrupt a gine conversione che pu anche essere utilizzato per il wake-up dalla modalit di Sleep.(tradotto e adattato dal datasheet della Microchip)Configurazione dei registri interessatiNella tabella in figura (dal datasheet) sono riportati tutti i registri interessati nellutilizzo del pic in modalit polling o interrupt.Sono infatti riportati anche i registri di configurazione delle porte e degli interrupt.I registri direttamente interessati nella configurazione e la lettura dellADC sono, invece ADCON0, ADCON1, ANSEL, ANSELH, ADRESH e ADRESL.Qui di seguito vengono presi in considerazione i vari registri singolarmente:ADCON0:Il registro in questione serve ad abilitare lADC, a settare il canale di ingresso e a impostare il divisore di clock per avere un TAD adeguato.Tutti i bit del registro ADCON0 sono normalente (al reset di power-on) posti a 0. Partendo dal Bit 0 sono: B0: E denominato ADON e ponendolo a 1 si attiva il convertitore analogico digitale. B1: E denominato GO/DONE quando settato a 1 si ha lo start conversion. Cio lADC comincia il processo di conversione. Quando la conversione terminata il Bit 1 sar riportato a 0 del microcontrollore. La fine conversione pu anche lanciare un interrupt. B2, B3, B4, B5: Sono denominati rispettivamente CHS0, CHS1, CHS2 e CHS3 servono per selezionare la porta che deve essere collegata allADC al momento della conversione. se per esempio voglio utilizzare il convertitore sul pin RA0 i bit in questione dovranno essere posti tutti a 0. Come gia detto il convertitore analogico digitale multiplexato su 14 ingressi scrivendo un numero tra 0 e 13 in forma binaria sui registri in questione si potr utilizzare la porta corrispondente indicata nello schema (AN0, AN1, . AN13) B6 e B7: Sono denominati rispettivamente ADCS0 e ADCS1 servono a impostare il fattore di divisione del clock per determinare il TAD: il tempo che impiega il convertitore per fare unapprossimazione. Dato che il convertitore a 10 bit dovr fare 10 approssimazioni (successive) pi un tempo per il sample-hold che pu variare a seconda dellimpedenza della fonte del segnale analogico ed altri parametri. In ogni caso il settaggio dei registri in questione per scegliere il TAD pi appropriato pu essere fatto semplicemente seguendo le indicazioni della tabella in figura (i riquadri in grigio sono da considerarsi non appropriati).Tabella presa dal datasheet della MicrochipADCON1:Il regisro ADCON1 contiene 3 bit di configurazione dellADC: B4 e B5: sono denominati VCFG0 e VCFG1. Servono per scegliere le tensioni di fondoscala come pari a Vdd e Vss (alimentazione del pic) o come esterne. se VCFG0=1 allora la Vref+ presa esterna dal pin RA3 (vedi schema) altrimenti se VCFG0=0 la Vref+ uguale a Vdd. Analogamente se VCFG1=0 la Vref- uguale a Vss (GND) cio la massa interna del pic. Altrimenti se VCFG1=1 la Vref- presa estena dal pin RA2. B7: E denominato ADFM e serve per decidere se il risultato della conversione sar allineato a destra o a sinistra nei registri ADRESH e ADRESL che sono entrambi da 8 bit quindi per ogni conversione saranno presenti 8 bit del risultato su un registro e 2 bit sullaltro. Se ADFM=1 allora i 2 bit pi significativi saranno registrati sui primi 2 bit di ADRESH, mentre i restanti 8 saranno registrati in ADRESL. Viceversa se ADFM=0 i 2 bit meno significativi della conversione saranno registrati sugli ultimi 2 bit di ADRESL e i restanti 8 saranno registrati in ADRESH.I bit di ADCON1 sono normalmente (al reset di power-on) posti a 0.ANSEL e ANSELHSono i bit che servono a decidere se un dato input deve essere usato come ingresso analogico o digitale.Ogni bit rappresenta uno dei piedini indicati nello schema come AN 013 partendo dal bit meno significativo di ANSEL che serve a configurare AN0 fino al bit 5 di ANSELH che corrisponde al piedino AN13.Le porte per funzionare devono essere settate come ingressi (1) nei registri TRIS.ANSEL e ANSELH hanno normalmente (al reset di power-on) tutti i bit settati a 1.

Esempi di acquisizioneQui di seguito verr mostrata la configurazione e lutilizzo dei registri sopra spiegati in MicroC:

//CONFIGURAZIONE DEI REGISTRI ANSEL=0x00; ANSELH=0x00; //Tutte le porte sono impostate come digitali ANSEL.B0 = 1; // solo AN0 impostata come analogica TRISA.B0 = 1; // Porta AN0 settata come Input ADCON0.B0=1; // LADC attivato

ADCON0.B2=0; /* Selziono lingresso AN0 tramite i registri CHS0 ADCON0.B3=0;CHS1 ADCON0.B4=0; CHS2 ADCON0.B5=0;e CHS3 di ADCON0*/

ADCON0.B6=0; /* Il clock a 8MHz quindi scelgo un fattore di ADCON0.B7=1; divisione di Fosc/32. Vedi tabella 9-1 */

ADCON1.B7=1; //Il risultato allineato a destra tramite ADFM ADCON1.B5=1; //Vref- presa esterna. usato il registro VCFG1 ADCON1.B4=1; //Vref+ presa esterna. usato il registro VCFG0

/*Per utilizzare lADC in interrupt si devono configurare i seguenti registri*/ INTCON.GIE=1; // abilito interruzioni generali INTCON.PEIE=1; // abilito interruzione periferiche PIE1.ADIE=1; // abilito interruzione ADC

/*in MicroC ansich scrivere B0,B1 etc si pu anche sscivere direttamente il nome del registro per sapere quali sono i bit interessati di ogni registro si pu far riferimento alla tabella 9-2*/

//ACQUISIZIONE DATI DALLADC

/* Qui di seguito uno spezzone di programma che riguarda la conversione e la copia del risultato di conversione in una variabile int */

//MODALITA POLLING volatile unsigned int conversione;//definisco la variabile int ADCON0.B1=1; //Start conversion il bit GO/DONE posto a 1 while(ADCON0.B1=1)//finch GO/DONE non torna a 0 { asm { nop;Non fa niente finch GO/DONE non torna a 1 }} conversione=(ADRESH