Automatic Reactor is a term used for reactors which are regulated through mechanisms rather than the player. They are necessary for feasible multi-reactor power systems.
Working
There are two mechanisms per reactor, one for managing temperature, the other for dispensing uranium when it runs out. Rod control is achieved through temperature sensors, which read the reactor's temperature when attached to it, and sends signals when it moves out of range. When used with polysilicons, the signals can be used to lower or raise the control rods.
A sensor set to 0:1000 that sends signals through a blue polysilicon (Mode 1) will lower the rods when the temperature is between 0F and 1000F, increasing temperature. The opposite can be done with a pink polysilicon (Mode 0) and a 1000:1230 temperature range, which will raise them when the temperature is between 1000F and 1230F, therefore decreasing the temperature. The reactor will explode at 1200F, so the pink polysilicon is absolutely necessary.
Additionally, you can place a Mode 2 (Flip-Flop) polysilicon to eject Uranium/NuclearWaste.
To refill a reactor automatically, here's a few steps.
- Firstly, get a microcontroller and put it on the Reactor.
- Get a port (Configure PortID to 1) and attach it to the Reactor. This has to also be attached to the microcontroller.
- Get a dispenser and attach it to another port (Configure PortID to 2) above the Reactor.
- Get another port and configure it to PortID 3, then attach a Flip-Flop polysilicon to it, touching the Reactor.
- Put the script below into the microcontroller and power it.
- Keep it mind, that you have to turn the microcontroller on, obviously. For this you should use a transformer with an Activate polysilicon to turn it on everytime you rejoin. Transformers have to be powered in order to work.
The code will use port ID 1 to read the reactor's fuel status, port ID 2 to control the dispenser and port ID 3 to eject nuclear waste.
local eject_time = 0.9 --This determines when to eject, change this to control when you want to eject fuel. (0 to 1)
local reactor = GetPartFromPort(1, "Reactor")
local dispenser = GetPartFromPort(2, "Dispenser")
while wait() do
local fuel = reactor:GetFuel()
for i = 1, #fuel do
if fuel[i] <= eject_time then
TriggerPort(3)
dispenser:Dispense()
wait(1)
end
end
end
Note: Microcontrollers have to be powered to function.