This data recorder (see the figure) is a simple, low-cost, 12-bit data-acquisition system that can capture data from almost any external transducer and transfer the data to a computer. Temperature, humidity, pressure, air velocity, or light density can be collected. The system can be left unattended for hours or days and can record data with time logging. The recorder's 12-bit accuracy allows users to make high-quality measurements.
Another feature of this device is that it hooks up to the serial port of the computer or laptop. Also, the recorder's PC firmware is made to run under either GWBasic or QBasic.
The data recorder is designed around the ICL7109 (IC3), a dual-slope analog-to-digital converter (ADC). It can make 7.5 conversions per second when using a 3.58-MHz crystal, which gives it 60-Hz rejection, and has an input impedance of 1 MΩ. Although the ADC can make 7.5 conversions per second, the program only captures three to four readings per second. This may seem slow, but it's fast enough for most applications, since data is typically captured over hours or days. In one hour, at three readings per second, 10,800 readings will be taken. For most applications, the program will need to be slowed down to take fewer readings.
Offering a true differential input, the ADC will accept up to a ±2-V input. Yet it can be easily designed to accept a ±200-mV input with only minor modifications to the circuit.
To convert the 12-bit ADC's parallel output to a usable RS-232 serial signal, an HD6402 UART (IC2) is used. This UART is set up for 2400 baud, one start bit, eight data bits, one stop bit, and no parity. Most UARTs require a clock signal 16 times the operating baud rate. In this circuit, a 38.4-kHz clock signal is supplied by the 74HC4060 (IC1), a 14-stage binary ripple counter.
Clocked at 2400 Hz, the 4017 divide-by-ten counter (IC6) synchronizes the ADC's LBEN and HBEN outputs as well as a signal sent by the 74HC244 octal buffer (IC5). On the first clock pulse, an output signal is sent to pin 3 of the counter and is inverted by the 74HC04 inverter (IC7). This drives the 74HC244, sending a high signal to pin 33 of the UART. Then the UART sends out the number 128, which the 5-V-powered MAX232 driver/receiver converts to a ±10-V RS-232 signal. At this point, the signal can be processed by the computer.
The program waits for this number before continuing. Pin 2 is set high and inverted on the next clock pulse. Next, this signal triggers the HBEN line on the ADC, activating high-order byte outputs B9 through B12 and the polarity byte. These signals are sent to the UART, translated to an RS-232 signal, and transmitted to the computer. On the third clock pulse, pin 4 goes high and is inverted. This signal enables the LBEN line on the ADC, which drives low-order byte outputs B1 through B8. As described above, the signal is sent to the UART, converted to an RS-232 signal, and sent to the computer. During the fourth clock pulse, the counter is reset and the cycle repeats.
The data-acquisition program prompts the user for the sampling interval, the number of readings, and the destination filename for the data (see the listing). While running, the program displays the number of readings, the voltage, and the time that the voltage was recorded. At the same time, it stores the data to the hard drive, where it can be accessed by a spreadsheet.
A relatively compact instruction sequence, this listing contains only 34 lines of programming, without including the REM statements. While the program is relatively simple, it does a number of things to prevent erroneous readings from being taken. Before proceeding, the program must receive the number 128, which synchronizes the data recorder with the computer.
After the computer correctly receives the number 128, it looks for a number between 0 and 31, which contains the HBEN and the polarity byte. If the number is negative, it will range from 0 to 15; if it's positive, it will range from 16 to 31. When this number is obtained, the low-order byte numbers (LBEN) can be processed.
Once the high- and low-order bytes are received, an equation is selected to calculate voltage recorded by the data recorder. Line 190 calculates negative voltages, while line 230 calculates positive voltages. After the voltage is calculated, it's displayed on the monitor with the number of readings and the time. These readings are then saved to the hard disk for future use.
To calibrate the unit, place the positive lead of the voltmeter on pin 36 and the negative on pin 39 of IC3, (ICL7109). Adjust R15, the 20-k trimpot, until the voltage reads 2 V.