C language source code and schematic for an automotive OBD-II scan tool adapter.
- OBD-II Scan Tool Adapter
- Table of Contents
- Overview
- Auterra Scan Tools
- OBD-II Adapter Host Protocol
- OBD-II Adapter Software Source Code
- OBD-II Adapter Hardware Schematic
- Why Open Source?
- Star History
- Auterra Scan Tool Products
An OBD-II (On-Board Diagnostics II) scan tool adapter serves as a bridge device between a host (e.g. PC, phone, embedded device) and the vehicle. The OBD-II adapter translates serial messages to and from OBD-II vehicle messages. Very similar in concept to an ELM327 chip except all C language source code, protocol documentation and schematic is provided. The adapter supports all known OBD-II automotive protocols starting from 1996 model year.
- SAE J1850 (VPW, PWM)
- ISO 9141-2 (ISO)
- ISO 14320-4 (KWP 2000)
- ISO 15765-4 (CAN bus)
A vehicle 16-pin OBD-II connector is typically located on the driver's size under the dashboard.
The software source code is being open-sourced for public use under the MIT License.
The Auterra series of scan tools was sold for about 15 years starting in 2000. Different versions of the tool were sold. See the docs folder for user manuals.
- DashDyno SPD - an all-in-one handheld scan tool
- Dyno-Scan for Windows - a Windows scan tool (serial, USB, Bluetooth)
- Dyno-Scan for Android - a Android scan tool for phone/tablet (Bluetooth)
- Dyno-Scan for Palm OS - a Palm Pilot scan tool (serial)
A road dynamometer feature was added to measure horsepower and torque during vehicle acceleration extending the usefulness beyond diagnostics.
See Auterra Scan Tools company website for more product information.
The OBD-II host protocol is documented within the OBD II Adapter Protocol document.
"Enhanced OBD-II" refers to a more advanced version of the standard OBD-II system, which provides additional diagnostic information specific to a vehicle's manufacturer. Whereas the generic OBD-II standards are readily available, the manufacturer specific protocol specifications are obtained with a subscription from ETI.
The OBD-II adapter source code supports generic and enhanced protocols. Auterra products supported enhanced OBD-II from many vehicle manufacturers such as GM, Ford, Toyota, Nissan, and Mazda.
The OBD-II adapter software is written in C and compiled using CCS PCH C Compiler, Version 3.167. The code executes on the Microchip PIC18F248 microcontroller. The source code serves as a translator of generic (universal) and enhanced (manufacturer specific) OBD-II messages to/from a host device.
All microcontroller host communication is serial. On USB and Bluetooth, a serial translator was used to convert host serial messages into USB/Bluetooth. On Bluetooth, the Microchip RN42 chip was utilized in lieu of a host serial connector.
The adapter source code is located within the src directory. Main.HEX is the last adapter release.
VPW and PWM are legacy protocols used by Ford (PWM) and GM (VPW). These interfaces were painstakingly bit-banged using assembly language and a logic analyzer. Excellent comments document the source code. Software simulation tools assisted with development.
The ISO and KWP protocols are serial interfaces. A software-based UART available as part of the CCS compiler turns any unused port into a serial interface.
CAN bus is the latest OBD-II interface with all known speeds and modes supported by the source code. The Microchip processor has an on-board CAN bus interface.
The OBD-II adapter schematic is shown below. Actually its from the DashDyno, so the MODULAR 10 connector is a DB9 on the adapter variants. Both cable diagrams shown below.
Auterra products are no longer commercially available. However, the released source code and documentation may serve as valuable resources for future automotive-related projects.
Find this repository useful? Consider giving it a star!
Auterra products were designed for Palm OS, Windows, Android and DashDyno platforms. All products utilized the Microchip OBD-II adapter interface processor. Software languages utilized across the various platforms was C, C++, C#, Java and assembly.