استفاده از حساس(حس کننده) جریان Allegro ACS712 (DC/AC) همراه با شِفر (کود) آردوینو

استفاده از حساس(حس کننده) جریان Allegro ACS712 (DC/AC) همراه با شِفر (کود) آردوینو

در این آموزش، یاد می‌گیریم چگونه از حساس(حس کننده) جریان Allegro ACS712 برای اندازه‌گیری جریان‌های AC و DC با آردوینو استفاده کنیم. حساس(حس کننده) ACS712 ولتاژی متناسب با جریانی که از آن عبور می‌کند تولید می‌کند، که به ما اجازه می‌دهد به‌راحتی مقادیر جریان را روی نمایشگر مسلسل آردوینو بخوانیم و نمایش دهیم. این پروژه برای کسانی که می‌خواهند جریان را در کاربردهای مختلف، مانند منابع تغذیه یا سیستم‌های باتری، پایش کنند ایده‌آل است.

ما یک مدار ساده می‌سازیم که حساس(حس کننده) ACS712 را به آردوینو متصل می‌کند و سپس برنامه‌ای می‌نویسیم تا خروجی حساس(حس کننده) را بخواند. نتیجهٔ مورد انتظار نمایش خوانش‌های جریان به‌صورت بلادرنگ روی نمایشگر مسلسل است. برای روشن‌تر شدن نحوهٔ پیاده‌سازی، حتماً ویدیو را بررسی کنید (در ویدیو در 02:00).

سخت‌افزار به زبان ساده

حساس(حس کننده) جریان Allegro ACS712 یک ماجیول جمع‌وجور است که می‌تواند جریان‌هایی تا 30A را اندازه‌گیری کند، بسته به نسخه‌ای که انتخاب می‌کنید. این ماجیول سه پایه دارد: VCC برای تغذیه، GND برای زمین، و یک پایه خروجی که ولتاژی متناظر با جریان اندازه‌گیری‌شده را فراهم می‌کند. حساس(حس کننده) از اصل اثر هال استفاده می‌کند، بدین معنا که جریان عبوری از یک هادی میدان مغناطیسی تولید می‌کند؛ این میدان شناسایی شده و به ولتاژ تبدیل می‌شود که سپس به آردوینو ارسال می‌گردد.

ماجیول در درجه‌بندی‌های جریان 5A، 20A و 30A موجود است و به‌ترتیب ولتاژهای خروجی 185 mV/A، 100 mV/A و 66 mV/A را تولید می‌کند. این یعنی برای هر آمپر جریان عبوری از حساس(حس کننده)، ولتاژ متناظری دریافت می‌کنید که قابل خواندن و پردازش است. این ویژگی آن را برای کاربردهای مختلف مناسب می‌سازد.

جزئیات مشخصات فنی

تولیدکنندهالگرو میکروسیستمز
شماره قطعهACS712ELCTR-30A-T
ولتاژ منطقی/ورودی-خروجی4.5-5.5 ولت
ولتاژ تغذیه5 ولت
جریان خروجی (برای هر کانال)حداکثر 30 A
راهنمای فرکانس PWMقابل اعمال نیست
آستانه‌های منطقی ورودیقابل‌اعمال نیست
افت ولتاژ / RDS(روشن) / اشباع1.2 میلی‌اهم
محدودیت‌های حرارتیحداکثر 150 °C
بستهTO-220
یادداشت‌ها / واریانت‌هاموجود در 5A، 20A و 30A

  • برای جلوگیری از اتصال کوتاه، سیم‌کشی را به‌درستی انجام دهید.
  • برای ظرفیت جریان از سیمی با گیج مناسب استفاده کنید (12 AWG برای 30A).
  • دمای ماجیول را در حین کار پایش کنید.
  • برای کاربردهایی با جریان بالاتر، افزودن یک هیت‌سینک را مدنظر قرار دهید.
  • خروجی حساس(حس کننده) را بر اساس کاربرد خاص خود کالیبره کنید.

دستورالعمل‌های سیم‌کشی

Arduino wiring for Allegro ACS712 current sensor

برای سیم‌کشی حساس(حس کننده) Allegro ACS712 به آردوینو خود، با وصل کردن پایه VCC حساس(حس کننده) به پایه 5V روی آردوینو شروع کنید. سپس پایه GND حساس(حس کننده) را به یکی از پایه‌های GND آردوینو متصل کنید. پایه خروجی ACS712 باید به پایه ورودی آنالوگ A0 آردوینو متصل شود.

برای اندازه‌گیری جریان، بار را به‌صورت سری با حساس(حس کننده) متصل کنید. این بدین معناست که سیم مثبت منبع تغذیه شما باید وارد یکی از پایه‌های ورودی حساس(حس کننده) جریان شود، در حالی که پایه دیگر به بار متصل می‌شود. سمت دیگر بار باید به منبع تغذیه بازگردد تا مدار تکمیل شود. مطمئن شوید از سطح مقطع مناسب سیم متناسب با جریانی که اندازه‌گیری می‌کنید استفاده کنید تا از گرم‌شدن بیش از حد جلوگیری شود.

نمونه‌های شِفر (کود) و راهنمای گام‌به‌گام

قطعه شِفر (کود) زیر پایه آنالوگ را مقداردهی اولیه کرده و نمایشگر مسلسل را راه‌اندازی می‌کند:

#define VIN A0 // define the Arduino pin A0 as voltage input (V in)
const float VCC = 5.0; // supply voltage is from 4.5 to 5.5V. Normally 5V.

در اینجا، ما تعریف می‌کنیمVINبه‌عنوان پایهٔ ورودی آنالوگ که خروجی حساس(حس کننده) به آن متصل است. همچنین ولتاژ تغذیه را تنظیم می‌کنیم.VCCبه 5V.

در تابع loop، ولتاژ را از حساس(حس کننده) ACS712 می‌خوانیم و جریان را محاسبه می‌کنیم:

float voltage_raw = (5.0 / 1023.0) * analogRead(VIN); // Read the voltage from sensor
float current = voltage / sensitivity[model]; // Calculate current based on sensitivity

در اینجا ولتاژ خام را از حساس(حس کننده) می‌خوانیم و با استفاده از آرایهٔ حساسیت که بر اساس مدل حساس(حس کننده) مورد استفاده است، آن را به جریان واقعی تبدیل می‌کنیم.

در نهایت، خوانش‌های جریان را در نمایشگر مسلسل چاپ می‌کنیم:

if (abs(current) > cutOffLimit) {
    Serial.print("V: ");
    Serial.print(voltage, 3); // print voltage with 3 decimal places
    Serial.print("V, I: ");
    Serial.print(current, 2); // print the current with 2 decimal places
    Serial.println("A");
} else {
    Serial.println("No Current");
}

این بخش بررسی می‌کند که آیا جریان از حد قطع تعریف‌شده فراتر رفته است و مقادیر ولتاژ و جریان را در نمایشگر مسلسل چاپ می‌کند. اگر جریان کمتر از آستانه باشد، عبارت No Current را چاپ می‌کند.

برای مشاهدهٔ شِفر (کود) کامل، لطفاً به کدی که زیرِ مقاله بارگذاری شده مراجعه کنید.

نمایش / چه انتظاری داشته باشید

وقتی شِفر (کود) را اجرا کرده و به مدار برق می‌دهید، باید خوانش‌های جریان را روی نمایشگر مسلسل ببینید. با تنظیم بار، خوانش‌ها باید متناسباً تغییر کنند به شرط اینکه جریان بالاتر از حد قطع باشد. مراقب دمای حساس(حس کننده) باشید، به‌ویژه هنگام کار در نزدیکی محدودهٔ حداکثر مجاز آن.

تصاویر

Arduino wiring for Allegro ACS712 current sensor
Arduino wiring for Allegro ACS712 current sensor
ACS712_in_series_with_load
ACS712_in_series_with_load
allegro_ACS712_module-1
allegro_ACS712_module-1
allegro_ACS712_module-2
allegro_ACS712_module-2
allegro_ACS712_module-4
allegro_ACS712_module-4
allegro_ACS712_module-0
allegro_ACS712_module-0
130-Allegro ACS712 DC/AC current sensor with Arduino code
زبان: C++
کپی شد!

منابع و مراجع

هنوز هیچ منبعی موجود نیست.

فایل‌ها📁

برگه مشخصات (pdf)

فایل Fritzing