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 OBD-II Cable for AllPro adapter

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

 

Is it the right adapter for my car?

See Building OBD-II Adapter article

 

Connecting and Testing

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.

Image

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:

 

The Software

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:

 

Adapter PCB

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.

 

Adapter Kit

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.

Parts List

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