"When a man dies, his good deeds come to an end except three: ongoing charity, beneficial knowledge and righteous offspring who will pray for him." [Sahih Muslim: 3084]

Wednesday, June 26, 2013

Mitsubishi ECU - OBD Command Code and Protocol

OBD Command
Since there is a mistake on my first post regarding of the protocol,  I've made some more research on that. Here is the result on how the ecu response to the command.

Based on Christia999 code, I found the OBD command code was setting at here (refer to picture 1 and picture 2 below)
Picture 1 (The OBD Command)

 
  Picture 2

If we look further on the code comment, the OBD code were divided into few table ranges to store the variable value. Here are the table range comments by Christia999:

So how does it work? Let say we want to get the RPM value from the ECU. So the command we should be use is 0x21 (based on Mitsubishi ECU command that I've posted before). Whenever we send 0x21 command, the ECU will look-up at the variable value of the table which can be refer at the picture below.

So it is prove that the function for RPM is correct where RPM function is y=31.25*x and x is a value response by ECU.

Communication Signal
As I've wrote before, the communication with the ECU can describe as below:
  • Serial communications rate is 1953 baud, 8 bits, 1 stop bit, no parity, TTL. 
  • Communication signal is "Inverted"
  • Communication referral as 1 byte sent and 1 bytes receive
There are some people a little bit confuse including me about the multiplexing communication. Wikipedia explain that multiplexing (also known as muxing) is a method by which multiple analogue message signals or digital data streams are combined into one signal over a shared medium.
Multiplexing communication between ECU

Reference:

Wednesday, June 5, 2013

On-board Diagnostic Between Mitsubishi ECU Using Arduino - Part 2

Hardware
The following lists are the items required for this project:
  • Arduino
  • So what is Arduino? "Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments." You can get more detail information about Arduino at here. There are various types of Arduino at market. For the development of this project I use Arduino UNO R3 and other type of Arduino clone still can be use. If you on budget you can build Arduino standalone by your self. Here some of the tutorial how to make it:
  • ALDL to RS232 adapter
  • I'm using this schematic diagram to made the adapter. Please use this diagram for our tutorial process.
    Please take a note that there is some modification I've made by adding a 1 hex inverter 7404 ic in process of building the pcb. The purpose of 7404 IC is to intervention the Arduino serial signal instead using using another RS232 to TTL adapter. By the way this board is under development because there is some error found which made my the LCD shown unknown character. 

    The prototype of 2 layer PCB version - Mitsuduino Shield using 7404IC and MAX232
  • dfRobot rs232 to ttl converter
  • It used to convert the serial signal to our ALDL adapter. You can also use other type of adapter as long it can convert the signal between rs232(serial) to ttl 5v signal.
  • 16x2 Character LCD
  • It used to display the value we get from the ECU. You can get the cheapest on the ebay "keyword 16x2 lcd"

Okey we have finished on preparation the hardware side but not done on wiring/cabling :P, i will write about it for next article  and also on the software part including the simple coding for Arduino to display the result we got into LCD Display.

Monday, June 3, 2013

On-board Diagnostic Between Mitsubishi ECU Using Arduino - Part 1

Introduction 
This project is about an On-board diagnostic tool for ECU car made by Mitsubishi around years (90-96). I'm using Arduino as the main devices for the medium of communication. The main focus of this project is to display all the data received on the dashboard of the car by using the LCD display. Beside that, i also have a plan to display it using a mobile phone or tablet.
 

Protocol 
Honestly, It took me a long time to get a proper information regarding communication / protocol between the ECU. This is caused by several factors including the information sought is limited, the lack of equipment and in addition there are also some people do not tend to share information due to commercial factors.

Before the analysis described below is done, I have provided some devices to get more detail on how MMCd Logger communicate with the ECU. Later on, all the information will use as input to develop a logger with Arduino. The devices are:
 
  • ALDL to RS232 adapter as communication tool between ECU and Palm. Download full schematic diagram here. An ALDL voltage describe by Wikipedia as "The signaling of ALDL is very similar to the RS-232 serial data standard; differing in the voltages used to denote logical one (usually 0VDC) and logical zero (either +5VDC or +12VDC), and that unlike RS232, both transmit and receive functions are on the same conductor.
  • Palm IIIc
  • 8 Channel Logic Analyzer
  • MMCd Logger version 1.8
  • Logic Analyzer Software
For a note, MMCd Logger is PalmOS automotive diagnostic and data logging tool compatible with many pre-OBDII (1990-1994) Mitsubishi vehicles and it was very popular among Mitsubishi users including DSM cars.

Based on logical analysis software, I found that the communication between the ECU and MMCD Logger is based on; for each 1 byte command was sent, the ECU will respond with 2 bytes 1 byte of data. Here are the results of analysts that has been made:
  • Serial communications rate is 1920 baud, 8 bits, 1 stop bit, no parity, TTL. (On MMCd web site stated it communicate at 1953 baud rate but both have replies.)
  • Communication signal is "Inverted"
  • Communication referral as 1 byte sent and 2 bytes 1 bytes receive 
Here is some sample of signal wave received from the ECU. For record, the signal generated below was taken from my 4g91 ECU.



Table of Mitsubishi ECU Command
 
Notes:
Steve from dsmtuners.com have made a correction on me about the protocol with the ecu. The 2 bytes data that i have mention before is actually an echo of the signal because of using a multiplexed data line.  

Reference