Measure a voltage trace.
Module RB8905 is a 1 Mega-sample per second 12-bit analog to digital converter with a 32 kByte on-board data buffer.
The module has a single analog input and a clock input to do a series of data acquisitions. The number of samples to store on-board is programmable.
Module RB8905 contains the following parts:
The ADC can be programmed for bipolar or unipolar use. The input voltage span of the ADC is configured at production time for 10 V or 20 V.
The analog to digital converter IC is an ADC601 manufactured by Burr-Brown. This 12-bit ADC normally converts samples at a rate of 1 Ms/s (900 ns), but it also can convert at a rate of 2 Ms/s (400 ns). In the latter case, only eight bits are determined and this mode of operation is called short-cycle mode (fast mode, 8-bit result).
The number of samples to store on-board can be specified in one of two ways (normal conversion mode assumed):
The number of samples to store on-board can be specified with function rb8905_adc12_setBufferCapacity(). Specifiying zero for the number of samples, or capacity, selects the JMP3 setting. For 256 and more samples, the number of samples is a power of two: 256, 512, 1024 etc.
The module's front-panels look as follows.
+-----------+ +-----------+ | ADC12HS | | ADC12HS | | | | | | clock | | clock | | (o) | | (o) | | | | | | | | | | | | bit07 | | | | (o) | | | | | | | | | | input | | input | | (o) | | (o) | | | | | | RULBUS | | RULBUS | +-----------+ +-----------+
Note that bit07 on the right front-panel provides the signal that indicates the end of a series of data acquisitions, or that indicates that all samples have been read, when reading.
At production time, the ADC is configured for an input voltage range of 10 V or 20 V.
The following table shows the volt-per-bit values for the various input voltage spans.
Voltage span | volt-per-bit bipolar ---------------+-------------------------- 0 .. 10 V | 2.442002 mV no -5 .. 5 V | 2.442002 mV yes -10 .. 10 V | 4.884004 mV yes
Note that when the ADC's fast conversion mode (8-bit result) is used, the input voltage span is reduced with a factor of 16 (2^4). See rb8905_adc12_getMinInputVoltage() and rb8905_adc12_getMaxInputVoltage().
rb8905_adc12 "name"
{
address = 0xBC
volt_per_bit = 2.442002 m
}
When the Rulbus configuration file is read, an ADC is configured as follows:
There are functions to set the conversion mode, to set the input voltage polarity, to set the number of samples to acquire and to read the input as ADC- value or as voltage at the ADC's input.
#define N 512 int32 handle; int32 nread; float32 trace[ N ]; rb8905_adc12_open( &handle, "adc" ); rb8905_adc12_setBufferCapacity( handle, N ); rb8905_adc12_arm(); while ( !rb8905_adc12_isReady( handle ) ) wait(); rb8905_adc12_readVoltage( handle, trace, N, &nread ); rb8905_adc12_close( handle );
Open and close | |
EXPORT int32 RDL_API | rb8905_adc12_open (int32 *pHandle, CCstr name) |
open an ADC. | |
EXPORT int32 RDL_API | rb8905_adc12_close (int32 handle) |
close an ADC. | |
Data acquisition | |
EXPORT int32 RDL_API | rb8905_adc12_arm (int32 handle) |
arm ADC for data-acquisition; a sample is taken each clock-pulse. | |
EXPORT int32 RDL_API | rb8905_adc12_isReady (int32 handle, int32 *pFlag) |
true if all samples have been measured or if all samples have been read-out. | |
EXPORT int32 RDL_API | rb8905_adc12_readVoltage (int32 handle, float32 *pVoltage, int32 nelem, int32 *nread) |
read nelem elements as voltage from the on-board data buffer, pass number of elements actually read in nread; note that the voltage datatype is float32. | |
EXPORT int32 RDL_API | rb8905_adc12_readValue (int32 handle, int16 *pValue, int32 nelem, int32 *nread) |
read nelem elements as value from the on-board data buffer, pass number of elements actually read in nread; the 8-bit/12-bit unipolar samples are presented as (unsigned) magnitude codes, bipolar values are presented as offset binary codes; note that the value datatype is int16. | |
On-board buffer | |
EXPORT int32 RDL_API | rb8905_adc12_getBufferCapacity (int32 handle, int32 *pCapacity) |
get the number of samples to acquire in the on-board buffer. | |
EXPORT int32 RDL_API | rb8905_adc12_getJmp3BufferCapacity (int32 handle, int32 *pCapacity) |
get the JMP3 setting for the number of samples to store on-board. | |
EXPORT int32 RDL_API | rb8905_adc12_setBufferCapacity (int32 handle, int32 capacity) |
set the number of samples to acquire in the buffer; use JMP3 setting when zero is specified. | |
Configuration | |
EXPORT int32 RDL_API | rb8905_adc12_isFastMode (int32 handle, int32 *pFlag) |
true if fast (short-cycle) mode is selected (8-bit data). | |
EXPORT int32 RDL_API | rb8905_adc12_setFastMode (int32 handle, int32 isfast) |
set converter to fast or short-cycle mode (8-bit data, isfast is true), or set converter to normal mode (12-bit data, isfast is false). | |
EXPORT int32 RDL_API | rb8905_adc12_isUnipolarMode (int32 handle, int32 *pFlag) |
true if unipolar mode is selected. | |
EXPORT int32 RDL_API | rb8905_adc12_setUnipolarMode (int32 handle, int32 isunipolar) |
set converter to unipolar mode (isunipolar is true), or set converter to bipolar mode (isunipolar is false). | |
EXPORT int32 RDL_API | rb8905_adc12_getVoltperbit (int32 handle, float32 *pVpb) |
get the ADC input sensitivity configuration. | |
EXPORT int32 RDL_API | rb8905_adc12_getVoltageSpan (int32 handle, float32 *pSpan) |
get the ADC input voltage span. | |
EXPORT int32 RDL_API | rb8905_adc12_getOffsetVoltage (int32 handle, float32 *pVoltage) |
get the ADC offset voltage. | |
EXPORT int32 RDL_API | rb8905_adc12_getMinInputVoltage (int32 handle, float32 *pVoltage) |
get the lowest acceptable ADC input voltage; takes mode settings into account. | |
EXPORT int32 RDL_API | rb8905_adc12_getMaxInputVoltage (int32 handle, float32 *pVoltage) |
get the highest acceptable ADC input voltage; takes mode settings into account. |