❗ Bukan Cuma PLC! Arduino Mega Bisa Baca Sensor 4–20 mA (Modbus RTU – Industrial Approach)

1️⃣ Tujuan Praktikum
Setelah praktikum ini, peserta mampu:
- Memahami pembacaan sensor industri 4–20 mA menggunakan Arduino Mega
- Menggunakan Modbus RTU (RS485) sebagai standar komunikasi industri
- Mengkonfigurasi dan membaca converter Analog 4–20 mA ke Modbus RTU
- Menerapkan alur industri yang benar (controller → field device)
2️⃣ Dasar Teori Singkat
🔹 Sensor 4–20 mA di Industri
Sensor 4–20 mA digunakan karena:
- Tahan noise
- Stabil untuk jarak jauh
- Mudah mendeteksi fault (0 mA = error)
🔹 Kenapa Menggunakan Modbus RTU?
Pendekatan industri tidak membaca arus langsung ke mikrokontroler, melainkan:
- Sensor → converter → data digital (Modbus)
- Lebih aman, rapi, dan scalable
3️⃣ Arsitektur Sistem (WAJIB DIPAHAMI)
🔧 Alur Sistem yang Digunakan

📌 Catatan penting:
Arduino tidak membaca 4–20 mA secara langsung, tetapi membaca register Modbus dari converter.
4️⃣ Alat dan Bahan (REVISI)
🔹 Hardware
- Arduino Mega 2560
- Sensor THD WD1-C (Temperature & Humidity, output 4–20 mA)
- Analog 8CH to Modbus RTU Converter – Waveshare
- TTL to RS485 Converter – Waveshare
- Power supply 24V DC (sensor & converter)
- Kabel jumper & kabel RS485 (A/B)
🔹 Software
- Arduino IDE
- Library Modbus Master (contoh: ModbusMaster)
5️⃣ Wiring Sistem
🔹 A. Arduino Mega → TTL to RS485
| Arduino Mega | TTL–RS485 |
| TX1 (18) | TX |
| RX1 (19) | RX |
| GND | GND |
| 5V | VCC |
🔹 B. TTL to RS485 → Converter Analog Waveshare
| RS485 Line | Converter |
| A (D+) | A |
| B (D-) | B |
📌 Pastikan:
- Baudrate sama
- Slave ID diketahui
🔹 C. Converter Analog → Sensor THD WD1-C
| Sensor THD WD1-C | Converter |
| +24V | +24V |
| I+ (4–20 mA) | AI+ |
| I− | AI− |
| GND | GND |
6️⃣ Konfigurasi Converter Analog Waveshare
Contoh parameter umum:
- Baudrate : 9600
- Data bit : 8
- Parity : None
- Stop bit : 1
- Slave ID : 1
Contoh mapping register (contoh, sesuaikan datasheet):
- Channel 1 → Input Register 30001
- Nilai dalam raw / scaled
7️⃣ Program Arduino Mega (Modbus RTU)
🔹 Contoh Program Dasar
#include <ModbusMaster.h>
#define RX_PIN 19
#define TX_PIN 18
ModbusMaster node;
void setup() {
Serial.begin(9600);
Serial1.begin(9600); // UART1 Arduino Mega
node.begin(1, Serial1); // Slave ID = 1
}
void loop() {
uint8_t result;
uint16_t data;
result = node.readInputRegisters(0x0000, 1); // Register 30001
if (result == node.ku8MBSuccess) {
data = node.getResponseBuffer(0);
Serial.print("Raw Value: ");
Serial.println(data);
} else {
Serial.println("Modbus Read Failed");
}
delay(1000);
}
8️⃣ Pengujian Praktikum
- Nyalakan power supply 24V
- Jalankan program Arduino
- Ubah kondisi suhu/kelembaban sensor
- Amati perubahan nilai register di Serial Monitor
🔹 Expected Result
- Nilai berubah stabil
- Tidak ada lonjakan ekstrem
- Data konsisten dengan kondisi sensor
9️⃣ Kesalahan Umum (WAJIB DIHINDARI)
❌ Salah wiring A/B RS485
❌ Ground tidak common
❌ Salah register address
❌ Baudrate tidak sama
❌ Menganggap Arduino membaca arus langsung
🔟 Kesimpulan
Dengan pendekatan ini, Arduino Mega dapat membaca sensor industri 4–20 mA dengan cara yang BENAR secara industri, yaitu melalui Modbus RTU RS485. Metode ini aman, stabil, dan cocok untuk monitoring, data logging, dan IoT industri.
🚀 Pengembangan Lanjutan
- Arduino Mega → HMI / SCADA
- Arduino → Raspberry Pi (IoT Gateway)
- Logging ke database / cloud








