I hate to reawaken a dead thread, but this information is not completely accurate...OBD-II includes 5 different signalling protocols:SAE J1850 PWMSAE J1850 VPWISO 9141-2 (K-Line)ISO 14230 KWP2000 (Keyword Protocol 2000)SAE J1939 / ISO 15765 CANWhich protocol was used depended on the manufacturer of your vehicle. Both the ELM327 and the STN1110 are able to use all five protocols, so that they will talk to any vehicle with an OBD-II port.However, here in the US, all cars manufactured after 2008 are required to have a CAN interface to OBD-II. There are sometimes multiple CAN buses, with a high speed bus (500kbps) used for engine information and a medium speed (125-250 kbps) bus used for entertainment controls and air conditioning. I use a SeeedStudio CAN shield to pull OBD-II information from my 2009 Ford Focus. It's a bit primitive compared to some of the nicer tools out there, but I've learned quite a bit about CAN in the process.And to answer the questions listed:Yes, the ELM327 or the STN1110 can directly act as the interfacing device between OBD and ArduinoNo, the MCP2551 (or MCP2515) won't work with ELM327 protocolThe MCP2515 is the CAN controller chip, similar to a UART for a serial port. The MCP2551 is the CAN transceiver chip, similar to the MAX232 for a serial port. The MCP2515 will generate the correct signals as far as timing is concerned, but they will be at the wrong (TTL) voltage. The MCP2551 takes in the signals from the MCP2515 and converts them to a voltage that the rest of the CAN bus understandsFor new cars in the US, all you technically need is CAN. For the maximum number of new and old cars, either the ELM327 or STN1110 are your best bet-Neil
Hello,I prefer digging up this old thread instead of creating a new one.I have some questions concerning the OBD and arduino.First of all why do I need a microcontroller like those mentioned above between the obd and the arduino?Can't the arduino do all the work? I get that it would be much harder but is it possible?I would like to make a stand alone multi tool OBD reader and maybe a logger too.What concerns me the most is the data rate. I would like to have the fastest display rate possible at a LCD. Which parts limit this rate? There is the car's ECU data rate for the OBD, microcontroller's rate and the display data rate.Is that correct?For example if I want to have a LCD showing some info (6-9 at the same time) reading from the OBDII.It is my understanding that if my car uses a SAE J1850 PWM protocol this provides data up to 41.6kB/sec.How many samples per second can I have for every value I want to display?I'm sorry if my questions are dumb but I'm trying to understand how exactly OBD and arduino work together.Cheers Spiros.