About the article

USB Data Acquisition Card

digital & analogue; input & output

USB Data Acquisition Card
This data acquisition card for connection to the USB has eight digital outputs, eight digital inputs, two 10-bit analogue outputs and eight 10-bit analogue inputs for voltage swings of 0 to 5 V. The system’s core is a Microchip USB-savvy microcontroller type PIC18F4550 programmed in C. The circuit is built on a compact PCB and requires no external power supply.
Downloading of this magazine article is reserved for registered users only.
Login | Register now!
Gerber file

CAM/CAD data for the PCB referred to in this article is available as a Gerber file. Elektor GREEN and GOLD members can exclusively download these files for free as part of their membership. Gerber files allow a PCB to be produced on an appropriate device available locally, or through an online PCB manufacturing service.

Elektor recommends its business partner Eurocircuits as the company of choice for its own prototypes and volume production in selected cases.

Extra info / Update


In the circuit diagram, the USB+ and USB– pins on K2 should be swapped. The PCB track layout shown in the article should also be corrected. PCBs supplied through the Elektor Shop have the correct USB signal routing and are not affected.

Although different values are indicated in the circuit diagram and the parts list, both 27 Ω and 33 Ω resistors may be used in positions R3 and R4.



Contrary to what some readers have written there is no bug in the firmware CUSTOM_TAD. If it is compiled with MPLAB C18 C Compiler v3.02 as described in the magazine, in the section ‘PIC Firmware’, it compiles perfectly (6 warnings appear, without importance) and the .hex file is generated without problems.


However, if the firmware is compiled with a later version of the C18 Compiler, for instance, with MPLAB C18 C Compiler v3.14 (recent version), some errors appear that inhibit compilation. To be able to compile successfully, the following modifications must be made:

1. File main.c, line 52

      Text: #pragma config FCMEM = OFF

      Should be: #pragma config FCMEN = OFF

2. File user.c, line 76

      Text: OpenPWM2(0xFF);

      Should be: TRISCbits.TRISC1=0; CCP2CON=0b00001111;

3. File user.c, line 79




These tree changes are indispensable. After making the changes the firmware is compiled perfectly (6 warnings appear, without importance) and the .hex file is generated correctly.


To be able to execute the software for the PC it is necessary that Microsoft .NET Framework is installed (free downloaded from Microsoft via Windows Update).

Component list


R1 = 10k

R2 = 470

R3,R4 = 33

R5 = 1M

R6,R7,R8 = 1k


(all SMD 0805 case)

C1,C3 = 100nF

C2 = 470nF

C4 = 10nF

C5,C6 = 22pF


IC1 = PIC18F4550 I/P, programmed, Elektor Shop # 070148-41

D1,D2,D3 = LED, SMD case 1206


K1,K3,K4,K5 = 10-way boxheader

K2 = type-B USB connector, PCB mount

X1 = 20MHz quartz crystal

L1 = VK200 or small ferrite bead with 2-4 turns thin enamelled copper wire

S1 = pushbutton, PCB mount, 6mm footprint

DIL40 socket for IC1

PCB (bare), Elektor Shop # 070148-1

Project software, file # 070148-11, free download
Loading comments...