کاربرد فاصله سنج
فاصله سنج ها کاربرد وسیعی در صنعت دارند به طور مثال در برخی از پروژه های آردوینو لازم داریم تا فاصله یک جسم را از یک مکان خاص اندازه گیری کنیم. همانند مسابقات رباتیک امدادگر که لازم است مداری برای ربات طراحی کنیم که توسط آن ربات بتواند میزان فاصله خود را با موانع مانند دیوارها را تشخیص دهد و قبل از برخورد با آن، اقدام مناسبی انجام دهد. همچنین در بسیاری از مراکز صنعتی و خطوط تولید کارخانه جات ها لازم است موانع قبل از برخورد با تجهیزات تشخیص داده شوند.
لیست قطعات مورد نیاز
برد آردوینو NANO با میکروکنترلر Atmega328 | 1 عدد |
ماژول فاصله سنج مادون قرمز GP2Y0A41SK | 1 عدد |
LCD کاراکتری مدل 16×2 با Backlighting آبی | 1 عدد |
ولوم 10kΩ | 1 عدد |
مقاومت 330 اهم با توان 0.25 وات و تلرانس 1 درصد | 1 عدد |
لامپ LED سبز سایز 5mm میلی متر مدل مات | 5 عدد |
رگولاتور ولتاژ 5 ولت L7805 | 1 عدد |
خازن عدسی 100nF نانوفاراد | 1 عدد |
خازن الکترولیتی 1000uf میکروفاراد 16 ولت | 1 عدد |
آداپتور 12V ولت 2A آمپر مدل بین راهی ساخت ایران | 1 عدد |
برد بورد (پروجکت برد) مدل GL | 1 عدد |
سیم جامپر برد بوردی مدل دو سر نری (سری 40تایی) | 1 عدد |
شرح عملکرد پروژه
در این پروژه از مبحث آموزش آردوینو ما با استفاده از یک ماژول فاصله سنج مادون قرمز GP2Y0A21 توسط برد آردوینو نانو Arduino NANO میزان فاصله را اندازه گیری می کنیم و سپس مقدار فاصله را بر روی یک LCD کاراکتری نمایش می دهیم. از دیگر ویژگی های این پروژه تعیین فاصله مجاز برای مدار است، که عملکرد این قسمت به این صورت می باشد که، کاربر می تواند توسط ولوم تعبیه شده در مدار پروژه یک فاصله مجاز برای برد آردوینو تعیین کند تا زمانیکه فاصله اندازه گیری شده تا جسم مقابل سنسور از فاصله تعیین شده کمتر شد، برد آردوینو لامپ LED تعبیه شده در مدار پروژه را روشن نماید. به این ترتیب با استفاده از این ویژگی کاربر می تواند هر زمان که جسمی از فاصله تعیین شده به سنسور نزدیکتر شد متوجه آن شود.
انواع فاصله سنج
با توجه به گسترش روز افزون تکنولوژی، امروزه شیوه های مختلفی برای اندازه گیری فاصله بدون استفاده از متر و تجهیزات فیزیکی و سنتی ابداع شده است، که هر کدام کاربردهای خاص خود را دارند و در شرایط مختلف استفاده می شوند. در زیر به سه نوع شیوه پر کاربرد اندازه گیری فاصله در صنایع الکترونیک اشاره شده است:
1- اندازه گیری فاصله و تشخیص موانع با ماژول های اولتراسونیک
2- اندازه گیری فاصله و تشخیص موانع با مادون قرمز
3- اندازه گیری فاصله و تشخیص موانع با لیزر
فاصله سنج مادون قرمز
همانطور که از نام این فاصله سنج پیداست، عملیات اندازه گیری فاصله در آن به واسطه سنسورهای فرستنده و گیرنده مادون قرمز انجام می شود. اگر بخواهیم شیوه اندازه گیری در این نوع فاصله سنج ها را به صورت خلاصه و مفید بگوییم، عملکرد آن به این صورت است که ابتدا توسط سنسور فرستنده، نور مادون قرمز به سمت جسم مورد نظر تابیده می شود، سپس با محاسبه مدت زمان دریافت نور بازتاب شده ار جسم مورد نظر توسط سنسور گیرنده مادون قرمز، مقدار فاصله بدست خواهد آمد.
از ویژگی های شیوه اندازه گیری فاصله به کمک مادون قرمز نسبت به سایر شیوه های اندازه گیری فاصله می توان به دقت اندازه گیری بالا و ارزان بودن آن اشاره نمود. و همچنین از معایب این شیوه اندازه گیری فاصله می توان به اندازه گیری فاصله کم اشاره کرد که معمولا در بیشتر مدل های آن کمتر از 2 متر است. که البته این موضوع یک امر طبیعی است، چراکه شدت تابش و بازتاب مفید نور مادون قرمز در محیط توسط یک لامپ LED IR معمولی بیشتر از آن نیست.
ماژول فاصله سنج مادون قرمز GP2Y0A21
ماژول GP2Y0A21 یک فاصله سنج بر پایه مادون قرمز می باشد که می تواند فاصله بین 10 الی 80 سانتی متر را با ثبات و دقت بالا اندازه گیری کند. این ماژول فاصله سنج محصول شرکت شارپ SHARP می باشد، که نسبت به سایر ماژول های مشابه خود دارای دقت اندازه گیری بالاتری می باشد. لازم به ذکر است ولتاژ تغذیه ماژول فاصله سنج GP2Y0A21 مقدار 5 ولت با جریان مصرفی بین 30 الی 50 میلی آمپر می باشد و همچنین مدت زمان پاسخگویی یا همان زمان لازم برای اندازه گیری فاصله 44 میلی ثانیه است.
ماژول مادون قرمز GP2Y0A21 دارای خروجی آنالوگ می باشد و از یک سنسور فرستنده و یک سنسور گیرنده مادون قرمز تشکیل شده است. در ماژول فاصله سنج GP2Y0A21 بسته به فاصله اندازه گیری شده، پایه خروجی آن بواسطه مدار داخلی ماژول یک ولتاژ متغییر بین 0 الی 5 ولت می گیرد که با اندازه گیری آن با برد آردوینو Arduino می توان به میزان فاصله پی برد.
نقشه شماتیک راه اندازی ماژول فاصله سنج GP2Y0A21
کدهای برنامه نویسی پروژه در نرم افزار آردوینو
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
#include <LiquidCrystal.h> LiquidCrystal lcd(8, 9, 10, 4, 5, 6, 7); //********************Basic settings const int pin_sensor = A0; const int pin_volom = A1; const int pin_led = A5; const int Sample_number = 200; const int contrast_display=100; const int backlight_display=255; //********************************** float distance; float sensor_value; int distance_error; void setup() { lcd.begin(16, 2); analogWrite(11, contrast_display); analogWrite(3, backlight_display); pinMode(pin_led, OUTPUT); lcd.clear(); lcd.setCursor(0, 0); lcd.print("*electronics 98*"); lcd.setCursor(0, 1); lcd.print (" GP2Y0A21 "); delay(2000); lcd.clear(); } void loop() { Sampling(); Setting(); if ( distance > 80 ) { lcd.clear (); lcd.print (" Out of range "); } else { lcd.setCursor(0, 0); lcd.print ("distnce:"); lcd.print (distance); lcd.print ("cm "); } lcd.setCursor(0, 1); lcd.print ("Volom:"); lcd.print (distance_error); lcd.print ("cm "); delay(200); } void Sampling() { distance = 0; sensor_value; for ( int ring = 0; ring < Sample_number; ring++ ) { sensor_value = analogRead (pin_sensor); sensor_value = pow (3027.4 / (float) sensor_value, 1.2134); distance = distance + sensor_value; } distance = distance / (float) Sample_number; } void Setting() { distance_error = analogRead(pin_volom); distance_error = map(distance_error, 0, 1023, 0, 80); if (distance <= distance_error) { digitalWrite(pin_led, HIGH); } else { digitalWrite(pin_led, LOW); } } |
سلام
از این سنسور شارپ برای مایعات هم میشه استفاده کرد ؟ دقتش خوبه ؟
سلام دوست عزیز
دقت سنسور خوبه اما باید توجه داشته باشید این سنسور بر اساس نور مادون قرمز کار می کنه پس در نتیجه نور روز یا نور مستقیم خورشید میتونه روی عملکرد اون تاثیر بگذاره، همچنین ما این سنسور را بر روی مایعات آزمایش نکرده ایم.
سلام میشه توضیحات خط های بعدی برنامه رو قرار بدید یا بفرستید برام ؟
سلام دوست عزیز
باتوجه به حجم سوالات و درخواست های زیاد دیگر دوستان که همه روزه برای ما ارسال می شود، در حال حاضر زمان کافی برای آموزش کدها و یا توسعه برنامه نداریم، برای درک کدها توصیه می کنیم قسمت آموزش برنامه نویسی آردوینو در سایت را دنبال کنید.