I've been rebuilding an old motorhome and added a second fuel tank. For simplicity sake, I chose to use one tank for fueling the motor and then use the other to transfer fuel to the primary tank when needed.
There are 2 screen modes. The primary screen displays the fuel level in the reserve tank and the second mode displays a screen for setting transfer volume, flow rates, and delivered volume. A couple safety features are included: Transfer volume cannot be set greater than or equal to volume in reserve tank and, pump relay is turned off when transfer volume is acquired.
I'm only have intermediate experience with Arduino coding so I'm sure there is a better way to skin this cat. Could have use SPI protocol, but decided on I2C as I was thinking the display would be remote from the processor and wanted as few wires as possible. Note that circuit changes on the back of the display are necessary to use I2C protocol. I've noted the required changes on the schematic.

Transfer Mode Screen

A little messy, but it works :)
EXPANDED TECHNICAL DETAILS
Automotive Fluid Management System
A mission-critical project for managing auxiliary fuel systems in trucks or remote generators, providing precise level monitoring and automated fuel transfer.
- Resistive Fuel-Level Decoding: The Arduino interfaces with standard 0-90 ohm automotive fuel senders. The firmware uses an analog voltage divider and a non-linear mapping table to accurately calculate the remaining liters.
- Solenoid Pump PWM Control: Manages a 12V DC fuel transfer pump via a high-current solid-state relay. The Arduino automatically initiates a "Transfer" cycle when the main tank is low and the reserve tank is full.
Safety
- Dry-Run Protection: Monitor's the pump's current draw; if the tank is empty, the Arduino detects the drop in resistance and instantly deactivates the pump to prevent motor burnout.