Acquisition Control Software

A program was written in C++ and the QT framework to provide a user interface for control of the data capture process. This has been designed to allow control of individual channels, calibration, programmed data capture (using the ADC Once command) and independent data capture in which the DAU may be disconnected from the PC and reconnected later for data retrieval. Refer to the detailed manual for more information.

If an unprogrammed microcontroller is inserted into the microprocessor module, it must be programmed through the SPI interface with either a bootloader or with the DAU firmware. In the former case a Serial Programmer program must then be used to load the DAU firmware through the serial interface. The DAU is then ready to be configured. When the Control program is run, it first synchronises the serial interface and then checks to see if the DAU has been configured. Different screens are displayed depending on whether or not this is the case.

Microcontroller Module Configuration


The DAU configuration window provides a set of configuration items to identify the microcontroller used, the amount of EEPROM and SRAM and information about the external EEPROM. This is used by the DAU to manage storage of the captured data.  Some of this is filled in automatically depending on the microcontroller type. Settings for the Real Time Clock may also be made. The latter is needed by the DAU to set the clock precision and normally should be left at the default value. The external EEPROM size must reflect the size of the installed chip on the microcontroller board.

The Program button causes a basic Unit Information Block to be written to the DAU. No channels are defined at this point.

Main Window


The DAU main window provides access to two channel control windows and also allows an independent data capture process to be launched. This process is defined here independently of the nature of the channels and so can in principle be used with any type of data capture. If the Unit Information Block has not been programmed with channel information, the Channel buttons lead to a configuration and calibration screen. Note that if no channels are defined, the second channel button is not shown. The above screenshot shows the situation that is seen when only the Channel A has been calibrated. It is envisioned that different channels types may be defined.

To launch a
n independent data capture process, a file for saving the results is selected. If the file selected does not exist, it is created, otherwise it is re-opened for append writes, that is, any further data saved is added to the end of the file.

The channels involved in the data capture are first setup with information about how the data capture is to be done for that channel. Information such as channel gain is specified. If this is not done, then no data capture will occur for the particular channel and any results written to the save file will be zero. This is done in the Channel windows.

On the main window the amount of averaging to be done is selected, as well as the number of conversions to take place and the interval between the samples in seconds. In the event that the EEPROM in the DAU fills with data, a choice can be made whether the acquisition stops or whether it overwrites earliest data. Two check boxes allow either or both channels to be included, although a channel will only be included if it has been "setup" in the channel control window. Once that has been completed, the launch button may be pressed. This causes the channel control information (including an offset measurement) and the entire Unit Information Block to be written to the save file, as well as the exact time the launch was activated. Once the process has been set running in the DAU, it cannot be relaunched. An abort button is provided to allow this to be stopped if necessary.

The "Get Data" button that allows data to be downloaded will request the EEPROM buffer pointers from the DAU, a command that causes the pointers to be subsequently reset (to free up space in the buffer and so extends the data capture process). Then the data between the start and end pointers is downloaded and saved to the file.

There is a possibility that the DAU may lose power and be reset. In that event the start and end pointers will be invalid and the stored data would be difficult to access. By selecting "Offline Mode", the start and end pointers saved at the time of power failure can be retrieved from the EEPROM and used to recover the data.

Channel Calibration Window


If a channel has not been defined in the DAU, a Channel Calibration Window is presented when a channel button is pressed (this can also be accessed from the Channel Control window). This allows the channel characteristics to be placed in the Unit Information Block. For the analogue modules a certain amount of calibration can be done.

To perform a calibration, a fixed and known dc voltage source is connected to the analogue channel inputs. Its value is entered into the "Actual Voltage" box. Then with the attenuator and gain settings selected appropriately, a measurement is performed by pressing the measure button. The result is shown in the "Measured Voltage" box
(the standard deviation is also shown). If this is satisfactory then the calibrate button is pressed. The settings used during the calibration are shown underneath these buttons. The radio buttons allow gain to be selected, while the attenuation radio buttons show the position of the attenuation front panel switch. In between these groups of radio buttons is a set of checkboxes showing what has been successfully calibrated. The unity attenuation switch setting is shown as calibrated by default (this should normally represent no attenuation). For the first calibration the gain setting is calibrated. The gain 1 checkbox is then automatically checked. The front panel switch can be changed to the next setting, or the gain setting can be changed. As long as one of the setting selections has already been calibrated, the other setting will be calibrated by this process. The program will not perform a calibration in the event that both selections have been calibrated, or neither of the selections have been calibrated.

The "Base Attenuation" edit box allows a scaling factor to be incorporated into the gain and attenuation calibrations so that they line up more closely with the nominal values shown in the headings. The value of 12 shown corresponds to the built-in attenuation in the module that converts the 30V range out of the instrumentation amplifer to the 2.5V range of the A/D converter. The "Scale Factor" edit box has the voltage range that corresponds to the full scale of the A/D converter.

The "Set Nominal Value" edit box allows the nominal values of the gains and attenuations to be set. These values are stored in the DAU Unit Information Block, and are used to set the headings on gain and attenuation checkboxes. The buttons "Set Gain" and "Set Atten" are used to set these values for the given selection of gain and attenuation switch.

Channel Control Window


This window allows the user to perform direct A/D conversions, either singly (averaged) through the "Acquire" button, or with a series of timed conversions similar to the independent acquisition process launched in the main window. In this case however the program performs the timing and uses single conversions to capture the data. Data is written directly to the save file as it is processed. The averaging is defined at the top of the screen. The meanings of the different buttons are the same as those described above for the independent data capture process.

The setup button is used to define the nature of the channel control to be used during the independent data capture process. The only controls provided here are the gain setting and a checkbox to specify that an offset calibration be performed before the process begins. These settings must be selected before the Setup button is clicked.

Save File Data Format

The save file format used in the independent data capture is an ASCII format representing the DAU EEPROM capture data in its raw binary form. This was chosen because the type of channel and hence the meaning of the data may differ from the particular analogue implementation used here. Note that the save file created from the Channel Control window has a fully interpreted format, giving data in the form of time of capture followed by average and standard deviation in volts.

At the top of the file is the time that the conversion process was launched, given as a date and time separated by "T". Then follows:
  1. the channel control word in which bits 0-1 represent the gain setting (0-3). The other bits should be masked out.
  2. The least significant byte of the voltage offset.
  3. The most significant byte of the voltage offset.
This is repeated for each channel. The raw offset is computed by multiplying the second byte by 256 and adding the first.

The next line has the real time clock interval in milliseconds, and the number of samples requested.

Following this line is the entire Unit Information Block that contains details on gain and attenuation used for each channel, and the real time clock scaling factor. Details of this are given in the full document.

The data is represented as a count of real time clock ticks, and the raw averaged A/D conversion result for each of the two channels.

The actual time for each conversion is computed by multiplying the conversion time with the milliseconds per clock tick and adding to the start time. The channel voltage measurement is found by multiplying the difference between the measured raw value and the offset, with a scaling factor:

scale*attenuation/1024/gain

Where scale is the voltage scale that gives full scale output from the A/D converter (30V in our example). Note we are assuming the use of a 10 bit A/D converter here. This and attenuation and gain are obtained directly from the Unit Information Block. The attenuation and gain are expressed as a 16 bit floating point number with the following form. The top four bits represent a positive exponent power of 10, and the lower 12 bits are a mantissa. Simply form the mantissa by masking out the upper four bits, and dividing by 4096, then multiply by 10 to the exponent power.

Installation

To install the software, unpack into a directory which by default will be acquisition-pc. The serial device used (/dev/ttyUSB0 in Linux) is specified in the main program and refers to a USB port for use with a USB to serial converter. Install the serial programmer software as described, including qextserialport, making sure that all the source directories are under the same top directory (otherwise the .pro files will need to be changed). This will provide the firmware upload features of the program.

Change into the acquisition-pc directory and execute:

$ qmake-qt4
$ make clean
$ make

This will build the application. Copy the binary to a suitable place and invoke with:

$sudo acquisitioncontrol


First created
21 July 2007
Last Modified 10 January 2010