Shop OBEX P1 Docs P2 Docs Learn Events
OBD I LCD Screen — Parallax Forums

OBD I LCD Screen

xeudoxusxeudoxus Posts: 7
edited 2007-02-12 23:35 in BASIC Stamp
Hello, this is my first post in this forum. I am having problems understanding how to interface the bs2 to my 3000gt ecu.
·
The car is OBD I (ALDL Port) I currently have a max232 to convert the data from the ecu to an rs232 port. I have a palm datalogger that is currently hooked up to the system and works flawlessly.
·
What I want to do is use a LCD screen connected to my bs2 to display ecu data. Similar to the lcd screen in the dash of a newer vette.
·
What I am having problems with is how to receive the serial data from the ecu. By using a serial port monitor I found out that the ecu does not send ANY data. So does that mean you would need to send a request for the information? (Example, request data from 0x1D and wait for data?)
·
Anyways to sum up.. I need to request values from·the ecu·to display the calculated value on an lcd screen.
·
The baud rate is 19200, none, 8, 1
·
ECU Protocal Inforation
attachment.php?attachmentid=73966
·
·
Thanks,
-Matt
319 x 528 - 40K

Comments

  • Bruce BatesBruce Bates Posts: 3,045
    edited 2006-01-23 11:25
    Matt -

    First, I wasn't aware that any vehicle output ordinary RS-232 data on the OBD interface, without the use of a converter chip. When you say "I have a palm datalogger that is currently hooked up to the system and works flawlessly." do you mean to say that it is displaying appropriate OBD data?

    What does your SERIN statement look like in your BS-2 program? You might want to show us the entire program, if it's not too long.

    Regards,

    Bruce Bates
  • Clock LoopClock Loop Posts: 2,069
    edited 2006-01-23 12:36
    xeudoxus said...
    I currently have a max232 to convert the data from the ecu to an rs232 port. I have a palm datalogger that is currently hooked up to the system and works flawlessly.


    Does this mean that you downloaded, or purchased a program to datalog onto your palm? Or did you program the data logger?

    I am guessing you downloaded/purchased it.

    It sounds like to me that the palm is communicating to the 232, and the 232 is communicating to the ECU.

    With a stamp you will still need the 232 convertor, you'd just hook up the stamp in place of the palm.

    Now comes the key part, you need to know HOW to communicate with the ECU. Basically you need the data that the maker of your "palm datalogger" has.

    The palm datalogger sends commands to your ecu to tell it to send stuff. Standard com ports signal to eachother when each is ready to send or receive data.

    You need to find out the typical communication sequence from start to end result of getting the value of a particular sensor.

    Without detailed ODI I information, you and I are in the dark.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Meh. Nothing here, move along.
  • Clock LoopClock Loop Posts: 2,069
    edited 2006-01-23 12:40
    I posted a similar question here:

    http://forums.parallax.com/showthread.php?p=566746

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Meh. Nothing here, move along.
  • xeudoxusxeudoxus Posts: 7
    edited 2006-01-23 16:33
    I have not started making the code for the bs2. I dont have enough information to start. That is why I posted here.

    Here is a link to the datalogging software that I am running on my palm.
    http://www.3si.org/forum/showthread.php?t=203226


    Here is the schmatic for the max233 circut I am running.
    ecu-rs232.jpg

    I am looking for how the imforation get sent and received but no luck finding anything.

    Thanks,
    -Matt
  • xeudoxusxeudoxus Posts: 7
    edited 2006-01-23 20:21
    I email one of the creators of my datalogging software and this is what he said.

    PROTOCOL
    ODB1 protocol is very simple command-response - one byte requests/one byte
    responses. No checksums / startup etc.

    Here is the source to the palm datalogging software. Should provide communication protocol
    http://prdownloads.sourceforge.net/mmcdlogger/mmcd-1.5d-src.zip?download

    Thanks,
    -Matt

    Post Edited (xeudoxus) : 1/24/2006 3:44:57 AM GMT
  • Clock LoopClock Loop Posts: 2,069
    edited 2006-01-24 01:59
    I'll see if i can figr it out.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Meh. Nothing here, move along.
  • xeudoxusxeudoxus Posts: 7
    edited 2006-01-24 12:02
    I found more information on the protocol http://www.syndicate.evilsoft.org/projects/DSMDatalogger/Datalogger_Protocol.html

    Here is what I think might work, but I need to get the display working first before I can test.
    ' {$STAMP BS2}
    ' {$PBASIC 2.5}
    rpm             VAR     Word                 ' RPM VAR
    rpmD            VAR     Word                 ' Final data
    rpm = $21                                    ' ECU Code for RPM
    
    readRPM:
    DO
      SEROUT 16, 84, [noparse][[/noparse]HEX rpm]                   ' Send ECU Data Request( Correct baud is SEROUT 16, 32)
      SERIN 16, 84, [noparse][[/noparse]HEX2 rpmD]                  ' Waiting for ECU data
      rpmD = rpmD */ $1F19                       ' Multiply by 31.25
      DEBUG DEC rpmD                             ' Debug for display
    LOOP
    END
    

    I have a HD44780 2x16 lcd screen that I need to get working on this project. I do not know how to write the "rpmD" to the lcd screen. (I do not want to store my values in EEPROM) If you guys can help me out on the display I can start to do some testing smile.gif

    Thanks a bunch,
    -Matt
  • firestorm.v1firestorm.v1 Posts: 94
    edited 2006-01-24 13:16
    I have to say that This is a very very interesting project idea. I recently discovered the fun that is basic stamps and I have a couple of LCDs as well. Thanks for the great idea!! I have a 2005 toyota corolla and I think it's ODB-II but I'll do some additional research and find out. [noparse]:)[/noparse]

    This oughta be schweet!

    Matt
  • Kaos KiddKaos Kidd Posts: 614
    edited 2006-01-24 17:13
    My GOOD Jeep, (1999) HAD ODB-II, but that Jeep is gone, and my two year 1994 replacement Jeep doesn't have a data port [noparse]:([/noparse]
    I'de love to do this project... Hmmm... well, when I move into my fifth Jeep I can do it... [noparse]:)[/noparse]

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔

    Just tossing my two bits worth into the bit bucket
    KK
    ·
  • Clock LoopClock Loop Posts: 2,069
    edited 2006-01-24 20:28
    After replacing the timing belt and water pump on my dodge spirit 3.0L 6cyl 1993 car, verified the timing is correct, and car still won't start.

    Thats my reason for wanting a ODI-I reader.. I can't figure out whats wrong with this car.

    And today I did a spark test of the spark plug coil... After nearly stopping my heart, and throwing the screwdriver across the room from the shock (my gloves were oil soaked LOL) I had to take a breather, and consider the stupidity of allowing my elbowes to touch the car frame, even tho I was wearing gloves, and a long sleve shirt, the spark went thru my gloves, thru my shirt, and back into the car frame. a small amount of the shock made it across my heart out the other elbow, but apparently not enough to even make it flutter thankfully. But I am young.

    So I now sit back and appreciate the power of the electron, and still question what the hell is wrong with the car.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Meh. Nothing here, move along.
  • xeudoxusxeudoxus Posts: 7
    edited 2006-01-24 20:32
    BPM: What does the car do when you try and start it?
  • Clock LoopClock Loop Posts: 2,069
    edited 2006-01-24 20:41
    cranks over, but after a few seconds it starts to make funny noises, almost like something inside the engine is severely damaged. LOL Like a piston, or cam, or valve. Yea, I can't wait to tear apart the head. Oh joy.

    This all started suddenly, at first I didn't know what was wrong, untill I figured out the timing belt was split in half...

    So I took apart half the engine to get at it all, and while im there, replaced the water pump. I figured i'd test the engine before I put all pumps etc back on to make sure it goes. And it dosen't. The engine should start even tho the air compressor, the steering pump, and the alternator are not connected. I have the battery hooked up to a secondary car to fill the void of the unconnected alternator.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Meh. Nothing here, move along.

    Post Edited (BPM) : 1/24/2006 8:51:03 PM GMT
  • xeudoxusxeudoxus Posts: 7
    edited 2006-01-25 10:01
    Well tested the code tonight. Didnt work mad.gif

    I still cannot get the lcd screen the way I want it.

    I·will look over the datalogger source again rolleyes.gif

    ·EDIT: Sending the hex $21 I was getting a responce from the ECU (But it was a consistant value [noparse][[/noparse]error code???])

    -Matt
  • xeudoxusxeudoxus Posts: 7
    edited 2006-02-06 05:44
    Here is·some of the programming from the datalogger for the palm (Written in C) Still having a hard time communicating with the ecu.

    //·····E - exists, C - capture, G - graph
    //················ ··· addr·· slug·· format· E· C· G· Sn P Thr· clr· value······· descr
    /* 17>·X--- */·{ 0x21, "RPM",· f_ERPM, 1, 0, 0, 0, 0, 0, 119, "?\0····· ", "Engine speed",· },
    /* 18·X--- */·{ 0x26, "KNCK", f_DEC,· 1, 0, 0, 0, 0, 0,·· 0, "?\0····· ", "Knock sum",· },
    /* 19>·X--- */·{ 0x29, "INJP", f_INJP, 1, 0, 0, 0, 0, 0,·· 0, "?\0····· ", "Inj pulse width",· },

    Int16 f_DEC(UInt8 d, Char *s);
    Int16 f_HEX(UInt8 d, Char *s);
    Int16 f_ERPM(UInt8 d, Char *s);
    // Engine speed, 0..8000 rpm
    // 31.25 * x
    Int16 f_ERPM(UInt8 d, Char *s) {
    ·Int32 v = 2048000L * d;
    ·return StrPrintF(s, "%ldrpm", v >> 16);
    }
  • Series8217Series8217 Posts: 16
    edited 2006-08-08 08:28
    BUMP!

    Any progress on this? I'm working on a similar project trying to communicate with an OBD I Chevy 3.4 DOHC.
  • RothRoth Posts: 1
    edited 2007-02-12 23:35
    I would like to do this on my ODBII. Any word on that yet also?
Sign In or Register to comment.