آموزش آردوینوپروژه های آردوینو

پروژه اندازه گیری ولتاژ، جریان و توان با آردوینو (وات، ولت و آمپر متر)

سلام. پروژه اندازه گیری ولتاژ، جریان و توان با آردوینو (وات، ولت و آمپر متر) را آماده کردیم.

ما به عنوان مهندسان الکترونیک ، همیشه به ابزاری برای اندازه گیری و تحلیل کار یک مدار نیازداریم. بعضی اوقات ممکن است در شرایطی قرار بگیریم که باید ابزار های اندازه گیری را خودمان را بسازیم. به عنوان مثال در حال کار روی یک پروژه PV خورشیدی هستید و دوست دارید میزان انرژی خود را محاسبه کنید، در چنین شرایطی میتوانیم به راحتی وات متر خود را با آردوینو بسازیم و توان الکتریکی را اندازه گیری کنیم.

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

فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

توضیحات مدار پروژه وات متر با آردوینو

شماتیک مدار پروژه وات متر با آردوینو در زیر آورده شده است.

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

برای سهولت درک مدار، وات متر آردوینو به دو واحد تقسیم می شود. قسمت فوقانی مدار واحد اندازه گیری و قسمت پایین مدار واحد محاسبه و نمایش است. برای افرادی که تازه از این نوع مدارها استفاده می کنند ، برچسب ها نوشته شده است. این مدار به گونه ای طراحی شده است که در سیستم هایی که بین 0-24 ولت با دامنه جریان 0-1A کار می کنند ، اندازه گیری انجام میدهد.

قطعات مورد نیاز

  1. برد آردوینو نانو
  2. آپ امپ LM358
  3. تنظیم کننده ولتاژ 7805
  4. ال سی دی کاراکتری 16*2
  5. مقاومت شنت 0.22 اهم 2 وات
  6. پتانسیومتر 10k
  7. مقاومت 10k ، 20k ، 2.2k ، 1k
  8. خازن 0.1uF
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

اجازه دهید مدار را به بخشهای کوچک تقسیم کنیم تا بتوانیم تصویر روشنی از نحوه عملکرد مدار داشته باشیم.

واحد اندازه گیری جریان، وات و ولتاژ

واحد اندازه گیری متشکل از یک تقسیم کننده است که به ما در اندازه گیری ولتاژ کمک می کند و از یک مقاومت با یک آمپ Op-Inverting استفاده می شود تا به ما در اندازه گیری جریان از طریق مدار کمک کند. قسمت تقسیم کننده مدار در زیر نشان داده شده است.

واحد اندازه گیری جریان، وات و ولتاژ

در اینجا ولتاژ ورودی با Vcc نشان داده شده است ، همانطور که در ابتدا گفته شد ما در حال طراحی مدار برای اندازه گیری یک ولتاژ از 0 ولت تا 24 ولت هستیم. اما یک میکروکنترلر مانند آردوینو نمی تواند چنین مقادیر بالای ولتاژ را اندازه گیری کند. آردوینو تنها می تواند ولتاژ را از 0-5 ولت اندازه گیری کند. بنابراین باید محدوده ولتاژ را از 0-24V به 0-5V را تبدیل کنیم. این کار را می توان به راحتی با استفاده از یک مدار تقسیم کننده مطابق شکل زیر انجام داد. مقاومت 10k و 2.2k با هم مدار تقسیم کننده ولتاژ را تشکیل می دهند. ولتاژ خروجی یک تقسیم کننده با استفاده از فرمول های زیر قابل محاسبه است.

Vout = (Vin × R2) / (R1 + R2)

تبدیل 0-5V را می توان از قسمت میانی که دارای ولتاژ است ، بدست آورد. این ولتاژ بعدا به پین ​​آردوینو آنالوگ تغذیه می شود.

سپس باید جریان را از طریق LOAD بسنجیم. همانطور که می دانیم میکروکنترلر ها فقط می توانند ولتاژ آنالوگ را بخوانند ، بنابراین باید به نوعی مقدار جریان را به ولتاژ تبدیل کنیم. این کار را می توان با افزودن یک مقاومت (مقاومت شنت) در مسیر انجام داد که مطابق قانون اهم ، مقدار ولتاژ را در سرتاسر آن ، متناسب با جریان موجود در آن خارج میکند. مقدار این ولتاژ بسیار کم خواهد بود ، بنابراین برای تقویت آن از op-amp استفاده می کنیم. مدار برای این قسمت در زیر نشان داده شده است.

مدار اندازه گیری جریان با آردوینو

در اینجا مقدار مقاومت شنت SR1 0.22 اهم است. همانطور که در ابتدا گفته شد ، ما در حال طراحی مدار برای اندازه گیری جریان 0-1A هستیم تا براساس قانون اهم بتوانیم میزان ولتاژ را در طول این مقاومت محاسبه کنیم که در صورت عبور حداکثر جریان یعنی 1 آمپر، ولتاژ دریافتی حدود 0.2 ولت خواهد بود. این ولتاژ برای خوانده شدن توسط میکروکنترلر بسیار اندک است ، ما از یک آپ امپ LM358 در حالت تقویت کننده غیر معکوس استفاده می کنیم تا ولتاژ را از 0.2 ولت به مقادیر بالاتر برسانیم تا آردوینو بتواند آن را بخواند.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

عملکرد Op-Amp در حالت غیر معکوس در بالا نشان داده شده است. تقویت کننده به گونه ای طراحی شده است که از مقدار بهره 21 برخوردار باشد ، به طوری که 0.2*21 = 4.2V باشد. فرمول محاسبه بهره Op-amp در زیر آورده شده است.

Gain = Vout / Vin = 1 + (Rf / Rin)

در اینجا مقدار Rf = 20k و مقدار Rin = 1k است که مقدار بهره 21 را به ما می دهد. ولتاژ تقویت شده از Op-amp سپس به فیلتر RC با مقاومت 1k و خازن 0.1uF داده می شود. اینکار باعث میشود نویز ها و نوسان ها حداقل شوند. سرانجام ولتاژ به پین آنالوگ آردوینو تغذیه می شود.

آخرین بخشی که در واحد اندازه گیری باقی مانده است ، قسمت تنظیم کننده ولتاژ است. از آنجا که ما یک ولتاژ ورودی متغیر خواهیم داشت، برای کارکرد Arduino و Op-amp به یک ولتاژ 5 ولت تنظیم شده نیاز داریم. این ولتاژ تنظیم شده توسط تنظیم کننده ولتاژ 7805 تامین می شود. یک خازن در خروجی اضافه می شود تا نویز را فیلتر کند.

استفاده از تنظیم کننده ولتاژ با Arduino

واحد محاسبه و نمایش آمپر، ولت و وات

در واحد اندازه گیری ما مدار را برای تبدیل پارامترهای ولتاژ و جریان به 0-5 ولت طراحی کرده ایم که می توانند به پین ​​های آنالوگ آردوینو تغذیه شود. اکنون در این بخش از مدار این سیگنال های ولتاژ را به آردوینو متصل خواهیم کرد و همچنین یک صفحه نمایش ال سی دی کاراکتری 16*2 را به آردوینو متصل میکنیم تا بتوانیم نتایج را مشاهده کنیم.

واحد محاسبه و نمایش آمپر، ولت و وات 

همانطور که می بینید پین ولتاژ به پین ​​آنالوگ A3 وصل شده و پین جریان به پین ​​آنالوگ A4 وصل شده است. ال سی دی از +5V از 7805 تغذیه می شود و به پین ​​های دیجیتال آردوینو وصل می شود تا در حالت 4 بیتی کار کند. ما همچنین از پتانسیومتر (10 کیلو اهم) متصل به پین ​​CON برای تغییر در کنتراست LCD استفاده کرده ایم.

برنامه نویسی محاسبه جریان و ولتاژ در آردوینو

حالا که درک خوبی از سخت افزار داریم ، اجازه دهید Arduino را باز کنیم و برنامه نویسی را شروع کنیم. هدف از کد خواندن ولتاژ آنالوگ در پین A3 و A4 و محاسبه مقدار ولتاژ ، جریان و توان و درنهایت نمایش آن بر روی صفحه LCD است. کد کامل در انتهای صفحه در فایل دانلودی قرار داده شده است. در اینجا بعضی از قسمت های کد را بررسی میکنیم.

اول از همه پین های مورد نیاز را تعریف میکنیم. در پروژه از پین A3 و A4 برای اندازه گیری ولتاژ و جریان استفاده می شود و از پین های دیجیتالی 3،4،8،9،10 و 11 برای ارتباط LCD با آردوینو استفاده می شود.

int Read_Voltage  = A3;
int Read_Current  = A4;
const int rs = 3, en = 4, d4 = 8, d5 = 9, d6 = 10, d7 = 11; //پین های LCD
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

در داخل عملکرد viod setup، نمایشگر LCD را فعال می کنیم و متن مقدمه را با عنوان “Arduino Wattmeter” نمایش می دهیم و قبل از پاک کردن آن دو ثانیه صبر می کنیم.

void setup() {
  lcd.begin(16, 2); //شروع کار ال سی دی
  lcd.print(" Arduino Wattmeter"); //نمایش متن
  lcd.setCursor(0, 1); // ردیف دوم ستون اول
  lcd.print("IRENX.IR"); //نمایش متن
  delay(2000); // 2 ثانیه تاخیر
  lcd.clear(); // پاکسازی ال سی دی
}

در داخل تابع void loop ، از تابع analog read برای خواندن مقدار ولتاژ از پین A3 و A4 استفاده می کنیم. همانطور که می دانیم مقدار خروجی آنالوگ به دیجیتال از آردوینو از 0-1203 است زیرا دارای ADC 10 بیتی است (در مورد آنالوگ به دیجیتال در آردوینو بیشتر بدانید). این مقدار باید به 0-5 ولت تبدیل شود که می تواند با ضرب (5/1023) انجام شود. در سخت افزار مقدار واقعی ولتاژ را از 0-24V به 0-5V و مقدار جریان را از 0-1A تا 0-5V تبدیل کردیم. بنابراین اکنون ما مجبور هستیم از ضرب برای بازگرداندن این مقادیر به مقدار واقعی استفاده کنیم. این کار با ضرب کردن آن با یک مقدار انجام می شود. مقدار ضریب را می توان به صورت تئوری با استفاده از فرمول های ارائه شده در عقب تر محاسبه کرد. در اینجا مقدار ضرب 6.46 و 0.239 است. از این رو :

float Voltage_Value = analogRead(Read_Voltage);
 float Current_Value = analogRead(Read_Current);

 Voltage_Value = Voltage_Value * (5.0/1023.0) * 6.46;
 Current_Value = Current_Value * (5.0/1023.0) * 0.239;

چگونه با دقت بیشتری اندازه گیری کنیم؟

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

هنگامی که مقدار ولتاژ و جریان واقعی را از طریق بار محاسبه کردیم ، می توانیم با استفاده از فرمول ها توان را محاسبه کنیم P = V * I. سپس با استفاده از کد زیر ، تمام سه مقدار را روی صفحه نمایش LCD نمایش می دهیم.

lcd.setCursor(0, 0);
 lcd.print("V="); lcd.print(Voltage_Value);
 lcd.print("  ");
 lcd.print("I=");lcd.print(Current_Value);

 float Power_Value = Voltage_Value * Current_Value;

 lcd.setCursor(0, 1);
 lcd.print("Power="); lcd.print(Power_Value);

پس از آماده سازی سخت افزار ، کد Arduino را در برد نانو بارگذاری کنید. پتانسیومتر را تنظیم کنید تا سطح کنتراست LCD را کنترل کنید تا زمانی که متن مقدمه را روشن ببینید. برای کار این پروژه باید ولتاژ منبع بیش از 6 ولت باشد ، زیرا آردوینو برای کار به 5+ ولتاژ نیاز دارد. اگر همه چیز خوب کار کند ، باید مقدار ولتاژ، آمپر و وات را در ال سی دی مشاهده کنید.

موارد موجود در فایل : سورس کامل ، شماتیک

4.8 (17 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

38 نظر

  1. سلام و خسته نباشید
    خیلی ممنونم از مطالب خوبتون.
    این مدار برای ولتاژ دی سی بود، لطفا اگه امکانش هست منو راهنمایی کنید که چجوری ولتاژ، جریان و وات برق شهر را اندازه گیری کنم؟؟

  2. سلام خسته نباشید
    من این پروژه رو ساختم و روی PCB هم مونتاژ کردم، ولی مشکلی که هست اینه که روی LCD اصن هیچ چیزی نمایش نمی ده، فقط نور بک لایت LCD روشن میشه، کاراکتری نمایش نمی ده
    لطفا راهنمایی کنید

  3. سلام
    برای محاسبه ولتاژ منفی که مثلا یک منبع ولتاژساز تولید میکنه چه راهکاری وجود داره؟
    بعنوان مثال، امکانش هست، برای محاسبه ولتاژهای -5 تا 0، یک ولتاژ رگوله 5 ولت سری شده، بین راه قرار داد و در آردینو، 5 واحد از عدد بدست آمده کم کرد؟
    این ولتاژ اضافی امکانش هست (حتی با بکار بردن دیود) به ولتاژساز آسیب بزنه؟

  4. سلام
    در این پروژه اگر بخواهیم که موارد اندازه گیری شده را به صورت پیامک ارسال کنیم چکار کنیم

    1. سلام عزیز
      دوره آموزش آردوینو را مشاهده کنید نحوه ارسال اس ام اس آموزش داده شده است.

  5. سلام استاد من دوره اموزش اردوینو رو گرفتم فوق العادست
    سوال من اینه دقت عذی مبدل تو ماژول Esp32 رو چجوری بدست بیارم
    ممنون از لطف شما

    1. سلام عزیز
      خوشحالم که از دوره آردوینو رضایت داشتید.
      ماژول ESP32 دارای دقت 12 بیتی معادل 4096 است.

  6. سلام . مهندس به نظر در محاسبات فرمول اشتباه شده در قسمت ولتاژ . مقاومت دوم ۲۲۰۰تقسیم بر مجموع مقاومت ها ۱۲۲۰۰ میشه 0.180 و‌در فرمون تقسیم بر این مقدار میشه ، نه ضرب تا ولتاژ وردی رو نمایش بده. لطفا فرمول محسابات رو بازنگری کنید و اگر اشتباه از بنده هست توضیح بدین عدد ۶ از کجا میاد؟

    1. سلام عزیز
      پروژه از سایت های خارجی ترجمه شده

  7. سلام وقتتون بخیر ، خواستم بدونم مقدار ۰.۲۳۹ داخل کد ، دقیقا از چه روابطی بدست اومده ممنون میشیم توضیح بدین

  8. سلام میخواستم ببینم بجای مقاومت شنت 0.22 اهم از یک مقاومت شنت دیگر با مقدار متفاوت میشه استفاده کرد ؟ اگه میشه مقدارش چقدر باشه؟

  9. سلام خسته نباشید ببخشید یک راهنمایی میخواستم، هدفم اینه جریان هایی در حدود 0.2 میلی ولت طی یک ماه بررسی کنم اگر راهنمایی بفرمایید ممنون میشم من از برد acs712 به همراه دیتالاگر DS1307rtc استفاده میکنم در مورد برنامه نویسی اینا مشکل دارم

  10. باسلام ووقت بخیر
    من این مداررو روی بردبورد درست کردم وبرنامه رو به درستی روی برد اردینو آپلود کردم فقط یه مشکلی داشتم ممنوم میشم راهنماییم کنین؛ولتاژ وجریان وVcc که در شماتیک مدارهست توسط چه وسیله یاالمانی تامین کنیم و مقدارشون چقدر باشه!؟
    ووقتی که برد اردینو رو توسط USB به تغذیه وصل کردیم و LCD روشن شد مشکل عدم نمایش مقادیر چی میتونه باشه؟وچجوری این مشکل حل میشه!

    1. voltage به voltage و current به current متصل میشه. برای انداره گیری ولتاژ، جریان و توان باید مثبت و منفی مورد نظر رو به قسمت load + و – متصل کنید.

    2. سلام
      منظورم اینکه با چه وسیله ای یاالمانی ولتاژ وجریان بدیم، مثلا باتری یا ماژول جداگانه ولتاژ وجریان!و اینکه مقدار ولتاژ وجریان باید چقدر باشه

    3. سلام عزیز، این دیگه بستگی به خودتون داره که میخواهید ولتاژ و جریان چه چیزی رو اندازه بگیرید! میتونه یک باتری باشه یا …

  11. سلام عرض ادب من الان بیشتر از یک هفته هست درگیر این موضوع هست لطفا ازتون خواهش میکنم راهنماییم بکنین
    من یک مدار میخوام درست کنم که وقتی ولتاژ به ۱۹ ولت میرسه یک رله رو قطع کنه مقسم ولتاژ رو درست کردم برد اردوینو هم اماده هست ولی کدنویسی رو انجام میدم عمل نمیکنه اگر ممکنه کمکم کنید

    1. سلام عزیز، از دوره آموزش آردوینو استفاده کنید کمکتون میکنه

  12. سلام مهندس
    میشه به جای ال سی دی از 7segment
    استفاده کرد میشه راهنمایی بفرمایید

    1. سلام عزیز، شدن رو که میشه اما باید کد رو تغییر بدید.

  13. سلام وقت بخیر،ببخشید سرعت اندازه ولتاژ و جریان مصرفی تا دومیلی ثانیه هم میشود؟

    1. سلام جناب، میتونید سرعت اندازه گیری و رفرش شدن مقادیر رو در کد تنظیم کنید.

  14. سلام
    وقت بخیر
    من برد آردو ینو نانوندارم ولی یه آردوینو انو دارم میشه تو مدار جایگزین کنم…نرم افزار نانو به انو میخوره …لطفا راهنمایم کنید سپاس

    1. سلام جناب. بله میتونید از برد آردوینو اونو به جای برد آردوینو نانو استفاده کنید.

  15. شماتیک و قطعات همه وهمه و برنامه نرم افزاری دارین واسه فروش ارسال کنین ….قیمت چند چون هر کدام تو شهرستانها وجود ندارن…ممنون میشم پک کامل واسم ارسال کنین

    1. سلام جناب. فعالیت ما فقط در زمینه آموزش هست و فروش قطعات و برد رو فعلا نداریم.

  16. سلام ممنون از آموزش خوبتون
    می خواستم بدونم میشه بجای مقاومت 20k از 22k یا 18k استفاده کرد؟
    چون من هرجا رو گشتم این مقاومت رو پیدا نکردم

    1. سلام جناب، ممکنه مقادیر دقیقی بدست نیارین.

    2. سلام
      خیلی ممنون
      ببخشید یک سوال دیگه داشتم اون لامپی که استفاده کردید برای چی هست؟ و در کجا شماتیک مدار قرار داره؟
      لطفا مدلش رو هم بفرمایید.

      سپاس

    3. در این پروژه ما اندازه گیری توان اون لامپ رو انجام میدیم. در شماتیک با Load+ و Load- مشخص شده. هر چیزی که میخواید توان مصرفیش رو بدست بیارید کافیه به همین قسمت load + و – متصل کنید. حالا میتونه لامپ باشه یا هر چیز دیگه ای.

    4. سلام
      بسیار ممنون از توجهتون
      من مدار رو درست کردم، برنامه رو هم به درستی روی آردوینو آپلود کردم ولی وقتی مدار رو تست می کنم صفحه LCD فقط روشن و آبی میشه
      مشکل از کجا می تونه باشه؟

    5. کنتراست ال سی دی رو با یک پتانسیومتر تنظیم کنید

  17. سلام
    ماژولی رومیشناسید که بتونه جریان (4تا20 میلی آمپر) رو که از یک سنسور صنعتی میاد رو بگیره ومن بتونم در آردیونو ازش استفاده کنم؟؟؟

    1. سلام اگه شما چیزی پیدا کردین به ما هم معرفی کنید من برای استفاده در ترانسمیتر میخوام

  18. با سلام خدمت آقای رحیمی و عرض خسته نباشید . ببخشید بنده یک سوال ازتون داشتم . برای ساختن یک پروژه ی سولار که احتیاج داریم به یک صفحه خورشیدی ، ال سی دی کاراکتری، برد آردوینو نانو و نمایش آمپراژ و ولتاژ و دما پنل به صورت حافظه دار باید باشه که بتوانیم مقادیر خواسته شده را مثلا در بازه زمانی هر نیم ساعت به ما نمایش دهد احتیاج داریم به ماژول نگهدارنده زمان مثل tiny rtc 12 c
    شما درباره نقشه ی مدار و نحوه ی اتصالات قطعات راهنمایی میکنید

    1. سلا جناب، ما پروژه سفارشی انجام نمیدیم میتونید از مطالب سایت استفاده کنید.

    2. خسته نباشید جناب رحیمی هدفم ساخت وسیله نیست هدفم این بود اگر اطلاعاتی دارین بهم کمک کنین چونکه مشابه این پروژست فقط با این تفاوت که حافظه دار باید باشه و حتما باید از ماژول نگهدارنده زمان استفاده کنم . میخواستم بدونم اطلاعاتی چیزی دارین یا در کدوم سایت ها میتونم شماتیک مدار و سیم بندی هارو ببینم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *