realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro...

25
Realizzazione e programmazione di un convertitore digitale/analogico Dipartimento di Ingegneria Industriale e dell’Informazione

Upload: others

Post on 19-Mar-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Realizzazione e programmazione di un convertitore digitale/analogico

Dipartimento di Ingegneria Industriale e dell’Informazione

Page 2: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 2

Convertitore digitale/analogico

Un convertitore digitale/analogico (digital to analog converter) accetta in ingresso una parola digitale di n bit e la converte in una grandezza (tensione) analogica

D/A converter

B0 B1

Bn-1 Va

In generale, il dato analogico all’uscita del convertitore D/A viene inviato ad un circuito di sample and hold

La forma d’onda a “gradinata” viene poi inviata ad un filtro passabasso, che completa la ricostruzione del segnale analogico

Vref

Page 3: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 3

Convertitore digitale/analogico

Il dato analogico all’uscita del convertitore, va, si ottiene in genere attribuendo a ciascuno dei bit che compongono la parola digitale all’ingresso un opportuno peso, dipendente dalla sua posizione

( ) 1 0,B , 2B...2B2B2V

2B...

2B

2BVV

i0

02-n

2n1-n

1nnref

n0

22n

11n

refa

=+++⋅=

=⎟⎠

⎞⎜⎝

⎛ +++⋅=

−−

−−

Si osservi che il valore massimo di Va, Va,max, non è Vref ma

( ) nref

refn

n

ref02-n1-n

nref

maxa, 2VV

212V2...22

2VV −=

−=+++⋅=

dove Vref/2n è il valore analogico corrispondente al bit meno significativo (least significant bit, LSB)

Page 4: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 4

Realizzazione di un sistema che consenta

Obiettivi dell’esperienza

un DAC a resistori pesati, realizzato sulla breadboard

uno strumento virtuale realizzato in ambiente di programmazione LabView con funzione di interfaccia tra il sistema e l’utente

Il sistema dovrà includere

la programmazione di un DAC a 8 bit attraverso 8 delle 24 porte digitali disponibili sulla piattaforma SC2075

il calcolo del valore teorico atteso all’uscita del convertitore sulla base della parola digitale impostata

l’acquisizione del dato analogico all’uscita del convertitore

Page 5: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 5

DAC a resistori pesati

+

-

Vref

Va

S0

S1

Sn-1

R0

R1

Rn-1

Rf

1 0,B ,RRB...

RRB

RRBVV i

0

f0

2-n

f2n

1-n

f1nrefa =⎟⎟

⎞⎜⎜⎝

⎛⋅++⋅+⋅⋅−= −−

Il campione analogico in uscita è dato da

Si commuta su Vref se Bi=1, su GND se Bi=0

Se R0 è la resistenza relativa al LSB, posto Ri=R0/2i, risulta

( ) 1)(2VRRV ,2B...2B2BV

RRV n

ref0

Fmaxa,

00

2n2n

1n1nref

0

Fa −⋅−=⋅++⋅+⋅⋅⋅−= −

−−

Page 6: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 6

Dal

la p

orta

dig

ital

e de

lla

sche

da S

C207

5 R0 = 511kΩ R1 = 243kΩ R2 = 130kΩ R3 =61.9kΩ R4 =33.2kΩ R5 =16.2kΩ R6 = 8.2 kΩ R7 =3.92kΩ Rf=2 kΩ R=2 kΩ C=100 nF VDD=15 V VSS=-15 V

Realizzazione del DAC a resistori pesati

R0

R1

R2

R3

R4

R5

R6

R7

B0

B1

B2

B3

B4

B5

B6

B7

resistenza di compensazione delle correnti di polarizzazione

Bi=0 à 0V

Bi=1 à 5V

TL081

Page 7: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 7

TL081 JFET input OpAmp

Page 8: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 8

TL081 JFET input OpAmp

Page 9: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 9

Pannello frontale

Valore teorico di Va

Controllo per la programmazione della parola digitale (cluster di controlli booleani)

Sezione di acquisizione (del dato analogico)

Sezione di controllo (della parola digitale)

Page 10: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 10

Struttura sequence

Dal punto di vista dello schema a blocchi, lo strumento virtuale LabView può essere realizzato mediante una struttura sequence con tre frame (per aggiungere un frame fare click con il pulsante destro del mouse sulla cornice e selezionare “Add Frame After”). Questa struttura consente l’esecuzione di una serie di istruzioni secondo una sequenza definita dal programmatore (vengono eseguite prima le istruzioni contenute nel frame 0, poi quelle contenute nel frame 1, etc.)

La proposta di utilizzare questa struttura ha il solo scopo di rendere possibile una distinzione temporale tra le tre fasi dell’attività svolta dal programma:

•  programmazione del DAC (frame #0)

•  calcolo del valore teorico del dato analogico all’uscita del DAC (frame #1)

• acquisizione del dato analogico reale (frame #2)

Page 11: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 11

Programmazione del DAC (frame #0)

Measurement I/O -> DAQmx Data Acquisition -> DAQmx Write.vi

contiene informazioni su eventuali errori verificatisi in questo o in precedenti blocchi

Measurement I/O -> DAQmx Data Acquisition -> DAQmx Create Channel.vi

specifica il nome delle linee digitali o il numero identificativo associato alle porte che vengono utilizzate per creare il canale virtuale (Dev1/port0/line0:7)

array di controlli booleani

modalità di raggruppamento delle linee digitali in uno o più canali virtuali (one channel for each line)

DAQmx Create Channel.vi provvede alla configurazione del canale digitale della scheda di acquisizione

DAQmx Write.vi configura le uscite digitali della scheda individuate dal blocco precedente con i dati forniti dall’opportuno blocco di controllo

Page 12: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 12

Calcolo del valore teorico di Va (frame #1)

Il frame #1 dovrà provvedere al calcolo del valore teorico dell’uscita del convertitore D/A sulla base della parola binaria impostata. Per far questo sarà nececssario applicare la relazione già vista:

1 0,B ,RRB...

RRB

RRBVV i

0

f0

6

f6

7

f7refa =⎟⎟

⎞⎜⎜⎝

⎛⋅++⋅+⋅⋅−=

Page 13: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 13

DAQmx Create Channel.vi fornisce alla scheda di acquisizione informazioni riguardanti il tipo e il range dei segnali che deve ricevere in ingresso e il canale da cui deve leggere questi dati

DAQmx Read.vi campiona il segnale proveniente dal canale specificato e riporta il valore misurato

Measurement I/O -> DAQmx Data Acquisition -> DAQmx Create Channel.vi

Canale di ingresso sotto misura (Dev2/ai1)

Limiti attesi per il segnale sotto misura

Measurement I/O -> DAQmx Data Acquisition -> DAQmx Read.vi

Acquisizione del dato analogico reale (frame #2)

Page 14: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 14

Ciclo while

Un ciclo while (si trova nel menu Structures della Functions palette) può essere utilizzato per rendere possibile la conversione in tempo reale della parola digitale (si trova nel menu Structures della Functions palette). Il programma deve consentire l’interruzione dell’acquisizione mediante un interruttore booleano (pulsante “stop”)

terminale di condizionamento del ciclo while – consente l’interruzione del ciclo quando una variabile booleana ad esso collegato assume un determinato valore

Page 15: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 15

Ciclo for

numero di clcli

iterazione

Utile per migliorare l’accuratezza della misura (frame #2) poiché consente di ridurre l’effetto dei disturbi a media nulla sovrapposti alla tensione da misurare

Invece di rappresentare ogni singolo campione acquisito si rappresenta la media di n campioni; di conseguenza la velocità con cui i dati misurati vengono riportati sul grafico si riduce di un fattore n

Page 16: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 16

Suggerimenti e possibili miglioramenti

Può risultare utile ed interessante confrontare il dato teorico con il dato acquisito tramite lo strumento virtuale ed il dato acquisito mediante voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze tra i tre gruppi di dati

Modificare lo strumento virtuale in modo tale che sia in grado di riportare, in forma di tabella numerica in un file ed in forma di grafico sul pannello frontale, la caratteristica ingresso-uscita teorica e misurata del DAC

Modificare lo strumento virtuale in modo tale che sia in grado di fornire, in forma grafica, la non linearità differenziale (DNL) e la non linearità integrale (INL) del DAC

Page 17: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 17

Rappresentazione grafica della caratteristica I/O e di DNL e INL

XY graph (Modern-> Graph ->XY Graph o Classic ->Classic Graph ->XY Graph)

Richiede l’uso di una funzione Bundle (Programming-> Cluster, Class & Variant-> Bundle) per raggruppare in un unico array le variabili indipendente (X) e dipendente (Y)

ingressi in forma di vettore (pari dimensioni)

Suggerimento: per la generazione dei vettori si potrebbero utilizzare i “tunnel” di una struttura for in modalità “indexed”

Page 18: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 18

Scrittura su file

Programming-> Array-> Build Array

2 array 1D in ingresso

1 array 2D in uscita (tabella di datii a 2 colonne)

trasporre l’array 2D? sì

Programming-> File I/O-> Write To Spreadsheet File.vi

Page 19: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 19

Caratteristica ingresso-uscita

Page 20: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 20

Non-linearità differenziale

DNL k( )=Vout k+1( )-Vout k( )LSB

-1, k ∈ 1, 2n-1⎡⎣ ⎤⎦

LSB=VREF

2n

Page 21: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 21

Non-linearità integrale

INL k( )=Vout k( )-k ⋅LSB

LSB, k ∈ 0, 2n-1⎡⎣ ⎤⎦=

=Vout k( )LSB

-k

LSB=Vout 2n-1( )-Vout 0( )

2n-1

Page 22: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 22

ADC ad inseguimento

VX e VDAC sono due tensioni analogiche da acquisire – acquisizione da effettuare in due momenti successivi (la DAQ board ha un solo ADC a bordo)

+

-n n

Vx up/downcounter

DAC

nello strumento virtualeLabVIEW

tensione generata sulla breadboard

SC-2075

LED verdisulla breadboard

sulla breadboard SC-2075

CK

VDAC

Page 23: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 23

Struttura del VI LabVIEW

Porre a 0 tutti i bit di ingresso del DAC. In una struttura Sequence all’interno di un ciclo While

•  acquisire VX

•  acquisire VDAC

•  confrontare VX e VDAC; se VX > VDAC incrementare di un`unità la parola all’ingresso del DAC, altrimenti decrementarla

Alla fine della conversione, i bit di ingresso del DAC sono i bit di uscita dell’ADC.

L’ADC funziona anche quando si fa variare (lentamente) la tensione VX al suo ingresso

Page 24: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 24

ADC ad approssimazioni successive (SAR)

VX e VDAC sono due tensioni analogiche da acquisire – acquisizione da effettuare in due momenti successivi (la DAQ board ha un solo ADC a bordo)

+

-n n

Vx registroSAR

DAC

nello strumento virtualeLabVIEW

tensione generata sulla breadboard

SC-2075

LED verdisulla breadboard

sulla breadboard SC-2075

VDAC

CK

Page 25: Realizzazione e programmazione di un convertitore digitale/analogico · 2017. 9. 26. · voltmetro digitale. Sarebbe opportuno fornire una spiegazione delle (inevitabili) differenze

Programmazione di un DAC 25

Struttura del VI LabVIEW

Acquisire VX. In una struttura Sequence all’interno di un ciclo For (con un numero di cicli pari al numero di bit)

•  porre a 1 il bit più significativo all’ingresso del DAC e a 0 tutti gli altri

•  acquisire VDAC

•  confrontare VX e VDAC; se VX > VDAC lasciare a 1 il bit più significativo, altrimenti azzerarlo

•  porre a 1 il secondo (a partire dal MSB) bit

•  acquisire VDAC

•  confrontare VX e VDAC; se VX > VDAC lasciare a 1 il secondo bit, altrimenti azzerarlo

•  ripetere la medesima operazione sui rimanenti bit.