Sunday, April 28, 2013

OBDuino Project

The goal of this project is to interface an Arduino with car OBDII diagnostics to display telemetry for the driver. This project first started because I wanted a tachometer in my automatic 2002 Prizm. I found one of those super cheap tachs on ebay, but hey, whats the fun in that? Here is a toyotanation (forum) post on that tach and install for most ~2000 Toyota Corollas. This tach works by reading the IGN or ignition pulse from the diagnostic port.


Then I found a post about LM2917 IC that converts the PWM IGN pulse to an analog output. Add a 12v to 5v voltage divider and it would be easy to interface to read the RPMs with an Arduino and display it on one of those 16x4 LCDs. I ordered some free samples, but still kept on looking for better.

I came across the OBDuino32k (for atemga 328 style MCUs) project and turned out to be the ultimate solution! It reads info from the OBDII engine computer and can gather much more than just RPM. Things such as MPG, miles left in tank, fuel remaining and more.Then I sample some of the Freescale MC33660 chips for the OBD interface which converts the ISO K line from the OBD to RX and TX to the Arduino. Only one signal wire is required to get ALL of this data! The Vishay part Si9243A also will work instead of the MC33660.

Parts list
MC33660 or Si9243A
OBDII Male plug part #1000 or #1090 for international people
220ohm resistor (or any resistor sutible for a LED on a 5v digital output)
3 push buttons
3x16 character HD44780 style LCD
Cable for OBD to the arduino
Hookup wire
Code
Arduino - Uno etc, or a homemade board
     Homemade board needs:
          Atmega 328P w/ Uno boot loader or a plain 328p if you have a ICSP and can flash the bootloader
          A 16mhz Crystal
          Two 22pf capacitors
          Simple push botton
          10k resistor
          USB to UART or RS232 to UART cable for uploading sketches
          5volt regulator
          Connecting wire


Here is a scheme i made in Fritzing for OBDuino: Link


This scheme is if you are using an actual Arduino board (like the uno)


Ta da! The atmega was too close to the bottom of the board so I had to make a little extension thing. 

The back side of the board. This is actually the second prototype and this turned out much better. I used protoboard (has the little copper solder holes) which made it way easier to make this. The ISP and FTDI connectors are at the top. 5v Voltage Regulator in the center, and the MC33660  is at the bottom.

Here is a Fritzing scheme of a simple breadboard Arduino with a ISP and FTDI conenctor

Here is a scheme of a Serial LCD version of the OBDuino. It would greatly simplify the hardware, but i have only just began modifying the code for it.

Currently, it wont upload a sketch via serial, so I'm trying to fix that. Altough the ISP header works and i burned the UNO bootloader. I also manually burned the sketch via ISP and it didn't work correctly, so i have some stuff to figure out.

To fix that issue, i put some switches in line with the serial lines going from / to the ISO chip so that it couldn't interrupt the Arduino programming signals. 

The new LCd came and i wired that up but it still didn't work. I checked the wiring and two of them were switched, so the old LCD could still be good, but i didn't try it.
I also didn't check the LCD orientation, so i had to flip it and redo the wiring again.

yay, right side up.

But i ran into this contrast issue when not powering it from the USBASP. Strange, i know. look here for more.

Update: I still can't for the life of me can't figure out why it wont init correctly, so i have abandoned it for now and will be just going for RPM from the TACH signal from the ECU of the car.

14 comments:

  1. this interface would serve to connect the car to arduino?:

    http://www.skpang.co.uk/catalog/high-speed-iso9141-interface-module-p-131.html

    ReplyDelete
    Replies
    1. not out-of-box that board converts the 5v serial lines (acceptable to arduino) to PC serial (NOT for arduino). to fixt his youd have to sodler your own TX and RX wires. also, that boards 5v regulator (arduino needs 5volts) can only do 100ma output. you will need more of a ~1A 5v regulator to power the obduino project.


      This is what you will have to do if you get that board (not much):
      https://dl.dropboxusercontent.com/u/28052258/untitl1212ed.png
      (the following are the ones i drew in)
      Blue: to arduino RX
      Dark Grey: to arduino TX
      Black: to arduino GND
      Maroon: to arduino 5v

      The brown box is a LM7805 5v regulator and you have to also put that in there.

      i couldnt really find any other boards, but look for one that is uart or 5v serial out.

      Delete
    2. the problem is to solder smd components is very difficult for me, so I thought of buying a ready-made interface, I have not found another that uses the si9243a or mc33660 MC33290 or, if you already made ​​some saves please pass me the link. thanks for your help

      Delete
    3. bit pricier, but this'd do the job. has holes for the OBD side and the connector, so both ways work.

      https://www.sparkfun.com/products/9555

      Delete
    4. yes, but my car is iso 9141 protocol (renault europe i am from spain) and de obd-II uart of sparkfun I think it works, if your saves if it works please tell me as much money to spend without saver that will work.

      Thanks

      Delete
    5. i have a renault 21 turbo with iso 9141-2 protocol,
      not if the product of sparkfun obd-II UART work in my car, mi intention is use with lcd and arduino, everything that has to do with the pc does not interest me because I'm not interested in connecting to pc.

      Delete
  2. the article that you put me in esparkfun is to connect to pc and not my purpose idk if this product works with my old 9141 iso renault 21 idk if could also connect it to arduino, saves me something like that if I aclarases theme a little as it is an expensive product and I would like to buy it and then not work on my car, (at least in some way) either pc or arduino and that if run with the pc at least would not have lost all money but as I say my intecion is arduino use only.

    thanks

    ReplyDelete
    Replies
    1. no, that is obd to UART. uart is the arduino type serial

      Delete
  3. ahhh ok,the question is that my vehicle is iso 9141-2 but that is supposed to obd I and according to the device that you show me only serves to obd II? is that if the product is not used for old cars or yes?

    ReplyDelete
  4. This is my first time i visit here. I found so many entertaining stuff in your blog, especially its discussion. From the tons of comments on your posts, I guess I am not the only one having all the enjoyment here! Keep up the excellent work.
    Jeep Patriot

    ReplyDelete
  5. Hi, I can use your adaptor with Renault Car KWP2000(5 Baud) ?

    ReplyDelete
    Replies
    1. find out what interface it uses...CAN, ISO etc

      Delete