How to Communicate with the DAC-ADC
In this page I will explain the syntax to communicate with the DAC-ADC.
Every command sent to the DAC-ADC should be a string. Every string should start with the operation to execute and end with the character that determines the end of the string, in this case ‘\r’.
Main Syntax:
[table width=”700px”]OPERATION,(COMMA),DATA (VARIES WITH THE OPERATION) ,(END OF STRING)[/table]
The DAC-ADC AD5764-AD7734 can execute eight operations: “*IDN?”, “*RDY?”, “SET”, “GET_ADC”, “RAMP1″, “RAMP2″, “BUFFER_RAMP”, “CONVERT_TIME”. When the DAC-ADC does not recognized the operation, it return the string “NOP”, which stands for “No Operation”. Below I will explain each operation:
*IDN? and *RDY?
IDN? returns the string “DAC-ADC_AD5764-AD7734″.
[table width=”700px” delimiter=”|”]OPERATION STRING| (END OF STRING)
*IDN?| \r
[/table]
RDY? returns the string “READY” when the DAC-ADC is ready for a new operation.
[table width=”700px” delimiter=”|”]OPERATION STRING| (END OF STRING)
RDY?| \r
[/table]
SET
SET sets a voltage to a channel and returns the channel and the voltage it set.
Example:
[table width=”700px” delimiter=”|”]OPERATION|,|CHANNEL|,|VOLTAGE|(END OF STRING)
SET|,|5|,|3.6|\r
[/table]
- The string above sets the channel 5 to 3.6 volts.
GET_ADC
GET_ADC returns the voltage read by an input channel. Do not confuse with GET_DAC; GET_DAC has not been implemented yet.
Example:
[table width=”700px” delimiter=”|”]OPERATION|,|CHANNEL|(END OF STRING)
GET_ADC|,|5|\r
[/table]
RAMP1
RAMP1 ramps one channel from an initial voltage to a final voltage within an specified number steps and a delay (microseconds) between steps. When the execution finishes, it returns “RAMP_FINISHED”.
Example:
[table width=”700px” delimiter=”|”]OPERATION|,|CHANNEL|,|INITIAL VOLTAGE|,|FINAL VOLTAGE|,|# OF STEPS|,|DELAY (MICROSECONDS)|(END OF STRING)
RAMP1|,|2|,|-8.5|,|4.8|,|1000|,|30|\r
[/table]
RAMP2
RAMP2 is the same as RAMP1 with the difference that RAMP2 ramps two channels. The # of steps is the total number of steps, not the number of steps per channel. Example:
Example:
[table width=”700px” delimiter=”|”]OPERATION|,|CHANNEL 1|,|CHANNEL 2|,|INITIAL VOLTAGE 1|,|INITIAL VOLTAGE 2|,|FINAL VOLTAGE 1|,|FINAL VOLTAGE 2|,|# OF STEPS|,|DELAY (MICROSECONDS)|(END OF STRING)
RAMP2|,|2|,|3|,|-8.5|,|-5.2|,|4.8|,|7.6|,|1000|,|30|\r
[/table]
Timeline of the example above:
[table th=”0″ width=”700px” delimiter=”|”]STEP 1|UPDATES OUTPUT CHANNEL 2|UPDATES OUTPUT CHANNEL 3
DELAY||
STEP 2|UPDATES OUTPUT CHANNEL 2|UPDATES OUTPUT CHANNEL 3
DELAY||
..|..|..
STEP 1000|UPDATES OUTPUT CHANNEL 2|UPDATES OUTPUT CHANNEL 3
[/table]
BUFFER_RAMP
BUFFER_RAMP ramps the specified output channels from the initial voltages to the final voltages and reads the specified input channels in a synchronized manner. It does it within an specified number steps and a delay (microseconds) between the update of the last output channel and the reading of the first input channel.
Examples 1:
[table width=”700px” delimiter=”|”]OPERATION|,|DAC CHANNELS|,|ADC CHANNELS|,|INITIAL VOLTAGES|,|FINAL VOLTAGES|,|# OF STEPS|,|DELAY (MICROSECONDS)|,|#READINGS TO AVG|(END OF STRING)
BUFFER_RAMP|,|023|,|01|,|-9.2,-5.2,2.2|,|4.8,7.6,8.5|,|1000|,|30|,|1|\r
[/table]
Timeline of the example above:
[table th=”0″ width=”700px” delimiter=”|”]STEP 1|UPDATES OUTPUT CHANNEL 0|UPDATES OUTPUT CHANNEL 2|UPDATES OUTPUT CHANNEL 3
DELAY|||
STEP 1|READS INPUT CHANNEL 0|READS INPUT CHANNEL 1|
STEP 2|UPDATES OUTPUT CHANNEL 0|UPDATES OUTPUT CHANNEL 2|UPDATES OUTPUT CHANNEL 3
DELAY|||
STEP 2|READS INPUT CHANNEL 0|READS INPUT CHANNEL 1|
..|..|..|
STEP 1000|UPDATES OUTPUT CHANNEL 0|UPDATES OUTPUT CHANNEL 2|UPDATES OUTPUT CHANNEL 3
DELAY|||
STEP 1000|READS INPUT CHANNEL 0|READS INPUT CHANNEL 1|
[/table]
Examples 2:
[table width=”700px” delimiter=”|”]OPERATION|,|DAC CHANNELS|,|ADC CHANNELS|,|INITIAL VOLTAGES|,|FINAL VOLTAGES|,|# OF STEPS|,|DELAY (MICROSECONDS)|,|#READINGS TO AVG|(END OF STRING)
BUFFER_RAMP|,|12|,|123|,|-4.2,6.6|,|2.3,7.5|,|100|,|50|,|1|\r”
[/table]
Timeline of the example above:
[table th=”0″ width=”700px” delimiter=”|”]STEP 1|UPDATES OUTPUT CHANNEL 1|UPDATES OUTPUT CHANNEL 2|
DELAY|||
STEP 1|READS INPUT CHANNEL 1|READS INPUT CHANNEL 2|READS INPUT CHANNEL 3
STEP 2|UPDATES OUTPUT CHANNEL 1|UPDATES OUTPUT CHANNEL 2|
DELAY|||
STEP 2|READS INPUT CHANNEL 1|READS INPUT CHANNEL 2|READS INPUT CHANNEL 3
..|..|..|
STEP 100|UPDATES OUTPUT CHANNEL 1|UPDATES OUTPUT CHANNEL 2|
DELAY|||
STEP 100|READS INPUT CHANNEL 1|READS INPUT CHANNEL 2|READS INPUT CHANNEL 3
[/table]
- Do not write commas between channels.
CONVERT_TIME
CONVERT_TIME sets the conversion time for the ADC. The conversion time is the time the ADC takes to convert the analog signal to a digital signal. Keep in mind that the smaller the conversion time, the more noise your measurements will have. Maximum conversion time: 2686 microseconds. Minimum conversion time: 82 microseconds.
[table width=”700px” delimiter=”|”]OPERATION|,|CONVERSION TIME (MICROSECONDS)|(END OF STRING)
CONVERT_TIME|,|500|\r
[/table]