1. Prinsip Kerja Sensor ACS712
Sensor ACS712 bekerja berdasarkan efek Hall (Hall Effect), yaitu prinsip fisika yang menyatakan bahwa ketika arus listrik mengalir melalui konduktor dan dikenai medan magnet tegak lurus terhadap arah arus, maka akan muncul tegangan tegak lurus terhadap keduanya (disebut tegangan Hall). Sensor ini menggunakan komponen semikonduktor berbasis Hall Effect untuk mendeteksi perubahan arus yang melewati jalur internalnya, lalu mengubahnya menjadi tegangan analog yang sebanding. Nilai tegangan ini kemudian dibaca oleh mikrokontroler untuk mengetahui besarnya arus.
2. Cara Kerja Sensor ACS712
Sensor ACS712 memiliki dua bagian utama: jalur konduktor internal yang dilalui arus (input) dan rangkaian deteksi Hall Effect (pengubah arus menjadi tegangan). Berikut langkah-langkah kerjanya:
- Arus Masuk
Arus listrik AC maupun DC yang ingin diukur mengalir melalui terminal input sensor. Jalur ini merupakan konduktor khusus dengan resistansi rendah. - Medan Magnet Terdeteksi
Saat arus mengalir, medan magnet yang ditimbulkan oleh arus tersebut dideteksi oleh elemen Hall di dalam sensor. - Konversi Medan ke Tegangan
Medan magnet yang terdeteksi akan menghasilkan tegangan Hall yang proporsional terhadap besarnya arus. Tegangan ini lalu diperkuat dan diubah menjadi sinyal analog. - Output Tegangan Analog
Sensor mengeluarkan tegangan analog (biasanya 0 – 5 V untuk supply 5 V) yang dapat dibaca oleh pin analog mikrokontroler (seperti Arduino atau ESP32). Tegangan output ini memiliki offset tengah (sekitar 2.5V jika tidak ada arus), sehingga arus positif dan negatif dapat dibedakan.
3. Contoh Penggunaan Sensor ACS712
Sensor ini banyak digunakan dalam sistem monitoring listrik dan perangkat berbasis mikrokontroler. Beberapa contoh penerapannya antara lain:
- Pengukuran konsumsi arus motor DC dan AC
- Proteksi arus lebih (overcurrent protection) pada rangkaian elektronik
- Monitoring arus pada sistem tenaga surya atau inverter
- Pengukuran daya listrik (dengan menggabungkan sensor tegangan)
- Alat ukur arus berbasis mikrokontroler di laboratorium atau industri
4. Kelebihan Sensor ACS712
- Dapat Mengukur Arus AC dan DC
Sensor ini fleksibel untuk digunakan dalam pengukuran arus bolak-balik maupun searah. - Isolasi Galvanik
Terdapat isolasi antara jalur arus utama dan sirkuit deteksi, sehingga aman digunakan untuk sistem mikrokontroler. - Output Analog Linier
Tegangan keluaran sensor berubah secara linier terhadap arus input, memudahkan proses kalibrasi dan konversi. - Ukuran Kompak dan Mudah Digunakan
Bentuknya kecil dan dapat langsung dipasang di breadboard atau PCB. - Tersedia dalam Berbagai Varian
Tersedia beberapa varian seperti ACS712-5A, ACS712-20A, dan ACS712-30A sesuai dengan kebutuhan pengukuran.
5. Kekurangan Sensor ACS712
- Tingkat Akurasi Terbatas
Sensor ini memiliki toleransi kesalahan dan tidak cocok untuk pengukuran arus yang memerlukan ketelitian tinggi. - Sensitif terhadap Gangguan
Medan magnet eksternal dapat memengaruhi pembacaan sensor, sehingga perlu shielding atau pengkabelan yang baik. - Offset Tegangan yang Bisa Berubah
Tegangan tengah (bias) dapat sedikit bergeser akibat suhu atau noise, sehingga butuh kalibrasi ulang secara berkala. - Respon Tidak Sangat Cepat
Tidak cocok untuk aplikasi dengan perubahan arus yang sangat cepat seperti switching frekuensi tinggi.
Dalam hal ini akan dicontohkan implementasi sensor ACS dengan mikrokontroler Arduino UNO, Arduino MEGA dan ESP32. Dan ACS yang digunakan dengan ACS 5A maka dapat disesuaikan kembali apabila menggunakan ACS dengan tipe kapasitas lainnya. Serta wajib diperhatikan tegangan output pada kondisi Arus = 0 A untuk menampilkan output yang lebih akurat.
Tipe Sensor | Rentang Arus Maksimum | Sensitivitas | Output Saat Arus = 0 A (Mikrokontroler 5V) |
---|---|---|---|
ACS712-05B | ±5 A | 185 mV/A (0.185 V/A) | ~2.5 V |
ACS712-20A | ±20 A | 100 mV/A (0.100 V/A) | ~2.5 V |
ACS712-30A | ±30 A | 66 mV/A (0.066 V/A) | ~2.5 V |
Tipe Sensor | Sensitivitas | Offset (untuk 3.3V VCC) |
---|---|---|
ACS712-05A | 0.185 V/A | ~1.65 V |
ACS712-20A | 0.100 V/A | ~1.65 V |
ACS712-30A | 0.066 V/A | ~1.65 V |
Pinout Sensor ACS712
No. Pin | Nama Pin | Fungsi |
---|---|---|
1 | IP+ | Input arus positif (arus masuk) |
2 | IP− | Input arus negatif (arus keluar) |
3 | GND | Ground (negatif catu daya / referensi 0V) |
4 | OUT | Output tegangan analog (hasil pengukuran arus) |
5 | VCC | Catu daya positif (biasanya 5V dari Arduino) |
Wiring Diagram Sensor ACS dengan Arduino UNO

// --- Konfigurasi ---
const int pinACS = A2; // Pin analog tempat sensor terhubung
const float VREF = 5.0; // Tegangan referensi ADC (5V)
const float sensitivity = 0.185; // Sensitivitas ACS712-5A dalam Volt/Ampere
float offset = 2.5; // Tegangan saat arus = 0 (bias)
// --- Setup awal ---
void setup() {
Serial.begin(9600);
analogReference(DEFAULT); // Gunakan referensi 5V bawaan Arduino UNO
Serial.println("Monitoring Arus DC dengan ACS712");
}
// --- Loop utama ---
void loop() {
int adcValue = analogRead(pinACS); // Baca nilai ADC (0 - 1023)
float voltage = adcValue * (VREF / 1023.0); // Konversi ke voltase
float current = (voltage - offset) / sensitivity; // Hitung arus (Ampere)
// Tampilkan hasil
Serial.print("ADC: ");
Serial.print(adcValue);
Serial.print(" | Tegangan: ");
Serial.print(voltage, 3);
Serial.print(" V | Arus: ");
Serial.print(current, 3);
Serial.println(" A");
delay(500); // Delay 500 ms
}
Wiring Diagram Sensor ACS dengan Arduino MEGA

// --- Konfigurasi ---
const int pinACS = A3; // Pin analog di Arduino Mega (bisa A0–A15)
const float VREF = 5.0; // Tegangan referensi ADC (biasanya 5V)
const float sensitivity = 0.185; // Sensitivitas untuk ACS712-05A dalam V/A
float offset = 2.5; // Tegangan offset saat arus = 0 A
void setup() {
Serial.begin(9600);
analogReference(DEFAULT); // Referensi tegangan 5V
Serial.println("Monitoring Arus DC dengan Sensor ACS712 (Arduino Mega)");
}
void loop() {
int adcValue = analogRead(pinACS); // Baca nilai ADC 0-1023
float voltage = adcValue * (VREF / 1023.0); // Konversi ke voltase
float current = (voltage - offset) / sensitivity; // Konversi ke arus (Ampere)
// Tampilkan ke Serial Monitor
Serial.print("ADC: ");
Serial.print(adcValue);
Serial.print(" | Tegangan: ");
Serial.print(voltage, 3);
Serial.print(" V | Arus: ");
Serial.print(current, 3);
Serial.println(" A");
delay(500); // jeda 0.5 detik
}
Wiring Diagram Sensor ACS dengan ESP32

// --- Konfigurasi ---
const int pinACS = 34; // GPIO 36 (VP) adalah pin ADC di ESP32
const float VREF = 3.3; // Tegangan referensi ADC ESP32
const float sensitivity = 0.185; // Sensitivitas ACS712-05A dalam V/A
float offset = 1.65; // Offset tegangan saat arus 0 A (3.3V / 2)
// --- Setup awal ---
void setup() {
Serial.begin(115200);
analogReadResolution(12); // Resolusi ADC 12 bit (0 - 4095)
Serial.println("Monitoring Arus DC dengan ACS712 dan ESP32");
}
// --- Loop utama ---
void loop() {
int adcValue = analogRead(pinACS); // Baca ADC 12-bit
float voltage = adcValue * (VREF / 4095.0); // Konversi ke tegangan
float current = (voltage - offset) / sensitivity; // Konversi ke arus (Ampere)
// Tampilkan hasil ke Serial Monitor
Serial.print("ADC: ");
Serial.print(adcValue);
Serial.print(" | Tegangan: ");
Serial.print(voltage, 3);
Serial.print(" V | Arus: ");
Serial.print(current, 3);
Serial.println(" A");
delay(500); // jeda 500 ms
}