Membaca Sensor Arus ACS712 dengan Menggunakan ESP32

Fais Halim
3 min readJun 27, 2024

--

ESP32 dan ACS712 20A

ACS712 merupakan salah satu alternatif sensor arus untuk mengukur arus DC dan AC. Sensor ini tersedia dalam tiga variasi arus maksimal yaitu 5A, 20A 30A. Tiap varian memiliki sensitivitas yang berbeda, dapat dilihat pada table berikut:

Gambar 1. Sensitivitas Sensor ACS712 (Sumber: Datasheet ACS712)

Sensitivitas sensor ACS712 tergolong kecil untuk besaran arus yang diukur berkisar puluhan sampai ratusan milivolt per ampere. Keadaan tersebut membuat sensor ini kurang cocok untuk diaplikasikan pada pengukuran rangkaian dengan arus kecil yang berkisar di miliampere atau mikroampere. Spesifikasi lengkap dari ACS712 dapat dilihat pada tabel berikut:

Gambar 2 Spesifikasi Sensor ACS712 (Sumber: Datasheet ACS712

Tegangan suplai dapat diambil dari tegangan 5v dari ESP32 karena sensor ini membutuhkan tegangan VCC sebesar 4,5V minimal dan 5,5 V maksimal. Tegangan keluaran ACS712 tanpa arus terukur adalah setengah dari VCC. Jika suplai VCC yang digunakan adalah 5V maka tegangan keluaran ACS712 tanpa arus adalah 2,5V.

Hal ini perlu diperhatikan karena akan mempengaruhi cara pembacaan sensor di program nantinya. Saat sensor terhubung dengan rangkaian dan melakukan pembacaan sensor maka tegangan output akan meningkat seiring peningkatan arus di rangkaian tersebut sesuai dengan sensitivitas sensor.

Berikut adalah kode dari Example analogRead yang dapat digunakan untuk membaca tegangan keluaran dari ACS712.

void setup() {
// initialize serial communication at 115200 bits per second:
Serial.begin(115200);
//set the resolution to 12 bits (0–4095)
analogReadResolution(12);
}
void loop() {
// read the analog / millivolts value for pin 2:
int analogValue = analogRead(34);
int analogVolts = analogReadMilliVolts(34);
// print out the values you read:
Serial.printf("ADC analog value = %d\n", analogValue);
Serial.printf("ADC millivolts value = %d\n", analogVolts);
delay(100); // delay in between reads for clear read from serial
}

Berikut adalah wiring diagram ACS712 di ESP32 tanpa beban:

Gambar 3. Wiring ACS712 Tanpa Beban

Keluaran pada Serial Monitor untuk ACS712 tanpa beban di ESP32 adalah sebagai berikut:

Gambar 4. Serial Monitor ACS712 di ESP32

Pembacaan tersebut dilakukan dengan menggunakan program Example analogRead ESP32. Pembacaan sensor menunjukkan tegangan yang terbaca di pin 34 berkisar di angka 2,4V karena tegangan VCC sensor diambil dari Vin ESP32.

Pembacaan Sensor untuk Rangkaian DC

Percobaan kali ini akan dilakukan dengan rangkaian DC yang juga terhubung ke sumber daya dari Vin ESP32. Berikut adalah wiring diagram dari rangkaian tersebut:

Gambar 5. Wiring Diagram Pembacaan Sensor

Berikut adalah program yang dapat digunakan untuk melakukan pembacaan keluaran sensor ACS712 (Varian 20A) di ESP32:

int analogValue;
int analogVolts;
float volts;
float current;

void setup() {
// initialize serial communication at 115200 bits per second:
Serial.begin(115200);

// set the resolution to 12 bits (0-4095)
analogReadResolution(12);
}

void loop() {
// read the analog / millivolts value for pin 34:
analogVolts = analogReadMilliVolts(34);

volts = analogVolts / 1000.0;
current = (volts - 2.5)/0.100; // 0.185 untuk 5A, 0.100 untuk 20A, dan 0.66 untuk 30A.
// print out the values you read:
Serial.printf("ADC millivolts value = %d\n", analogVolts);
Serial.printf("ADC Current value = %.2f\n", current);

delay(1000); // delay in between reads for clear read from serial
}

Hasil uji coba akan diupdate kemudian. Sensor masih error.

--

--