Our “OBD Interpreter” ICs are designed for use with vehicles that use the standard OBDII (On Board Diagnostics) protocols. Most modern vehicles use the CAN (ISO 15765-4) protocol, but yours may not. If you are unsure of what protocol your vehicle uses, see the information in the ‘OBD’ section, under the ‘Help’ menu.
Once you know the protocol that you need to ‘interpret’, the following chart will help you choose an integrated circuit:
Note that we have also included a couple of non-OBDII protocols that we are often asked about.
OBD Interpreter ICs
ELM320 – OBD (PWM) to RS232 Interpreter (v2.0)
The ELM320 supports the 41.6KHz SAE J1850 PWM protocol, which was commonly used in many Ford Motor Company vehicles (but has now generally been replaced by CAN).
ELM322 – OBD (VPW) to RS232 Interpreter (v2.0)
Similar to the ELM320, the ELM322 is for connecting to an OBDII equipped vehicle which uses the 10.4KHz SAE J1850 VPW format. This standard was typically used in General Motors and some Chrysler vehicles.
ELM323 – OBD (ISO) to RS232 Interpreter (v2.0)
The ELM323 supports the ISO 9141-2 and ISO 14230-4 standards that are used by many vehicles throughout the world. You may wish to also consider the ELM327, as it offers several options for customizing the timing etc. that is not provided by the ELM323.
ELM325 – J1708 Interpreter (v2.0)
This protocol converter integrated circuit is for use with heavy duty vehicles that use the SAE J1708 standard with J1587 or J1922. Although these protocols are being phased out (they’re being replaced by SAE J1939), there are still a very large number of vehicles that use them.
ELM327 – OBD to RS232 Interpreter
Elm Electronics has been producing the multi-protocol ELM327 integrated circuit since 2005. We have updated the product several times in response to your requests, and as a result have produced many versions of the IC over the years. All versions of the ELM327 support the standard OBDII protocols:
- SAE J1850 PWM
- SAE J1850 VPW
- ISO 9141-2
In addition, the IC supports various other protocols to varying degrees (SAE J1939, CAN at programmable rates up to 500kbps, ISO 9141 and ISO 14230 at 9600 and 4800 bps, etc.)
The latest ELM327 is available in two voltage ranges:
Firmware version 2.2 is the most recent revision. This IC requires a Vdd supply of 4.2V to 5.5V.
This integrated circuit supports all of the ELM327 v2.2 functions, but operates over a wider range of supply voltages (from 2.0V to 5.5V).
Several customers were reluctant to redesign their proven products so have asked that we stock the following ‘mature’ versions of the ELM327:
A good basic product that continues to sell well.
No longer available. The ELM327 v1.4b was essentially an ELM327 v1.3a with low power functions to allow the circuit to ‘sleep’.
The different versions of the ELM327 IC can be a little confusing. Perhaps this chart may be of help:
|Operating Voltage||4.5V to 5.5V||4.2V to 5.5V||2.0V to 5.5V|
|Low Power (sleep) Mode||No||Yes||Yes|
|Settings Retained on Wake||–||Yes||Yes|
|RS232 Transmit Buffer Bytes||256||512||2048|
|CAN Frequency Check||No||Yes||Yes|
|Response Pending (7F) Support||No||Yes||Yes|
ELM329 – CAN Interpreter
With vehicles beginning to only support the CAN protocols, we took an ELM327 and removed support for the non-CAN protocols (but still provide enough command support to allow most ELM327 software to work with it). With the extra space, we added functions like CAN single-wire transceiver controls, a ‘protocol active’ led output, etc. Firmware version 2.1 is the most recent revision. This IC requires a Vdd supply of 4.2V to 5.5V.
ELM329L – low voltage version of the ELM329
This integrated circuit supports all of the ELM329 v2.1 functions, but operates with lower voltage supplies (from 2.0V to 5.5V).
OBD Software Development
ELM328 – OBD Device Identifier Test IC
The ELM327 provides a function for writing a unique identifier (ie serial number) to memory. Once set, it can not be changed, however, which poses a problem when developing software for this function. The ELM328 allows the identifier to be erased and the internal code to be reset repeatedly, so that software can be developed for this function (without having to use a new chip every time you run the code).