Experimental Aircraft, Honda Engines and Monitoring

Hello all. My father is building an experimental full-scale aircraft and is placing in it a Honda engine converted for aircraft use (vikingaircraftengines.com). This is the engine from the Honda Fit small SUV and is rated at 110 hp. Because it’s not very popular, there are few options out there to monitor engine parameters in the cockpit and so, I’d like to build for him a LCD screen, run by Arduino, which will allow him to monitor the engine (RPM, oil press/temp, coolant temp, bus volts, fuel flow/pressure). I have most of these sensors figured out for coding but not sure how to approach the RPMs and Fuel Flow. I have read a bit about digital Tachometers online but wanted to ask a few follow up questions to the community. Here is what I know:

I do not have access to the OBD port on the car nor the CAN Bus.

The engine is run on a 12V system

The engine was delivered with a small bundle of wires coming from the ECU and left unattached (see picture). I am assuming these wires were intended to connect to the car’s instrument cluster but that’s just a guess. They are labeled TACH, ALT and FUEL FLOW. I suspect the FUEL FLOW was for some sort of gauge on the car to monitor fuel economy at various throttle settings.

I know that RPMs are sometimes read from counting the ignition coil pulses but I’d rather not go that route if I don’t have to. I’d really like to use the wire coming from the bundle mentioned above if I can.

I have not put a multimeter up to these wires jut yet but I’m sure that will be necessary. I also suspect from researching that some sort of Interrupt will be needed in the code. I’m new to interrupts.

There is a crankshaft sensor built into the engine which runs to the ECU. I suspect it is responsible for RPMs.

Here are my questions:

What signals are coming from the TACH and FUEL FLOW wires? What code will I need to write to read them accurately (generally speaking)?

These are singular wires. Do they need to be grounded? The engine electrical system is 12V but the Arduino is not. How do I integrate the two? Can they use a common ground?

What kind of circuit will I need to build? Pull-Up resistors? Diodes?

I have found it difficult to find data sheets on car engines. Does anybody know where this info is made available?

I understand that this is a big ask but I’m at the point where I don’t know what I don’t know. Hopefully as feedback comes in I’ll be able to ask more intelligent questions.

Screen Shot 2016-10-17 at 8.15.21 PM.png

Rather than -guess- have you asked people at Viking or their forum?

Paul

I have tried going to the source for information but the company is notorious for poor customer support. Moreover, they are selling an awful display of their own for $1,000 and won't be interested in showing me how to reverse engineer it.

cessna438:
I have tried going to the source for information but the company is notorious for poor customer support. Moreover, they are selling an awful display of their own for $1,000 and won't be interested in showing me how to reverse engineer it.

That's too bad. Who else has one of the engines and will they help? I guess by the time you are done, you will find the $1000 will be cheap.

Paul

Paul_KD7HB:
That's too bad. Who else has one of the engines and will they help? I guess by the time you are done, you will find the $1000 will be cheap.

Paul

These engines still relatively new and there aren't many flying examples. I'll try to poll the community but not expecting much from that effort. The odds of one builder having one of these engines AND being interested in Arduino are pretty slim.

I'm refusing to pay $1,000 for a POS. Especially when there are great options out there in the hobby electronics world.

Is the ecu a custom unit or the stock one for that engine. If it is the stock one, you should be able to access the can bus and the OBDll.
If you could find a wiring diagram for the vehicle the engine came from it would show the pin out for the ecu.
I would guess the wire labeled tach will probably be a 5 or 12 volt square wave with X number of pulses per engine revolution. The best way to find out would be to scope the signal.
Or if the stock vehicle used stepper motor instruments, they could be pwm outputs.
As for the fuel flow it could either be an input for a sensor or an out put if the engine has a fuel flow sensor on it.
If there was any way to access the OBDll port, the easiest way would be to use an ELM327 OBD to bluetooth adapter and an Android app called Torque OBD. This would allow you to use a cheap tablet
to display all of your instruments.
Again, finding a pinout of the ecu would be the first step.

detown:
Is the ecu a custom unit or the stock one for that engine. If it is the stock one, you should be able to access the can bus and the OBDll.
If you could find a wiring diagram for the vehicle the engine came from it would show the pin out for the ecu.
I would guess the wire labeled tach will probably be a 5 or 12 volt square wave with X number of pulses per engine revolution. The best way to find out would be to scope the signal.
Or if the stock vehicle used stepper motor instruments, they could be pwm outputs.
As for the fuel flow it could either be an input for a sensor or an out put if the engine has a fuel flow sensor on it.
If there was any way to access the OBDll port, the easiest way would be to use an ELM327 OBD to bluetooth adapter and an Android app called Torque OBD. This would allow you to use a cheap tablet
to display all of your instruments.
Again, finding a pinout of the ecu would be the first step.

One thing I was right about, “I don’t know what I don’t know”. Love this community. So after further investigation, I learned that the engine did not come with an ODB2 port but the stock ECU does have a DB9 connector coming from it. I presume that because I don’t have any other controllers on the car (brake lights, air conditioning, door locks/windows, etc.) the engine wouldn’t need all the data from an ODB2, hence the DB9 only for the engine. Does that make sense?

I’m guessing now I can go two ways:

  1. Use a CAN Bus Arduino shield to read straight from the DB9 connector and drive any display I’d like. Or,

  2. As detown suggested, get an DB9 to ODB2 adapter cable and view engine data from a tablet App.

So now are some more questions:

  1. Because the engine is going in an aircraft, the manufacturer (not Honda) put on it a reduction drive to slow the propeller speed and increase torque. Consequently, I want to read the propeller RPM primarily. I can do this easily with simple division in the Arduino code but for the tablet apps, do any of them allow customizable parameters or gauges so that I can see Propeller RPM and not Engine Core RPM?

  2. It doesn’t seem that the Torque ODB app can display Oil P or Oil T. These are important parameters for an aircraft. Is this a limitation of the CAN bus or just the App?

  3. Because I don’t have the full CAN Bus of an automobile and associated ODB2 port, can these tablet apps still read the engine data from the DB9 and just ‘ignore’ the other information it’s expecting from the CAN Bus (vehicle speed etc.) ?

  4. Can anyone recommend the best CAN Bus shield/library for Arduino should I decide to go that route? I want to pull from it the most parameters as possible.

Have you looked at this: Arduino - Torque OBD2 Wiki

You'd use the Arduino to independently read the engine sensors. No need to figure out what the engine is actually providing via the port.