Data Acquisition & Processing System


On this page the hardware and software used to record, process, and display the magnetometer data are described. This hardware consists of several separate microcontrollers/microprocessors and a few data links. The software which compliments the hardware described on this page consists of several applications as described below.


The hardware/software system consists of four sub-systems:

  1. Acquisition Microcontroller and Program
  2. Data Logging Computer and Program
  3. Data Processing Computer and Program
  4. HTTP (Web) Server
The following figure shows the relationship of these sub-systems.
Acquisition Block Diagram

Acquisition Microcontroller

A 68HC11 Evaluation Board (EVB) is a product offered by Motorola to permit a detailed review of the microcontroller (MCU) and its capabilities by prospective customers. The EVB includes an RS-232 interface IC, an Real-Time Clock IC (RTC), and features a prototyping section where additional components can be added and interfaced to the MCU. The board is programmed through the RS-232 port from a separate desktop computer.

8 channel 12 bit ADC, and RS-485 serial driver ICs, both obtained from Maxim Integrated Circuits through its gracious free sample program, have been installed in the prototyping area and connected to the MCU. The RTC is configured through software to interrupt the MCU once per second. An assembly-code program is loaded into the MCU's on-board EEPROM (200 bytes total) which when interrupted counts the number of seconds since startup, reads a number of the eight the ADCs, converts each ADC's binary value into a signed decimal number representing the voltage at the ADC input, and sends an ASCII string containing all of that info out the RS-485 serial port.

An example of the data stream follows:

0768  -0.794  -0.292  +7.951  +3.079  +5.392
0769  -0.790  -0.204  +7.951  +3.079  +5.381
0770  -0.781  +0.594  +7.945  +3.079  +5.401
0771  -0.785  +0.634  +7.951  +3.079  +5.392
0772  -0.794  -0.130  +7.945  +3.086  +5.381
0773  -0.794  -0.234  +7.951  +3.090  +5.381
0774  -0.794  -0.370  +7.951  +3.086  +5.381
The first number on each row is the time index, the remaining five signed decimal numbers are the voltages appearing at the ADCs' inputs.

The RS-485 serial link is capable of transmitting digital data at a greater rate and longer distance than the more popular RS-232. The link operates in a balanced configuration, where both the original signal and an inverted copy of the same are transmitted simultaneously, and utilizes a lower cable impedance. Both these contribute to the superior performance relative to RS-232.

Data Logging

An AMD-hardware, Linux-OS based personal computer runs a Perl program performs a series of operations on the incoming data stream. At one of the computer's serial inputs an out-board format converter accepts the RS-485 data from the remotely located magnetometer and converts it into an RS-232 data stream. The format converter is comprised of two serial driver ICs from Maxim stealing a few milliamperes from the computer's +5V power supply.

The incoming serial data is captured through the standard serial interface driver and a Perl program which slurps in the ASCII string, converts the time stamp into an absolute clock time, converts each of the decimal voltages into different numbers using stored calibration data, and saves all of those data in a series of hourly and daily text-based log files. Once per hour, on the hour, this Perl program launches a separate Perl program that creates a group of GIF files to present the data.

An example of the text-based log file follows:

# Created with script version: 20011201
# Time (seconds after file name start), magnetic field (nT), loop error (V), laser power (arbitrary), internal temperature (°C), external temperature (°C), heater power (W)
# file name: 2001.12.02_16.00_UT
   0 -20.362  -0.052  3.0  31.4	 -0.5  121
   1 -20.089  -0.043  3.0  31.3	 -0.7  121
   2 -20.362  -0.019  3.0  31.1	 -0.8  123
   3 -18.316  -0.039  3.0  31.1	 -0.6  120
   4 -20.771  -0.028  3.1  31.2	 -0.8  124

Lines beginning with a "#" are comments and ignored by the programs; they do provide useful informtion for the human reader. In the above case, the data file is stamped with the version of the program that created it, the name of the file which provides the starting time for the file, and the six values appearing on each line are identified as are their units.

Data Processing

On the same computer, a second independent Perl program runs when launched by the logging program and converts the last one, six, and twenty-four hours of logged data into a series of GIF files and uploads them through a local Ethernet network out through the Internet to a separate HTTP server.

HTTP Server

A second computer running the Linux operating system and Apache web server software serves up the pages that you are currently viewing. These web pages are dynamically created using Unix-type Perl-CGI scripts.