Pengertian Sensor EC Meter (Electrical Conductivity Meter)
Sensor EC Meter adalah alat yang digunakan untuk mengukur konduktivitas listrik (Electrical Conductivity/EC) suatu larutan, yaitu kemampuannya untuk menghantarkan arus listrik. Konduktivitas listrik ini berkaitan erat dengan jumlah ion terlarut (seperti garam, mineral, atau nutrisi) dalam air atau larutan.
Sensor ini banyak digunakan dalam bidang pertanian hidroponik, akuakultur, pengolahan air, industri makanan, dan lingkungan untuk memantau kualitas air atau larutan nutrisi.
Prinsip Kerja Sensor EC Meter
Sensor EC Meter bekerja dengan prinsip:
- Dua Elektroda yang dicelupkan ke dalam larutan.
- Arus listrik dialirkan antara elektroda.
- Tahanan listrik (resistansi) larutan diukur.
- Konduktivitas (EC) dihitung berdasarkan hukum Ohm:EC=1Resistansi×KEC=Resistansi1×K
- KK = Konstanta sel sensor (tergantung jarak dan luas elektroda).
- Semakin tinggi kadar ion terlarut, semakin tinggi konduktivitasnya.
Satuan Pengukuran EC
- SI Unit: Siemens per meter (S/m)
- Umum Digunakan:
- mS/cm (milliSiemens per centimeter)
- µS/cm (microSiemens per centimeter)
- ppm (parts per million, konversi dari EC)
Contoh Nilai EC:
- Air murni: ~0,5–3 µS/cm
- Air minum: 50–800 µS/cm
- Larutan hidroponik: 1000–3000 µS/cm
- Air laut: ~50.000 µS/cm
Jenis-Jenis Sensor EC Meter
- Contact EC Sensor (Konduktif)
- Menggunakan elektroda logam yang bersentuhan langsung dengan larutan.
- Contoh: Sensor DS18B20 + EC Probe untuk hidroponik.
- Inductive EC Sensor (Toroidal/Non-Contact)
- Menggunakan kumparan magnetik untuk mengukur EC tanpa kontak langsung.
- Cocok untuk larutan korosif atau kotor.
- Digital EC Meter (Portable/Lab)
- Alat ukur EC standalone dengan tampilan digital (contoh: Hanna Instruments, Apera PC60).
- EC Sensor untuk Arduino/ESP32
- Modul seperti DFRobot Gravity: Analog EC Sensor yang bisa dihubungkan ke mikrokontroler.
Kegunaan Sensor EC Meter
- Pertanian Hidroponik & Aquaponik
- Memantau konsentrasi nutrisi (AB Mix, pupuk cair).
- Menghindari kelebihan/defisiensi nutrisi pada tanaman.
- Akuakultur (Budidaya Ikan/Udang)
- Mengukur salinitas air (kadar garam).
- Memastikan kualitas air tambak/kolam.
- Pengolahan Air & Limbah
- Memeriksa tingkat pencemaran air (logam berat, garam).
- Monitoring desalinasi air laut.
- Industri Makanan & Minuman
- Mengukur kadar mineral dalam air minum.
- Kontrol kualitas susu, bir, jus, dll.
- Penelitian Lingkungan
- Analisis air sungai, danau, atau air tanah.
- Deteksi kontaminasi air oleh limbah industri.
Contoh Aplikasi dengan Mikrokontroler
Sensor EC Meter bisa dihubungkan ke Arduino, ESP32, atau Raspberry Pi untuk pemantauan otomatis.
Contoh Penggunaan:
- Sistem Hidroponik Otomatis:
- Arduino membaca nilai EC larutan nutrisi.
- Jika EC terlalu rendah, pompa nutrisi diaktifkan.
- Monitoring Kualitas Air Tambak:
- ESP32 mengirim data EC ke smartphone via WiFi.
- Pemberitahuan jika salinitas tidak normal.
Berikut adalah kelebihan sensor EC Meter (Electrical Conductivity Meter) dibandingkan metode pengukuran kualitas air lainnya:
1. Akurasi Tinggi
- Dapat mengukur konduktivitas listrik larutan dengan presisi tinggi (bahkan dalam rentang µS/cm hingga mS/cm).
- Beberapa sensor memiliki kompensasi suhu otomatis untuk hasil lebih akurat.
2. Pengukuran Cepat & Real-Time
- Memberikan hasil instan tanpa perlu waktu reaksi kimia (seperti pada uji titrasi).
- Cocok untuk monitoring berkelanjutan dalam sistem otomatis (hidroponik, akuakultur, dll).
3. Mudah Digunakan
- Beberapa model portabel (seperti EC meter handheld) bisa digunakan langsung di lapangan.
- Sensor digital dengan antarmuka plug-and-play (misalnya sensor EC untuk Arduino/ESP32).
4. Tahan Lama & Perawatan Minimal
- Elektroda dari bahan stainless steel atau platinum tahan korosi.
- Tidak memerlukan reagen kimia (berbeda dengan pengujian kimiawi).
5. Aplikasi Luas
- Bisa digunakan untuk berbagai jenis larutan:
- Air tawar, air laut, limbah industri, larutan nutrisi hidroponik, dll.
- Kompatibel dengan berbagai perangkat (mulai dari alat portabel hingga sistem IoT).
6. Dapat Dikombinasikan dengan Parameter Lain
- Beberapa sensor EC terintegrasi dengan pH meter, suhu, dan TDS (Total Dissolved Solids).
Contoh: Sensor EC + pH + Temperature dalam satu probe.
7. Mendukung Otomatisasi
- Bisa dihubungkan ke mikrokontroler (Arduino, ESP32, Raspberry Pi) untuk:
- Sistem irigasi otomatis.
- Kontrol nutrisi hidroponik.
- Pemantauan kualitas air akuakultur secara real-time.
8. Kalibrasi Mudah
- Kebanyakan sensor EC bisa dikalibrasi dengan larutan standar (misalnya larutan KCl 1413 µS/cm).
- Beberapa model memiliki kalibrasi otomatis.
9. Tidak Merusak Sampel
- Pengukuran non-destruktif (tidak mengubah komposisi larutan).
- Cocok untuk industri makanan/minuman yang membutuhkan pengujian tanpa kontaminasi.
10. Harga Terjangkau (Untuk Model Dasar)
- Sensor EC sederhana (seperti DFRobot Gravity EC Sensor) relatif murah untuk proyek DIY.
- Tersedia pilihan high-end untuk aplikasi industri/lab.
Kekurangan Sensor EC Meter (Sebagai Perbandingan)
- Tidak Spesifik
- Hanya mengukur total konduktivitas, tidak bisa membedakan jenis ion (misalnya Na⁺ vs K⁺).
- Jika perlu analisis ion spesifik, harus dikombinasikan dengan kromatografi atau spektroskopi.
- Perlu Kalibrasi Rutin
- Elektroda bisa mengalami drift atau penumpukan kotoran.
- Tergantung Suhu
- Konduktivitas larutan dipengaruhi suhu, sehingga perlu kompensasi suhu.
Contoh Penerapan Kelebihan Sensor EC Meter
- Hidroponik Pintar:
- Sensor EC + Arduino mengatur pompa nutrisi secara otomatis saat EC turun.
- Tambak Udang:
- Pemantauan salinitas air secara real-time untuk hindari stres pada udang.
- Pengolahan Air Limbah:
- Deteksi pencemaran garam/logam berat berdasarkan lonjakan EC.
Komponen yang Dibutuhkan
- Papan mikrokontroler (Arduino UNO, ESP32, atau Arduino Mega)
- Sensor EC Meter RS485 (contoh: DFROBOT SEN0244)
- Modul konverter RS485 ke TTL (seperti MAX485)
- Kabel jumper
- Power supply untuk sensor (biasanya 5V atau 12V)
- Larutan untuk pengujian
wiring diagram pada kabel sensor ec

- VCC pada sensor pH -> 12V pada power suply
- GND pada sensor pH -> GND pada power suply
- A+ pada sensor pH -> A+ pada modul RS485
- B- pada sensor pH -> B- pada modul RS485
Menghubungkan Modul RS485 ke Mikrokontroler
- RO (Receiver Output): Data yang diterima dari RS485.
- DI (Driver Input): Data yang dikirim ke RS485.
- DE (Driver Enable): Mengaktifkan pengiriman data.
- RE (Receiver Enable): Mengaktifkan penerimaan data.
- VCC dan GND: Power supply modul.
Cara penggunaan menggunakan arduino uno
Arduino Uno adalah salah satu board mikrokontroler yang paling banyak digunakan. Untuk menghubungkan sensor pH dengan Arduino Uno
wiring arduino menggunakan serial monitor

- Hubungkan RO ke pin RX (pin 9).
- Hubungkan DI ke pin TX (pin 10).
- Hubungkan DE dan RE ke pin digital pin 8
- Hubungkan VCC ke 5V dan GND ke GND.
#define EN_RS485 8
#include <ModbusMaster.h>
#include <SoftwareSerial.h>
ModbusMaster node;
SoftwareSerial mySerial(9, 10); // RX, TX
#define SLAVE_ADDR ((uint16_t)0x01)
uint16_t nilai;
float ecmeter;
void preTransmission() {
digitalWrite(EN_RS485, 1);
}
void postTransmission() {
digitalWrite(EN_RS485, 0);
}
void setup() {
// put your setup code here, to run once:
pinMode(EN_RS485, OUTPUT);
Serial.begin(9600);
mySerial.begin(4800);
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
node.begin(SLAVE_ADDR, mySerial);
delay(1000);
}
void loop() {
// put your main code here, to run repeatedly:
ecmeter = baca_sensor(0) / 100.0;
Serial.println("EC : " + String(ecmeter));
delay(5);
Serial.println("============================================");
delay(1000);
}
int baca_sensor(uint16_t alamat) {
int result;
result = node.readHoldingRegisters(alamat, 1);
if (result == node.ku8MBSuccess) {
nilai = node.getResponseBuffer(0);
} else {
Serial.println("modbus fail");
}
return nilai;
}
untuk Arduino uno:
- Hubungkan RO ke pin RX (pin 9).
- Hubungkan DI ke pin TX (pin 10).
- Hubungkan DE dan RE ke pin digital pin 8
- Hubungkan VCC ke 5V dan GND ke GND.
Wiring arduino uno menggunakan lcd

Untuk Arduino Uno:
- Hubungkan RO ke pin RX (pin 9).
- Hubungkan DI ke pin TX (pin 10).
- Hubungkan DE dan RE ke pin digital pin 8
- Hubungkan VCC ke 5V dan GND ke GND.
#define EN_RS485 8
#include <ModbusMaster.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal_I2C.h>
const int col = 16;
const int row = 2;
LiquidCrystal_I2C lcd(0x27, col, row);
ModbusMaster node;
SoftwareSerial mySerial(9, 10); // RX, TX
#define SLAVE_ADDR ((uint16_t)0x01)
uint16_t nilai;
float ecmeter;
void preTransmission() {
digitalWrite(EN_RS485, 1);
}
void postTransmission() {
digitalWrite(EN_RS485, 0);
}
void setup() {
// put your setup code here, to run once:
pinMode(EN_RS485, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(5, 0);
lcd.print("TEMINS");
lcd.setCursor(5, 1);
lcd.print("STORE");
delay(5000);
Serial.begin(9600);
mySerial.begin(4800);
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
node.begin(SLAVE_ADDR, mySerial);
delay(100);
}
void loop() {
// put your main code here, to run repeatedly:
//lcd.init();
lcd.backlight();
lcd.setCursor(1, 1);
lcd.print("EC:");
lcd.print(ecmeter);
lcd.print("ms/cm");
lcd.setCursor(4, 0);
lcd.print("EC METER");
delay(100);
ecmeter = baca_sensor(0) / 100.0;
Serial.println("EC : " + String(ecmeter));
delay(5);
Serial.println("============================================");
delay(100);
}
int baca_sensor(uint16_t alamat) {
int result;
result = node.readHoldingRegisters(alamat, 1);
if (result == node.ku8MBSuccess) {
nilai = node.getResponseBuffer(0);
} else {
Serial.println("modbus fail");
}
return nilai;
}
Cara Penggunaan dengan ESP32
ESP32 adalah mikrokontroler yang lebih canggih dengan konektivitas Wi-Fi dan Bluetooth. Dengan ESP32, Anda dapat mengirimkan data pH ke server atau aplikasi web melalui jaringan
Wiring esp32 menggunakan serial monitor

esp32
- VCC pada modul MAX485 -> VIN pada ESP32.
- GND pada modul MAX485 -> GND pada ESP32.
- A pada modul MAX485 -> A pada sensor ec meter.
- B pada modul MAX485 -> B pada sensor ec meter.
- RO (Receiver Output) pada modul MAX485 -> RX (pin 16) pada ESP32.
- DI (Driver Input) pada modul MAX485 -> TX (pin 17) pada ESP32.
- DE dan RE pada modul MAX485 -> D18 pada ESP32
- download library softwareserial khusus esp 32
#define EN_RS485 18
#include <ModbusMaster.h>
#include <SoftwareSerial.h>
ModbusMaster node;
SoftwareSerial mySerial(16, 17); // RX, TX
#define SLAVE_ADDR ((uint16_t)0x01)
uint16_t nilai;
float ecmeter;
void preTransmission() {
digitalWrite(EN_RS485, 1);
}
void postTransmission() {
digitalWrite(EN_RS485, 0);
}
void setup() {
// put your setup code here, to run once:
pinMode(EN_RS485, OUTPUT);
Serial.begin(9600);
mySerial.begin(4800);
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
node.begin(SLAVE_ADDR, mySerial);
delay(100);
}
void loop() {
// put your main code here, to run repeatedly:
ecmeter = baca_sensor(0) / 100.0;
Serial.println("EC : " + String(ecmeter));
delay(5);
// Serial.println("============================================");
delay(100);
}
int baca_sensor(uint16_t alamat) {
int result;
result = node.readHoldingRegisters(alamat, 1);
if (result == node.ku8MBSuccess) {
nilai = node.getResponseBuffer(0);
} else {
Serial.println("modbus fail");
}
return nilai;
}
wiring esp32 menggunakan lcd

- VCC pada modul MAX485 -> VIN pada ESP32.
- GND pada modul MAX485 -> GND pada ESP32.
- A pada modul MAX485 -> A pada sensor ec meter.
- B pada modul MAX485 -> B pada sensor ec meter.
- RO (Receiver Output) pada modul MAX485 -> RX (pin 16) pada ESP32.
- DI (Driver Input) pada modul MAX485 -> TX (pin 17) pada ESP32.
- DE dan RE pada modul MAX485 -> D18 pada ESP32
- download library softwareserial khusus esp 32
#define EN_RS485 18
#include <ModbusMaster.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal_I2C.h>
const int col = 16;
const int row = 2;
LiquidCrystal_I2C lcd(0x27, col, row);
ModbusMaster node;
SoftwareSerial mySerial(16, 17); // RX, TX
#define SLAVE_ADDR ((uint16_t)0x01)
uint16_t nilai;
float ecmeter;
void preTransmission() {
digitalWrite(EN_RS485, 1);
}
void postTransmission() {
digitalWrite(EN_RS485, 0);
}
void setup() {
// put your setup code here, to run once:
pinMode(EN_RS485, OUTPUT);
//lcd.init();
lcd.begin();
lcd.backlight();
lcd.setCursor(5, 0);
lcd.print("TEMINS");
lcd.setCursor(5, 1);
lcd.print("STORE");
delay(5000);
Serial.begin(9600);
mySerial.begin(4800);
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
node.begin(SLAVE_ADDR, mySerial);
delay(100);
}
void loop() {
// put your main code here, to run repeatedly:
//lcd.init();
lcd.begin();
lcd.backlight();
lcd.setCursor(4, 1);
lcd.print("EC:");
lcd.print(ecmeter);
lcd.print("ms/cm");
lcd.setCursor(4, 0);
lcd.print("EC METER");
delay(100);
ecmeter = baca_sensor(0) / 100.0;
Serial.println("EC : " + String(ecmeter));
delay(5);
// Serial.println("============================================");
delay(100);
}
int baca_sensor(uint16_t alamat) {
int result;
result = node.readHoldingRegisters(alamat, 1);
if (result == node.ku8MBSuccess) {
nilai = node.getResponseBuffer(0);
} else {
Serial.println("modbus fail");
}
return nilai;
}
Cara Penggunaan dengan Arduino Mega
Arduino Mega memiliki lebih banyak pin dan lebih banyak port serial dibandingkan dengan Arduino Uno, yang membuatnya lebih fleksibel untuk aplikasi dengan banyak perangkat RS485
Wiring arduino menggunakan serial monitor

arduino mega
- VCC pada modul MAX485 -> 5V pada Arduino.
- GND pada modul MAX485 -> GND pada Arduino.
- A pada modul MAX485 -> A pada sensor ec meter.
- B pada modul MAX485 -> B pada sensor ec meter.
- RO (Receiver Output) pada modul MAX485 -> RX 1 (pin 19) pada Arduino.
- DI (Driver Input) pada modul MAX485 -> TX 1 (pin 18) pada Arduino.
- DE dan RE pada modul MAX485 -> D10 pada Arduino (atau pin digital lainnya).
#define EN_RS485 10
#include <ModbusMaster.h>
#include <LiquidCrystal_I2C.h>
const int col = 16;
const int row = 2;
LiquidCrystal_I2C lcd(0x27, col, row);
ModbusMaster node;
//SoftwareSerial mySerial(19, 18); // RX, TX
#define SLAVE_ADDR ((uint16_t)0x01)
uint16_t nilai;
float ecmeter;
void preTransmission() {
digitalWrite(EN_RS485, 1);
}
void postTransmission() {
digitalWrite(EN_RS485, 0);
}
void setup() {
// put your setup code here, to run once:
pinMode(EN_RS485, OUTPUT);
Serial.begin(9600);
Serial1.begin(4800);
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
node.begin(SLAVE_ADDR, Serial1);
delay(1000);
}
void loop() {
// put your main code here, to run repeatedly:
ecmeter = baca_sensor(0) / 100.0;
Serial.println("EC : " + String(ecmeter));
delay(100);
// Serial.println("============================================");
delay(1000);
}
int baca_sensor(uint16_t alamat) {
int result;
result = node.readHoldingRegisters(alamat, 1);
if (result == node.ku8MBSuccess) {
nilai = node.getResponseBuffer(0);
} else {
Serial.println("modbus fail");
}
return nilai;
}
Wiring arduino mega menggunakan lcd

arduino mega
- VCC pada modul MAX485 -> 5V pada Arduino.
- GND pada modul MAX485 -> GND pada Arduino.
- A pada modul MAX485 -> A pada sensor ec meter.
- B pada modul MAX485 -> B pada sensor ec meter.
- RO (Receiver Output) pada modul MAX485 -> RX 1 (pin 19) pada Arduino.
- DI (Driver Input) pada modul MAX485 -> TX 1 (pin 18) pada Arduino.
- DE dan RE pada modul MAX485 -> D10 pada Arduino (atau pin digital lainnya).
#define EN_RS485 10
#include <ModbusMaster.h>
#include <LiquidCrystal_I2C.h>
const int col = 16;
const int row = 2;
LiquidCrystal_I2C lcd(0x27, col, row);
ModbusMaster node;
//SoftwareSerial mySerial(19, 18); // RX, TX
#define SLAVE_ADDR ((uint16_t)0x01)
uint16_t nilai;
float ecmeter;
void preTransmission() {
digitalWrite(EN_RS485, 1);
}
void postTransmission() {
digitalWrite(EN_RS485, 0);
}
void setup() {
// put your setup code here, to run once:
pinMode(EN_RS485, OUTPUT);
lcd.init();
//lcd.begin();
lcd.backlight();
lcd.setCursor(5, 0);
lcd.print("TEMINS");
lcd.setCursor(5, 1);
lcd.print("STORE");
delay(5000);
Serial.begin(9600);
Serial1.begin(4800);
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
node.begin(SLAVE_ADDR, Serial1);
delay(100);
}
void loop() {
// put your main code here, to run repeatedly:
//lcd.init();
//lcd.begin();
lcd.backlight();
lcd.setCursor(2, 1);
lcd.print("EC:");
lcd.print(ecmeter);
lcd.print("MS/CM");
lcd.setCursor(4, 0);
lcd.print("EC METER");
delay(100);
ecmeter = baca_sensor(0) / 100.0;
Serial.println("EC : " + String(ecmeter));
delay(5);
// Serial.println("============================================");
delay(100);
}
int baca_sensor(uint16_t alamat) {
int result;
result = node.readHoldingRegisters(alamat, 1);
if (result == node.ku8MBSuccess) {
nilai = node.getResponseBuffer(0);
} else {
Serial.println("modbus fail");
}
return nilai;
}