سنسور جریان ACS712

سنسور جریان اثر هال با ایزولاسیون گالوانیکی

سنسور جریان ACS712: اندازه‌گیری ایمن و دقیق جریان DC/AC با ایزولاسیون کامل

سنسور جریان ACS712 یک سنسور اثر هال (Hall Effect) با ایزولاسیون گالوانیکی کامل است که امکان اندازه‌گیری جریان مستقیم (DC) و متناوب (AC) را با ایمنی بالا فراهم می‌کند. این سنسور در سه رنج جریان ۵A، ۲۰A و ۳۰A موجود بوده و برای مانیتورینگ مصرف، سیستم‌های حفاظتی و الکترونیک قدرت ایده‌آل است.


اصول کار و طراحی ایمن

  • ایزولاسیون گالوانیکی: مدار اندازه‌گیری کاملاً ایزوله از خط جریان تحت اندازه‌گیری (~2.1kV).

  • اثر هال: سنسور میدان مغناطیسی تولید شده توسط جریان عبوری را اندازه می‌گیرد.

  • خروجی آنالوگ: ولتاژ خروجی متناسب با جریان با افست ۲.۵V/۱.۶۵V در حالت بی‌باری.


مشخصات فنی سه مدل رایج

پارامترACS712-05AACS712-20AACS712-30A
ولتاژ کاری (VCC)۴.۵ تا ۵.۵ ولت۴.۵ تا ۵.۵ ولت۴.۵ تا ۵.۵ ولت
جریان سنسور±۵ آمپر±۲۰ آمپر±۳۰ آمپر
حساسیت۱۸۵mV/A۱۰۰mV/A۶۶mV/A
ولتاژ خروجی بی‌باریVCC/2 ≈ ۲.۵V (در VCC=5V)VCC/2 ≈ ۲.۵V (در VCC=5V)VCC/2 ≈ ۱.۶۵V (در VCC=3.3V)
پهنای باند۸۰ کیلوهرتز۸۰ کیلوهرتز۸۰ کیلوهرتز
دقت±۱.۵٪ (در دمای ۲۵°C)±۱.۵٪ (در دمای ۲۵°C)±۱.۵٪ (در دمای ۲۵°C)
مقاومت داخلی۱.۲ میلی‌اهم۱.۲ میلی‌اهم۱.۲ میلی‌اهم
ولتاژ ایزولاسیون۲.۱kV RMS۲.۱kV RMS۲.۱kV RMS
دمای کاری-۴۰°C تا +۸۵°C-۴۰°C تا +۸۵°C-۴۰°C تا +۸۵°C

پین‌های ماژول ACS712

پین ماژولنامعملکرد
VCCتغذیه سنسور5V (برای 5A و 20A) یا 3.3V (برای 30A)
GNDزمین سنسورزمین مدار اندازه‌گیری
OUTخروجی آنالوگولتاژ متناسب با جریان (0-VCC)
IP+ورودی جریان مثبتاتصال به منبع تغذیه
IP-خروجی جریاناتصال به بار مصرفی

نکته: جریان از IP+ به IP- عبور می‌کند (جهت مهم است).


اتصال به آردوینو

مدار قدرت:
باتری/منبع تغذیه (+) -----> IP+ سنسور -----> بار مثبت -----> بار منفی -----> IP- سنسور -----> باتری/منبع تغذیه (-)

مدار اندازه‌گیری:
VCC سنسور -----> 5V آردوینو
GND سنسور -----> GND آردوینو  
OUT سنسور -----> A0 آردوینو (پین آنالوگ)

کد پایه: اندازه‌گیری جریان DC

// سنسور ACS712 20A متصل به A0
const int sensorPin = A0;
const float sensitivity = 0.100; // 100mV/A برای ACS712-20A
const float vcc = 5.0; // ولتاژ تغذیه سنسور
const float offsetVoltage = vcc / 2; // 2.5V برای 5V

int adcValue = 0;
float voltage = 0;
float current = 0;

void setup() {
  Serial.begin(9600);
  Serial.println("سنسور جریان ACS712 آماده است...");
  Serial.println("مقادیر: جریان (A)");
}

void loop() {
  // خواندن 50 نمونه برای میانگین‌گیری
  float sum = 0;
  for (int i = 0; i < 50; i++) {
    sum += analogRead(sensorPin);
    delay(1);
  }
  
  adcValue = sum / 50;
  voltage = (adcValue / 1023.0) * vcc; // تبدیل به ولتاژ
  
  // محاسبه جریان (ولتاژ - آفست) / حساسیت
  current = (voltage - offsetVoltage) / sensitivity;
  
  Serial.print("جریان: ");
  Serial.print(current, 2); // نمایش با 2 رقم اعشار
  Serial.println(" A");
  
  delay(500);
}

کد پیشرفته: اندازه‌گیری جریان AC (RMS)

// اندازه‌گیری جریان AC (مثلاً برای برق شهر)
const int sensorPin = A0;
const float sensitivity = 0.100; // 100mV/A
const float vcc = 5.0;
const int samples = 200; // تعداد نمونه در یک سیکل
const float adcResolution = 1023.0;

float offsetVoltage = 0;
float currentRMS = 0;

void setup() {
  Serial.begin(115200);
  
  // کالیبراسیون آفست (بدون جریان)
  calibrateOffset();
}

void loop() {
  // خواندن نمونه‌ها برای محاسبه RMS
  float sumSquares = 0;
  
  for (int i = 0; i < samples; i++) {
    int adcValue = analogRead(sensorPin);
    float voltage = (adcValue / adcResolution) * vcc;
    float currentInstant = (voltage - offsetVoltage) / sensitivity;
    
    sumSquares += currentInstant * currentInstant;
    delay(1); // تاخیر برای نمونه‌برداری
  }
  
  // محاسبه جریان RMS
  currentRMS = sqrt(sumSquares / samples);
  
  Serial.print("جریان RMS: ");
  Serial.print(currentRMS, 3);
  Serial.println(" A");
  
  // محاسبه توان (در صورت داشتن ولتاژ)
  // float power = currentRMS * 220; // برای برق 220V
}

void calibrateOffset() {
  Serial.println("در حال کالیبراسیون... جریانی عبور ندهید.");
  delay(1000);
  
  float sum = 0;
  for (int i = 0; i < 100; i++) {
    sum += analogRead(sensorPin);
    delay(10);
  }
  
  int adcOffset = sum / 100;
  offsetVoltage = (adcOffset / adcResolution) * vcc;
  
  Serial.print("ولتاژ آفست: ");
  Serial.print(offsetVoltage, 3);
  Serial.println(" V");
}

کاربردهای اصلی

  1. مانیتورینگ مصرف انرژی: اندازه‌گیری مصرف دستگاه‌های خانگی، صنعتی.

  2. شارژرهای باتری: کنترل جریان شارژ/دشارژ باتری‌ها.

  3. درایورهای موتور: حفاظت از موتورها در برابر اضافه بار.

  4. منابع تغذیه: جریان محدود و حفاظت.

  5. سیستم‌های خورشیدی: مانیتورینگ تولید و مصرف.

  6. کنترل توان: دیمرها، کنترل‌کننده‌های توان.

  7. پروژه‌های آموزشی: آموزش الکترونیک قدرت.


نکات حیاتی برای دقت و ایمنی

⚠️ ایزولاسیون: اگرچه سنسور ایزوله است، اما ماژول ممکن است کاملاً ایزوله نباشد. برای ولتاژهای بالا احتیاط کنید.
🔧 کالیبراسیون آفست: همیشه قبل از استفاده آفست را کالیبره کنید (جریان صفر).
🔌 اتصال صحیح: جریان باید از IP+ به IP- عبور کند. جهت معکوس مقادیر منفی نشان می‌دهد.
🌡️ دمای محیط: حساسیت با دما تغییر می‌کند (~0.02%/°C). برای دقت بالا جبران دمایی نیاز است.
🔌 نویزگیری: از خازن 100nF بین VCC و GND نزدیک سنسور و فیلتر RC روی خروجی استفاده کنید.


پروژه عملی: مانیتور مصرف برق خانه

قطعات:

  • ACS712-30A (برای جریان‌های بالا)

  • آردوینو نانو

  • ماژول SD کارت برای ذخیره‌سازی

  • نمایشگر OLED

  • ترانسفورماتور جریان (CT) clamp-on (برای جریان‌های خیلی بالا)

  • سنسور ولتاژ (برای محاسبه توان واقعی)

خروجی: نمایش جریان، ولتاژ، توان، انرژی مصرفی روی OLED و ذخیره در SD کارت.


مقایسه رنج‌های مختلف ACS712

ویژگیACS712-05AACS712-20AACS712-30A
جریان ماکسیمم±۵A±۲۰A±۳۰A
حساسیت۱۸۵mV/A (بالاترین)۱۰۰mV/A۶۶mV/A (کمترین)
رزولوشن عملی≈ ۲۷mA (با ADC 10-bit)≈ ۵۰mA≈ ۷۵mA
ولتاژ آفست۲.۵V۲.۵V۱.۶۵V
کاربرد ایده‌آلپروژه‌های کم‌جریان (آردوینو، LEDها)موتورهای متوسط، دستگاه‌های خانگیموتورهای بزرگ، سیستم‌های قدرت

سوالات متداول (FAQ)

✅ آیا می‌توانم جریان بیش از رنج سنسور اندازه‌گیری کنم؟
خیر. جریان بیش از حد به سنسور آسیب می‌زند. برای جریان‌های بالا از ترانسفورماتور جریان (CT) استفاده کنید.

✅ چرا خروجی در حالت بی‌باری دقیقاً ۲.۵V نیست؟
به دلیل تلرانس قطعات و نویز. در کد آفست را اندازه‌گیری و جبران کنید.

✅ آیا می‌توانم برای برق ۲۲۰V AC استفاده کنم؟
بله، اما با احتیاط شدید:
۱. سنسور باید پس از فیوز قرار گیرد.
۲. کاملاً ایزوله شود.
۳. برای ایمنی بیشتر از ترانسفورماتور ایزوله یا CT clamp-on استفاده کنید.

✅ تفاوت ACS712 با سنسورهای شنت (INA219) چیست؟

ACS712سنسور شنت
ایزولهغیر ایزوله
برای AC/DCفقط DC
افت ولتاژ کمافت ولتاژ بسته به شنت
گران‌ترارزان‌تر

✅ چگونه نویز را کاهش دهم؟
۱. میانگین‌گیری نرم‌افزاری.
۲. فیلتر RC روی خروجی (مثلاً ۱kΩ و ۱µF).
۳. منبع تغذیه تمیز (باتری یا رگولاتور خطی).

✅ آیا می‌توانم چند سنسور را همزمان استفاده کنم؟
بله، هر سنسور به یک پین آنالوگ جداگانه نیاز دارد. آردوینو UNO تا ۶ سنسور را پشتیبانی می‌کند.

✅ طول عمر سنسور چقدر است؟
در شرایط عادی و بدون اضافه بار، ۱۰+ سال. استرس حرارتی مکرر طول عمر را کاهش می‌دهد.


چرا سنسور ACS712 را از ما بخرید؟

✅ تراشه اورجینال: استفاده از ACS712 اصلی Allegro MicroSystems.
✅ کیفیت ساخت: PCB دو لایه با مسیرهای جریان عریض.
✅ تست کالیبراسیون: تست آفست، حساسیت و خطی بودن با تجهیزات دقیق.
✅ پشتیبانی فنی: ارائه کدهای AC/DC، فرمول‌های محاسبه و راهنمای ایمنی.


پکیج پیشنهادی برای مانیتورینگ انرژی

  1. سنسور ACS712-30A (برای جریان‌های بالا)

  2. سنسور ACS712-05A (برای جریان‌های دقیق)

  3. آردوینو نانو با کابل USB

  4. نمایشگر LCD 16×2 با I2C

  5. ماژول SD کارت برای ذخیره‌سازی

  6. ترمینال‌های پیچی برای اتصال راحت


نحوه انتخاب رنج مناسب

  1. حداکثر جریان مورد انتظار را اندازه‌گیری یا محاسبه کنید.

  2. ۲۰-۳۰% بیشتر از حداکثر جریان را انتخاب کنید.

  3. برای دقت بیشتر در جریان‌های کم، رنج پایین‌تر انتخاب کنید.

  4. ACS712-20A بهترین گزینه عمومی برای بیشتر پروژه‌هاست.