programming a binary weighted resistor digital to analog converter · 2019-04-04 · programming a...

21
Programming a binary weighted resistor digital to analog converter Dept. of Electrical, Computer and Biomedical Engineering

Upload: others

Post on 14-Mar-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

Programming a binary weighted resistor digital to analog converter

Dept. of Electrical, Computer and Biomedical Engineering

Page 2: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

Programming a binary weighted resistor DAC 2

Digital to analog converter

A digital to analog converter (DAC) converts an n-bit digital word into an analog voltage

D/A converter

B0B1

Bn-1

Va

Generally, the analog level at the DAC output is sent to a sample and hold circuit

The staircase-like waveform is then fed to a low pass filter, completing the reconstruction of the analog signal

Vref

Page 3: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

3

The output voltage at the DAC output, Va, is obtained by assigning to each bit of the input digital word a suitable weight, depending on the bit position in the word

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

2B...

2B

2BVV

i0

02-n

2n1-n

1nnref

n0

22n

11n

refa

=+++×=

=÷øö

çèæ +++×=

--

--

The maximum value for Va, Va,max, is not Vref but

( ) nref

refn

n

ref02-n1-n

nref

maxa, 2VV

212V2...22

2VV -=

-=+++×=

where Vref/2n is the analog value corresponding to the least significant bit (LSB)

Digital to analog converter

Programming a binary weighted resistor DAC

Page 4: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

4

Implementing a system allowing the user to

a binary weighted resistor DAC, assembled on the breadboard

a virtual instrument implemented in the LabView programming environment serving as an interface between the acquisition system and the user

The system should include

program an 8-bit DAC through 8 of the 24 digital ports available on the SC2075 platform

compute the expected theoretical value of the voltage at the DAC output based on the digital word set at the input

acquire the analog voltage at the converter output

Programming a binary weighted resistor DAC

Purpose of the experiment

Page 5: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

5

+

-

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 =÷÷

ø

öççè

æ×++×+××-= --

The output sample is given by

Si switches on Vref if Bi=1, on GND if Bi=0

If R0 is the LSB resistance and Ri=R0/2i, one gets

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

RRV n

ref0

Fmaxa,

00

2n2n

1n1nref

0

Fa -×-=×++×+×××-= -

--

-

Programming a binary weighted resistor DAC

Binary weighted resistor DAC

Page 6: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

6

from

the

dig

ital

por

ts o

f th

e SC

2075

pla

tfor

mR0 = 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 nFVDD=15 VVSS=-15 V

R0

R1

R2

R3

R4

R5

R6

R7

B0

B1

B2

B3

B4

B5

B6

B7

compensating resistance for the op amp input bias currents

Bi=0 à 0V

Bi=1 à 5V

TL081

Programming a binary weighted resistor DAC

Binary weighted resistor DAC

Page 7: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

7Programming a binary weighted resistor DAC

TL081 JFET input OpAmp

Page 8: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

8Programming a binary weighted resistor DAC

TL081 JFET input OpAmp

Page 9: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

9

Front panel

Theoretical value of Va

Control to set the input digital word (cluster of Boolean controls)

Acquisition section (for the DAC analog output)

Control section (for the input digital word)

Programming a binary weighted resistor DAC

Page 10: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

10

As far as the block diagram is concerned, the LabVIEW VI can be implemented by means of a sequence structure including 3 frames (to add a frame, right click on the frame of the structure and select “Add Frame After”). The sequence structure makes it possible to execute a set of instructions according to a user defined time sequence (first the instructions included in frame 0 are executed, then those included in frame 1, etc.)

The only purpose of using this structure is that of introducing a clear time separation between the three tasks of the program:

• DAC programming (frame #0)

• calculation of the theoretical value of the analog voltage at the DAC output (frame #1)

• acquisition of the real voltage sample at the DAC output (frame #2)

Programming a binary weighted resistor DAC

Sequence structure

Page 11: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

11

DAC programming (frame #0)

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

includes information on possible errors in one of the blocks in the chain

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

specifies the name of the digital lines or the ID number of the ports used to create the virtual channel (Dev1/port0/line0:7)

Boolean control array

grouping of the digital lines in one or more virtual channels(one channel for each line)

DAQmx Create Channel.vi is used to configure the digital channel of the data acquisition board (DAQ, on the PC)

DAQmx Write.vi is used to set the value at the digital output channels configured by the previous function

Programming a binary weighted resistor DAC

Page 12: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

12

Calculation of the theoretical value of Va (frame #1)

Frame #1 of the sequence structure will include all the instructions needed to calculate the theoretical value of the DAC analog output based on the digital word set at the DAC input. To do this, use the relationship

1 0,B ,RRB...

RRB

RRBVV i

0

f0

6

f6

7

f7refa =÷÷

ø

öççè

æ×++×+××-=

Programming a binary weighted resistor DAC

Page 13: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

13

Acquisition of the DAC output voltage (frame #2)

Programming a binary weighted resistor DAC

DAQmx Create Channel.vi provides the acquisition board with information about the type and range of the signals to be acquired and about the input channel

DAQmx Read.vi samples the signal from the specified channel and yield the measured value

input channel (Dev2/a1)

expected limits for the signal to be acquired

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

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

Page 14: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

14Programming a binary weighted resistor DAC

While loop

Needed for continuous acquisition of the signal coming from the conditioning circuit (you can find it in the Structures menu from the Functions palette ) – a “stop” button should be included in the virtual instrument to stop the acquisition

loop condition

Page 15: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

15Programming a binary weighted resistor DAC

For cycle

number of cycles

iteration number

We can use a for cycle to reduce the effects of zero average disturbances, therefore improving the measurement accuracy

Instead of representing (in the graph or in the numeric indicator) each individual acquired sample of the signal, we can represent the average value of N samples – the speed at which the measurement result is represented on the graph will decrease by a factor of N

Page 16: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

16

Suggestions and improvements

It might be useful and interesting to compare the theoretical data with the data acquired by the VI and the data measured with a digital voltmeter. What are the reasons for the (unavoidable) differences among the three sets of data?

Modify the VI in such a way that it can graphically display the input-output characteristic of the DAC (both the theoretical and the measured one) on the front-panel and it can write the relevant data to a file in the form of a numerical table

Modify the VI in such a way that it can graphically display the differential non linearity (DNL) and the integral non-linearity (INL) of the DAC

Programming a binary weighted resistor DAC

Page 17: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

17

Graphical representation of the I/O characteristic and of DNL e INL

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

A Bundle function is required (Programming-> Cluster, Class & Variant-> Bundle) to group the independent (X) and dependent (Y) variables in a single array

Input data in the form of vectors (same size)

Suggestion: to generate the data vectors one could use tunnels in “indexed” modes in a for structure

Programming a binary weighted resistor DAC

Page 18: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

18

Writing a file

Programming-> Array-> Build Array

input: 2 1D arrays

output: 1 2D array (2 column data table)

2D array transpose? yes

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

Programming a binary weighted resistor DAC

Page 19: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

19

Input-output characteristic

Programming a binary weighted resistor DAC

Page 20: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

20

Differential non-linearity

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

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

LSB=VREF

2n

Programming a binary weighted resistor DAC

Page 21: Programming a binary weighted resistor digital to analog converter · 2019-04-04 · Programming a binary weighted resistor DAC 2 Digital to analog converter A digital to analog converter

21

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

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

=Vout k( )LSB

-k

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

2n-1

Programming a binary weighted resistor DAC

Integral non-linearity