[ModAir] Rotax 582 Engine Interface Module

Various engine sensors to CAN-bus interface module for the ModAir project

Similar projects worth following
This module interfaces Rotax 582 Engine sensors to the ModAir CAN bus. It has physical connections for RPM, 2x EGT (thermocouple), Fuel Level, Fuel Flow, H2O temperature (NTC thermistor), and 3x Outputs (2x Open Drain, 1x Relay).

This module is a sub-system of the ModAir project. Refer to the main project page for details:


The diagram below provides an overview of the module:


  • Bus Voltage Measurement
  • EGT Thermocouple 1
  • EGT Thermocouple 2
  • Engine RPM
  • Engine Hours / Hobbs Meter
  • Engine On Time since started
  • Maintenance Timer
  • Fuel Level
  • Water Temperature
  • Relay Output
  • Open Drain 1 Output
  • Open Drain 2 Output
  • Fuel Flow Instantaneous
  • Fuel Flow Average since started
  • Time to Empty Tank (fuel endurance)
  • Range to Empty Tank (fuel range)
  • Fuel Burned

Schematic and PCB

The schematic is shown below. Source files are in the GitHub repository.


I designed the engine interface module PCB to fit into the Hammond 1591 ABS Flanged Enclosure (86.24 x 57.04 x 24.25mm, RS Stock no.: 818-0523).

Pictures after assembly are shown below:

  • 2 × MAX6675 Cold-Junction-Compensated K-Thermocouple-to-Digital Converter
  • 1 × MCP2562FD High-Speed CAN bus transceiver
  • 1 × Hammond 1591 Enclosure ABS Flanged Enclosure 86.24 x 57.04 x 24.25mm
  • 1 × DSN-MINI-360 Mini DC-DC adjustable step-down module
  • 1 × dsPIC33EP32GP502 Microprocessors, Microcontrollers, DSPs / Microcontrollers (MCUs)

View all 9 components

  • Update: 30 April 2017

    Rene04/30/2017 at 19:45 0 comments

    Current hardware status: most peripherals [all, other than fuel flow and open drain outputs] have been tested and work as expected.

    Current firmware status: about 60% complete. The sensor framework is mostly complete. Some dsPIC33 specific work is still required for saving non-volatile variables using the run-time-self-programming (RTSP) methods. Since an entire page needs to be erased before re-writing, all non-volatile variables need to be grouped together and aligned to the page boundary. The remote console menus for calibration are also still unimplemented.

  • Calibration Points

    Rene04/30/2017 at 19:31 0 comments

    For the Fuel Level and Water Temperature, calibration involves storing a set of user reference points. The module then linearly interpolates between these points (arbitrary spacing). The fuel level calibration involves starting with an empty tank, and incrementally adding a known measure (e.g. 5L steps), talking a reference point after each step.

    The water temperature calibration is based on ideal values (from the datasheet) for my particular NTC sensor. The red line in the graph below shows the NTC temperature versus 12-bit ADC input value. The green line represents the interpolated values from the reference points.

    The reference points are given in the table below. They were selected to minimize the error between interpolated and ideal values using Matlab / Octave.

    ADC Value (12-bit) NTC Temperature
    41 180°C
    72 150°C
    126 124°C
    239 100°C
    360 84°C
    638 65°C
    1154 44°C
    3320 -4°C
    3740 -19°C
    3892 -30°C
    3986 -40°C

    This results in an error of ±1°C, much better than the accuracy of the NTC.

View all 2 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates