ZZottel

A problem to any solution

  • Increase font size
  • Default font size
  • Decrease font size
Car FIS-Control daughterboards

Daughterboards for the FIS-Control

The main feature of the FIS-Control is to read data from electronic control units of the car and display the data using the screen of the instrument cluster. But at the point you can show data on the display, some other ideas come to mind. What about connecting additional sensors to the FIS-Control to get data that is not acquired by any control unit (e.g. oil temperature, exhaust gas temperature and more)? How about switching some relays having a nice menu at the instrument cluster?

First idea was, to add some general purpose inputs and outputs to the FIS-Control, hoping that this would satisfy most needs. The problem is, that there are various different sensors with different characteristics available. It would be impossible to support them all. Similar thing for the relays. If only a certain number of relays was allowed you will need exactly one more. Or you'd like to switch one relays off everytime another is switched on. On the other side, most will not need any external sensors nor relays.

So I decided to leave the FIS-Control with it's basic features, but to add an interface that allows to connect external controllers. I am aware the fact, that not everyone knows how to program a microcontroller... sorry for that, maybe you can find someone who can do it for you. I will not.

I prepared the FIS-Control for interfacing controllers that:

  • connect external sensors
  • switch up to 256 relays... I hope this is enough :-)

External sensors

The settings menu of the FIS-Control offers a list of all control units that can be choosen for reading of measurement data. An extra item in the list lets you select "external sensors" as source for the measurement values. These values are processed exactly like the data from the normal control units, so all features (graph display, logging min/max-values) can also be used.

 

Protocol for the external sensor board

An I²C bus with 400 kHz clockspeed is used to interface the external sensor board. The FIS-Control is the I²C-master, the sensor-daughterboard is the slave. The address of the slave is 0x50. The master always sends one byte and waits to receive 15 bytes from the slave. The used protocol is derived from the KWP1281. Up to four measurement values are put together to a measuring block. The byte sent by the FIS-Control indicates the requested measuring block. The message from the slave consists of the following elements:

1 0x0F - length of the message in hex notation. The length is 0x06, 0x09, 0x0C or 0x0F depending of the number of transmitted measurement values
2 0x00 - block counter as specified by the KWP1281, but it is not used here and may be of any value
3 0xE7 - block title as specified by the KWP1281. Always 0xE7 in this case
4 0x01 - ID of the first measurement value
5 0xC8 - First operand of the measurement value
6 0x00 - Second operand of the measurement value
7 0x21 - ID of the second measurement value
8 0x85 - First operand of the measurement value
9 0x85 - Second operand of the measurement value
10 0x0F - ID of the third measurement value
11 0x29 - First operand of the measurement value
12 0x00 - Second operand of the measurement value
13 0x12 - ID of the fourth measurement value
14 0xFA - First operand of the measurement value
15 0x5A - Second operand of the measurement value

Byte 4 to Byte 15 contain the measurement values in a special 3-byte-form as used by the KWP1281. More information can be found here: http://www.blafusel.de/obd/obd2_kw1281.html#7

For testing purposes I connected an acceleration sensor to the FIS-Control. The sensor uses the CAN-bus to continuously transmit the current acceleration values. Therefore I built a microcontroller-board to translate the CAN-messages into the I²C-messages that are expected by the FIS-Control. The result looks like this:

 

Thumbnail

 

You need Flash to view the video.

 


Switching relays with the FIS-Control

It is possible to connect a daughterboard to the FIS-Control, that controls up to 256 relays. Every relay may have its own label. As the labels are stored at the daughterboard, there has nothing to be changed at the FIS-Control.

daughterboard

Protocol for the external relay board

The FIS-Control is the I²C-master, the relay-daughterboard is the slave. The address of the slave is 0x40. The master always sends two bytes and waits to receive 32 bytes from the slave (not needed bytes are send as zeros).

Request number of available relays:

The master sends the ASCII-character "#" two times. The first byte of the slave is the number of available relays (for example 4):

0x23 0x23 0x04 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

Request the state of a specific relay

The master sends the ASCII-character "?" and the number of the relay. The slaves answers with the ASCII-character "0" or "1" to indicate the state. The remaining 31 bytes may contain a name for the relay. Example: Relay 2 is active, label is "RELAY 2"

0x3F 0x02 0x31 0x52 0x45 0x4C 0x41 0x59 0x20 0x32 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

Toggle the state of a specific relay

The master sends the ASCII-character "!" and the number of the relay. The slave answers in the same way as for the request of state. To toggle the second relay from on to off:

0x21 0x02 0x30 0x52 0x45 0x4C 0x41 0x59 0x20 0x32 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00



External EEPROM to enhance the memory of the FIS-Control

To store the clear text descriptions of the DTCs that can be readout with the FIS-Control an external memory is needed. Therefore it is possible to attach a standard I²C serial EEPROM. This is the daughterbaord that really can be done by everyone... hooray!

All you need is the EEPROM 24LC1025 or 24FC1025 (should cost less than 4 Euros), a little piece of perfboard, some wires and a soldering iron.

Schematic:

2011-07-02_-_EEPROM-Erweiterung

Pinout:

5 V goes to Pin 4 of the FIS-Control

GND goes to Pin 2 of the FIS-Control

SCL goes to Pin 16 of the FIS-Control

SDL goes to Pin 17 of the FIS-Control

 

Top-side:

2011-09-15 - IMG_1405

 

Bottom-side:

2011-09-15 - IMG_1406

 

I prepared a file that contains the descriptions of the DTC error codes (see download below). To load the file to the FIS-Control, attach the EEPROM to the FIS-Control and connect your Laptop to the serial interface. Power on the FIS-Control while pressing the down-button. This starts the FIS-Control in the EEPROM-loader mode. Now the file can be transfered using a Windows command line tool:

  1. Open the Windows terminal, by entering "cmd" at Start -> Run
  2. Enter the path and filename of the "Transfer EEPROM-Conten to Controller"-tool (this can be done by drag'n'drop).
  3. Enter the used COM-Port as first parameter, e.g. "COM1" or "COM2"
  4. Enter the path and filename of the EEPROM-content-file. This can be done using drag'n'drop again
  5. Wait until the transfer is finished (this will need some minutes).
You need Flash to view the video.

Download:



Daughterboard for external boost sensor

Most turbocharged cars don't have a gauge for the boost. If the boost is also unknown to the engine control unit, not even the FIS-Control could help. Until now... Now it is possible to install an own sensor to acquire the data that is needed to feed the FIS-Control. The measurement and conversion of the data is done by a microcontroller located on a small daughterboard. Here are the infos for DIY:

Download

This is a picture of the board. It perfectly fits into a "Strapubox 2412" (this is the same case the FIS-Control uses).

Thumbnail

 

Features

  • two AD-converters for input voltages between 0 and 5 volts (may be used to connect pressure sensors like the VAG MAP-sensor "038 906 051 B" and Freescale MPX4250AP)
  • one input may be used to measure resistance as well (usefull for some temperature sensors)
  • onboard ambient pressure sensor (Freescale MPX4250A)


Here is a first video of the board in action:

 

Last Updated on Thursday, 29 December 2011 12:13