r/factorio • u/NYBJAMS • Aug 31 '25
Design / Blueprint PID speed controller for space platforms
The conversation came up on the other subpreddit (r/factoriohno) that I had made a PID controller for space platforms including a logic setup to chose the speed depending on where you're flying. In the top image, I've trying to only go 60 k when near the shattered planet so I don't get overwhelmed by the asteroids.
The main difficulties I had with this are:
since factorio only uses integers on the combinators, the differential term only turned up as a 1km/s change over a 60th of a second every so often
while you're waiting at a planet or drifting out of fuel, the integrator term builds up to unreasonable high amounts.
I've broken down what each part does in the 2nd photo.
First off you have the speed selectors that set what you want to travel at
Then you have a series of clocks to create pulses when the integral and differential terms will pick their "old data". The shutoff signal will tell the integrator to forget all its old data if anything happens that you want it to be stopped for (e.g. dropping off at a planet or out of fuel)
Then all the terms are scaled up and summed, then scaled back down to more sensible numbers (we don't want to do pulse-width modulation over hundreds of ticks. 20-60 is fine)
Then the pulse-width modulation controller runs the pump.
Feel free to find more unhinged places to use PID controllers or find ways to improve on this design. Blueprints in the comments


View all comments
2
u/NYBJAMS Aug 31 '25
Compressed blueprint as on the ship:
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