Actions

Difference between revisions of "Temperature independent fuel mixing"

From Unofficial Stationeers Wiki

m
(Clarifications, simplifications and extra (unnecessary) brackets to the formula for those non math people who are not that familiar with the order of operations.)
 
(13 intermediate revisions by 5 users not shown)
Line 1: Line 1:
When fuel is mixed in a Pipe Gas Mixer, the obtained ratio can be wrong if the gases had different temperatures. By using volume pumps and some logic circuits, the correct 2:1 fuel mix can still be obtained without waiting for the temperature to equalize.
+
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.
  
This setup measures the total fuel pressure and the ratio of oxygen in the fuel mixture, these values are then multiplied to calculate the partial oxygen pressure which is directly linked to the amount of moles of oxygen in the mixture. This also gives control over the total pressure (which is tripple the partial pressure in a 2:1 mixture) which helps with safety. Volatiles are added automatically whenever the ratio of oxygen in the fuel mix becomes too high.  
+
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.
  
If so desired, one can add a single logic processer to this setup to let the player insert the desired total pressure instead. Simply replace the B2 memory with 1 math multiplier (B2a) and 1 memory (B2b), then have B2a multiply the desired total pressure (set with B2b) with the desired oxygen ratio (B5), and let B1 compare B2a vs. A3 instead. New wires must also be added to connect all these parts together.
 
  
A problem with this setup is that it will continue to add oxygen even if the volatile storage is empty, which will ruin the fuel ratio. This can be fixed either by adding a valve (infront of the volume pumps so it doesn't blow the pipe) for manual control of the oxygen flow, or by adding circuits to shut it off.
+
'''Components needed:'''
Another issue is that tweaking the memory values while the system is running can cause the fuel tank to overpressurize and burst, keep suspects with screwdrivers away from the area.
+
*3 logic I/O (2 readers, 1 writer)
 +
*4 logic processor (all math)
 +
*3 logic memory
 +
*2 pipe analyzer
 +
*1 gas mixer
  
'''Components'''
 
* Gas pipes
 
* Gas storage
 
* Wires
 
*4 Logic I/O
 
*3 Logic Processor
 
*2 Logic Memory
 
*2 Volume pumps
 
*1 Pipe Analyzer (requires electrum)
 
  
[[File:Temperature independent fuel mixing.jpg|thumb|Example of how to place the circuit in a location where it's easy to blow it up]]
+
'''Build:'''
'''Setup'''
 
#Connect volume pumps from O2/H2 respectively leading towards the fuel side
 
#Connect the pipe analyzer on the fuel side
 
#Optional: Use a Power Area Control or Transformer to isolate the logical components to their own network. This also makes it easy to shut off the system.
 
#Place logical components
 
  
*A1: Reader for pipe analyzer, total pressure (in KPa)
+
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>
*A2: Reader for pipe analyzer, ratioOxygen (between 0 and 1)
+
gas mixer setting = 100 / (1 + (Temp.oxygen / (2 * Temp.volatiles)))
*A3: Math multiplier, A1*A2 (this is the partial oxygen pressure in the fuel tank)
 
  
*B1: Compare, B2 vs. A3, greater
+
*Connect the H2 pipe to input 1 and O2 pipe to input 2
*B2: Memory, 2000 (desired partial oxygen pressure, 3x this will be the total pressure)
+
*2 pipe analyzers
*B3: Writer for Oxygen volume pump, on
+
**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
  
*B4: Compare, A2 vs. B5, greater
+
'''Extra:'''
*B5: Memory, 0.334 (use Labeller to set this value)
+
*If the Oxygen pipe connects to '''Input''', and the Volatiles to '''Input2''' instead, the equation to use is
*B6: Writer for Volatiles volume pump, on
+
**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
  
'''Notes'''
 
*Don't mix fuel near critical infrastructure.
 
*For safety, set the desired partial oxygen pressure to 2000 max, the total pressure will be tripple this value in kPa.
 
*If the system runs out of volatiles, the fuel mix will still be fed oxygen.
 
*If the system runs out of oxygen, the system will stop adding volatiles.
 
*Give volume pumps a 1:2 ratio on their values, this reduces errors in the fuel mix when the system is rebalancing.
 
*Power use 120 W on standby
 
  
'''Using an IC 10'''
 
  
If an IC 10 is used to control the fuel mixing, the formula PV=nRT can be used to manipulate the setting on the volume pumps to get a 2:1 ratio directly with maximum flow. This will speed up the fuel making considerably, but some fine tuning is still needed afterwards. The required formula can made by setting up one expression for H2 and one for O2, solve both for n, then combine the two expressions and cancel out R. We know that twice the amount of H2 is needed, that will introduce a multiple of 1/2 for the volatiles side, the expression will become:
 
  
n=PV/(RT) -> 1/2 * PV/T (volatiles) = PV/T (oxygen)
+
'''The fun math part that everyone will read'''
  
1/2 * P(H2)*V(H2)/T(H2) = P(O2)*V(O2)/T(O2)
+
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.<br>
 +
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.<br>
 +
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.
  
solve for the volume ratio, since that is what the volume pumps can control, the pressure and temperature are known because they can easily be measured
+
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
  
V(O2)/V(H2) = P(H2)/T(H2) * T(O2)/P(O2) * 1/2
+
Secondly lets do Ratio.v
 
+
*Ratio.o = 1 - Ratio.v
When the volume ratio is above 1, set the Oxygen volume pump to 100 L and the Volatiles volume pump to 100/ratio
+
now substitute this into the first equation
 
+
*(1-Ratio.v)/Ratio.v = T.o/(2*T.v)
When the volume ratio is below 1, set the Volatiles volume pump to 100 L and the Oxygen volume pump to 100*ratio
+
After some algebra we get
 
+
*Ratio.v = 1 / (1 + T.o/(2*T.v))
The volume pump can only take integers between 0 and 100, decimals will not be accepted, so rounding might be necessary. This will create a small error in the fuel mix, so some fine tuning is necessary to get a perfect 2:1 mix.
+
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

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