This page explain how to build a simple 8 channels / 12 bit ADC connected to the parallel port of a personal computer.
The circuit was designed because I need to have a simple instrument able to measure eight voltage and to transfer them to a PC: a sort of "data logger" for personal use. Also not having the performances (and costs) of similar industrial products, it resolves some problems that do not find answer in instrumentations available in the home laboratory (and not even in many professional ones...).
The main characteristics:
The circuit is rather simple and is constructed around a 12 bit resolution ADC with SPI interface from Maxim: the MAX147. As you can see on schematic (download max147.tgz) all the job is done by this integrated circuit: it contains the ADC, the eight channels analog multiplexer and the serial interface. I have chosen to use an external voltage reference (MAX872).
I do not describe the operation of the integrated circuit so, please, read the data sheets.
One interesting characteristic of the Max147 is its ability to operate from single 2.7 to 5.5V supply. Thanks to low power, the presence of a voltage regulator or a battery is superfluous: the circuit is powered through five pin from parallel port .
I used a LC filter (three pin devices equivalent to a capacitor to ground and two inductors in series) to avoid PC high frequency noise ; if you do not have any LC filter, it can be replaced from a simple wire between 1 and 3 pin.
Every input channel is preceded from Ra, Rb and a capacitor.
Scope of Ra is protect ADC input from voltage beyond the supplies. The value to use depends on the maximum expected input voltage. Good values is some kohm.
You need to add Rb (optional) in order to measure voltage greater of 2.5V. Note: for safety reasons is not possible to measure high voltage. Ra and Rb should be precision resistor (at least 1%) and with low thermal coefficient.
In the following table some useful value for Ra, Rb and C,
|Full scale input voltage||Safe input voltage||RRa||Rb||C||In||COMMENT|
|0 - 2.5||0 -> 5||simple wire||-||optional||0.01uA||Not advised|
|0 - 2.5||-2 -> 7||11 kohm - 5%||-||optional||0.01uA|
|0 - 2.5||-20 -> 25||10 kohm 5%||-||10nF||0.01uA||Additional error < 10mV|
|0 - 5||-4 -> 14||2.2 kohm 1%||2.2 kohm 1%||10nF||1mA|
|0 - 5||-40 -> 50||10 kohm 1%||10 kohm 1%||10nF||50uA||Additional error < 5mV|
PCB is a double layer for dimensions and performances reasons. I have not used any plated holes but it is required to insert in two holes a small wire in order to connect the two sides of the printed circuit and, for some components, use the "double-layer soldering" technique.
TThe two connectors are normal DB25 for cables assembly (not version for printed circuits board) and are embedded horizontally on the flank in the pcb, without any holes. It is important to mount a male connector on PC side verifying the correspondence of the numeration.
In max147.tgz file you will find some simple programs for Windows, Dos and Linux.
The scope is obviously only to create a base to develop your-own applications. In order to know more, you can read the pages where I describe VVIO project and, if you are using Microsoft windows, ddownload the run-Time engine of LabWindows/CVI
|C1, C3, C4, C5, C6, C7, C8, C9, C10||110 nF - optional, see text and data sheet|
|C2||333 uF tantalum (or also aluminum electrolytic)|
|C12||1 uF tantalum (or polyester)|
|D1, D2, D3, D5, D6||1N4148 or equivalent|
|D4||Zener 4V7 1W - optional|
|LC1||Filter LC Murata DSS310 - optional - see text|
|P1||DB25 male cable connector|
|P2||DB25 female cable connector|
|R1, R3, R5, R7, R9, R12, R14, R16||Ra - see text|
|R2, R4, R6, R8, R10, R13, R15, R17||Rb - optional - see text|
|U1||MAX147- 12 bit ADC|
|U2||MAX872 - Voltage reference|
Software, schematic and PCB are contained in the max147.tgz file:
|schematic.pdf||CCircuit schematic, in pdf format|
|top.pdf||Component pcb side, in pdf format|
|bottom.pdf||Solder pcb side, in pdf format|
|assembly.pdf||Components layout, in pdf format|
|LW-CVI\||Software for windows: LabWindows/CVI|
|VB\||Software for windows: Visual Basic|
|TC\||Software for dos: TurboC|
|qbasic\||Software for dos: Qbasic, by Giuseppe|
|gcc/||Software for Linux. by Francesco Curto|
To build this circuits you need:
Mini-datalogger - Version 1.2 - December 2002
Copyright © 1999-2002, Vincenzo Villa
You need to read the license before to use this product
All trademark mentioned herein are property of their respective companies
You will find the original copy of this document on http://www.vincenzov.net.