Non-contact IP65 Capacitive Liquid Level Sensor For Arduino

Aug 03, 2026

Leave a message

Non-contact IP65 Capacitive Liquid Level Sensor for Arduino

A non-contact IP65 capacitive liquid level sensor for Arduino is an open-air capacitive probe - it mounts on the outside of a non-conductive tank (glass, plastic) and measures the changing capacitance as liquid rises inside, without any part touching the fluid. The IP65 rating means it is dust-tight and protected against water jets, so it suits outdoor, humid, and wash-down environments. It connects to an Arduino via analog or digital input and outputs a voltage or pulse-width signal you can read with analogRead() or pulseIn(). This guide covers how it works, why non-contact matters, the IP65 meaning, Arduino wiring and code, calibration, and how it compares with alternatives. For the full capacitive picture see capacitive level sensors complete guide; for Arduino water-level projects see Arduino interfacing water-level sensor and water-level sensor Arduino.


What "Non-contact IP65 Capacitive" Actually Means

Non-contact - the sensing pad sits on the outside of a non-conductive tank wall; nothing is immersed in the liquid.

Capacitive - the pad and the liquid (across the wall) form a capacitor; liquid's high permittivity (εr ≈ 80 for water) raises capacitance vs air (εr ≈ 1). The Arduino-capable module measures that change.

IP65 - the first digit (6) = dust-tight; the second digit (5) = protected against water jets from any direction. It will survive outdoor rain and hose-down but is not submersible (that would need IP67/IP68).

This combination - non-contact + IP65 + capacitive - is designed for Arduino and maker projects where the tank is plastic or glass, the environment is wet or dusty, and you want no part inside the liquid to corrode, clog, or require maintenance.


How It Works: The Capacitive Chain

The physics is C = ε × A / d applied across a tank wall:

A conductive sensing pad is bonded to the outside of a non-conductive tank (plastic, glass, ceramic).

The tank wall becomes the dielectric between the pad and the liquid inside.

When the tank is empty, air (εr ≈ 1) fills the gap → capacitance is low.

As liquid rises, the dielectric becomes a mix of air above and liquid below; the average ε rises → capacitance rises measurably.

An onboard IC (or a simple RC circuit you read with Arduino) converts the capacitance change to a frequency, pulse width, or voltage output.

Because nothing enters the liquid, the sensor survives corrosive, sticky, or fouling liquids that would defeat a probe. For the full physics see how a water sensor works physically and the capacitive guide.


Non-contact vs Probes: Why the Outside?

Putting the sensing element inside the liquid causes fouling, corrosion, and maintenance. A non-contact pad on the outside avoids all of that - the tank stays sealed, the sensor stays dry. The trade-off is sensitivity: the tank wall adds distance and reduces capacitance change, so the electronics must be more sensitive than a bare probe. Modern IC-based modules handle this well for tanks up to ~10–15 mm wall thickness (acrylic, PET, glass, PP/HDPE).


IP65 Explained

Digit Level What It Means for Your Project
6 (dust) Dust-tight No dust enters; fully protected
5 (water) Water jets Survives directed hose water from any angle

Not IP67 - do not submerge the sensor body. Keep the electronics end away from direct spray; the sensing pad against the tank is fine.


Key Specifications (Verify per Datasheet)

Parameter Typical Range
Tank wall thickness Up to ~10–15 mm (acrylic, PP, HDPE, glass)
Output Analog voltage (0–Vcc) or digital (HIGH/LOW)
Supply 3.3–5 V DC
Sensitivity Adjustable (trimpot or code)
Response time ~100 ms to ~1 s typical
Body rating IP65
Media Non-conductive tanks only; liquid must be non-metallic

Confirm on the datasheet; the capacitive method is explained in capacitive sensors.


Why Non-contact Capacitive for Arduino?

No tank modification - no drilling, no ports, no seal to fail.

Arduino-compatible - 3.3 V or 5 V supply, analog or digital out, no custom protocol.

Works on glass, acrylic, plastic tanks - ideal for Maker projects, aquariums, grow tents, IBC totes.

IP65 - survives outdoor, greenhouse, and wash-down environments.

Low cost - a fraction of industrial capacitive or ultrasonic transmitters.

Continuous output - unlike a float switch (on/off), you get a level trace.

For continuous vs point see continuous vs point level sensors; for precision Arduino signal conditioning see Arduino water-level interfacing.


Arduino Wiring & Code

Wiring (Typical 3-Wire Module)

Wire Connect To
+Vcc 3.3 V or 5 V (match your module)
GND Arduino GND
Signal (OUT) Arduino A0 (analog) or D2 (digital)

Keep the signal wire away from motor or solenoid cables to reduce noise.

Basic Analog Code

cpp复制

const int SENSOR_PIN = A0; void setup() { Serial.begin(9600); } void loop() { int raw = analogRead(SENSOR_PIN); float voltage = raw * (5.0 / 1023.0); Serial.print("Raw: "); Serial.print(raw); Serial.print(" | Voltage: "); Serial.println(voltage); delay(500); }

Map the raw value to level by calibrating empty and full in code or with a lookup table.

Digital Mode (Threshold)

Many modules have a trimpot to set the threshold; the OUT pin goes HIGH/LOW when the level crosses it - no code needed beyond digitalRead().

Analog Calibration (Two-Point)

Empty tank: note the raw analogRead() value (e.g., ~150).

Full tank: note the value (e.g., ~850).

Map in code:

cpp复制

int raw = analogRead(A0); float levelPercent = map(raw, EMPTY_VAL, FULL_VAL, 0, 100); levelPercent = constrain(levelPercent, 0, 100);

See Arduino water-level interfacing for full wiring diagrams.


Calibration & Accuracy Tips

Tank material and wall thickness matter - thicker or higher-permittivity walls (glass vs acrylic) change sensitivity; recalibrate after any change.

Temperature affects capacitance - the liquid's εr drifts slightly with temperature; for precision, add a DS18B20 and compensate in code.

Mount the pad flat and fully - air bubbles or voids under the pad reduce contact and give noisy readings.

Keep the cable short - long cables add parasitic capacitance; keep connections under ~30 cm for best results.

Smooth the reading - average multiple analogRead() samples in code to kill noise:

cpp复制

int avgRead(int pin, int samples) { long sum = 0; for (int i = 0; i < samples; i++) sum += analogRead(pin); return sum / samples; }


Common Problems & Fixes

Symptom Likely Cause Fix
No change when liquid rises Tank is conductive (metal) Use non-conductive tank only
Reading drifts over time Temperature swing Add temperature compensation
Jumpy readings Noise or loose pad Shorten cable; tape pad firmly
Always reads full or empty Wrong threshold / wiring Check wiring; recalibrate empty/full
Low sensitivity Wall too thick Use thinner section or probe sensor

Non-contact Capacitive vs Alternatives

Method Non-contact? Arduino-Friendly? Best For
Non-contact capacitive (IP65) Yes Yes (analog/digital) Plastic/glass tanks, wet/dusty
Capacitive probe (immersed) No Yes Metal tanks; conductive liquids need RF
Ultrasonic Yes Yes (analog/serial) Open tanks, no contact needed
Float switch No Yes (digital) Simple on/off, point only
Pressure sensor (submerged) No Yes (analog) Known density, bottom-mounted
Optical TIR Yes (inside tank) Yes (digital) Clear liquids, point only

See non-contact hub, capacitive guide, and how water sensors work physically.


Where Non-contact IP65 Capacitive Excels

Project Why It Fits
Arduino aquarium / pond level Glass/acrylic tank, wet, no hole needed
IBC tote / rainwater harvesting Thick HDPE/PP, outdoor IP65
Greenhouse irrigation reservoir Humid environment, plastic tank
Coffee machine / beverage dispense Clean-in-place, no tank intrusion
Grow tent nutrient reservoir Dark tank, non-contact avoids light issues
DIY pressure vessel monitoring Small bore, plastic sight glass

FAQ: Non-contact IP65 Capacitive Liquid Level Sensor for Arduino

What does non-contact capacitive mean?

The sensing pad mounts on the outside of a non-conductive tank; it measures the capacitance change as liquid rises inside without any part touching the liquid.

What does IP65 mean?

Dust-tight (6) and protected against water jets from any direction (5); it survives outdoor rain and hose-down but is not submersible.

What tanks does it work on?

Non-conductive tanks only: acrylic, glass, PP, HDPE, PET. It does not work through a metal tank wall.

How accurate is it with Arduino?

Typically ±2–5% of full scale with two-point calibration and averaging; temperature drift adds a few percent more over wide ranges.

How do I connect it to Arduino?

Three wires: +Vcc (3.3–5 V), GND, and OUT to A0 (analog) or a digital pin. Read analogRead() and map to level.

Can I use it for conductive liquids?

The method works through a non-conductive tank regardless of the liquid's conductivity; conductive liquids do not short the sensor because the wall insulates them.

What is the maximum tank wall thickness?

Typically ~10–15 mm for reliable sensitivity; thicker walls reduce the capacitance change and may need a higher-sensitivity module.

Why does my reading drift with temperature?

The liquid's permittivity and the electronics drift slightly with temperature; adding a temperature sensor and compensating in code reduces this.

Is it safe for drinking water projects?

The sensor body is IP65 and the pad is on the outside of the tank - nothing contacts the water. Confirm the body material is food-safe if direct contact were ever possible.

How is it different from an ultrasonic sensor?

Ultrasonic reads the surface from above with a sound pulse; capacitive reads the average dielectric across the wall. Capacitive needs a non-conductive tank but works in cluttered tanks where ultrasonic beams would hit obstacles.

Can I use multiple sensors on one tank?

Yes - stack multiple pads at different heights to track coarse multi-point level (empty / low / full).

What output does it give?

Most modules give analog voltage (0–Vcc proportional to capacitance) or a digital HIGH/LOW threshold set by a trimpot.

Non-contact or ultrasonic - which for Arduino?

Non-contact capacitive for plastic/glass tanks, cluttered interiors, or tight budgets; ultrasonic for open tanks where the beam is clear and you need longer range.

How do I calibrate it?

Record the analogRead() value at empty and full, then use map() in code to convert to percent or engineering units.

What is the response time?

Typically ~100 ms to ~1 s; the averaging in code smooths noise but adds apparent lag.


Conclusion

A non-contact IP65 capacitive liquid level sensor for Arduino gives you continuous, non-invasive level monitoring on plastic or glass tanks in wet or dusty environments - no drilling, no seal to fail, nothing inside the liquid to corrode or clog. The IP65 body shrugs at outdoor rain and wash-down; the capacitive pad reads level through the tank wall via the εr contrast between liquid (≈ 80) and air (≈ 1), and an Arduino reads the analog voltage with analogRead() and maps it to level. Calibration is a simple two-point empty/full; averaging in code and adding temperature compensation make it stable enough for most Maker projects. Compare it to ultrasonic (for open tanks) and capacitive probes (for metal tanks) to make sure it fits your setup, then wire it up, calibrate, and you have a reliable, maintenance-free Arduino liquid level monitor that performs reliably in aquariums, IBC totes, rainwater systems, greenhouse irrigation, and beverage dispense alike. For more, see Arduino water-level interfacing, water-level sensor Arduino, capacitive complete guide, non-contact hub, Arduino projects, precision sensors, proximity sensor outputs, sensor datasheet guide, how water sensors work physically, continuous vs point, level sensor complete guide, choosing the right switch, and the ultimate guide.

Send Inquiry