CANchecked MFD15 Digital Gauge

TL;DR "Everything is computer"

Now that the dashboard minor gauges are fully calibrated, how about getting rid of them ? 🀑

The rationale is that my phone holder hides the coolant temperature gauge, and that space is better used with Waze that shows me what the road looks like ahead, rather than having the sad old needle telling me all is fine. When in doubt about any engine parameter, I use a mini ELM27 dongle to display real time data on the phone (read all about that here).

With the current technology, nothing should prevent the build of a OBD display with a 52mm gauge form factor. I was obviously not the first to have that kind of idea.

πŸ‘¨‍πŸ’» BTI gauges and gaugeART products were identified as the most likely candidates. Both of those were not available in continental EU and required some PC software or phone app (which is even worse) of unknown lifetime and compatibility. Moreover, BTI didn't answer my e-mail about the durability in an open cockpit.

Weeks later, nearly defeated, I stumbled upon CANchecked and their extensive range of OBD/CAN displays. They're a German company whose MFD15 gen2 model is exactly what I was looking for.

πŸ† Sandtler (of Germany) offered the best price, with very affordable (9.50€) next-day UPS delivery. I bought the newbie plug & play option with a OBDII harness.

The "gen2" lineup comes with an embedded user interface that is accessed with any web browser. The gauge provides a WiFi access point which, when enabled, also provides a configurationpage at the ESP32 default "192.168.4.1" IP address. WiFi is enabled by pressing both buttons together. Instructions appear on the screen, nice and easy. On my phone I have to disable data from my SIM card for it to work though. No issue for my laptop.

Form factor is thus a standard 52mm gauge;  rather slim with a depth of only 20mm. It provides 3 well documented connectors : one for power and USB connection, one for an optional remote control (basic digital rotary encoder), and a larger connector for the CAN/OBD hi/lo data lines, as well as provision for 6 analog inputs to which about everything and anything can be connected.

I did remove the original oil pressure gauge to fit the MFD15 in its location. For connections, the kit provides a bunch of wires that click in the connectors, they can be connected to anything required. I fed ground and +12V using the black and red wires on which I crimped spade connectors. I plugged those spades to the connector that powered the original gauge. The lightbulb was removed outright with its holder.

The OBD/CAN harness is plugged to the OBD port and comes with its own miniature connectors on the gauge side. I didn't use the power leads as while ground is available from the OBD port, a flying red lead is to be used to gather the accessory +12V from somewhere else. OBD only provides a permanent power supply, that's how the standard is defined.

πŸ”ŒBefore any of that, I plugged the provided USB lead to power the unit with a powerbank, and went to the configuration interface with my phone. First thing was probably uploading the 128x128px 24 bits BMP boot logo I had prepared the night before. I did also disable the default dark grey "beehive" background. My MFD15 displays the "Caterham 7 made in Great Britain" badge for 3 seconds while booting up.

I kept the unit powered from the USB powerbank (I could have used the USB socket in the car), and plugged the OBD connector to the socket under the dash.

The standard OBD2 "TRI" file was selected, and just like that the gauge was receiving about all necessary data, with a selection of 8 predefined "page" layouts. I opted to use the left button as the dim switch, and I have disabled the easter egg, which is some version of the classic "Pong" game.

I finally installed the gauge in the dash, adding a 50mm o-ring for it to rest on.

πŸ™Š Joy was short as it quickly became evident that the oil pressure is not part of the standard OBD messages. As no information is available on which CAN message IDs or data format the Caterham dashboard (made by Caerbont) uses, I went full McGyver with a temporary fix.

My guess was that the analog dashboard outputs from the tachometer are in fact inverted PWM signals, it should have been possible to passively convert those to voltage levels, and feed that to the analog inputs of the new gauge.

πŸ’‘ The hack was marginally satisfactory, as despite all kinds of pullup resistors to 5V VREF, the addition of various capacitor sizes and resistors to the PWM feed, I had to max out the digital damping factor, which rendered the measure value extremely low to react and update. That was only good enough for the track day on the next morning.

At some point in that story, I have downloaded and installed the latest firmware. It was a fiddly process. It's explained well in the menu and on the gauge display, but fiddly still.

πŸ§™‍♂️ I got some advice from MH7 who kindly told me there should be no issue with the standard SCS CAN messages also published to the bus. That would indeed be the best solution if I were to connect to the "CAN 1" bus under the hood rather than the "CAN 2" bus used to feed the dashboard and OBD socket. 

As a reminder, the tachometer gets RPM, oil pressure, coolant temperature and fuel level over CAN bus and provides what I assume are negative PWM outputs fed to the minor gauges. The speedometer/odometer is directly fed from the rear left wheel's hall sensor while the rear right's sensor is fed to the ECU.

πŸ’Œ Pushing further, I asked SCS-Delta if they could provide me with any details about the messages sent in the proprietary Caterham/Caerbont format.  They promptly and kindly answered me that they are not in a position to disclose those -which is about what I expected- and directed me to the "User Defined CAN Outputs" settings of my ECU. 

A first try on the default custom ID didn't work, and I lost 2 hours fiddling with various message settings, identifiers and formats in the CANchecked software that allows the management of custom TRI files. I was later told by the SCS support team not to use the 0x400 default proposed CAN ID as it could collide with other messages on the bus, and to move up to 0x550 instead.

On my way to contact the CANchecked support team, I looked around their extensive library of TRI files with the idea of inspecting how non-OBD setups were defined. And, glorious surprise, they have a "S-SCS.TRI" file available to work with the SCS-Delta ECUs.

πŸ… With that, it took all of 5 seconds to confirm that my very first configuration the night before was spot on, and that only the collision with other messages on the proposed default CAN ID were messing everything up.

It didn't take long to fine-tune my TRI file and display pages and have both the oil pressure and fuel tank level shown perfectly.  A small -0.8 bar offset was required on oil pressure,  and a more complex formula was applied to the raw fuel sender voltage to accurately display liters of fuel remaining in the tank.

I also got better settings for the alarms : when oil pressure is below 1 bar, the value is highlighted with a yellow background. When the engine is over 800RPM, it will also trigger a popup over any currently displayed page, and blink the status led aggressively, in blinding violet. Same goes for the coolant temperature when it reaches 100°C.  I've also set a more subdued warning when fuel is below 5 liters.

I'm truly chuffed by the end result, and I'm considering getting a second MFD15 that would replace the fuel gauge. It would display a vertical bar with the tank level, the battery voltage and outside temperature, which would come from an additional NTC thermistor fed to an analog input. 

As all that is pure magic, It should be able to publish that outside temperature data on the bus too, and it could be shown on the first gauge as well. The most sensible thing is actually to have the sensor on the first "main" gauge and only have the second one act as a display. It would also be fun to have an indicator for the active map (drive mode); I could hack the shift light bubbles and the led for that.

The would get rid of the hidden coolant temperature gauge, and prepare a support for my phone holder; replacing the suction cup and most of the bracket.

Endless possibilities.

The only negative aspect is that unless (until?) I manage to reverse-engineer the proprietary CAN messages, perfection is not achievable with an OEM ECU.  No oil pressure or fuel level for you πŸ˜
Until I decide to fool around and see what's published on that CAN2 bus; I bet I'll find 4 bytes for the whole thing.

EDIT on October 26th :
This week-end I drove to Normandy facing a strong wind all along the two legs of the journey. When the analog fuel gauge reached the "R" mark, I was far below the 420km I would have expected. Later on, I confirmed with the CAN gauge that I had indeed reached 100mV coming from the fuel sender, a sure sign that there was between 0 and 2 liters left in the tank. That was in contradiction with the needle that would have me let believe I had 5 liters available. I drove a bit more and stopped at the first convient gas station I could find. As I was able to fill a bit over 32 liters, I was running on the last drops of fuel. The needle still showed I should have had about 5 liters left, which would have been plenty. Same thing today with 1 liter left while the needle still showed 3 quarters of the reserve available. As I'm confident with the ECU mapping, I will need to check why it doesn't go down to zero when the ECU sends the 33% signal I determined last month. I'll probably define a new zero in the ECU.  Anyway, the MFD15 saved my ass twice this week-end in conditions where the odometer couldn't predict my fuel autonomy. Other than that, the oil pressure sensor voltage does drift with temperature, I had to halve the -0.82 bar offset I had set with the engine cold. While at it with the computer, I did also adjust the min/max values for boost pressure, as the alarm limits are also used to scale the gauge layout; I wish those were two distinct concepts in the settings.

EDIT on October 27th :
I managed to create a second dedicated custom map for the fuel level, by means of a PWM value I didn't connect to any output but could publish the value of over a CAN message. I also took the opportunity to publish gas pedal, throttle, fuel pump power, as well as knock detection ratio for each cylinder + threshold on a second message (0x555). While the computer was connected, I determined that going downwards with the analog fuel gauge, a 26% signal landed on zero. The 'R' mark just above that requires a 52% value, what a crazy gap.

πŸ“Ί Watch it in action in the video below
Shown in order : Boot logo ; (1) boost, air intake temp, oil pressure, coolant temp ; (2) boost, oil pressure, coolant temp ; (3) coolant temp, intake temp ; (4) gas pedal position, throttle position, boost pressure, fuel pump power ; (5) fuel gauge, oil pressure, coolant temp ; (6) knock detection for each 3 cylinders, knock detection threshold; (7) battery voltage, intake temp, oil pressure, coolant temp; (8) tachometer




Comments