/EFIGenie

An open source engine management

Primary LanguageC++

EFIGenie

An open source engine management. It uses a taskmanager and is coded in a service oriented architecture.

The target microcontroller at the moment is the cheap but powerful STM32F103C8 but any microcontroller can be ported by creating just 4 services, AnalogService, DigitalService, PwmService, TimerService. Looking at porting to a couple other STM32 platforms as well as NOINJECTION on an atmega328p for an ignition controller. A large benefit to this architecture is that new sensors/abilities/features/etc. can be added very easily and can be chosen between the old and new through the configs. which means decoders can be changed, sensors added or removed, features added or removed. all without having to recompile. There are also some wrapper classes where things like two step rev limiters can be implemented or tri-step or even quad-step. still have a small list of things to complete but i am at a state where i am going to start testing.

Features

  • Customizable(size and limits) 3D Fuel and Ignition Maps (Speed Density)
  • Unlimited cylinder sequential injection and ignition (Depends on hardware)
    • Stm32Devboard - 8 cylinder sequential (10, 12, 14, 16 wasted spark/banked injection)
  • Flexible Crank Cam Decoder
    • GM 24x (Cam + Crank and Crank Only)
    • --More to come
  • Individual injector trims
  • Injector offset voltage and MAP
  • Injector short pulse adder
  • TPS and MAP acceleration enrichment
  • Temperature Bias between ECT and IAT
  • After Start Enrichment
  • Warm Up Enrichment
  • Fuel Prime
  • Fuel Pump (On/Off)
  • Fuel Pump (PWM Open Loop TPS or Map tables)
  • Deceleration fuel cut off (DFCO)
  • Flex fuel
  • Rev Limiting (Hard and Soft Spark)
  • Launch control (Hard and Soft Spark)
  • Fuel Trim (Wideband/Pid and Narrowband | predictive based on TPS or MAP)
  • Tach Output
  • Vehicle Speed Sensor
  • Idle control (PWM and Stepper - PD control loop)
  • Customizable(size and seperations) FuelTrim Predictive Multi Channel Historic Table
  • Transmission Control (Paddle shift transmission solenoid)
  • Firmware features
    • Ability to comment out header files in the service builder to disable features to minimize size
    • Unit Tests to ensure everything works
    • Service Oriented Architecture
    • Easily add new sensors

TODO LIST
  • *Idle Control Ignition Wrapper
  • *Alpha-N
  • *Logging
  • *EFIGenie Editor
    • Create and edit configs
    • Output tuner studio configs
    • Interface with ECU (UART, USB, WiFi, Bluetooth, and STLink)
  • *Tuner Studio (Interface ECU)
  • *Speeduino Service Builder
  • *Create unit tests
    • Idle Air Control Valve Stepper
    • AfrService_Static
    • FuelPumpService_Analog
    • FuelTrimService_InterpolatedTable
    • FuelTrimServiceWrapper_MultiChannel
    • IdleControlService_Pd
    • PrimeService_StaticPulseWidth
    • TachometerService
    • PistonEngineIgnitionConfig_Map_Ethanol
    • PistonEngineIgnitionConfigWrapper_HardRpmLimit
    • PistonEngineIgnitionConfigWrapper_SoftRpmLimit
    • PistonEngineInjectionConfig_SD
    • PistonEngineInjectionConfigWrapper_DFCO
    • IgnitionSchedulingService
    • InjectionSchedulingService
    • ServiceBuilder
  • Transmission Control (line pressure control)
  • Transmission Control (automatic gear shifts)
  • Customizable injection and iginition degree references
  • *Config Verification
  • Create odd cylinder banks code
  • Create Throttle Body Injection code
  • Electric Fan Control
  • Fuel Pump (PWM PID Control Loop)
  • VVT control (PWM - Open loop or PID control loop)
  • Boost control (PWM - Open loop or PID control loop)
  • CAN Bus/OBD2
  • Variable table axis(I.E. RPM 400, 600, 800, 1200, 2400, 3600, 3800, 4000, 4200, 5400, 6600)

*High Priority