Actions

Difference between revisions of "Solar Logic Circuits Guide"

From Unofficial Stationeers Wiki

(Design)
(Notes: Text description incorrectly said "Math J" when it should really be "Memory J" for "Math C" as per the diagram.)
(20 intermediate revisions by 8 users not shown)
Line 7: Line 7:
 
Due to the frequency of game updates, all solutions are subject to change and may or may not be functional.
 
Due to the frequency of game updates, all solutions are subject to change and may or may not be functional.
  
== Ecliptic Solar Tracking ==
+
== Geometry Of Solar Panels and Daylight Sensors ==
'''Author:''' Eearslya, Neouni, 𝕽𝖘𝖆𝟗𝟕 and everyone of the #logic-circuit-discussion<br>
+
 
'''Stationeers Version:''' 0.1.1510.7155 and up<br>
+
<gallery>
'''Number of Components:''' 10
+
daylight sensor horizontal.png|Geometry of values measured by daylight sensor in horizontal (yaw) mode
 +
daylight sensor vertical.png|Geometry of values measured by daylight sensor in vertical (pitch) mode
 +
solar panel yaw-Horizontal setting.png|Effect of setting horizontal rotation of a solar panel
 +
solar-horiz-formulas.svg|Equations relating horizontal sensor measurements from various orientations to solar panel horizontal rotation
 +
</gallery>
 +
 
 +
== 10-chip 2-sensor 2-axis Solar Tracking ==
 +
'''Author:''' Eearslya, Neouni, 𝕽𝖘𝖆𝟗𝟕 and everyone of the #logic-circuit-discussion (most recently Enthaply Guy, ThunderGod97)<br>
 +
'''Stationeers Version:''' 0.2.2261.10316 and up<br>
 +
'''Number of Components:''' 12
 +
 
  
 
=== Design ===
 
=== Design ===
Line 20: Line 30:
 
This is a fairly minimalistic 2-axis control setup.  You'll need the sensors to be in Mode 1 (horizontal) and Mode 2 (vertical), both facing up. The cable can point in any direction, as the vertical sensor doesn't care and we're already compensating for the horizontal sensor.
 
This is a fairly minimalistic 2-axis control setup.  You'll need the sensors to be in Mode 1 (horizontal) and Mode 2 (vertical), both facing up. The cable can point in any direction, as the vertical sensor doesn't care and we're already compensating for the horizontal sensor.
  
To set the sensors, you will need to use a [[Kit (Logic I/O)|Logic Writer]] and a [[Kit (Logic Memory)|Logic Memory]]. Set the memory to 1, and set the writer to write to the first sensor's Mode variable. Then set the Writer to write to the second Sensor, and set the memory to 2 (in that order!). The sensors should say "Mode Horizontal" and "Mode Vertical". Once you have them set, you can deconstruct and re-use the I/O and memory units. They do not need to be left in place to keep the mode set.
+
To set the sensors, you will need to use a [[Kit (Logic I/O)|Logic Writer]] and a [[Kit (Logic Memory)|Logic Memory]]. Set the memory to 1, and set the writer to write to the first sensor's Mode variable. Then set the Writer to write to the second Sensor, and set the memory to 2 (in that order!). The sensors should say "Mode Horizontal" and "Mode Vertical". Once you have them set, you can deconstruct or re-use the I/O and memory units. They do not need to be left in place to keep the mode set.
  
[[File:2-Axis Solar Logic Control.png|full|Screenshot of logic gate control setup for 2-axis tracking for solar panels]]
+
[[File:Stationeers 2x2 logic circuit guide rev2.png|2 sensor and 2 axis solar logic circuit guide]]
  
 
=== Notes ===
 
=== Notes ===
* Sensor 1: MUST be facing upwards, Mode 0 (Default)
+
* The Network should have one power source, ideally an APC with battery backup powered by the solar panels. The Network should hook up to all ports on all logic chips (only one necessary for memory) and both sensors. Solar Panels should be deployed with separate data and power ports, and only the data port of each solar panel should be hooked up to the Network of the logic circuit. The power port of the solar panels should feed a separate network from the logic network.
* Sensor 2:  MUST be facing up-side-down, rotated so the power input is facing north, Mode 1 (Horizontal)
 
* '''Don't forget to write the mode to Sensor 2''' ''once written it will remember it''
 
  
==== Rotations ====
+
* Reader A: Reads Solar Angle from the Vertical Sensor
We use specific rotations for the daylight sensor and solar panels in this setup to save a Logic Math and a Logic Memory. Refer to this table below to see how your daylight sensor and panels should be rotated. (Note: Sunrise is in the East.)
+
* Math B (Subtract): Memory H minus Reader E
{| class="wikitable"
+
* Math C (Subtract): Memory J minus Math F
! If the solar panel's power connector points: !! West !! North !! East !! South
+
* Batch Writer D: Reads from Math C, and writes to Vertical field for all Solar Panels.
|-
+
* Reader E: Reads Solar Angle from the Horizontal Sensor
| Then rotate Sensor 2's power input: || North || East || South || West
+
* Math F (Divide): Reader A divided by Memory I
|}
+
* Batch Writer G: Reads from Math B and writes to Horizontal field for all Solar Panels.
You can also remember how Sensor 2 has to be rotated by remembering that when the power port for the solar panel is facing forward, then the data port for the daylight sensor is facing to the right.
+
* Memory H: should be one of 0, 90, 180, or 270.  We're using it to compensate for horizontal sensor orientation.  If the sensor cable points the same direction as the solar panels power port, set it to 90.  Add 90 for every rotation counterclockwise, and use 0 instead of 360.
 +
* Memory I: Set to 1.5. It's used to scale from 180° but panels can only do 15-165° in percentages so divide by 1.5 and adjust later .
 +
* Memory J: Set to 50.  This is to keep the panel at 0° or % longer because it can't do 0-15°.
  
 
<small>Credit for alternatives: PoolSharkFOG</small>
 
<small>Credit for alternatives: PoolSharkFOG</small>
Line 54: Line 64:
 
Here is the code for the ic10 chip: [https://stationeering.com/tools/ic#eyJwcm9ncmFtIjoiLy8gU2Vuc29yMSBmYWNlcyB1cCB0byBkMFxuLy8gU2Vuc29yMiBmYWNlcyBkb3duIHRvIGQxXG4vLyB7cG93ZXIgc29sYXIgcGFuZWwsIHBvd2VyIFNlbnNvcjJ9XG4vLyB7V2VzdCwgTm9ydGh9XG4vLyB7Tm9ydGgsIEVhc3R9XG4vLyB7RWFzdCwgU291dGh9XG4vLyB7U291dCwgV2VzdH1cbi8vIENvbm5lY3QgTWVtb3J5MSB0byBkMiBhbmQgTWVtb3J5MiB0byBkM1xuLy8gQmF0Y2ggV3JpdGVycyBtdXN0IHdyaXRlIHRvIFNvbGFyIFBhbmVsOlxuLy8gICAgQmF0Y2hXcml0ZXIxOmluO01lbW9yeTE7dmFyOkhvcml6b250YWxcbi8vICAgIEJhdGNoV3JpdGVyMjppbjtNZW1vcnkyO3ZhcjpWZXJ0aWNhbFxuLy8gZG8gbm90IGluY2x1ZGUgdGhlc2UgY29tbWVudHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuYWxpYXMgU2Vuc29yMSBkMFxuYWxpYXMgU2Vuc29yMiBkMVxuYWxpYXMgQmF0Y2hIIGQyIFxuYWxpYXMgQmF0Y2hWIGQzXG5cbnNldHVwOlxucyBTZW5zb3IxIE1vZGUgMFxucyBTZW5zb3IyIE1vZGUgMVxuXG5sb29wOlxubCByMCBTZW5zb3IxIFNvbGFyQW5nbGVcbmwgcjEgU2Vuc29yMiBTb2xhckFuZ2xlXG5zdWIgcjAgNzUgcjBcbmRpdiByMCByMCAxLjVcbnMgQmF0Y2hWIFNldHRpbmcgcjBcbnMgQmF0Y2hIIFNldHRpbmcgcjFcbnlpZWxkXG5qIGxvb3BcbiIsInJlZ2lzdGVycyI6eyJpbyI6W3siU29sYXJBbmdsZSI6NTAsIk1vZGUiOjB9LHsiU29sYXJBbmdsZSI6NDUsIk1vZGUiOjF9LHsiU2V0dGluZyI6NDV9LHsiU2V0dGluZyI6MTYuNjY2NjY2NjY2NjY2NjY4fSx7fSx7fSx7fV0sImlvQ29ubmVjdGVkIjpbdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZV0sImludGVybmFsIjpbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdfSwicnVuQWZ0ZXJSZWdpc3RlckNoYW5nZSI6ZmFsc2UsInJ1bldpdGhFcnJvcnMiOmZhbHNlfQ== Simulator @ stationeering.com]
 
Here is the code for the ic10 chip: [https://stationeering.com/tools/ic#eyJwcm9ncmFtIjoiLy8gU2Vuc29yMSBmYWNlcyB1cCB0byBkMFxuLy8gU2Vuc29yMiBmYWNlcyBkb3duIHRvIGQxXG4vLyB7cG93ZXIgc29sYXIgcGFuZWwsIHBvd2VyIFNlbnNvcjJ9XG4vLyB7V2VzdCwgTm9ydGh9XG4vLyB7Tm9ydGgsIEVhc3R9XG4vLyB7RWFzdCwgU291dGh9XG4vLyB7U291dCwgV2VzdH1cbi8vIENvbm5lY3QgTWVtb3J5MSB0byBkMiBhbmQgTWVtb3J5MiB0byBkM1xuLy8gQmF0Y2ggV3JpdGVycyBtdXN0IHdyaXRlIHRvIFNvbGFyIFBhbmVsOlxuLy8gICAgQmF0Y2hXcml0ZXIxOmluO01lbW9yeTE7dmFyOkhvcml6b250YWxcbi8vICAgIEJhdGNoV3JpdGVyMjppbjtNZW1vcnkyO3ZhcjpWZXJ0aWNhbFxuLy8gZG8gbm90IGluY2x1ZGUgdGhlc2UgY29tbWVudHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuYWxpYXMgU2Vuc29yMSBkMFxuYWxpYXMgU2Vuc29yMiBkMVxuYWxpYXMgQmF0Y2hIIGQyIFxuYWxpYXMgQmF0Y2hWIGQzXG5cbnNldHVwOlxucyBTZW5zb3IxIE1vZGUgMFxucyBTZW5zb3IyIE1vZGUgMVxuXG5sb29wOlxubCByMCBTZW5zb3IxIFNvbGFyQW5nbGVcbmwgcjEgU2Vuc29yMiBTb2xhckFuZ2xlXG5zdWIgcjAgNzUgcjBcbmRpdiByMCByMCAxLjVcbnMgQmF0Y2hWIFNldHRpbmcgcjBcbnMgQmF0Y2hIIFNldHRpbmcgcjFcbnlpZWxkXG5qIGxvb3BcbiIsInJlZ2lzdGVycyI6eyJpbyI6W3siU29sYXJBbmdsZSI6NTAsIk1vZGUiOjB9LHsiU29sYXJBbmdsZSI6NDUsIk1vZGUiOjF9LHsiU2V0dGluZyI6NDV9LHsiU2V0dGluZyI6MTYuNjY2NjY2NjY2NjY2NjY4fSx7fSx7fSx7fV0sImlvQ29ubmVjdGVkIjpbdHJ1ZSx0cnVlLHRydWUsdHJ1ZSx0cnVlLHRydWUsdHJ1ZV0sImludGVybmFsIjpbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdfSwicnVuQWZ0ZXJSZWdpc3RlckNoYW5nZSI6ZmFsc2UsInJ1bldpdGhFcnJvcnMiOmZhbHNlfQ== Simulator @ stationeering.com]
  
== Accurate Solar Setup ==
+
== 9-chip 1-sensor 1-axis Solar Tracking ==
 
'''Authors:''' Wooodiii, Corvus_bkgk, Enfantcool, Baksch<br>
 
'''Authors:''' Wooodiii, Corvus_bkgk, Enfantcool, Baksch<br>
 
'''Properties:''' Accurate (average error 1.3°), Auto-reset (variant), Power conserving (variant)<br>
 
'''Properties:''' Accurate (average error 1.3°), Auto-reset (variant), Power conserving (variant)<br>
Line 60: Line 70:
 
<br>'''Math Formula:''' <code>f(x) = min((x-min(x,15))/1.5, 100)</code> where '''x''' is the solar angle.
 
<br>'''Math Formula:''' <code>f(x) = min((x-min(x,15))/1.5, 100)</code> where '''x''' is the solar angle.
  
'''Note: With the introduction of ecliptic solar angles, this setup no longer works at peak efficiency on worlds such as Mars and Europa which have the sun at an angle. This setup will still work on the Moon and in Space.'''
+
'''Note: With the introduction of ecliptic solar angles, this setup no longer works well on worlds such as Vulkan and Europa which have the sun at an angle. This setup will still work on the Moon and in Space, and will be acceptable on Mars and Loulan.'''
  
 
This setup is accurate, giving 495-500W throughout the day, with lower output only when the sun is lower than the panels can physically aim at.  
 
This setup is accurate, giving 495-500W throughout the day, with lower output only when the sun is lower than the panels can physically aim at.  
Line 132: Line 142:
 
----
 
----
  
== Easy/Compact Solar Setup ==
+
== 4-chip 1-sensor 1-axis Approximate Solar Tracking ==
 
'''Author:''' Evie<br>
 
'''Author:''' Evie<br>
 
'''Stationeers Version:''' 0.1.1068.5451<br>
 
'''Stationeers Version:''' 0.1.1068.5451<br>
Line 160: Line 170:
 
* Using 1.7 instead of 1.8 reduces the average error of this design to 6.5° and increases overall power generation, particularly in the afternoon.
 
* Using 1.7 instead of 1.8 reduces the average error of this design to 6.5° and increases overall power generation, particularly in the afternoon.
 
</translate>
 
</translate>
 +
 +
 +
== [[Solar Logic Cable Golf]] ==
 +
 +
{{cable Golf Rules}}
 +
* Cables needed to propagate the output of the Batch/[[Logic Writer]]s to the top edge of a frame are counted in the score

Revision as of 11:27, 10 August 2020

Other languages:
English

Disclaimer

Due to the frequency of game updates, all solutions are subject to change and may or may not be functional.

Geometry Of Solar Panels and Daylight Sensors

10-chip 2-sensor 2-axis Solar Tracking

Author: Eearslya, Neouni, 𝕽𝖘𝖆𝟗𝟕 and everyone of the #logic-circuit-discussion (most recently Enthaply Guy, ThunderGod97)
Stationeers Version: 0.2.2261.10316 and up
Number of Components: 12


Design

This is a fairly minimalistic 2-axis control setup. You'll need the sensors to be in Mode 1 (horizontal) and Mode 2 (vertical), both facing up. The cable can point in any direction, as the vertical sensor doesn't care and we're already compensating for the horizontal sensor.

To set the sensors, you will need to use a Logic Writer and a Logic Memory. Set the memory to 1, and set the writer to write to the first sensor's Mode variable. Then set the Writer to write to the second Sensor, and set the memory to 2 (in that order!). The sensors should say "Mode Horizontal" and "Mode Vertical". Once you have them set, you can deconstruct or re-use the I/O and memory units. They do not need to be left in place to keep the mode set.

2 sensor and 2 axis solar logic circuit guide

Notes

  • The Network should have one power source, ideally an APC with battery backup powered by the solar panels. The Network should hook up to all ports on all logic chips (only one necessary for memory) and both sensors. Solar Panels should be deployed with separate data and power ports, and only the data port of each solar panel should be hooked up to the Network of the logic circuit. The power port of the solar panels should feed a separate network from the logic network.
  • Reader A: Reads Solar Angle from the Vertical Sensor
  • Math B (Subtract): Memory H minus Reader E
  • Math C (Subtract): Memory J minus Math F
  • Batch Writer D: Reads from Math C, and writes to Vertical field for all Solar Panels.
  • Reader E: Reads Solar Angle from the Horizontal Sensor
  • Math F (Divide): Reader A divided by Memory I
  • Batch Writer G: Reads from Math B and writes to Horizontal field for all Solar Panels.
  • Memory H: should be one of 0, 90, 180, or 270. We're using it to compensate for horizontal sensor orientation. If the sensor cable points the same direction as the solar panels power port, set it to 90. Add 90 for every rotation counterclockwise, and use 0 instead of 360.
  • Memory I: Set to 1.5. It's used to scale from 180° but panels can only do 15-165° in percentages so divide by 1.5 and adjust later .
  • Memory J: Set to 50. This is to keep the panel at 0° or % longer because it can't do 0-15°.

Credit for alternatives: PoolSharkFOG

This setup can be also programmed in an IC10 chip which saves power because you need only 5 chips instead of 8.

Required:
1 IC10 Chip plus IC housing
2 sensors setup as shown above
2 memory
2 Batch Writers that read from memory

Connect Sensor1 to d0, Sensor2 to d1, Memory1 to d2, Memory2 to d3. BatchWriter Horizontal should read from Memory1 and BatchWriter Vertical should read from Memory2 and both ofcourse write to the solar panels. Use the same setup for the power connector directions as shown above. You do not have to write the mode, this is done in code.

Here is the code for the ic10 chip: Simulator @ stationeering.com

9-chip 1-sensor 1-axis Solar Tracking

Authors: Wooodiii, Corvus_bkgk, Enfantcool, Baksch
Properties: Accurate (average error 1.3°), Auto-reset (variant), Power conserving (variant)
Number of Components: 10-12
Math Formula: f(x) = min((x-min(x,15))/1.5, 100) where x is the solar angle.

Note: With the introduction of ecliptic solar angles, this setup no longer works well on worlds such as Vulkan and Europa which have the sun at an angle. This setup will still work on the Moon and in Space, and will be acceptable on Mars and Loulan.

This setup is accurate, giving 495-500W throughout the day, with lower output only when the sun is lower than the panels can physically aim at.

This setup adjusts for the fact that solar panels rotate through only 150 degrees. Instead of converting using 180/100, this setup converts by doing 150/100. It then clips the value at the edges, where the prior calculation would give elevations that are negative or greater than 100 (representing the fact that we would prefer the panel to track past 0 or 100, aiming all the way down to the horizon instead of stopping 15° short). The listed average error is nonzero only because of this completely unavoidable portion; the error is 0 throughout the 15°-165° portion of the day.

This setup produces the equivalent of 274W averaged over a whole day/night cycle.

Link to IC Programm : [1]

Design

  • The Daylight Sensor should face the sunrise.
  • Solar panels should be rotated such that 0% vertical faces the sunrise.


Component (Name) Settings Explanation
Logic Reader (A) Daylight sensor, Solar angle Sun's angle above the horizon
Memory (15) 15 True angle of solar panels at 0 elevation
Memory (1.5) 1.5 150/100, the conversion constant from solar angle (range:15-165, i.e. 150) to panel elevation (range:0-100)
Min/Max Unit (B) min(A,15) Adjustment amount: 15, unless that would take A-B negative, in which case only enough to reach 0 (low edge case). Equivalent to min(A-B,0) but doesn't require storing 0.
Math Unit (C) A-B Adjusted solar angle
Math Unit (D) C/1.5 Conversion from solar angle to panel elevation
Memory (100) 100 Maximum possible panel elevation
Min/Max Unit (E) min(D,100) Cap elevation to 100 for solar angles past 165° (high edge case). Equivalent to doing min(A-B,165) before step D, but 100 is easier to set in memory than 165.
Batch Writer E -> Solar panels, Vertical angle Send elevation to solar panels

Accurate Solar Control.png

Auto-Reset Variant

For panels that automatically reset their facing upon sunset, use two more components, and adjust the final min/max unit:

Component (Name) Settings Explanation
Logic Reader (L) Daylight sensor, Activation 1 while daytime, 0 while nighttime
Math Unit (F) 100*L Maximum panel elevation, now 100 during day and 0 at night
(from above) Min/Max Unit (E) min(D,F) Adjusted panel elevation (high edge adjustment)

Power-Conserving Variant

To conserve power, it's possible to avoid running the entire circuit at night. A transformer can be controlled to power the main logic network above. In this way, only the two new components need to remain powered at all times.

Component (Name) Settings Explanation
Logic Reader (L) Daylight sensor, Activation As in the auto-reset variant above
Logic Writer L -> Transformer, On Transformer powers main logic network

4-chip 1-sensor 1-axis Approximate Solar Tracking

Author: Evie
Stationeers Version: 0.1.1068.5451
Properties: Simple, Inaccurate (Average error: 7.5°)
Number of Components: 5

Note: With the introduction of ecliptic solar angles, this setup no longer works at peak efficiency on worlds such as Mars and Europa which have the sun at an angle. This setup will still work on the Moon and in Space.

This imperfect setup is a common starting point. It starts off at 375w of power in the morning, builds up to 500w at zenith (noon) then back to 375. This is due to the fact that solars rotate through only 150 degrees of elevation and that this setup's math is correct only if they rotated through all 180 degrees of solar angle.

This setup produces the equivalent of 239W averaged over a whole day/night cycle.

Design

Solar Setup Diagram
A super compact version

Notes

  • The Daylight Sensor MUST be facing East (Sunrise), but its rotation doesn't matter.
  • Solar panels should be rotated such as that 0% VERTICAL rotation faces East/Sunrise, and 100% VERTICAL faces West/Sunset.
  • The Area Power Control is necessary for the circuit to stay powered during the night. It also hides all the modules from the rest of your system.
  • Importantly, the solar input power doesn't directly connect to any of the logic writers. This not only ensures your system doesn't lose power but also prevents short-circuiting that would burn cables.
  • Using 1.7 instead of 1.8 reduces the average error of this design to 6.5° and increases overall power generation, particularly in the afternoon.


Solar Logic Cable Golf

An interesting engineering challenge is to wire up the logic with the minimum amount of cabling. The goal would be to get solar tracking (or whatever) working as early as possible by minimizing the amount of copper that must be gathered and smelted.

The rules of Cable Golf are:

  • The score is the number of Cable Coils used to correctly wire the functionality. (Straight and corner count as 1 cable; T and + count as 2 cables)
  • Chips may be placed in any orientation (upside-down math chips might conserve cables)
  • The single-plane category requires all the chips to be on coplanar faces of all frames. The multi-plane category allows the chips to be on frame faces that are at different angles (crossing an edge or surrounding a corner).
  • The number of frames needed to mount the components is part of the category (2-frame scores are separate from 3-frame scores)
  • If a component that can not be placed on the edge of a lone frame is placed on the edge between two frames, both those frames must be counted in the category.
  • If a component must be placed on a frame, that frame's surface is part of its category, even if the frame is removed afterward.
  • There must be a connection to the feed from the Power Controller, but the cables leading from the power controller (to a *single* connection point; once it branches the junction and cables are counted) that are not required for the logic to function are not counted. This power feed connection will almost certainly be a T or +, since a corner or straight section is strictly a feed and not needed to connect the logic components.
  • Cables needed to propagate the output of the Batch/Logic Writers to the top edge of a frame are counted in the score