diff --git a/firmware/config/engines/engines.mk b/firmware/config/engines/engines.mk
index d07aaf62de..8594e03483 100644
--- a/firmware/config/engines/engines.mk
+++ b/firmware/config/engines/engines.mk
@@ -22,5 +22,6 @@ ENGINES_SRC_CPP = $(PROJECT_DIR)/config/engines/ford_aspire.cpp \
$(PROJECT_DIR)/config/engines/mazda_323.cpp \
$(PROJECT_DIR)/config/engines/mazda_626.cpp \
$(PROJECT_DIR)/config/engines/saturn_ion.cpp \
+ $(PROJECT_DIR)/config/engines/sachs.cpp \
$(PROJECT_DIR)/config/engines/test_engine.cpp \
$(PROJECT_DIR)/config/engines/mitsubishi.cpp
\ No newline at end of file
diff --git a/firmware/config/engines/sachs.cpp b/firmware/config/engines/sachs.cpp
new file mode 100644
index 0000000000..09f4e44758
--- /dev/null
+++ b/firmware/config/engines/sachs.cpp
@@ -0,0 +1,46 @@
+/**
+ * @file sachs.cpp
+ *
+ * set_engine_type 29
+ * http://rusefi.com/forum/viewtopic.php?f=3&t=396
+ *
+ * @date Jan 26, 2015
+ * @author Andrey Belomutskiy, (c) 2012-2014
+ */
+
+#include "sachs.h"
+
+void setSachs(engine_configuration_s *engineConfiguration) {
+ engineConfiguration->displacement = 0.1; // 100cc
+
+ // Frankenstein analog input #1: PA1 adc1
+ // Frankenstein analog input #2: PA3 adc3
+ // Frankenstein analog input #3: PC3 adc13
+ // Frankenstein analog input #4: PC1 adc11
+ // Frankenstein analog input #5: PA0 adc0
+ // Frankenstein analog input #6: PC2 adc12
+ // Frankenstein analog input #7: PA4 adc4
+ // Frankenstein analog input #8: PA2 adc2
+ // Frankenstein analog input #9: PA6 adc6
+ // Frankenstein analog input #10: PA7 adc7
+ // Frankenstein analog input #11: PC4 adc14
+ // Frankenstein analog input #12: PC5 adc15
+
+
+
+ // Frankenstein: low side - out #1: PC14
+ // Frankenstein: low side - out #2: PC15
+ // Frankenstein: low side - out #3: PE6
+ // Frankenstein: low side - out #4: PC13
+ // Frankenstein: low side - out #5: PE4
+ // Frankenstein: low side - out #6: PE5
+ // Frankenstein: low side - out #7: PE2
+ // Frankenstein: low side - out #8: PE3
+ // Frankenstein: low side - out #9: PE0
+ // Frankenstein: low side - out #10: PE1
+ // Frankenstein: low side - out #11: PB8
+ // Frankenstein: low side - out #12: PB9
+
+
+}
+
diff --git a/firmware/config/engines/sachs.h b/firmware/config/engines/sachs.h
new file mode 100644
index 0000000000..4b71ad6637
--- /dev/null
+++ b/firmware/config/engines/sachs.h
@@ -0,0 +1,14 @@
+/**
+ * @file sachs.h
+ *
+ * @date Jan 26, 2015
+ * @author Andrey Belomutskiy, (c) 2012-2014
+ */
+#ifndef CONFIG_ENGINES_SACHS_H_
+#define CONFIG_ENGINES_SACHS_H_
+
+#include "engine_configuration.h"
+
+void setSachs(engine_configuration_s *engineConfiguration);
+
+#endif /* CONFIG_ENGINES_SACHS_H_ */
diff --git a/firmware/controllers/algo/auto_generated_enums.cpp b/firmware/controllers/algo/auto_generated_enums.cpp
index ab6d1d30b6..8b756e2311 100644
--- a/firmware/controllers/algo/auto_generated_enums.cpp
+++ b/firmware/controllers/algo/auto_generated_enums.cpp
@@ -14,6 +14,8 @@ case ACURA_RSX:
return "ACURA_RSX";
case AUDI_AAN:
return "AUDI_AAN";
+case SACHS:
+ return "SACHS";
case BMW_E34:
return "BMW_E34";
case CITROEN_TU3JP:
diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp
index cb9e476d20..953f16b9bf 100644
--- a/firmware/controllers/algo/engine_configuration.cpp
+++ b/firmware/controllers/algo/engine_configuration.cpp
@@ -52,6 +52,7 @@
#include "mitsubishi.h"
#include "subaru.h"
#include "test_engine.h"
+#include "sachs.h"
#if EFI_TUNER_STUDIO
#include "tunerstudio.h"
@@ -636,6 +637,9 @@ void resetConfigurationExt(Logging * logger, engine_type_e engineType, Engine *e
case TEST_ENGINE:
setTestEngineConfiguration(engineConfiguration);
break;
+ case SACHS:
+ setSachs(engineConfiguration);
+ break;
default:
firmwareError("Unexpected engine type: %d", engineType);
}
diff --git a/firmware/controllers/algo/rusefi_enums.h b/firmware/controllers/algo/rusefi_enums.h
index 7132bb26b6..4a8da997db 100644
--- a/firmware/controllers/algo/rusefi_enums.h
+++ b/firmware/controllers/algo/rusefi_enums.h
@@ -103,7 +103,9 @@ typedef enum {
MAZDA_626 = 28,
- ET_UNUSED = 29,
+ SACHS = 29,
+
+ ET_UNUSED = 30,
Force_4b_engine_type = ENUM_32_BITS,
} engine_type_e;
diff --git a/firmware/iar/ch.ewp b/firmware/iar/ch.ewp
index c46226e7b1..10bf986cd9 100644
--- a/firmware/iar/ch.ewp
+++ b/firmware/iar/ch.ewp
@@ -2021,6 +2021,12 @@
$PROJ_DIR$\..\config\engines\rover_v8.h
+
+ $PROJ_DIR$\..\config\engines\sachs.cpp
+
+
+ $PROJ_DIR$\..\config\engines\sachs.h
+
$PROJ_DIR$\..\config\engines\saturn_ion.cpp
diff --git a/firmware/tunerstudio/rusefi.ini b/firmware/tunerstudio/rusefi.ini
index 88bad24edb..489f12800a 100644
--- a/firmware/tunerstudio/rusefi.ini
+++ b/firmware/tunerstudio/rusefi.ini
@@ -463,7 +463,7 @@ fileVersion = { 20150112 }
rpmAcceleration = scalar, F32, 104, "dRpm", 1, 0
egoCorrection = { 1 }
time = { timeNow }
- engineLoad = { fuelAlgorithm == 0 ? MAF : TPS }
+ engineLoad = { algorithm == 0 ? MAF : TPS }
[CurveEditor]
curve = dwellCorrection, "Dwell time RPM based"
@@ -692,11 +692,11 @@ fileVersion = { 20150112 }
subMenu = crankingFuelCurve, "Cranking Coolant Temp correction"
subMenu = crankingDurationCurve, "Cranking Duration correction"
subMenu = std_separator
- subMenu = fuelTableTbl, "Fuel Table", {fuelAlgorithm != 3}
+ subMenu = fuelTableTbl, "Fuel Table", {algorithm != 3}
subMenu = iatFuelCorrCurve, "Intake air temp fuel correction"
subMenu = cltFuelCorrCurve, "Coolant temp fuel correction"
- subMenu = veTableTbl, "VE Table", {fuelAlgorithm == 3}
- subMenu = afrTableTbl, "Targe AFR Table", {fuelAlgorithm == 3}
+ subMenu = veTableTbl, "VE Table", {algorithm == 3}
+ subMenu = afrTableTbl, "Targe AFR Table", {algorithm == 3}
subMenu = std_separator
subMenu = ignitionTableTbl, "Ignition Table"
subMenu = std_separator
@@ -1000,7 +1000,7 @@ fileVersion = { 20150112 }
field = "tunerStudioSerialSpeed", tunerStudioSerialSpeed
field = "RPM Hard Limit", rpmHardLimit
field = ""
- field = "Fuel Algorithm", fuelAlgorithm
+ field = "Fuel Algorithm", algorithm
field = ""
field = "analog chart", analogChartMode
field = "#System ON/OFF"