Create custom parameters
If you're using aftermarket sensors such as high pressure MAP sensors, wideband oxygen sensors, etc. you can create a custom parameter by inputting calibration data for a particular sensor. Use these examples as a reference as the exact same configuration workflow is applicable to any other sensor type and protocol:Example 1: AFR (Air To Fuel Ratio) of NTK L1H1 wideband oxygen sensor
- Click memory address labeled "Voltage - Oxygen sensor" (HTS - eCtune → 0x02 {or 0x18 if you're using ELD as input for the oxygen sensor}; HOBD → 0x15) and in the address overview dialog click the plus button.
- Input Parameter name for identification (e.g.: NTK L1H1 AFR)
- Bind - (see binding explanation)
- Override - default, override not applicable for oxygen sensor voltage (see override explanation)
- Interpret as - select "user" for inputting custom calibration data
- Unit symbol - AFR air fuel ratio is dimensionless number, you can leave it empty
- Decimal Places - set to 3
- Base size - set to 1 byte (see base size explanation)
- Base type - set to "voltage based 0 - 5 V" (see base type explanation)
- Input the calibration data by adding as many conversion table rows ([X, Y] nodes) as necessary. Add a new row with the plus button at the bottom, remove a row by clicking the vertical 3 dots on the left side of each row
- Click the button "Create" to create a new parameter. Created custom parameters are available for selection in the main layout (gauges) as well as in the datalogging layout, under the filter label "User".
Example 2: 4 Bar MAP sensor (hypothetical)
- Click memory address labeled "Manifold Absolute Pressure" (0x04 HTS - eCtune, 0x12 HOBD) and in the address overview dialog click the plus button.
- Input Parameter name for identification (e.g.: MAP 4Bar)
- Bind - (see binding explanation)
- Override - set to Manifold Absolute Pressure (MAP) (see override explanation)
- Interpret as - select "user" for inputting custom calibration data
- Unit symbol - automatically filled out with app native units (see override explanation)
- Decimal Places - set to 0
- Base size - set to 1 byte (see base size explanation)
- Base type - set to "voltage based 0 - 5 V" (see base type explanation)
- Input the calibration data. In our hypothetical example the sensor has linear response, requiring only two [X, Y] nodes.
- Click the button "Create" to create a new parameter. Created custom parameters are available for selection in the main layout (gauges) as well as in the datalogging layout, under the filter label "User".
Example 3: MAP sensor values as vacuum (relative inHg / mBar)
- Click memory address labeled "Manifold Absolute Pressure" (0x04 HTS - eCtune, 0x12 HOBD) and in the address overview dialog click the plus button.
- Input Parameter name for identification (e.g.: MAP vacuum)
- Bind - (see binding explanation)
- Override - default
- Interpret as - select "user" for inputting custom coonversion data
- Unit symbol - inHg or mBar
- Decimal Places - set to 2 (for inHg) or 0 (for mBar)
- Base size - 1 byte
- Base type - default
- Input conversion data for inHg or mBar.
byte value (X) inHg (Y) 0 32.13 255 -24.34 byte value (X) mBar (Y) 0 1087.5 255 -825 - Click the button "Create" to create a new parameter. Created custom parameters are available for selection in the main layout (gauges) as well as in the datalogging layout, under the filter label "User".
General protocol exploration
- Select a memory address that you want to explore (Honda OBD: 0x00 to 0xFF, HTS - eCtune: 0x00 to 0x32), the address is appended to the parameter name in format "@0x__")
- Create a parameter:
- parameter name - for identification purposes
- bind - use default if you're using only one car profile, otherwise if you're using multiple vehicles with the same Android device, you can bind your definition to a particular profile so that it would be active only when the corresponding profile is active
- override - you can override the default definition provided by the app. This is useful in situations when the parameter values are used as input for calculating other parameters. (e.g.: MAP manifold absolute pressure parameter values are used for calculating Load, Boost, Fuel flow, etc.), thus by overring the default definition, the provided new custom definition will be used for internal app calculations. If using the override feature the app will automatically restrict the "interpret as" selection items to "user" only, and set the unit symbol to app native units. You have to input the calibration data in app native units (use Google units converter) so that the internal converters would apply correct conversion to user preferred units of measurement (configurable in app settings → User Interface → Units of measurement)
- interpret as:
- Default - no interpretation, the value is displayed as is (raw byte value)
- User - define a user interpretation via a conversion table / calibration data
- Unit symbol - unit of measurement symbol
- Decimal Places - formatting accuracy, 0 to 3 decimal places
- Base size - how many bytes are used for the value. Most values are 8 bit (1 byte), however some values (e.g.: "Injection Duration", "Engine Revs") use higher precision 16 bit (2 bytes), as denoted by the same label occupying two neighboring memory addresses in the overview table.
- Base type - i.e. calibration data input method, usually voltage based 0 - 5 V, applicable in most situations. The default is simply raw value input (1 byte base: 0 to 255, 2 bytes base: 0 to 65535)
- Binary State - choose one of the bit masks; for two state parameters, such as switches, discrete states, etc., masked value is displayed in binary range, 0 to 1 e.g. OFF/ON, masked parameters are denoted by an appendix in format "&0x__"
- Predefined - choose one of the parameters from the list that will be used as a base for interpreting the raw value
- created user parameters are available for selection in main layout (gauges) as well as datalogging layout, under the filter with a label "User"
- use the datalogging tool to record and analyze the values returned by custom user parameters to see if they read any meaningful data