Case study · Data center HVAC · Arduino PLC
Servers in oil, a room people can work in. One Arduino PLC keeps both under control.
How an Industrial Shields M-Duino controls the oil temperature of an immersion-cooled server tank, the room climate and the ventilation that removes oil odors, in a setup designed to be replicated.
Immersion cooling solves the heat.
It also creates three new control problems.
This case describes a server farm cooled by an oil-based refrigeration system. The customer needed a new, more capable HVAC control for the installation, and a control model that could be easily replicated, because the oil cooler might be shared with new server farms in the future.
The challenge
Keep the tank, the room and the air within range at the same time.
The servers are submerged in a cooling oil. Both the tank and the room must stay within a defined range of temperature and humidity, and a ventilation system has to reduce the oil odors so operators can work in the plant.
Temperature
Of the cooling fluid in the tank and of the room. Overheating is the first risk for the servers.
Humidity
Kept within range in the room with a humidifier and a dehumidifier, together with the air conditioning.
Oil odors
Removed by ventilation whose speed follows the odor level, so the room stays clean and functional.
Designed to be replicated
The installation had to work as a model that can be copied, with the flexibility to change the control sequence if the oil cooler is later shared with additional server farms.
How it works
Three control loops, one controller.
Every loop runs on the same industrial Arduino PLC. Move the sliders to see the logic of each one.
PID control of the oil bath
A temperature sensor in the tank feeds a PID algorithm in the PLC. The PLC compares the reading with the set point and calculates the flow the cooler has to deliver.
- Input: tank temperature sensor
- Algorithm: PID in the PLC
- Output: cooler flow demand over a serial link
Illustrative simulation of a PID response. Values are not data from the installation.
ON/OFF control of humidity and temperature
Room temperature and humidity sensors decide when the dehumidifier, the humidifier and the air conditioning are enabled or disabled.
- Inputs: room temperature and humidity sensors
- Logic: thresholds in the PLC
- Outputs: ON/OFF to humidifier, dehumidifier and air conditioning
Illustrative thresholds. The real set points of the installation are not published.
Variable-speed ventilation for oil odors
The fan runs through a variable frequency drive. The PLC makes it turn faster or slower depending on the odor level, sending the speed reference to the drive as an analog signal.
- Input: odor level in the room
- Output: 0-10 V analog reference to the VFD
- Actuator: ventilation fan
Illustrative linear mapping from odor level to fan speed.
System architecture
Every signal, end to end.
The original control scheme of the installation, redrawn. Sensors on the left and top, actuators on the right, the PLC in the middle.
| Signal | Direction | Type | Purpose |
|---|---|---|---|
| Tank temperature | Sensor → PLC | 1-Wire / 0-10 V | Process value of the oil PID loop |
| Room temperature | Sensor → PLC | 1-Wire / 0-10 V | Enables or disables the air conditioning |
| Room humidity | Sensor → PLC | 1-Wire / 0-10 V | Enables the humidifier or the dehumidifier |
| Cooler flow | PLC → Cooler | RS-232 / RS-485 / UART | PID output: flow the cooler has to deliver |
| Fan speed reference | PLC → VFD | 0-10 V analog | Ventilation speed according to odor level |
| Humidifier | PLC → device | ON/OFF | Raises room humidity |
| Dehumidifier | PLC → device | ON/OFF | Lowers room humidity |
| Air conditioning | PLC → device | ON/OFF | Room temperature control |
Why a PLC based on Arduino
Industrial hardware, open code.
All three loops in one device
PID on the fluid, threshold logic on the room and an analog reference to the drive run in the same program, on the same controller.
Easy to replicate
The same hardware and program can be installed again in another room, which was a requirement of the project.
Flexible sequence
The control sequence lives in Arduino code, so it can be adapted if the oil cooler is shared with new server farms.
Hardware used
One controller on the DIN rail.
M-Duino Ethernet PLC Arduino 19R+
Arduino Mega based PLC for DIN rail, programmed with the Arduino IDE.
- Inputs
- 6 (4 analog 0-10 V)
- Outputs
- 11 (8 relays, 3 analog/PWM)
- Communications
- Ethernet, RS-485, RS-232, TTL, I2C, SPI
- Power
- 12 to 24 Vdc, IP20
Questions about this case
Can an Arduino-based PLC run a PID loop for liquid cooling?
Yes. In this installation the M-Duino reads the tank temperature, compares it with a set point and calculates with a PID algorithm the flow the cooler has to deliver.
How is the fan speed controlled?
Through a variable frequency drive. The PLC sends the speed reference as a 0-10 V analog signal and raises or lowers it according to the odor level in the room.
How are the humidifier, dehumidifier and air conditioning controlled?
With ON/OFF signals from the PLC. Each device is enabled or disabled depending on the readings of the room temperature and humidity sensors.
How does the PLC talk to the cooler?
In the control scheme of this project, the PID output reaches the cooler over a serial link (RS-232, RS-485 or UART). The M-Duino 19R+ has RS-232, RS-485 and TTL serial ports.
Can the same setup be used in another server room?
That was one of the goals: an installation model that can be replicated, with a control sequence that can be adapted if the oil cooler is shared with new server farms.
Which sensor interfaces were used?
The temperature and humidity sensors are connected with 1-Wire or 0-10 V analog signals, according to the original scheme.
Download the case study
4-page PDF with the challenge, the logic, the architecture and the hardware. No form required.
Similar project?
Tell us your signals. An engineer will answer.
Server rooms, process cooling, climate control or ventilation: describe what you need to measure and drive, and we will tell you which controller fits.
- Answer from our technical team
- Hardware sizing for your I/O list
- Arduino, ESP32 or Raspberry Pi based PLCs