From e5147549c6cd8e84fdd9d4c74e3d10e6a35f4bfb Mon Sep 17 00:00:00 2001 From: rusEfi Date: Wed, 11 Feb 2015 11:04:31 -0600 Subject: [PATCH] auto-sync --- firmware/controllers/math/speed_density.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/firmware/controllers/math/speed_density.cpp b/firmware/controllers/math/speed_density.cpp index b7bfe1382a..e0e17de5cb 100644 --- a/firmware/controllers/math/speed_density.cpp +++ b/firmware/controllers/math/speed_density.cpp @@ -53,11 +53,21 @@ float sdMath(engine_configuration_s *engineConfiguration, float VE, float MAP, f return 0; } - // todo: pre-calculate gramm/second injector flow to save one multiplication + /** + * todo: pre-calculate gramm/second injector flow to save one multiplication + * open question if that's needed since that's just a multiplication + */ float injectorFlowRate = cc_minute_to_gramm_second(engineConfiguration->injector.flow); // todo: pre-calculate cylinder displacement to save one division - float Vol = engineConfiguration->specs.displacement / engineConfiguration->specs.cylindersCount; - return (Vol * VE * MAP) / (AFR * injectorFlowRate * GAS_R * tempK); + float cylinderDisplacement = engineConfiguration->specs.displacement / engineConfiguration->specs.cylindersCount; + float airMass = (cylinderDisplacement * VE * MAP) / (GAS_R * tempK); + /** + * injection_pulse_duration = fuel_mass / injector_flow + * fuel_mass = air_mass / target_afr + * + * injection_pulse_duration = (air_mass / target_afr) / injector_flow + */ + return airMass / (AFR * injectorFlowRate); } /**