اندازهگیری جریان AC به وسیلهی ماژول acs712 و آردوینو
جریان AC که ماژول ACS712 اندازهگیری میکند در دو جهت میباشد.این به این معناست که اگر به اندازهی کافی سریع و بلند نمونهگیری کنیم ؛ مطمعنا هر دو جهت قله را خواهیم داشت. با داشتن هر دو قله ، تنها مسئله دانستن شکل حالت موج برای محاسبهی جریان است. در موررد خط و یا پاور اصلی ، میدانیم شکل موج قرار است که یک موج سینوسی باشد. دانستن این موضوع به اجازه میدهد تا یک فرمول اساسی الکترونیک را اعمال کنیم تا به یک بازده و نتیجهی مناسب و معقول برسیم. این آموزش به شما نشان میدهد که این مسئله چطور عملی میشود.
سخت افزار مورد نیاز
آردوینو UNO ( برای خرید این قطعه از فروشگاه اینترنتی تخصصی الکترونیک و رباتیک دانشجوکیت کلیک کنید )
ماژول اندازهگیری جریان acs712
یافتن مقدار RMS
همانطور که گفته شد در بیشتر موارد ، بیان جریان AC توسط مقداری است که به نام RMS شناخته شده است. برای استفاده از سنسور جریان ACS712 ؛ برای سنجش جریان AC ، مهم است که بدانیم چطور مقدار جریان RMS را از ماژول ACS712 محاسبه کنیم.فرمولی که در اینجا استفاده میکنیم بسیار پایهای است و در هر کتاب برق عمومی یا کتابچههای راهنمای الکترونیکی پیدا میشود.
جریان اندازهگیری شده توسط ACS712 به صورت ولتاژ بر روی خروجی ظاهر میشود. در این آموزش ما ولتاژ RMS ٰرا محاسبه میکنیم و سپس عمل مقیاس گذاری را انجام میدهیم.
تبدیل یک موج سینوسی با یک جبران صفر ولت به شرح زیر انجام میپذیرد:
- ولتاژ peak to peak را پیدا کنید. ( اختلاف پتانسیل از بالاترین نفطه قله بالایی و بالاترین تقطه پایینی
- مقدار بدست آمده ولتاژ peak to peak را تقسیم بر دو کنید تا ولتاژ یک قله را بدست آورید
- ولتاژ پیک بدست آمده را ضربدر ۰٫۷۰۷ کنید تا ولت rms حاصل شود.
نمونه برداری آردوینو برای قلهها
مقادیری از acs712 به دست میآید به طور مداوم تغییر میکند. برای حصول اطمینان از این که به قله بسیار نزدیک شدهاید ، لازم است که نمونهگیریتان به اندازهی کافی سریع باشد. فرکانس برق شهری بین ۵۰ الی ۶۰ هرتز میباشد و آردوینو قادر است با سرعت زیاد نسبت به این فرکانس عمل نمونه برداری را انجام دهد. هماطور که بعدا مشاهده خواهید کرد ، در این آموزش تابعی ایجاد شده که دقیقا همین کار را انجام میدهد.
آموزش نصب و اتصال ماژول اندازه گیری جریان ACS712 به آردوینو
موضوع اساسی برای انجام این آموزش این است که باید بدانید نرخ جریان فعلی ACS712 چیست و چه مقدار جریانی مصرف کنندهی شما مصرف میکند. اجزا مدار را همانند شکل زیر متصل کنید.
کد زیر را بر روی آردوینو خود آلپود کنید. همچنین نگاهی داشته باشیم که تابع “getVPP” درون حلقهی اصلی برنامه فراخوانی شده است.در این تابع من در زمانی که آردوینو در حال نمونه گیری بیشترین و کمترین مقدار بوده یک وقفهی ۶۰ ثانیهای ایجاده کرده ام. از این جا ولتاژ peak to peak اندازهگیری شده را محاسبه میشود.
/* Measuring AC Current Using ACS712 */ const int sensorIn = A0; int mVperAmp = 185; // use 100 for 20A Module and 66 for 30A Module double Voltage = 0; double VRMS = 0; double AmpsRMS = 0; void setup() { Serial.begin(9600); } void loop() { Voltage = getVPP(); VRMS = (Voltage / 2.0) *0.707; AmpsRMS = (VRMS * 1000) / mVperAmp; Serial.print(AmpsRMS); Serial.println(" Amps RMS"); } float getVPP() { float result; int readValue; //value read from the sensor int maxValue = 0; // store max value here int minValue = 1023; // store min value here uint32_t start_time = millis(); while ((millis() - start_time) < 1000) //sample for 1 Sec { readValue = analogRead(sensorIn); // see if you have a new maxValue if (readValue > maxValue) { /*record the maximum sensor value*/ maxValue = readValue; } if (readValue < minValue) { /*record the maximum sensor value*/ minValue = readValue; } } // Subtract min from max result = ((maxValue - minValue) * 5.0) / 1023 .۰; return result; }
تحلیل کد آردوینو
این کد برای اندازهگیری جریان متناوب (AC) با استفاده از سنسور ACS712 نوشته شده است. این سنسور یک سنسور جریان مبدل به ولتاژ است که میتواند جریان AC را به ولتاژ متناظر تبدیل کند. با استفاده از این کد، جریان RMS (مقدار موثر) AC که با واحد آمپر نمایش داده میشود، اندازهگیری میشود. زیرا برخی از بردهای سنسور ACS712 از ولتاژ خروجی متناظر با جریان استفاده میکنند و این ولتاژ متناسب با مقدار موثر جریان AC میشود.
توضیحات تک تک بخشهای کد:
const int sensorIn = A0;: مقدار پین ورودی آنالوگ به عنوان مکانیزم اندازهگیری ولتاژ خروجی سنسور ACS712 را تعیین میکند. این مقدار به A0 اشاره دارد.
int mVperAmp = 185;: این مقدار نسبت ولتاژ به آمپر را مشخص میکند. برای انواع مختلف بردهای ACS712 و حسگرهای جریان ممکن است نسبتهای مختلفی وجود داشته باشد. در این مثال، این مقدار برای حسگری با ولتاژ خروجی ۱۸۵ میلی ولت بر آمپر تنظیم شده است.
تابع setup():
تنظیمات اولیه میکروکنترلر انجام میشود.
سرعت ارتباط با کامپیوتر از طریق Serial با ۹۶۰۰ بیت بر ثانیه تعیین میشود.
تابع loop():
این تابع به صورت مداوم اجرا میشود و جریان متناوب را اندازهگیری و محاسبه میکند.
ابتدا ولتاژ ولتاژ خروجی سنسور را به واحد ولت محاسبه کرده و ذخیره میکند.
سپس ولتاژ موثر (RMS) محاسبه میشود. با فرض اینکه جریان AC یک سینوسی است، ولتاژ RMS برابر با ولتاژ پیک (Peak) تقسیم بر دو و ضربدر عدد ۰٫۷۰۷ (که مقدار موثر سینوسی است) میشود.
در نهایت، جریان موثر به واحد آمپر محاسبه میشود و از طریق Serial به کامپیوتر ارسال میشود.
تابع getVPP():
این تابع برای اندازهگیری ولتاژ ولتاژ خروجی سنسور ACS712 استفاده میشود.
این تابع ولتاژ خروجی سنسور را به مدت ۱ ثانیه نمونهبرداری میکند و سپس مقدار Peak-to-Peak (VPP) (یا دامنه) ولتاژ را محاسبه میکند.
در نهایت، این مقدار VPP برگشت داده میشود.
از این کد میتوان برای اندازهگیری جریان AC و نمایش مقدار موثر آن به صورت آمپر استفاده کرد. این اطلاعات میتواند در پروژههای کنترلی و مانیتورینگی مورد استفاده قرار گیرد.
ممنون بابت آموزش
مرسی .اما خیلی غلط املایی داشتااا?
ممنون از مطلب خوبتون
سلام ببخشید میشه خط ۳۵ تا ۴۰ رو توضیح بدین لطفا؟؟
من نفهمیدم اون خطوط یعنی چی و منظورش چیه و چکار میکند
اگرامکانش هست توضیح دهید.
با سلام
ضمن تشکر از توجه شما، سطر ۳۵ همانطور که در کامنتهای روبروی کد نوشته است، حداقل پارامتر قابل قبول دریافتی از سنسور است. همچنین خط بعدی هم سمپل برای یک ثانیه است.
من درست متوجه نشدم
همون خط ۳۷ رو میگم ینی چی
اونجا از تایمر کانتر میکرو استفاده کردید؟
همون خط ۳۷ رو اصلا متوجه نشدم
بله از تایمر میلی ثانیه استفاده شده است.
سلام ببخشید اون ولتاژ ثابتی که خروجی خود acs712 داره نقشی تو جریان ac نداره؟؟۲٫۵ ولت
تو برنامه نیست
با سلام و تشکر از توجه شما
خیر، اگر اطلاعات دقیقتری دارید، لطفا از همین طریق مطرح کنید.
سلام.یه سوال شما چه طور موج سینوسی با پیک منفی رو تبدیل به موج dc میکنید ؟
سلام خسته نباشید
من همین برنامه رو آپلود کردم و مدار رو هم بستم جریان dc رو اندازه گیری میکنه ولی جریان ac رو فقط صفر نشون میده با ولتمتر هم خروجی ماژول رو گرفتم تو حالت ac و ولتاژ از ۲٫۵ بیشتر نمیشه که همون صفر لطفا راهنمایی کنین ؟؟؟؟؟
با سلام
اگر خروجی ندارید، یکی از مراحل زیر مشکل دارد. کدهای آپلود شده، اتصالات بین ماژول و برد، تغذیه ماژول و یا اینکه کابل مورد استفاده برای سنجش جریان، جریانی ندارد! لطفا بررسی و نتیجه را اعلام نمایید.
سلام
من این مدار و با ال سی دی راه اندازی کردم و واسه تغذیه اش از اداپتور استفاده کردم ولی جواب نمیده اما زمانی که پورت یو اس بی و وصل میکنم درست کار میکنه، مشکل از کجاست و چطور میشه حلش کرد؟
با سلام
احتمالا آداپتور مورد استفاده توانایی عبور جریان کافی را ندارد.