در این پست از سایت اِمیک, با نحوه تنظیم ولتاژ رفرنس داخلی 1.1 ولت و 2.56 ولت در برد آردوینو آشنا خواهیم شد. در واقع در این پست ما با نحوه راه اندازی ADC (مبدل انالوگ به دیجیتال) در حالت ولتاژ رفرنس یا مرجع داخلی اشنا خواهیم شد. به طور کلی ما دو مقدار برای ولتاژ رفرنس داخلی برد اردوینو داریم که برابر با 1.1 ولت و 2.56 ولت است که بسته به مدل برد اردوینو, ولتاژ رفرنس داخلی ان یکی از این مقادیر است. به عنوان مثال ولتاژ رفرنس داخلی در برد اردوینو UNO برابر 1.1 ولت است.
همانطور که می دانید ما توسط تابع ()analogReference مقدار یا منبع ولتاژ رفرنس را مشخص می کنیم. این تابع می تواند 5 ورودی به نام های DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2V56, EXTERNAL بگیرد. در زیر با این 5 ورودی اشنا می شویم.
DEFAULT : با قرار دادن این گزینه در تابع analogReference, ولتاژ رفرنس در بردهای اردوینو که دارای ولتاژ تغذیه 5 ولت هستند برابر با 5 ولت تعیین می شود و در برابر های اردوینو که دارای ولتاژ تغذیه 3.3 ولت هستند, برابر با 3.3 ولت می شود. به عبارت دیگر ولتاژ رفرنس برابر با ولتاژ تغذیه برد اردوینو می شود.
INTERNAL : در برد های اردوینو که دارای میکروکنترلر ATmega328 و یا ATmega168 هستند, ولتاژ رفرنس برابر با 1.1 ولت داخلی برد اردوینو می شود. در برد های اردوینو دارای میکروکنترلر ATmega8, ولتاژ رفرنس برابر 2.56 ولت داخلی می شود.
INTERNAL1V1 : این گزینه فقط برای برد اردوینو مگا می باشد و ولتاژ رفرنس برابر 1.1 ولت داخلی می شود.
INTERNAL2V56 : این گزینه فقط برای برد اردوینو مگا می باشد و ولتاژ رفرنس برابر 2.56 ولت داخلی می شود.
EXTERNAL : ولتاژ رفرنس برابر ولتاژ خارجی اعمال شده به پایه AREF می شود. دقت کنید که ولتاژ که به این پایه اعمال می کنید باید بین 0 تا 5 ولت باشد و به هیچ عنوان بیشتر از 5 ولت نشود.
طبق توضیحات بالا برای راه اندازی ADC برد اردوینو با ولتاژ رفرنس داخلی کافی است که در تابع analogReference گزینه INTERNAL را وارد کنید تا بسته به برد اردوینو خود ولتاژ رفرنس 1.1 ولت یا 2.56 ولت تعیین شود. برای برد مگا هم INTERNAL1V1 برای ولتاژ رفرنس داخلی 1.1 ولت و INTERNAL2V56 را برای ولتاژ رفرنس داخلی 2.56 ولت وارد کنید.
از مهم ترین ویژگی های ولتاژ رفرنس داخلی نسبت به ولتاژ رفرنس خارجی می توان به دقیق تر بودن ان و عدم نوسان در ان اشاره کرد که در نتیجه باعث می شود دقت ADC بسیار افزایش پیدا کند.
یکی از معایب انتخاب گزینه DEFAULT در ولتاژ رفرنس اردوینو این است که با نوسان و یا تغییر جزئی ولتاژ تغذیه برد اردوینو, دقت ADC به شدت افت می کند و مقادیر را با خطای زیاد اندازه گیری و نمایش می دهد. بنابراین در پروژه های حساس انتخاب گزینه DEFAULT برای ولتاژ رفرنس برد اردوینو مناسب نیست و باید از ولتاژ رفرنس داخلی برد اردوینو یا ولتاژ رفرنس خارجی دقیق استفاده کرد.
فرض کنید که شما یک سنسور دارید که ولتاژ خروجی ان بین 0 تا 1 ولت تغییر می کند و شما می خواهید ان را اندازه گیری کنید. در این شرایط بهترین گزینه انتخاب ولتاژ رفرنس داخلی 1.1 ولت یا 2.56 ولت است. که در نتیجه باعث افزایش دقت و کاهش خطا در اندازه گیری می شود. حتی اگر خروجی سنسور شما بیشتر از 1 ولت مثلا بین 0 تا 5 ولت نیز باشد, به راحتی توسط تقسیم مقاومت می توانید ولتاژ را کاهش داده و با ولتاژ رفرنس داخلی اردوینو ان را بخوانید.
فقط باید به این نکته دقت کنید که با انتخاب ولتاژ رفرنس داخلی 1.1 ولت یا 2.56 ولت, ولتاژ بیشتر از این مقادیر (1.1 ولت یا 2.56 ولت) را نباید برای اندازه گیری به برد اردوینو اعمال کنید چون برد اردوینو نمی تواند ولتاژ بیشتر از این مقادیر را اندازه گیری کند. به عنوان مثال با انتخاب ولتاژ رفرنس داخلی 1.1 ولت, ولتاژهای بیشتر از 1.1 ولت را برد اردوینو نمی تواند اندازه گیری کند و تا ماکزیمم 1.1 ولت را می تواند اندازه گیری کند.
البته همانطور که گفته شد ولتاژ های بیشتر را هم به راحتی می توان توسط تقسیم مقاومتی کاهش داد و اندازه گیری کرد و در برنامه پروژه با ضرب یک ضریب, ولتاژ اندازه گیری شده را دوباره به حالت قبل تقسیم مقاومتی برگرداند.
در ادامه یک پروژه ساده برای راه اندازی ADC برد اردوینو با ولتاژ رفرنس داخلی قرار داده شده است. عملکرد پروژه زیر به این صورت است که ما به وسیله یک پتانسیومتر, یک ولتاژ متغیر از 0 تا 1 ولت به پایه A0 برد اردوینو اعمال می کنیم. برد اردوینو نیز این ولتاژ را اندازه گیری می کند و با توجه به ولتاژ اندازه گیری شده تعدادی LED را برای نمایش محدوده ولتاژ اندازه گیری شده روشن می کند. در زیر شماتیک پروژه را مشاهده می کنید:
در این پروژه در صورتی که ولتاژ اندازه گیری شده کمتر از 0.2 ولت باشد, هر چهار LED خاموش هستند. در صورتی که ولتاژ اندازه گیری شده بین 0.2 تا 0.4 ولت باشد, LED1 که به پایه 13 برد اردوینو UNO متصل است روشن می شود. در صورتی که ولتاژ اندازه گیری شده بین 0.4 تا 0.6 ولت باشد, LED1 و LED2 روشن می شوند. در صورتی که ولتاژ بین 0.6 تا 0.8 ولت باشد, LED1 تا LED3 روشن می شوند. در صورتی که ولتاژ اندازه گیری شده بیشتر از 0.8 ولت باشد هر چهار LED روشن می شوند.
تغذیه پروژه بالا 5 ولت DC است که مثبت تغذیه با عبارت VCC مشخص شده و منفی تغذیه نیز با عبارت GND مشخص شده است. تغذیه پروژه را می توانید از خود برد اردوینو بگیرید, به این صورت که برد اردوینو را با استفاده از اداپتور راه اندازی کنید و از پایه های 5V و GND اردوینو برای تغذیه استفاده کنید.
برنامه اردوینو :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
////////// WWW.EMIC.IR ////////// void setup() { analogReference(INTERNAL); //اردوینو را روی داخلی تنظیم کرده ایم ADC توسط دستور روبرو ولتاژ رفرنس برای کار با واحد// pinMode(A0, INPUT); //اردوینو A0 ورودی کردن پایه// pinMode(13, OUTPUT); //خروجی کردن پایه 13 اردوینو// pinMode(12, OUTPUT); //خروجی کردن پایه 12 اردوینو// pinMode(11, OUTPUT); //خروجی کردن پایه 11 اردوینو// pinMode(10, OUTPUT); //خروجی کردن پایه 10 اردوینو// } void loop() { int A = 0; //برای استفاده در برنامه int تعریف متغیر از نوع// float V = 0; //برای استفاده در برنامه float تعریف متغیر از نوع// A = analogRead(A0); //می ریزد A برد اردوینو عددی بین 0 تا 1023 خوانده و درون متغیر A0 دستور روبرو با توجه به مقدار ولتاژ انالوگ روي پين// V = (A * 1.1) / 1023; //دستور روبرو عدد خوانده شده که بين 0 تا 1023 بود را به معادل ولتاژ ان در محدوده 0 تا 1.1 ولت تبديل مي کند// if (V <= 0.2) { //روبرو اجرا می شود if اگر ولتاژ اندازه گيري شده کمتر از 0.2 ولت بود دستورات درون شرط// digitalWrite(13, 0); //به ان متصل است برابر صفر می شود LED1 پایه 13 برد اردوینو که// digitalWrite(12, 0); //به ان متصل است برابر صفر می شود LED2 پایه 12 برد اردوینو که// digitalWrite(11, 0); //به ان متصل است برابر صفر می شود LED3 پایه 11 برد اردوینو که// digitalWrite(10, 0); //به ان متصل است برابر صفر می شود LED4 پایه 10 برد اردوینو که// } if ((V > 0.2) & (V <= 0.4)) { //روبرو اجرا می شود if اگر ولتاژ اندازه گيري شده بين 0.2 تا 0.4 ولت بود دستورات درون شرط// digitalWrite(13, 1); digitalWrite(12, 0); digitalWrite(11, 0); digitalWrite(10, 0); } if ((V > 0.4) & (V <= 0.6)) { //روبرو اجرا می شود if اگر ولتاژ اندازه گيري شده بين 0.4 تا 0.6 ولت بود دستورات درون شرط// digitalWrite(13, 1); digitalWrite(12, 1); digitalWrite(11, 0); digitalWrite(10, 0); } if ((V > 0.6) & (V <= 0.8)) { //روبرو اجرا می شود if اگر ولتاژ اندازه گيري شده بين 0.6 تا 0.8 ولت بود دستورات درون شرط// digitalWrite(13, 1); digitalWrite(12, 1); digitalWrite(11, 1); digitalWrite(10, 0); } if (V > 0.8) { //روبرو اجرا می شود if اگر ولتاژ اندازه گيري شده بيشتر از 0.8 ولت بود دستورات درون شرط// digitalWrite(13, 1); digitalWrite(12, 1); digitalWrite(11, 1); digitalWrite(10, 1); } } |
توضیحات قسمت های مهم برنامه نوشته شده, اگر سوالی داشتید می توانید در قسمت نظرات مطرح کنید. از انتهای مطلب نیز می توانید فایل های اردوینو و شبیه سازی پروتئوس برای این پروژه را دانلود کنید.
پسورد فایل زیپ : www.emic.ir
نظر یادتون نره…