Electronic Fuel Injectors¶

Photo courtesy of Lutan Engineering
ArduPilot provides support for several types of electronic fuel injection controllers for internal combustion engines. Both CAN and Serial communication interfaces to the EFI are supported.
Most units provide status information on RPM, Fuel flow, consumption, temperature, etc.
This information is reported in the autopilot logs via the EFI, EFI2, and ECYL log messages. Real time data is sent in the EFI MAVLink messages for monitoring by the GCS.
The following units have been tested and are supported:
MegaSquirt Serial
NWPMU CAN bus
Lutan Serial
DroneCAN (adapted versions of the above serial units)
PiccoloCAN (Currawong’s ECU and IntelliJect EFI)
Serial Setup¶
For the example below, the unit will assumed to be attached to SERIAL5 of the autopilot.
EFI_TYPE: MegaSquirt = 1, Lutan = 3
SERIAL5_PROTOCOL = 24 (Serial EFI))
SERIAL5_BAUD = 115 (115.2Kbaud)
NWPMU Setup¶
For the example below, the unit will be assumed to be attached to the first CAN port.
EFI_TYPE = 2 (NWPMU)
CAN_P1_DRIVER = 1 (first driver)
CAN_D1_PROTOCOL = 6 (EFI_NWPMU)
DroneCAN Setup¶
For the example below, the unit will be assumed to be attached to the first CAN port.
EFI_TYPE = 5 (DroneCAN)
CAN_P1_DRIVER = 1 (first driver)
CAN_D1_PROTOCOL = 1 (DroneCAN)
PiccoloCAN Setup¶
For the example below, the unit will be assumed to be attached to the first CAN port.
EFI_TYPE = 6 (Currawong-ECU)
EFI_FUEL_DENS: Fuel density to calculate fuel consumption
CAN_P1_DRIVER = 1 (first driver)
CAN_D1_PROTOCOL = 4 (PiccoloCAN)
CAN_D1_PC_ECU_ID: Node ID to send throttle commands to
Displaying EFI telemetry in Mission Planner¶
The following EFI telemetry is available in the Mission Planner. Just right click in the DATA screens HUD display and select User Items
. Then select what data to display.

Using the EFI RPM in ArduPilot¶
The EFI’s rpm telemetry can be used as the autopilot’s RPM sensor, for display in the GCS as above, or for use with the harmonic notch filter.
First, set either RPM1 or RPM2 sensor as being sourced from the EFI (examples will use RPM1):
set RPM1_TYPE = 3 (EFI)
then setup the RPM Sensor Based Dynamic Notch Setup