آردوینو مدارهای الکترونیک پروژه های آردوینو

ACS712 اندازه‌گیری جریان AC آردوینو


اندازه‌گیری جریان AC به وسیله‌ی ماژول acs712 و آردوینو


جریان AC که ماژول ACS712 اندازه‌گیری می‌کند در  دو جهت می‌باشد.این به این معناست که اگر به اندازه‌ی کافی سریع و بلند نمونه‌گیری‌ کنیم ؛ مطمعنا هر دو جهت قله را خواهیم داشت. با داشتن هر دو قله  ، تنها مسئله دانستن شکل حالت موج برای محاسبه‌ی جریان است. در موررد خط و یا پاور اصلی ، می‌دانیم شکل موج قرار است که یک موج سینوسی باشد. دانستن این موضوع به اجازه می‌دهد تا یک فرمول اساسی الکترونیک را اعمال کنیم تا به یک بازده و نتیجه‌ی مناسب و معقول برسیم. این آموزش به شما نشان می‌دهد که این مسئله چطور عملی می‌شود.

AC current

AC current


سخت افزار مورد نیاز


آردوینو UNO  ( برای خرید این قطعه از فروشگاه اینترنتی تخصصی الکترونیک و رباتیک دانشجوکیت کلیک کنید )

ماژول اندازه‌گیری جریان acs712


یافتن مقدار RMS


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

VPP-VPEAK-RMS

جریان اندازه‌‌گیری شده توسط ACS712  به صورت ولتاژ بر روی  خروجی ظاهر می‌شود. در این آموزش ما ولتاژ RMS ٰرا محاسبه می‌کنیم  و سپس عمل مقیاس گذاری را انجام می‌دهیم.

تبدیل یک موج سینوسی با یک جبران صفر ولت به شرح زیر انجام می‌پذیرد:

  1. ولتاژ peak to peak را پیدا کنید. ( اختلاف پتانسیل از بالاترین نفطه قله بالایی و بالاترین تقطه پایینی
  2. مقدار بدست آمده ولتاژ peak to peak  را تقسیم بر دو کنید تا ولتاژ یک قله را بدست آورید
  3. ولتاژ پیک بدست آمده را ضربدر ۰٫۷۰۷  کنید تا ولت rms حاصل شود.

نمونه برداری آردوینو برای قله‌ها


مقادیری از acs712 به دست می‌آید به طور مداوم تغییر می‌کند. برای حصول اطمینان از این که به قله بسیار نزدیک شده‌اید ، لازم است که نمونه‌گیریتان به اندازه‌ی کافی سریع باشد. فرکانس برق شهری بین ۵۰ الی ۶۰ هرتز می‌باشد و آردوینو قادر است با سرعت زیاد نسبت به این فرکانس عمل نمونه برداری را انجام دهد. هماطور که بعدا مشاهده خواهید کرد ، در این آموزش تابعی ایجاد شده که دقیقا همین کار را انجام می‌دهد.

 


آموزش نصب و اتصال ماژول اندازه گیری جریان ACS712 به آردوینو


موضوع اساسی برای انجام این آموزش این است که باید بدانید نرخ جریان فعلی ACS712 چیست و چه مقدار جریانی مصرف کننده‌ی شما  مصرف می‌کند. اجزا مدار را همانند شکل زیر متصل کنید.

 

 

اتصال ACS712 به آردوینو به منظور اندازه‌گیری جریان AC یا متناوب

اتصال ACS712 به آردوینو به منظور اندازه‌گیری جریان AC یا متناوب

کد زیر را بر روی آردوینو خود آلپود کنید. همچنین نگاهی داشته باشیم که تابع “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 رو اندازه گیری میکنه ولی جریان ac رو فقط صفر نشون میده با ولتمتر هم خروجی ماژول رو گرفتم تو حالت ac و ولتاژ از ۲٫۵ بیشتر نمیشه که همون صفر لطفا راهنمایی کنین ؟؟؟؟؟

    • با سلام
      اگر خروجی ندارید، یکی از مراحل زیر مشکل دارد. کدهای آپلود شده، اتصالات بین ماژول و برد، تغذیه ماژول و یا اینکه کابل مورد استفاده برای سنجش جریان، جریانی ندارد! لطفا بررسی و نتیجه را اعلام نمایید.

  • سلام
    من این مدار و با ال سی دی راه اندازی کردم و واسه تغذیه اش از اداپتور استفاده کردم ولی جواب نمیده اما زمانی که پورت یو اس بی و وصل میکنم درست کار میکنه، مشکل از کجاست و چطور میشه حلش کرد؟