Sekilas Tentang ACS712
ACS712 merupakan sebuah modul sensor untuk mengukur arus baik arus AC maupun arus DC yang menggunakan teknologi Hall Effect. Yang dimaksud dengan Hall Effect yaitu mengalirkan jalur beban yang diukur melalui suatu media konduksi tembaga untuk menghasilkan medan magnet.
Medan magnet tersebut kemudian diubah menjadi tegangan yang proporsional terhadap arus yang mengalir oleh sebuah IC Hall. Modul sensor ACS712 mempunyai 3 varian, yaitu :
- ACS712-05B untuk pengukuran arus dalam rentang -5A sampai 5A
- ACS712-20A untuk pengukuran arus dalam rentang -20A sampai 20A
- ACS712-30A untuk pengukuran arus dalam rentang -30A sampai 30A
Gambar berikut ini menunjukan Typical Application dari modul sensor ACS712.
Dengan tingkat akurasi yang tinggi, harga yang terjangkau dan ukuran yang kecil, menjadikan modul ACS712 sangat cocok untuk digunakan pada berbagai aplikasi maupun project antara lain :
- Kontrol motor
- Deteksi dan managemen arus beban
- Switching Power Supply
- Proteksi gangguan arus berlebih
- dll
Pada gambar diatas merupakan datasheet grafik sensitivitas dari masing-masing sensor ACS712 5A, ACS712 20A dan ACS712 30A. Dari grafik linier tersebut bisa diambil kesimpulan yaitu :
- Offset tegangan output = 2,5V
- ACS712 5A mempunyai sensitivitas 185 mV/A
- ACS712 20A mempunyai sensitivitas 100 mV/A
- ACS712 30A mempunyai sensitivitas 66 mV/A
Oleh karena data sensitivitas masing-masing ACS712 yang berbeda-beda, maka untuk pemrograman nya juga harus disesuaikan dengan tipe ACS712 yang digunakan dengan mengacu pada data sensitivitas tersebut.
Sedangkan contoh program pada artikel ini digunakan ACS712 20A, jika menggunakan tipe ACS712 yang lain, silahkan diganti rumusnya mengacu data sensitivitas dari ACS712 yang digunakan supaya hasil pengukurannya tepat.
Spesifikasi ACS712
Berikut ini adalah spesifikasi dan feature dari sensor ACS712 :
- Low-noise analog signal path
- Device bandwidth is set via the new FILTER pin
- 5 μs output rise time in response to step input current
- 80 kHz bandwidth
- Total output error 1.5% at TA = 25°C
- Small footprint, low-profile SOIC8 package
- 1.2 mΩ internal conductor resistance
- 2.1 kVRMS minimum isolation voltage from pins 1-4 to pins 5-8
- 5.0 V, single supply operation
- 66 to 185 mV/A output sensitivity
- Output voltage proportional to AC or DC currents
- Factory-trimmed for accuracy
- Extremely stable output offset voltage
- Nearly zero magnetic hysteresis
- Ratiometric output from supply voltage
Hardware Yang Dibutuhkan
Hardware yang diperlukan pada contoh program ACS712 dengan Arduino pada tutorial ini antara lain :
- Modul Sensor Arus ACS712 5A / ACS712 20A / ACS712 30A
- Arduino UNO / Arduino Nano / Arduino Pro Mini atau lainnya
- Beberapa kabel jumper M-F / F-F
- Beban / Load bisa menggunakan Lampu / Bor / Power Supply + Kabel
Rangkaian / Wiring Diagram
Berikut ini adalah koneksi rangkaian antara modul ACS712 dengan Arduino
Modul ACS712 | Arduino |
VCC | +5V |
GND | GND |
OUT | A0 |
Kode Program
- Pengukuran Arus DC
/* Measuring DC Current Using ACS712 - www.nn-digital.com */ const int analogIn = A0; int mVperAmp = 100; // 185 = ACS712 5A, 100 = ACS712 20A, 66 = ACS712-30A int RawValue= 0; int ACSoffset = 2500; double Voltage = 0; double Amps = 0; void setup(){ Serial.begin(9600); pinMode(analogIn, INPUT); } void loop(){ RawValue = analogRead(analogIn); Voltage = (RawValue / 1023) * 5000; // Voltage ( mV ) Amps = ((Voltage - ACSoffset) / mVperAmp);// Display the Value to Serial Monitor Window
Serial.print("Raw Value = " ); // shows pre-scaled value
Serial.println(RawValue);
Serial.print("mV = "); // shows the voltage measured
Serial.println(Voltage,3); // display 3 digits after decimal point
Serial.print("Amps = "); // shows the voltage measured
Serial.println(Amps,3); // display 3 digits after decimal point
delay(2500);
}
- Pengukuran Arus AC
/* Measuring AC Current Using ACS712 - www.nn-digital.com */ const int analogIn = A0; int mVperAmp = 100; // 185 = ACS712 5A, 100 = ACS712 20A, 66 = ACS712-30A int ACSoffset = 2500; double Voltage = 0; float amplitude_current; //amplitude current float effective_value; //effective current void setup() { Serial.begin(9600); pinMode(analogIn, INPUT); } void loop() { int sensor_max; sensor_max = getMaxValue(); Serial.print("Sensor_max = "); Serial.println(sensor_max); Voltage = (sensor_max / 1023) * 5000; // Voltage ( mV ) amplitude_current = ((Voltage - ACSoffset) / mVperAmp); effective_value = amplitude_current / 1.414; Serial.print("Current Max (A) : "); Serial.println(amplitude_current,6);//6 number after the decimal point Serial.print("Current RMS (A) : "); Serial.println(effective_value,6); Serial.println(); } /* Function: Sampling 5000ms and get the maximum value from A0 pin */ int getMaxValue() { int sensorValue; //value read from the sensor int sensorMax = 0; uint32_t start_time = millis(); while((millis()-start_time) < 5000) { sensorValue = analogRead(analogIn); if (sensorValue > sensorMax) { //record the maximum sensor value sensorMax = sensorValue; } } return sensorMax; }
Setelah sketch program diatas diupload ke board Arduino, buka Serial Monitor pada Baudrate 9600 dari Arduino IDE untuk melihat hasil pembacaan arus yang diukur.
Selain Modul ACS712, ada beberapa modul elektronik lainnya yang bisa kita gunakan untuk pengukuran arus listrik yaitu modul INA219 dan PZEM-004T. Untuk mengetahui lebih detail mengenai kedua modul tersebut beserta contoh programnya, silahkan buka artikel berikut :
- Belajar Modul INA219 Sensor Arus, Tegangan & Daya dengan Arduino
- Mengenal PZEM-004T Modul Elektronik Untuk Alat Pengukuran Listrik
Demikian tutorial kita kali ini mengenai pemrograman modul sensor arus AC – DC ACS712 dengan menggunakan Arduino.
++++++++ Semoga Bermanfaat ++++++++
untuk kalibrasi nya bagaimana ya kak?
Maaf pak ingin bertanya, ini untuk satuan ampere ya pak? jika ingin melihat dalam satuan mikroAmpere seperti apa ya pak?
kalau tidak bisa, apakah ada saran untuk mengganti sensornya?
Terima kasih
Tinggal dikalikan 1000000