در این مقاله، هدف ما این است که نحوهی کار ماژول فاصله سنج شارپ GP2Y0A21YK0F و راه اندازی آن با آردوینو را یاد بگیرید و با نمونه کدی که در این مقاله برای شما قرار دادهایم، کار با این سنسور را شروع کنید. پس تا انتهای مقاله را حتما بخوانید.
سنسور فاصله سنج مادون قرمز GP2Y0A21YK0F چیست؟
حتما شما هم رباتهای خودرانی را که میتوانند بدون برخورد به اشیاء محیط حرکت کنند، دیدهاید. اما فک میکنید چگونه همچین قابلیتی را میتوانیم به یک ربات اضافه کنیم؟
جواب این سوال سنسور مادون قرمز شارپ GP2Y0A21YK0F است.
سنسور شارپ GP2Y0A21YK0F ، یک سنسور فاصله سنج مادون قرمز با برد 10 – 80 سانتیمتر است که استفاده از آن بسیار آسان میباشد.
در صورتیکه به دنبال یک سنسور فاصلهسنج مقرون به صرفهتر یا ضد آب هستید میتوانید سنسور فاصله سنج آلتراسونیک HC-SR04 یا سنسور JSN-SR04T را نیز بررسی کنید. اگر میخواهید با سنسور فاصله سنج آلتراسونیک HC-SR04 هم بیشتر آشنا شوید، حتما مقاله زیر را مطالعه کنید.
آشنایی با سنسور فاصله سنج آلتراسونیک SR04 و راه اندازی آن با آردوینو
یک ماژول فاصله سنج مادون قرمز چگونه کار میکند؟
یک سنسور فاصله سنج مادون قرمز برای اندازهگیری فاصلهی یک جسم، یک پرتو نور مادون قرمز ارسال میکند و از پرتو بازتاب شده از جسم استفاده خواهد کرد تا فاصله آن را تشخیص دهد. فاصله جسم با تشکیل مثلثی از پرتو نور مادون قرمز محاسبه میشود.
سنسور فاصله سنج مادون قرمز متشکل از یک ال ای دی مادون قرمز (IR LED) و یک آشکارساز نور یا PSD (دستگاه حسگر موقعیت) میباشد. زمانی که پرتو نور مادون قرمز توسط یک جسم بازتاب میشود، پرتو بازتاب شده به آشکارساز نور خواهد رسید و اصطلاحاً یک “نقطهی نوری” بر روی PSD تشکیل خواهد شد.
زمانیکه موقعیت جسم تغییر میکند، زاویهی پرتو مادون قرمز بازتاب شده و موقعیت نقطهی روی PSD نیز تغییر میکند. به نقاط A و B در تصویر زیر دقت کنید:
سنسور فاصله سنج مادون قرمز، یک مدار پردازشگر سیگنال درونی دارد. این مدار موقعیت نقطهی نوری روی PSD را پردازش میکند تا موقعیت (فاصله) از جسم بازتابنده را تعیین کند. در واقع این مدار یک سیگنال آنالوگ را که به موقعیت جسم مقابل سنسور بستگی دارد، به عنوان خروجی تولید میکند.
در بخش بعدی چگونگی خواندن سنسور را یاد خواهید گرفت.
چگونه خروجی یک سنسور فاصلهسنج مادون قرمز را بخوانیم؟
خروجی سنسورهای فاصله سنج مادون قرمز، یک سیگنال آنالوگ است که بسته به فاصلهی میان سنسور و جسم تغییر میکند. ولتاژ خروجی ماژول فاصله سنج شارپ GP2Y0A21YK0F را میتوانید در دیتاشیت آن مشاهده کنید. این ولتاژ از 2.3 ولت، زمانی که یک جسم در فاصلهی 10 سانتیمتری قرار دارد تا 0.4 ولت، زمانیکه جسم در فاصلهی 80 سانتیمتری قرار دارد، متغیر است.
در نمودار زیر میتوانید ببینید که چرا محدودهی تشخیص سنسور از 10 سانتیمتر آغاز میشود. توجه داشته باشید که ولتاژ خروجی جسمی که در فاصلهی 2 سانتیمتری قرار دارد، مشابه ولتاژ خروجی جسمی است که در فاصلهی 28 سانتیمتری قرار دارد. بنابراین، ناحیهی تشخیص قابل استفاده، تقریباً پس از قله نمودار، در 10 سانتیمتری یا 2.3 ولت آغاز میشود.
علاوه بر مورد ذکر شده، نمودار بالا مشکل این سنسورها را نیز نشان میدهد. مشکل این سنسورها، پاسخ غیرخطی آنها است، به این معنا که یک تغییر بزرگ در ولتاژ خروجی، همواره باعث یک تغییر بزرگ در رنج اندازهگیری نمیشود. برای تعیین فاصلهی بین سنسور و یک جسم، باید تابعی را پیدا کنید که ولتاژ خروجی را به برد سنسور تبدیل کند.
Distance (cm) = 29.988 X POW(Volt , -1.173)
این تابع در کتابخانهی SharpIR استفاده شده است که در ادامه از آن استفاده خواهیم کرد. توجه داشته باشید که این تابع تنها براساس اطلاعات دیتاشیت SHARP است. ویژگیهای خروجی سنسور در انواع مختلف آن، کمی متفاوت خواهد بود، به همین دلیل، ممکن است دادههای نادرستی دریافت کنید.
اگر میخواهید دقت دادههایتان را افزایش دهید، میتوانید اندازهگیری و رسم نقاط دادهی بسیاری را در اکسل امتحان کنید و یک منحنی از طریق این نقاط بهدست آورید. زمانیکه یک تابع جدید برای سنسور خودتان به دست آوردید، لازم است تا فرمول استفاده شده در فایل SharpIR.cpp را تغییر دهید.
ویژگیهای ماژول فاصله سنج مادون قرمز شارپ GP2Y0A21YK0F
4.5to 5.5 V | Operating voltage |
30mA | Operating current |
80 to 10 cm | Measuring range |
Analog | Output type |
29.5x 13 x 13.5 mm | Dimensions |
2x 3.2 mm, 37 mm spacing | Mounting holes |
سیمکشی – راه اندازی ماژول فاصله سنج مادون قرمز شارپ GP2Y0A21YK0F با آردوینو
تا این بخش باید بهخوبی با سنسور فاصله سنج شارپ آشنا شده باشید. اگر این چنین است، بیایید راه اندازی آن را شروع کنیم.
قطعات سختافزاری برای این پروژه:
- سنسور فاصله سنج مادون قرمز SHARP GP2Y0A21YK0F
- برد آردوینو UNO
- بردبورد 840 سوراخ
- سیمهای جامپر 20سانتیمتری (10 عدد)
- خازن 220 میکروفاراد ( یا بیشتر)
- کابل USB نوع A/B
نرم افزار این پروژه:
- Arduino IDE
به کمک تصویر زیر میتوانید راه اندازی ماژول فاصله سنج مادون قرمز شارپ GP2Y0A21YK0F با آردوینو را انجام دهید:
این نوع سنسورهای فاصله، کمی نویز میگیرند. بنابراین توصیه شده است که بین VCC و GND یک خازن قرار دهید. در دیتاشیت این سنسورها، یک خازن 10 میکروفاراد یا بیشتر پیشنهاد شده است (در این مقاله از 220 میکروفاراد استفاده کردیم).
همانطور که در شکل بالا میبینید، باید پایهی مثبت خازن را به Vcc و پایهی منفی آن را به GND متصل کنید. معمولا برروی خازنهای الکترولیتی خطی وجود دارد که پایه منفی را مشخص میکند. پایهی مثبت نیز معمولاً بلندتر از پایهی منفی است.
اتصالات سنسور فاصله سنج شارپ GP2Y0A21YK0F
GP2Y0A21YK0F | Arduino |
---|---|
A0 | 1 (Yellow) |
GND | 2 (Black) |
5V | 3 (Red) |
اگر سنسور فاصله سنج شما دارای سیمهایی با رنگهای متفاوت است، پایههای آن را با تصویر زیر تطبیق دهید. پایه V0 به پایهی آنالوگ آردوینو متصل میشود.
پس از اینکه سیمکشی سنسور خود را انجام دادید، زمان بارگذاری کد است که در ادامه نمونه کدی را باهم بررسی خواهیم کرد.
نصب کتابخانهی آردوینو SharoIR
کتابخانه SharpIR که توسط Guillaume Rico و Thibaut Mauon نوشته شده، کار با سنسورهای فاصلهسنج مادون قرمز SHARP را آسانتر میکند. این کتابخانه شامل فرمولهای مورد نیاز برای تبدیل ولتاژ خروجی اندازهگیری شده به فاصله برحسب سانتیمتر میباشد. در حال حاضر این کتابخانه از سنسورهای زیر پشتیبانی میکند:
GP2Y0A0YK0F , GP2Y0A21YK0F , GP2Y0A710K0F و GP2YA41SK0F .
آخرین نسخه کتابخانه را میتوانید از لینک زیر دانلود کنید:
پس از نصب کتابخانه، از مسیر Sketch > Include Library > Add .ZIP Library در Arduino IDE میتوانید آن را نصب نمائید.
نویسندهی کتابخانه اظهار کرده است که دادههای سنسور میتوانند تا حدودی نوسان داشته باشند. این کتابخانه این مشکل را با گرفتن چندین داده پشت سر هم، حذف دادههای پرت و محاسبهی میانگین دادههای باقیمانده برای دستیابی به دادههای پایدارتر حل میکند. در حال حاضر، این کتابخانه میانگین 25 داده را محاسبه میکند که حدوداً 53 میلیثانیه طول میکشد.
کد نمونه برای راه اندازی ماژول فاصله سنج مادون قرمز شارپ GP2Y0A21YK0F با آردوینو
از کد زیر میتوانید همراه با سنسور شارپ GP2Y0A21YK0F استفاده کنید و فاصلهی اندازهگیری شده را بر حسب سانتیمتر در سریال مانیتور نمایش دهید.
/*SHARP GP2Y0A21YK0F IR distance sensor with Arduino and SharpIR library example code. More info: https://www.makerguides.com */
// Include the library:
#include <SharpIR.h>
// Define model and input pin:
#define IRPin A0
#define model 1080
// Create variable to store the distance:
int distance_cm;
/* Model :
GP2Y0A02YK0F --> 20150
GP2Y0A21YK0F --> 1080
GP2Y0A710K0F --> 100500
GP2YA41SK0F --> 430
*/
// Create a new instance of the SharpIR class:
SharpIR mySensor = SharpIR(IRPin, model);
void setup() {
// Begin serial communication at a baudrate of 9600:
Serial.begin(9600);
}
void loop() {
// Get a distance measurement and store it as distance_cm:
distance_cm = mySensor.distance();
// Print the measured distance to the serial monitor:
Serial.print("Mean distance: ");
Serial.print(distance_cm);
Serial.println(" cm");
delay(1000);
}
توجه داشته باشید که در این مثال، سنسور را ‘mySensor’ نامیدهایم. اگر قصد استفاده از چندین سنسور فاصله سنج مادون قرمز را داشته باشید، میتوانید شیء دیگری، با نام متفاوتی برای سنسور تعریف کنید. مانند:
SharpIR mySensor2 = SharpIR(IRPin2, model);
لازم به ذکر است که در این حالت، شما میتوانید از پایهی ورودی متفاوتی برای دومین سنسور استفاده کنید.
اکنون باید بتوانید خروجی زیر را در سریال مانیتور مشاهده کنید. (برای باز کردن سریال مانیتور میتوانید از کلیدهای ترکیبی Ctrl+Shift+M استفاده کنید).
حرف آخر
در این مقاله، نحوهی عملکرد ماژول فاصله سنج شارپ GP2Y0A21YK0F و نحوهی راه اندازی آن با آردوینو را برای شما شرح دادیم. امیدواریم این مقاله بتواند برای شما آموزنده و کاربردی باشد.
اگر این پروژه را انجام دادید، حتما از تجربیات خود برای ما بنویسید و اگر به کمکی نیاز داشتید، باز هم میتوانید در بخش دیدگاه آن را برای ما شرح دهید.