Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

OBD2 reader

Status
Not open for further replies.

abtpad

New Member
Hello everyone,
I'm trying to build an OBD interface to be able to read data from cars. The idea is to use an arduino and some cheap hardware to handle "low-level" protocols, and to get the arduino connected to a laptop, which will take care about the OBD2 protocol.
Based on some opensource projects, I designed this scheme (See the attached).
I'm planning to use https://github.com/iwanders/OBD9141 for ISO 9141-2 and ISO 14230-2, https://github.com/matafonoff/J1850-VPW-Arduino-Transceiver-Library for J1850-VPW and https://github.com/coryjfowler/MCP_CAN_lib for CAN, and so, I should be able to work with four protocols on five.
My questions are the following: Is that gonna work or not ? Do I have an error in my scheme ? Adding a circuit to power all the transceivers in 12v will it be enough ?
Thank you for reading :)
 

Attachments

  • 2021-04-09.pdf
    64.3 KB · Views: 227
My questions are the following: Is that gonna work or not ?

Just note that many newer vehicle have two separate CAN bus interfaces on the OBDII port, a high speed and a low speed.
The commoner one is on pins 14 & 6, the second bus is on pins 11 & 3.

The "better" OBDII interfaces support both directly; ones with only a single CAN transceiver require a switch to select which pins are in use.
 
Hello, and thanks for the answers
rjenkinsgb, it's good to know, I did not found anything about that. Can you show me how I'm supposed to change my design to support both ?
 
Can you show me how I'm supposed to change my design to support both
A second CAN interface connecting to the other two CAN pins.

Either a complete interface, or just a second driver IC and a pair of switches or tri-state buffers to select which one is in use?

Or use a different MCU that has two CAN module included & only needs the driver ICs.
 
Just note that many newer vehicle have two separate CAN bus interfaces on the OBDII port, a high speed and a low speed.
The commoner one is on pins 14 & 6, the second bus is on pins 11 & 3.

The "better" OBDII interfaces support both directly; ones with only a single CAN transceiver require a switch to select which pins are in use.
Some cars have moved beyond that.

Dual-CAN with two CAN buses was replaced on some cars with 4 CAN buses on the OBDII port.

That has now been changed so that some current cars have just one CAN bus on the OBDII port, and that is only for diagnostics. Modules connect to each other using other CAN buses that do not connect to the OBD port. There is also an ethernet connection to the OBDII port, also only used for diagnostics.

The good news is that whether there is one, two or four CAN buses on the OBDII port, or a CANbus and an ethernet connection, very often the diagnostics will still work to most of the car, because the diagnostic messages will be passed from the normal CAN bus, on pins 14 and 6, to the other buses that don't physically connect to the OBDII port, via a gateway module.

On an historic note, some older (model year 2000 or so) cars had a CAN bus with no connection to the OBDII port. The OBDII port had K-line diagnostics (much like LIN) and the CANbus wasn't used for diagnostics.
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top