Tutorial Menggunakan Sensor ACS712 dengan Arduino UNO, Arduino MEGA dan ESP32

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:

  1. Arus Masuk
    Arus listrik AC maupun DC yang ingin diukur mengalir melalui terminal input sensor. Jalur ini merupakan konduktor khusus dengan resistansi rendah.
  2. Medan Magnet Terdeteksi
    Saat arus mengalir, medan magnet yang ditimbulkan oleh arus tersebut dideteksi oleh elemen Hall di dalam sensor.
  3. 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.
  4. 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 SensorRentang Arus MaksimumSensitivitasOutput Saat Arus = 0 A (Mikrokontroler 5V)
ACS712-05B±5 A185 mV/A (0.185 V/A)~2.5 V
ACS712-20A±20 A100 mV/A (0.100 V/A)~2.5 V
ACS712-30A±30 A66 mV/A (0.066 V/A)~2.5 V
Tipe SensorSensitivitasOffset (untuk 3.3V VCC)
ACS712-05A0.185 V/A~1.65 V
ACS712-20A0.100 V/A~1.65 V
ACS712-30A0.066 V/A~1.65 V

Pinout Sensor ACS712

No. PinNama PinFungsi
1IP+Input arus positif (arus masuk)
2IP−Input arus negatif (arus keluar)
3GNDGround (negatif catu daya / referensi 0V)
4OUTOutput tegangan analog (hasil pengukuran arus)
5VCCCatu 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
}

Leave a Reply

Your email address will not be published. Required fields are marked *