190 likes | 322 Vues
Project #27: Consumer-Oriented Automotive Scan Tool. ECE 445 Spring 2005 Sung Taek Kim David N. Werner. Introduction: “CHECK ENGINE”. Official name: Malfunction Indicator Lamp Known unofficially as the “idiot light”, as it only activates after an error is detected
E N D
Project #27:Consumer-Oriented Automotive Scan Tool ECE 445 Spring 2005 Sung Taek Kim David N. Werner
Introduction: “CHECK ENGINE” • Official name: Malfunction Indicator Lamp • Known unofficially as the “idiot light”, as it only activates after an error is detected • Source of concern for many drivers with limited technical knowledge • Panicked consumer is easily set up by an unscrupulous technician Source: wjjeeps.com
Introduction: OBD-II History • 1985: California mandate to enforce emissions standards • 1988: OBD-I debuts in California, OBD-II proposed • 1990: Clean Air Act nationalizes OBD-II • 1996: Deadline for new vehicle conformance to OBD-II • 2008: Deadline for CAN protocol compliance
Objective • To build inexpensive, consumer oriented, and friendly-interfaced ECM scanner • Easy to use, no hassle to configure, and widely adaptable
Original Design : Data search algorithm • AVL or Balanced binary tree to store address of string in FLASH RAM Value Address Value Address Value Address “P0425 - .....” “P0317 - .....” “P0425 - .....”
Original Design : FLASH RAM programming • PC -> PIC -> FLASH RAM • Expected to use Visual Basic to build a serial communication program • Programmed PIC to control timing • TTL logic (Shift register) to shift out address and data from PIC
Original Design : Signal Routing Module • Naïve Errors: TTL preprocessing, signal routing – dangerous with 8-12V signal voltage • Solution: Elm Electronics 32x series – interprets ECM protocols to standard RS232 signals • MAX232 serial driver to convert TTL to RS-232
Original Design : User interface • Asynchronous machine originally specified • One switch for model selection, one for decision Signal Routing Module reset ISO VPW PMW Data Processing Module
Building Process Preprocessing: • Schematics provided by Elm Electronics • Built and tested on breadboard, then soldered to blank board • Pre-built version $75.95 each, or custom board $15.95 each plus component cost • Stated goal to have part cost as low as possible Source: scantool.net
Building Process : Data search algorithm • Hash table has been implemeted. • Fixed 90 bytes, 30 entry table at the beginning of FLASH RAM • Variable length of hash table entries • Fixed length of strings • Slightly better speed to search and easy to re-program “P0331 - ….” “P1731 - ….” “P2731 - ….”
Build a Intel-HEX file generator to use BP universal device programmer BP universal device programmer support various different types of FLASH RAM : AMD29F002NBB According to Intel HEX file specification, hash table, entries, and string sets are encoded * Dividing segment has to be careful Ex) FLASH.HEX :10_0610_00_0319192BAC30B3003B200430A900AF30_D4 :10062000B300FE21A90B0F2BAA012430A900122A26 :0C0630001C2BFA30B3003B20E72A6300CB :02400E003A3F37 Buliding Process: FLASH RAM PROGRAMMING
It is easy to just provide control state to PIC Two resistors and switches for model selection, and one for decision Building Process: Signal Routing Module, User interface 74HCT139N 1-4 demux Preprocessing Module MAX 232 From PIC 74LS153 4 -1 mux MAX 232 To PIC
It is easy to just provide control state to PIC Two resistors and switches for model selection, and one for decision Building Process: Signal Routing Module, User interface 74HCT139N 1-4 demux Preprocessing Module MAX 232 From PIC 74LS153 4 -1 mux MAX 232 To PIC
Testing: Power Consumption • 12V x current shown on power supply • Preprocessing: each module draws 5 mA idle, 14 mA during transmission, reception • LCD: Backlight draws too much power, heats system • Designed for 3x safety factor. 1.4 W maximum drawn power, 5 W rated from voltage regulators • Car Battery: 1200 W-hrs – Insignificant power loss for two-minute read time
Testing: HyperTerminal • Commands to preprocessing module: ATZ (resets preprocessor), 01 1C (demonstrates OBD-II compliance), 03 (reads error messages) • A successful startup and communication with preprocessor outputs “ELM32x v2.0” • Goal: to display the known error codes P1491, P0300, P0305 on 03 input • PIC, Flash RAM: Simulate known output signals from preprocessor • Goal: to display correct error message from a specific error code input
Challenges • “FB ERROR: BUS INIT” from ELM 323 • ELM 323 could not communicate with vehicle • Solution: Transistor not powered – K-line bus from OBD-II could not be drawn up • PIC would not behave correct if too many O/P or I/P exist. • The 2nd MSB address bit does not work (at all!!!) • ANY SHIFT instruction does not work if destination value is bigger than a byte! • Had to make an adder function to implement 19 bits addition • FLASH RAM is very much timing oriented • When data is read from FLASH RAM, timing control has to be correct • Programming FLASH would be easy if we are to use HEX file format ( it is done by PIC with LINUX serial communication)
Special Topic: OBD-II messages • P01xx: Emissions • P02xx: Fuel Injection • P03xx: Cylinders • P04xx: Auxiliary Emissions • P05xx: Electronic Systems • P06xx: ECM • P07xx: Transmission • P08xx: Transmission Auxiliary • P1xxx: Manufacturer Specific
Special Topic: COST • How to reduce cost even lower? • Implement TTL logic (Shift Register) to address • Reduce two PICs to one • Auto-selection of vehicle model will help to remove user input logic
If this was a two-semester course: • Manufacturer-specific codes • Improved user interface • Monitor sensors directly • Automatic Vehicle model selection • Features to store and print error code • Monitoring RPM, Temp, Gas Mileage and etc • One more RS-232 port or USB to update and download error code