Partial Fix for Mixture Logic in Turbo Engines
-
Over the past week, I dove into a thorough investigation of the fuel mixture logic in MSFS for turbocharged engines. I spent time collecting sim data from the three turbocharged add-ons that are currently available and studying it to find common patterns. This led to two discoveries:
- The fuel/air ratio in the core sim logic is directly proportional to the specific volume (1/density) of the ambient air.
- At full-rich mixture, the proportionality constant between fuel/air ratio and ambient specific volume remains constant at all altitudes and across all three turbocharged aircraft currently available in MSFS.
Now, for a real-world turbocharged engine, the fuel/air mixture should be related to the intake manifold density, rather than the ambient density. The turbocharger compresses air significantly above ambient density before it enters the engine.
I developed code to calculate the full-power intake manifold density (based on the turbo boost pressure, ambient pressure, and ambient temperature). Then, I gathered data from the sim to model the relationship between mixture lever percentage and fuel/air ratio. With these two pieces of information, I could calculate a realistic fuel/air ratio for a user's mixture lever setting.
Finally, I created a WASM gauge that intercepts the user's hardware mixture inputs, calculates the correct fuel/air ratio for those inputs, and sets the core sim mixture axis at a level that will yield the correct fuel/air ratio. For this portion of the project, I repurposed Working Title's FADEC controller for the throttle axis to handle the mixture axis instead.
The end result is a WASM module that can be added to the Turbo Arrow to yield more accurate mixture behavior during climb. The mixture lever in the virtual cockpit will show the core sim mixture setting, but your hardware lever will behave the way the real-world airplane should. The code defines a local variable that could be used to set the cockpit mixture lever to mimic the hardware axis, but I have not figured out a way to assign the cockpit mixture lever to a different variable. Anyway, here's a link to the code I developed:
https://github.com/WxMarc/TurboEngineMixtureController
For more details on the data I collected from MSFS, I shared additional graphs and information in this thread:
If this would be of any use to the Just Flight developers, feel free to use it however you see fit. I included the source code in the /src folder on the github page.
-
Did you mention your work at the MSFS forums? Please do, it seems like something that definitely is worth the attention of the developers (which are, hopefully, paying attention to the forums). Good work!