OBD-II ELM327 compatible AllPro adapter with USB
Project Overview
On PC desktops the RS-232 serial ports are about to disappear from most computers (especially from laptops), replaced by the USB connection. This project was started as a response to build simple ELM327 compatible USB adapter for On Board Diagnostic (OBD-II) monitoring. The adapter is supporting all the protocols including SAE J1850 PWM, SAE J1850 VPW, ISO 9141-2, ISO 14230-4, ISO 15765-4 CAN.

Hardware
You do not have to be familiar with all the details of OBD-II protocol as the adapter and PC desktop software will do it for you. The adapter schematic is shown in Figure 7. It is built around Microchip’s PIC18F2455 microprocessor with USB support. The ISO9141/14230 interface is implemented on MC33290, the J1850 VPW bus is controlled by MC33390 transceiver and the pair of P-channel and N-channel MOSFETs (Q1, Q2) is driving PWM bus and PIC18F2455 internal comparator together with resistors R4, R5 producing the differential PWM input. The circuit is powered from USB bus. Transistor Q3 is for legacy L-line initialization in ISO9141 protocol. The adapter has two connectors on the board DB9-M and USB type B connector. The microprocessor has to be programmed first. I was using Microchip’s PICkit2 programmer, see Programming PIC18F. The beta version of firmware is available for download but the final one only comes with the kit.
The adapter uses 9 pin D type female connector to link up to vehicle’s OBD-II J1962 connector. The pinout was chosen to match many of the commercially available cables. The pin connections required of the cable are as follows:
| J1962 Pin |
Description |
DB9F Pin |
| 2 |
J1850 Bus + |
7 |
| 5 |
Signal Ground |
1 |
| 6 |
CAN High |
3 |
| 7 |
K Line |
4 |
| 10 |
J1850 Bus - |
6 |
| 14 |
CAN Low |
5 |
| 15 |
L Line |
8 |
| 16 |
Vehicle Battery Positive |
9 |
See Building OBD-II Adapter article
There is no driver required for Microsoft Windows XP/2000/Vista as the adapter using the standard Communication Device Class (CDC) driver usbser.sys included in the distribution. However, Windows doesn’t have a standard INF file for the CDC driver, see Windows Serial USB Driver. Plug the adapter to a spare USB port on your PC. Windows Found New Hardware Wizard will launch. Skip the Windows Update screen and go to install screen. Select "Install from a list or specific location (Advanced)" as shown below and then click "Next". Select the OBD Adapter INF file and configure the driver.

Open the Device Manager and select "Ports (COM and LPT)", the device appears as a "Communication Port". Go to "Port Settings" tab and "Advanced" button. Select the port number you want to use.

Microsoft has a tool for examining the USB connections. USBView.exe is a freeware utility available for download, shows the USB connections tree and displays the details of USB devices connected to it, see the result below:
Here is the list the software I have tested so far with adapter:
Note that the free versions of ScanMaster and EeasyObdII are not supporting CAN protocol, apparently the authors are reluctant to keep them up-to-date. Here are the screenshots of ScanMaster-ELM:

The adapter PCB is available for $6+S/H. The board was designed to fit SERPAC A20 enclosure, Mouser part reference 635-A-20-A or DigiKey part SRA20A-ND.
The Adapter kit that including the PCB, preprogrammed PIC chip and all the components required is available as well, see Products page. The kit doesn't include the OBD2 cable.
The Adapter part list for the two the most popular electronic components vendors, Mouser and DigiKey is shown below.
PIC18F2455, MCP2515 and MCP2551 are available from Microchip Direct. MC33290 and MC33390 available from Freescale as part of free sample program in RoHS MCZ33290 and MCZ33390 modifications.
| Part |
Description |
Mouser # |
DigiKey # |
J1 |
USB type B connector |
737-USB-B-S-RA |
609-1039-ND |
J2 |
DB-9M connector |
737-DE09-PL-24 |
A35113-ND |
Q1,Q3 |
2N7000 transistor |
512-2N7000 |
2N7000FS-ND |
| Q2 |
BS250 transistor |
781-BS250KL-TR1-E3 |
BS250KL-TR1-E3CT-ND |
| IC1 |
PIC18F2455 |
579-PIC18F2455-I/SP |
PIC18F2455-I/SP |
| IC2 |
MC33290 |
841-MCZ33290EF |
MCZ33290EF-ND |
| IC3 |
MC33390/MC33990 |
841-MCZ33990EF |
MCZ33990EF-ND |
| IC4 |
MCP2551/PCA82C250 |
579-MCP2551-I/P |
MCP2551-I/P-ND |
| IC5 |
MCP2515 |
579-MCP2515-I/P |
MCP2515-I/P-ND |
| X1 |
Crystal, 16.000Mhz |
815-ABL-16-B2 |
X077-ND |
| D1 |
Blue 5mm LED |
604-WP7113MBD |
67-1751-ND |
| D2 |
Yellow 5mm LED |
604-WP7113YD |
516-1331-ND |
| D3 |
Red 5mm LED |
604-WP7113ID |
516-1328-ND |
| D4,D5 |
1N4148 diode |
512-1N4148 |
1N4148DICT-ND |
| R1,R4,R5,R8 |
10K Ohm |
291-10K-RC |
10KQBK-ND |
| R2,R3 |
330 Ohm |
291-330-RC |
330QBK-ND |
| R6,R7 |
22K Ohm |
291-22K-RC |
22KQBK-ND |
| R9,R10 |
510 Ohm |
291-510-RC |
510QBK-ND |
| R11,R12 |
100 Ohm |
291-100-RC |
100QBK-ND |
| C1,C2 |
15pF |
140-50N2-150J-RC |
490-3691-ND |
| C3,C6,C7 |
0.1uF |
871-B32529C104K189 |
478-3383-ND |
| C4 |
0.47uF |
80-R82DC3470AA60J |
478-3415-ND |
| C8,C9 |
560pF |
140-50P2-561K-RC |
BC1022CT-ND |
| C5 |
10uF 16V |
647-UVR1V100MDD1TA |
493-1036-ND |
| IC socket |
28 pin socket for IC1 |
737-ICS-328-T |
3M5480-ND |
|
|
|