
The 12-bit analog I/O board in Fig 1 plugs into a PC's printer port. Thus, you can move the board around your laboratory more easily than you can exchange A/D boards that plug into the PC's backplane. The board handles eight 1-kHz input signals ranging from 0 to 5V max.
IC1 is a serial, 12-bit A/D converter having an internal 4.096V reference and an internal track-and-hold circuit. Op-amp IC2 provides a low-impedance source for IC1. IC2 has a VOS of 70 µV, which is well within ½-bit conversion accuracy. Further, IC2's rail-to-rail outputs come to within 1 bit of IC1's full input range. However, the circuit's relatively slow slew rate limits input frequencies to below 1 kHz. Analog multiplexer IC3 allows you to select any one of eight input channels.
D/A-converter IC4 furnishes a 12-bit output. IC4 derives its reference voltage from IC1's reference output. Op-amp IC5A and its associated components develop IC4's 2.048V reference.
Schmitt-trigger IC6 squares up the serial clock's edges (STB). This squaring up is a precaution and is, therefore, unnecessary if your PC has HCMOS-compatible output lines. Also, depending on your particular PC, printer-port-signal D7 provides 5V power via R1, C1, and L1. Obtain the best performance, however, by using an external supply. Low-dropout-regulator IC7 yields a stable 5V from a 6 to 15V input. Inductor L2 reduces digital noise from the PC's ground rail.
Listing 1 is a sample interface routine written in C++. You can easily convert this listing to standard C. A/D-conversion speed depends entirely on software-execution speed. The ZIPfile attached to EDN BBS /DI_SIG #1647 contains the listing as well as a write-up. (DI#1647)