I'm building a small Arduino Shield kit that incorporates an MCP2551 CAN transceiver, GPS, microSD card and an LCD for data readout. The end result will be a small unit that can collect a number of pre-configured CANBUS PID datapoints and log them to the storage card together with GPS Timestamp, speed, Lat/Lon etc. It will also be able to display up to four PIDs on the LCD. I've got it set-up and reading some basic CANBUS PIDs but wanted to try and capture some of the non-standard Prius specific items such as SOC, IGN, Inverter Temp. Has anyone got the PIDs for any of these?
Sounds like a great project. Are you talking about these codes: https://spreadsheets.google.com/ccc?key=0AiHL0r_2nhUEdF9lVVBxOVNoN3Zva3E0NmdZTUR1eVE&hl=en ?
Not quite, those appear to be the Scangauge XGauge codes for the Gen III. I'm after the Gen II OBDII PIDs. Wikipedia has the standard codes here which I have tested but I'd like to grab some of the non-standard Prius PIDs.
The original spreadsheet by Attila Vass: http://www.vassfamily.net/ToyotaPrius/CAN/PriusCodes.xls Prius PHEV TechInfo - EAA-PHEV http://www.priusfreunde.de/portal/images/fbfiles/files/Prius_CAN_SID_PID.doc
I believe IGN is a standard code - as it doesn't need an XGAUGE to display. Inverter Temp is still unknown. The SOC has been found somewhere.
Thanks all, need to do a little debugging as I'm now getting gibberish data, looks like a bus speed issue. I've got Bus Speed set at 500kbps which I thought was correct for the Prius but I'll need to debug that before I can proceed and test the PIDs I've found. One step forward, one back. Thanks to your links I've found SOC and Throttle Position, plus of course the standard PIDs for RPM, SPEED etc. Not sure what else is worth monitoring on the Prius?
Here are a few Gen2 items that I've tentatively decoded by watching traffic to a scantool. None of them have been verified - maybe the Arduino device could help out on this... Command . Data. . . . Description 7e2 21 42 . . . . . . Query Aux battery voltage 7ea 61 42 B6 . B7 . . Reply - Voltage times 100 (B6B7 of 0x36DA is 14.04 V) 7e2 21 c3 . . . . . . Query MG1/MG2 data 7ea 61 c3 B6 . B7 . . MG2 RPM (0x0000 = -16383 RPM, 0x3FFF = 0 RPM, 0xFFFF=49152 RPM) B8 . B9 . . MG2 Torq Nm X 8, subtract 500 for actual value B10 . . . . ? B11 . . . . ? B12 B13 . . MG1 RPM B14 B15 . . MG1 Torq B16 B17 . . ? B18 B19 . . similar to engine RPM, but not exact B20 B21 . . Engine RPM B22 B23 . . ? B24 . . . . SOC as % B25 . . . . ? B26 . . . . ? B27 B28 . . ? B29 . . . . ? B30 . . . . MG1 Inverter Temp ((value X 9 / 5) - 58) = oF B31 . . . . MG2 Inverter Temp B32 . . . . Motor Temp 2 B33 . . . . Motor Temp 1 B34 . . . . HV battery voltage (divide by 2 for Volts) B35 B36 . . ?
The schematic is in .pdf format here. HTH I gave up in the end. I couldn't get any of the Prius specific PIds functioning. Been to busy to revisit of late.
A few more Gen2 ... Command . . . . . . . . . . . Description 7e0 21 33 . . . . . . . . . . Query Atmosphere Pressure 7e8 61 33 xx. . . . . . . . . Reply - Divide xx by 6.8333 to get absolute psi. 7e0 21 3c . . . . . . . . . . Query Catalyst Temp B1S1 7e8 61 3c xx xx . . . . . . . Reply - temperature biased by 40 F . . . . . . . . . . . . . . . Samples: 0x0000=0 F, 0x0C57=528.6 F 7e0 21 3e . . . . . . . . . . Query Catalyst Temp B1S2 7e8 61 3c xx xx . . . . . . . Reply - temperature biased by 40 F 82 5b f0 21 18. . . . . . . . Query Passenger Weight (KWP2000 bus) 86 f0 5b 61 18 xx xx xx xx. . Reply - multiply by 1.02 for grams . . . . . . . . . . . . . . . Sample: 0x00010000=141.16 lbs EDIT: The temperature value of 0x0000 is actually -40 F. Not zero as described above.
Cool, the passenger seat can detect the weight. I knew it has a smart air bag but didn't know it can measure the weight.
Imagine the trouble you could get into if you could set up a Scangauge to measure you spouse's weight. "Honey, pick up your feet so I can get an accurate weight..." Since the occupant classification ECU is on the KWP2000 bus, the only tools that can read it are the Mongoose and Toyota Techstream interfaces. Toyota uses an optional setup of KWP2000 that none of the ordinary (cheap) tools seem to be able to manage. I think the problem is that Toyota uses a 9.6 Kb data rate, while most KWP tools only work at 10.4 Kb. Maybe we should encourage the Scangauge folks to add support for the Toyota KWP. TPMS is also on the KWP bus.
Visiting this post again... So this temperature and the following ones are all based at -50C (-58F), not the usual -40C?
Hmmm... This gets my brain working overtime. I've now designed 3 different CAN/OBD2 products for the law enforcement market. This should be easy to cobble up a prototype. Hey - anyone here from ScanGauge? My last two designs fit within an OBD2 connector - very tiny.
Yes, i confirm 50°C ofset for inverter_MG1, inverter_MG2, MG1, MG2 and boost_converter. But 40°C for catalyst., intake_air_temp, outside_temp...
planetaire suggested this nice document for passive monitoring at another thread which I just realized it is in gen 3 forum so I try to continue the discussion here: Thank you! Has the IGN (ignition timing) been verified since? Vass had a hunch on 0x526 but no details. Also could 0x020 or some others be some kind of fixed time interval ticks? If so it would come in handy. For the RPM Vass confirmed 0x3C8 #2#3 unit is 32 RPM but mine seems to be 8 not 32? Looking for more real world test experiences... Thanks! Thanks!
Yes i believe also 0x020 is a timer or some sort of mark. Nothing interesting inside. RPM You realy have to multiply byte 3 by 32 (only one byte then max is 8160 rpm ) You can get an other Rpm with pid 0x348, byte 3 *256 + byte 4 VVTI: 0x526. I use byte2 / 2 -16 and result in degrees. But i am not sure. Enjoy it.
Just to be sure that I understand this correctly, in the highlighted samples above, 0x0000 should be -40 F, not 0 F, right? Thanks!