Actions

Difference between revisions of "Temperature independent fuel mixing"

From Unofficial Stationeers Wiki

(Clarifications, simplifications and extra (unnecessary) brackets to the formula for those non math people who are not that familiar with the order of operations.)
 
(8 intermediate revisions by 5 users not shown)
Line 1: Line 1:
Making fuel with a 33:67 setting on the gas mixer when the incoming O2 and H2 have different temperatures will result in an incorrect mix.  
+
Making fuel with a gas mixer set to 33:67 works fine when the incoming O2 and H2 have the same temperature. But when the temperature is different, the mix will become incorrect.
 +
 
 +
To get a perfect fuel mix regardless of the temperature difference, a circuit can be used to calculate which gas mixer setting to use. The gas mixer will accept decimal values, so it's incredibly accurate. This allows it to always make a perfect 1:2 mix. Just don't forget that making hot fuel will lead to explosions, if that should happen, please enjoy the strongest and most perfect explosion possible.
  
Instead of waiting for the temperatures to equalize, one can build a circuit that calculates the necessary setting on the gas mixer to always produce perfect fuel. The fuel will really be perfect because the gas mixer allows decimal values, so it has an incredibly accuracy. Just don't forget that making hot fuel will lead to explosions, if that should happen, please enjoy the strongest and most perfect explosion possible.
 
  
 
'''Components needed:'''
 
'''Components needed:'''
 
*3 logic I/O (2 readers, 1 writer)
 
*3 logic I/O (2 readers, 1 writer)
*5 logic processor (all math)
+
*4 logic processor (all math)
 
*3 logic memory
 
*3 logic memory
 
*2 pipe analyzer
 
*2 pipe analyzer
Line 13: Line 14:
 
'''Build:'''
 
'''Build:'''
  
This part will turn the following equation into a circuit<br>
+
This part will turn the following equation into a circuit, it will only work when the '''H2 pipe''' is connected to '''Input''' and the '''O2 pipe''' to '''Input2'''<br>
gas mixer setting = 100 * ( Temp.ox / (2*Temp.vol) ) / ( (1 + Temp.ox / (2*Temp.vol)) )
+
gas mixer setting = 100 / (1 + (Temp.oxygen / (2 * Temp.volatiles)))
  
*Connect the O2 pipe to input 1 (side) and H2 pipe to input 2 (top)
+
*Connect the H2 pipe to input 1 and O2 pipe to input 2
 
*2 pipe analyzers
 
*2 pipe analyzers
 
**On the O2 and H2 sides
 
**On the O2 and H2 sides
 
*2 logic readers
 
*2 logic readers
**T.o = Temperature on the pure oxygen side
+
**Read the temperatures of the pure O2 and H2
**T.v = Temperature on the pure volatiles side
+
*4 math and 3 memory units for calculations
*2 math and 1 memory unit to calculate T.o/(2*T.v)
+
**A = 2*Temp.volatiles
**A = 2*T.v
+
**B = Temp.oxygen/A
**B = T.o/A
 
*2 math and 1 memory unit to calculate the ratio of oxygen (result between 0 and 1)
 
 
**C = B+1
 
**C = B+1
**D = B/C
+
**D = 100/C
*1 math and 1 memory to get a final value between 0 and 100, the range that the gas mixer wants
 
**result = 100*D
 
 
*1 logic writer to send the result to the gas mixer
 
*1 logic writer to send the result to the gas mixer
 
**The gas mixer will accept decimal values, so the mix will be a perfect 2:1 mix of H2 and O2
 
**The gas mixer will accept decimal values, so the mix will be a perfect 2:1 mix of H2 and O2
  
 
+
'''Extra:'''
'''Additional:'''
+
*If the Oxygen pipe connects to '''Input''', and the Volatiles to '''Input2''' instead, the equation to use is
 +
**gas mixer setting = 100 / (1 + ((2 * Temp.volatiles) / Temp.oxygen))
 +
**This means B above must be swapped to B = A / Temp.oxygen
 
*Use a PAC or Transformer to put this circuit on it's own data network
 
*Use a PAC or Transformer to put this circuit on it's own data network
*The circuit will require 180W on standby and 280W while mixing fuel
+
*The circuit will require 170W on standby and 270W while mixing fuel
 
 
  
  
Line 68: Line 66:
 
*2) Ratio.o + Ratio.v = 100% = 1
 
*2) Ratio.o + Ratio.v = 100% = 1
 
Two equations, two unknowns. This can be solved.<br>
 
Two equations, two unknowns. This can be solved.<br>
It doesn't really matter if we choose Ratio.o or Ratio.v, the only effect from this is to determine which pipe goes where on the gas mixer. Let's use oxygen on input 1 and volatiles on input 2. That means we should solve for Ratio.o, so lets remove Ratio.v via substitution
+
Lets do calculations for both Ratio.o or Ratio.v, the end result is the same but the formulas and which pipe goes where will be different.
 +
 
 +
First lets solve for Ratio.o
 
*Ratio.v = 1 - Ratio.o
 
*Ratio.v = 1 - Ratio.o
 
now substitute this into the first equation
 
now substitute this into the first equation
Line 76: Line 76:
 
To make it easier to look at, lets substitute T.o/(2*T.v) for k
 
To make it easier to look at, lets substitute T.o/(2*T.v) for k
 
*Ratio.o = k / (1 + k)
 
*Ratio.o = k / (1 + k)
 +
*Ratio.o = 1 / (1/k + 1)
 +
The 1/k part is annoying, but since the substitution is a fraction we can shuffle things around
 +
*k = T.o/(2*T.v)
 +
*1/k = (2*T.v)/T.o
 +
Inserting that gives
 +
*Ratio.o = 1 / ((2*T.v)/T.o + 1)
 +
Now we will multiply with 100 to get a value between 0 and 100 which the gas mixer wants.
 +
*gas mixer setting = 100 / (1 + (2*T.v)/T.o)
 +
This is the final equation when O2 connects to input 1, the result will be sent to the gas mixer
 +
 +
Secondly lets do Ratio.v
 +
*Ratio.o = 1 - Ratio.v
 +
now substitute this into the first equation
 +
*(1-Ratio.v)/Ratio.v = T.o/(2*T.v)
 +
After some algebra we get
 +
*Ratio.v = 1 / (1 + T.o/(2*T.v))
 +
To make it easier to look at, lets substitute T.o/(2*T.v) for k
 +
*Ratio.v = 1 / (1 + k)
 
Now we will multiply with 100 to get a value between 0 and 100 which the gas mixer wants.
 
Now we will multiply with 100 to get a value between 0 and 100 which the gas mixer wants.
*gas mixer setting = 100 * T.o/(2*T.v) / (1 + T.o/(2*T.v))
+
*gas mixer setting = 100 / (1 + T.o/(2*T.v))
This is our final equation and the one that the circuit will be calculating. The result will be sent to the gas mixer.<br>
+
This is the final equation when H2 connects to input 1, the result will be sent to the gas mixer
As mentioned above, this equation expects the O2 pipe to be connected to input 1. If we wanted the H2 pipe on input 1, we would have to solve for ratio.v above instead to get another equation. It's of course possible to be lazy and do ratio.v = 1 - ratio.o, but if you are going to be lazy consider that the extra processor will require 4g of metal and 10W of power, and mining and building power generation is work too!
 

Latest revision as of 05:21, 17 July 2024

Making fuel with a gas mixer set to 33:67 works fine when the incoming O2 and H2 have the same temperature. But when the temperature is different, the mix will become incorrect.

To get a perfect fuel mix regardless of the temperature difference, a circuit can be used to calculate which gas mixer setting to use. The gas mixer will accept decimal values, so it's incredibly accurate. This allows it to always make a perfect 1:2 mix. Just don't forget that making hot fuel will lead to explosions, if that should happen, please enjoy the strongest and most perfect explosion possible.


Components needed:

  • 3 logic I/O (2 readers, 1 writer)
  • 4 logic processor (all math)
  • 3 logic memory
  • 2 pipe analyzer
  • 1 gas mixer


Build:

This part will turn the following equation into a circuit, it will only work when the H2 pipe is connected to Input and the O2 pipe to Input2
gas mixer setting = 100 / (1 + (Temp.oxygen / (2 * Temp.volatiles)))

  • Connect the H2 pipe to input 1 and O2 pipe to input 2
  • 2 pipe analyzers
    • On the O2 and H2 sides
  • 2 logic readers
    • Read the temperatures of the pure O2 and H2
  • 4 math and 3 memory units for calculations
    • A = 2*Temp.volatiles
    • B = Temp.oxygen/A
    • C = B+1
    • D = 100/C
  • 1 logic writer to send the result to the gas mixer
    • The gas mixer will accept decimal values, so the mix will be a perfect 2:1 mix of H2 and O2

Extra:

  • If the Oxygen pipe connects to Input, and the Volatiles to Input2 instead, the equation to use is
    • gas mixer setting = 100 / (1 + ((2 * Temp.volatiles) / Temp.oxygen))
    • This means B above must be swapped to B = A / Temp.oxygen
  • Use a PAC or Transformer to put this circuit on it's own data network
  • The circuit will require 170W on standby and 270W while mixing fuel



The fun math part that everyone will read

The ideal gas law, the chemical formula and some understanding of the gas mixer is all that's needed to find the desired equation

  • PV=nRT
  • 1 O2 + 2 H2 -> products

We want one expression for oxygen and another for volatiles, .o and .v will be used to indicate if it's oxygen or volatiles

  • oxygen: P.o*V.o = n.o*R*T.o
  • volatiles: P.v*V.v = n.v*R*T.v

The chemical formula tells us how n.o and n.v are related, n.v is twice the value of n.o, so we can remove the .o and .v by replacing them with n again

  • n.o = n
  • n.v = 2n

Now we will use this to solve both expressions for n

  • oxygen: n = P.o*V.o / (R*T.o)
  • volatiles: n = 1/2 * P.v*V.v / (R*T.v)

Combine the expressions

  • P.o*V.o / (R*T.o) = 1/2 * P.v*V.v / (R*T.v)

We now cancel R from both sides. We can also remove P.o and P.v because the gas mixer is already compensating for differences in incoming pressures and we don't want to do that twice, this leaves us with

  • V.o/T.o = 1/2 * V.v/T.v

The gas mixer can only influence the volume, not the temperature, so we will solve for the volume ratio

  • V.o/V.v = T.o/(2*T.v)

The V.o/V.v ratio has no unit, it's just a number. So we can replace it with the settings on the gas mixer, because the value itself is unchanged from doing that

  • 1) Ratio.o/Ratio.v = T.o/(2*T.v)

This is our first equation.
We now have two unknowns, Ratio.o and Ratio.v, and one equation. The gas mixer can give us another equation, looking at the input values of it tells us that it accepts values between 0 and 100, it even takes decimal values if the Labeler is used which is great, it means there won't be any rounding errors in the fuel, it will really be a perfect 1:2 ratio. Treating 100 as 100% means ratio.o and ratio.v makes more sense to use, we can just multiply with 100 at the end to give the gas mixer the value range it wants, doing it this way means we can avoid some clutter so the formulas are easier to read

  • 2) Ratio.o + Ratio.v = 100% = 1

Two equations, two unknowns. This can be solved.
Lets do calculations for both Ratio.o or Ratio.v, the end result is the same but the formulas and which pipe goes where will be different.

First lets solve for Ratio.o

  • Ratio.v = 1 - Ratio.o

now substitute this into the first equation

  • Ratio.o/(1-Ratio.o) = T.o/(2*T.v)

After some algebra we get

  • Ratio.o = T.o/(2*T.v) / (1 + T.o/(2*T.v))

To make it easier to look at, lets substitute T.o/(2*T.v) for k

  • Ratio.o = k / (1 + k)
  • Ratio.o = 1 / (1/k + 1)

The 1/k part is annoying, but since the substitution is a fraction we can shuffle things around

  • k = T.o/(2*T.v)
  • 1/k = (2*T.v)/T.o

Inserting that gives

  • Ratio.o = 1 / ((2*T.v)/T.o + 1)

Now we will multiply with 100 to get a value between 0 and 100 which the gas mixer wants.

  • gas mixer setting = 100 / (1 + (2*T.v)/T.o)

This is the final equation when O2 connects to input 1, the result will be sent to the gas mixer

Secondly lets do Ratio.v

  • Ratio.o = 1 - Ratio.v

now substitute this into the first equation

  • (1-Ratio.v)/Ratio.v = T.o/(2*T.v)

After some algebra we get

  • Ratio.v = 1 / (1 + T.o/(2*T.v))

To make it easier to look at, lets substitute T.o/(2*T.v) for k

  • Ratio.v = 1 / (1 + k)

Now we will multiply with 100 to get a value between 0 and 100 which the gas mixer wants.

  • gas mixer setting = 100 / (1 + T.o/(2*T.v))

This is the final equation when H2 connects to input 1, the result will be sent to the gas mixer