Arduino İle ACS712 Akım Sensörü Kullanımı
Elektrikli aletlerinizin ne kadar akıma ihtiyacı olduğunu hiç düşündünüz mü? Elektrikli ekipmanınızın akım tüketimini ölçmek isterseniz, akım sensörü devreye girer. Akım Sensörü, güç hesaplama ve yönetim uygulamaları için önemli bir elemandır. Devrenin çektiği akımı ölçer ve uygun bir sinyal üretir. Bu sensör çıkışta bir analog voltaj üretir. Bu yazımızda ACS712 Akım Sensörü, nasıl çalışır ve akım sensörünü arduino ile nasıl kulllanılır bunu öğreneceğiz.
ACS712 Akım Sensörü Nedir ve Özellikleri Nelerdir?
ACS712, Hall Etkisi Tabanlı Doğrusal Akım Sensörüdür. Bu sensör hem DC(Doğru Akım) hem de AC(Alternatif Akım) ölçebilir. 2.1kVRMS voltaj izolasyonuna ve entegre düşük dirençli akım iletkenine sahiptir. Çipin Pin şeması ve pin açıklaması aşağıdadır.
IP+ / IP- : Sensörü akımını ölçmek istediğiniz sisteme seri olarak bağlayın. Devre kablosunu kesin ve kablonun bir ucunu IP+’ya ve diğer ucunu IP-‘ye bağlayın. Akım sadece seri olarak ölçülebilir.
VIout : Viout, voltaj çıkış pimidir. ACS712, IP+ ve IP-pinleri arasındaki herhangi bir varyasyona karşılık gelen bir analog sinyal çıkışı verir veya başka bir deyişle, eğer akımda herhangi bir değişiklik varsa, VIOUT pininde analog voltaj çıkışı verir.
Sessiz Çıkış Voltajı (VIOUT(Q)) : Birincil akım sıfır olduğunda cihazın çıkışı. Tek kutuplu bir besleme voltajı için, nominal olarak VCC ⁄ 2’de kalır. Böylece, VCC = 5 V, VIOUT(Q) = 2.5 V’a çevrilir. VIOUT(Q)’daki değişiklik, Acs712’nin çözünürlüğüne bağlanabilir. Acs712 5v(Vcc=5v) üzerinde çalışıyorsa ve girişlerinden akım akmıyorsa, Viout 2.5v olacaktır. 2.5v, 5v girişindeki temel voltajdır. Akım akmaya başlayınca Viout da değişiklik gerçekleşir. Akım acs712 pinlerinden akmaya başladığında viout azalır.
Mevcut algılama aralığına bağlı olarak üç tip ACS712 Sensörü vardır. Bu aralıklar +/-5A, +/-20A ve +/-30A‘dir.
- ACS712ELCTR-05B-T
- ACS712ELCTR-20A-T
- ACS712ELCTR-30A-T
ACS712 Modeli | Optimize Akım Aralığı | Çıkış hassasiyeti |
ACS712ELCTR-05B-T | +/- 5A | 185 mV / A |
ACS712ELCTR-20A-T | +/- 20A | 100 mV / A |
ACS712ELCTR-30A-T | +/- 30A | 66 mV / A |
ACS712 sensör modülünün 3 pini vardır:
- VCC: Güç pini – 5v
- GND: Toprak
- OUT: Analoh Voltaj Çıkışı
ACS712 Akım Sensörünün Özellikleri
- Bant genişliği 80kHz’dir.
- Çıkış hassasiyeti 66 – 185 mV/A’dir.
- Analog sinyal çıkışı düşük gürültülüdür.
- Cihaz bant genişliği yeni FILTER pini aracılığıyla ayarlanır.
- 1,2 mΩ dahili iletken direncine sahip.
- Kararlı çıkış ofset voltajı.
- Sıfıra yakın manyetik histerezis.
ACS712 Akım Sensörü Nasıl Çalışır?
Bu sensörün çalışma prensibine gelince, doğrudan algılama veya dolaylı algılama olabilir. ACS712 akım sensörü için dolaylı algılama kullanır. Doğrudan algılama, içinden akım geçtiğinde teldeki voltaj düşüşünü ölçmek için Ohm yasasını kullanır. Dolaylı algılamada, manyetik alanı hesaplayarak akımı ölçmek için Faraday yasası veya Amper yasası kullanılır. Bu yöntem, manyetik alanı algılamak için bir transformatör veya Hall etkisi sensörü veya Fiberoptik akım sensörü kullanır.
Akımı algılamak için bu IC, düşük ofset Hall sensörü kullanır. Bu sensör, bir bakır iletim yolu üzerinde IC’nin yüzeyinde bulunur. Sensörün IP+ ve IP- pinlerine dahili olarak bağlanan bir bakır şeride sahiptir. Bu bakır iletken üzerinden akım miktarı geçtiğinde, Hall Etkisi sensörü tarafından algılanan bir manyetik alan oluşturur. Hall etkisi sensörü, akımı ölçmek için kullanılan algılanan manyetik alanla orantılı voltajı üretir.
Arduino İle ACS712 Akım Sensörü Kullanımı
Aşağıdaki resimde arduino ile ACS712 akım sensörünün bağlantı şeması verilmiştir. Bu şemaya dayanarak hen AC hem DC akımı ölçebiliriz. Aşağıdaki devrede yük olarak motor kullanılmıştır.
Gerekli Olna Malzemeler:
- Arduino Uno
- 16×2 LCD Ekran
- Güç Kaynağı
- 12V DC motor
- ACS712 Akım Sensörü
- 10K Potansiyometre
- Jumper Kablolar
Arduino İle ACS712 Akım Sensör Kodu
Aşağıdaki kodda lcd kütüphaneyi kullanmak için gerekli olan kütüphaneyi indirmek için aşağıdaki linke tıklayın.
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
const int currentPin = A0;
int sensitivity = 66;
int adcValue= 0;
int offsetVoltage = 2500;
double adcVoltage = 0;
double currentValue = 0;
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print(" Current Sensor ");
lcd.setCursor(0,1);
lcd.print(" with Arduino ");
delay(2000);
}
void loop()
{
adcValue = analogRead(currentPin);
adcVoltage = (adcValue / 1024.0) * 5200;
currentValue = ((adcVoltage - offsetVoltage) / sensitivity);
Serial.print("Raw Sensor Value = " );
Serial.print(adcValue);
lcd.clear();
delay(1000);
//lcd.display();
lcd.setCursor(0,0);
lcd.print("ADC Value = ");
lcd.setCursor(12,0);
lcd.print(adcValue);
delay(2000);
Serial.print("\t Voltage(mV) = ");
Serial.print(adcVoltage,3);
lcd.setCursor(0,0);
lcd.print("V in mV = ");
lcd.setCursor(10,0);
lcd.print(adcVoltage,1);
delay(2000);
Serial.print("\t Current = ");
Serial.println(currentValue,3);
lcd.setCursor(0,0);
lcd.print("Current = ");
lcd.setCursor(10,0);
lcd.print(currentValue,2);
lcd.setCursor(14,0);
lcd.print("A");
delay(2500);
}
Kodu başarıyla yükledikten sonra aşağıdaki çıktıyı görebilirsiniz,
ACS712 Akım Sensörünün Kullanıldığı Yerler
- İnverter
- SMPS
- Batarya Şarj Devreleri
- İnverter gibi Otomotiv Uygulamaları
- Endüstriyel, ticari ve iletişim uygulamalarında kullanılır.