USB OBD2 AllPro adapter
This project is an extension of my
USB OBD2 adapter with the
support of all OBD2 protocols including CAN. It is
compatible with ELM327.

Here is the issue - you need both CAN and USB in
one chip. Microchip got a bunch of PIC18 processors with CAN
functionality,
for instance PIC18F2480 or PIC18F2580. But you are out of luck if trying
to find the device supporting both CAN and USB. In this case Microchip
has another solution - use the standalone CAN controller MCP2515 and
interfacing with the main controller thru SPI bus. That is how AllPro adapter
supporting CAN protocol. The schematic is shown in
Figure 5.
As with the previous version of adapter 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 sircuit is powered from USB bus. Transistor
Q3 is for legacy L-line initialization in ISO9141 protocol. I do
not think that any car sold in US was ever using it but the specs says
it might :) The
firmware is available for download as
well.
The adapter uses 9 pin D type female
connector to link up to vehicle’s OBD2 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 |
You can build the cable yourself as Mouser Electronics started
selling J1962 OBD2 connectors made by Delphi.

Note, that it is just connector block, no shell provided and you have
to ordered the connector pins separately, see the parts reference table below.
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. You can download the info
file here. 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 layout in Gerber format available for download
here. The board was designed
to fit SERPAC A20
enclosure available from Mouser as
635-A-20-A part or from DigiKey as
SRA20A-ND. I can sell the Adapter blank PCB for $6 plush S/H or a
kit that included the board, preprogrammed PIC chip and all the
components required for $45 + S/H. The kit doesn't include the OBD2
cable. The assembled adapters available as
well...

I have compiled the parts list for the most of popular
electronic components vendors. PIC18F2455, MCP2515 and MCP2551
are available from
Microchip Direct. MC33290 and MC33390 available from from
Freescale
as part of free sample program as MCZ33290 and
MCZ33390
modifications.
|
Part |
Description |
Jameco # |
Mouser # |
DigiKey # |
|
J1 |
USB type B connector |
841053 |
806-KUSBX-BS1N-W |
609-1039-ND |
|
J2 |
DB-9M connector |
104943 |
152-3309 |
A35113-ND |
|
Q1,Q3 |
2N7000 transistor |
783594 |
512-2N7000 |
2N7000FS-ND |
|
Q2 |
BS250 transistor |
256057 |
TP0610KL-TR1-E3 |
BS250KL-TR1-E3CT-ND |
|
IC1 |
PIC18F2455 |
|
579-PIC18F2455-I/SP |
PIC18F2455-I/SP |
|
IC2 |
MCZ33290 |
|
|
MCZ33290EFR2CT |
|
IC3 |
MCZ33390 |
|
|
MCZ33390EF-ND |
|
IC4 |
MCP2551/PCA82C250 |
699780 |
579-MCP2551-I/P |
MCP2551-I/P-ND |
|
IC5 |
MCP2515 |
|
579-MCP2515-I/P |
MCP2515-I/P-ND |
|
X1 |
Crystal, 16.000Mhz |
325139 |
815-ABL-16-B2 |
X077-ND |
|
X2 |
Crystal, 20.000Mhz |
325067 |
815-ABL-20-B2 |
X062-ND |
|
D1 |
Blue 5mm LED |
|
78-TLHB5400 |
67-1751-ND |
|
D2 |
Yellow 5mm LED |
|
78-TLHY5400 |
516-1331-ND |
|
D3 |
Red 5mm LED |
|
78-TLHR5400 |
516-1328-ND |
|
D4,D5 |
1N4148 diode |
36038 |
512-1N4148 |
1N4148DICT-ND |
|
R1,R4,R5,R8 |
10K Ohm |
691104 |
291-10K-RC |
10KQBK-ND |
|
R2,R3 |
330 Ohm |
690742 |
291-330-RC |
330QBK-ND |
|
R6,R7 |
22K Ohm |
691180 |
291-22K-RC |
22KQBK-ND |
|
R9,R10 |
510 Ohm |
690793 |
291-510-RC |
510QBK-ND |
|
R11,R12 |
100 Ohm |
690620 |
291-100-RC |
100QBK-ND |
|
C1,C2,C4,C5 |
15pF |
|
140-50N2-150J-RC |
490-3691-ND |
|
C3,C8,C9 |
0.1uF |
25523 |
581-BQ014D0104K |
478-3383-ND |
|
C6 |
0.47uF |
25558 |
581-BQ074D0474K |
478-3415-ND |
|
C10,C11 |
560pF |
332419 |
80-C315C561K2R |
BC1022CT-ND |
|
C7 |
10uF 16V |
198838 |
647-UVR1V100MDD1TA |
493-1036-ND |
|
|
28 pin socket for IC1 |
526248 |
571-3902619 |
3M5480-ND |
See assembling notes here
This is another proof on concept. Some folks are
having problem obtaining MC33290 and 33390 chips. In this case you can
bring into play the schematic shown in
Figure 6. It is using SN75452 and
75453 drivers instead. Note, that it is not the better solution but rather workaround and using Freescale’s dedicated bus drivers is preferable.
|