Multi-Channel DAC

User Commands and Description

Multi-Channel DAC home
User Commands and Code Description PDF

The Multi-Channel DAC has 8 independent dac channels. Each channel has its own power supply and is electrically isolated from the other channels.

Channels 1 and 2 are 18-bit unipolar with an output range of 0 to 10V. A change of 1 lsb of the 18-bit dac produces a change in the output voltage of 10/262144 = 0.000,038,147V or ~38uV.

Channels 3 through 8 are 16-bit bipolar with an output range of -10V to +10V. A change of 1 lsb of the 16-bit dac produces a change in the output voltage of 20/65536 = 0.000,305,176V or ~305uV.

Commands are sent from a host computer via a simple 3 wire RS-232 interface. It is also possible to electrically isolate the host computer from the Multi-Channel DAC via the fiber optic interface.

The components of the fiber optic interface are the interface box, wall transformer, and a 10 meter duplex fiber cable.

COMMANDS

In this list the '!' character is used to represent a carriage return.

Some of the key commands are single keystroke, i.e. no carriage return is required. Commands that have a data field require a carriage return.

All dac data fields are hexadecimal.

Channels 1 and 2 are 18-bit and require a full 24-bit word even though the most significant bits are always zero. For example the maximun hex value for channel 1 or 2 is 03FFFF.

Channels 3 through 8 are 16-bit and require a full 16-bit word. For example the maximun hex value for channel 3 is FFFF.

Commands are not case sensitive, but all commands are echoed as uppercase characters.

COMMAND LIST

The STATUS command I reports the value of each of the dacs.

:I
:STATUS: BDAC 2:50 PM 12/23/2004
C1.... C2.... C3.. C4.. C5.. C6.. C7.. C8..
000000 000000 8000 8000 8000 8000 8000 8000
:

The HELP command H returns the list of commands.

:H
H-HELP I-STATUS -RESET
C# xxxxxx or C# xxxx or C#
:

16-bit Commands

C3! ... report channel 3 dac value, example C3=FFFF.

C3 0123! ... change channel 3 dac to '0123'

Note - A single SPACE character is the delimiter between the channel number and the dac data field.

18-bit Commands

Note - The 18-bit dacs are in fact two 16-bit dacs. The two dacs are electrically summed to provide the 18-bit resolution. For channel 1 the two dacs are identified as C1A and C1B. Each lsb - least significant bit from C1B is 1/1000 of the value of each lsb of C1A.

The user does not see this in normal operation, but the two 16-bits dacs that make up channels 1 and 2 can be addressed indiviually. More about this later.

C1! ... report Channel 1 dac value.

When the dac value is returned an '=' character is placed between the channel number and the reported value.
For Example: C1=03FFFF

C1 01F0DC! ... change channel 1 dac to '01F0DC'

When a command is sent to one of the 18-bit dacs the mcu determines the code to send to the two 16-bit dacs.

Individual 16-bit dacs inside the 18-bit channels.

One can indiviually address the 16-bit dacs that make up the 18-bit dac.

Each bit of the LSD of C1 is 1/1000 of the value of each bit of the MSD - Most Significant DAC (C1A) of C1.

The 2 lsbs of C1 correspond to 1/2 and 1/4 of 1 lsb of the MSD of C1. The 4 possible combinations of the 2 lsbs of C1 are zero, 1/4, 1/2, and 3/4 of 1 lsb of the MSD.

In the example above the 2 lsbs of C1 are set so the LSD provides 3/4 of 1 lsb of the MSD, or 3*250 = 750 or a hexadecimal value of 02EE.

One can make changes to C1A or C1B without changing the value stored for C1, but if this is done the value displayed for C1 is no longer an accurate indication of the output voltage for this dac channel. To indicate this the '*' character is placed after C1 or C2 (the two 18-bit dacs).

Take a look at a C1 command and the values set in C1A and C1B.
C1 031224! C1=031224 .... 0000 0011, 0001 0010, 0010 0100
C1A=C489 ..... 1100 0100, 1000 1001
C1B=0000 ..... 0000 0000, 0000 0000

Now, change C1 so that the 2 lsbs are set, i.e. C1=31223!
:C1 031223!
:C1=031223
:C1A=C488
:C1B=02EE

Now, round C1B up to C1B=0300! and take a look again.

:C1=031223
:C1A=C488
:C1B=02EE
:
:C1B 0300!
:C1=031223*
:C1A=C488
:C1B=0300
:STATUS: BDAC 2:50 PM 12/23/2004 04:59:24
C1.... C2.... C3.. C4.. C5.. C6.. C7.. C8..
031223* 000000 8000 8000 8000 8000 8000 8000
:

Notice the '*' after the C1 value. This indicates that either C1A or C1B are different from the mcu calculated value.

Multi-Channel DAC home