فهرست مطالب
هدف از این آموزش راه اندازی واحد ADC با ماژول GP2D12 و سنجش مسافت، به زبان برنامه نویسی C توسط مجموعه آموزشی AVR WIZARD میباشد. ( شما میتوانید مقادیر سنسورهای آنالوگ مشابه را به این روش بخوانید. )
قطعات مورد نیاز:
- برد اصلی AVR WIZARD
- برد ROBO SHIELD
- LCD2X16
- ماژول GP2D12
- تغذیه 9 ولت
عملکرد سنسور های مادون قرمز شارپ
برای اندازه گیری فاصله تا یک شیء سنسورهای نوری وجود دارد که با استفاده از روش اندازه گیری مثلث فاصله را می دهند. شرکت “شارپ” متداول ترین سنسور های طول موج مادون قرمز را برای سنجش مسافت با خروجی آنالوگ تولید میکند. سنسورهای ساخته شده توسط “شارپ” دارای IR LED مجهز به لنز هستند که پرتوهای نور باریکی را ساطع می کنند. پس از بازتاب از جسم ، پرتو از طریق لنز دوم بر روی یک آشکارساز حساس موقعیت (PSD) هدایت می شود. ضریب هدایت این PSD بستگی به موقعیتی دارد که پرتو بر آن می نشیند. سپس رسانایی پرتو (ضریب هدایت) به ولتاژ تبدیل می شود که اگر ولتاژ با استفاده از مبدل آنالوگ به دیجیتال، تبدیل شود ، می توان فاصله را محاسبه کرد.
خروجی سنسورهای فاصله “شارپ” با ولتاژ خروجی، این بدان معنی است که با افزایش فاصله ، خروجی کاهش می یابد (به تدریج کاهش می یابد). نمودار دقیق رابطه بین فاصله و خروجی معمولاً در برگه اطلاعات سنسور قرار دارد. همه سنسورها محدوده اندازه گیری خاص خود را دارند که نتایج اندازه گیری شده معتبر است و این دامنه به نوع سنسور بستگی دارد. حداکثر فاصله اندازه گیری شده توسط سنسور به دو جنبه محدود شده است: کاهش میزان نور منعکس شده و عدم توانایی PSD در ثبت تغییرات کوچک محل اشعه منعکس شده. هنگام اندازه گیری اشیاء که خیلی دور هستند ، خروجی تقریباً همان اندازه است که در هنگام اندازه گیری اشیاء در حداکثر فاصله وجود دارد. حداقل فاصله به دلیل خاصیت سنسورهای Sharp به یک مقدار مشخصی محدود شده است ، به این معنی که در یک نقطه خاص بسیار نزدیک ، به دلیل فاصله ( بسته به مدل 4-20 سانتی متر ) به شدت کاهش می یابد.
سنسور سنجش مسافت GP2D12
سنسور GP2D12 دارای دامنه اندازه گیری 10 تا 80سانتی متر است. ولتاژ خروجی این سنسور بسته به فاصله اندازه گیری شده ، حداکثر 0.3- to (VCC + 0.3) است. سنسور فاصله را می توان به هر کانال ADC مبدل آنالوگ-دیجیتال متصل کرد.
نحوه اتصال سنسور GP2D12 به برد SENSOR SHIELD از مجموعه آموزشی AVR WIZARD
در برد شیلد ربات موسوم به ROBO SHIELD از مجموعه آموزشی AVR WIZARD کافی است سنسور GP2D12 مورد نظر را به سوکت مربوطه اتصال دهیم.
نحوه برنامه نویسی سنسور GP2D12
نوشتن برنامه ای که ولتاژ خروجی سنسورهای مسافت را اندازه گیری کند ، آسان است ، اما نکته مهم ، تبدیل این ولتاژ خروجی به فاصله است.
در دیتاشیت این سنسور نمودار رابطه بین ولتاژ خروجی آن و فاصله اندازه گیری شده است. این نمودار یک نمودار خطی نیست ، با این حال نمودار مقادیر معکوس ولتاژ و فاصله خروجی تقریباً خطی است ، و از این طریق می توان فرمول تبدیل ولتاژ را به مسافت پیدا کرد.
همچنین با استفاده از نرم افزار متلب میتواند معادله منحنی داده شده در دیتاشیت سنسور را بدست آورد.
در ادامه نحوه محاسبه مسافت با سنسور GP2D12 را در تابع MAIN مشاهده می کنید:
#include
#include
// Alphanumeric LCD functions
#include
#include
#include
#include
int timer_ovf=0;
float distance=0.0;
char dist_str[20];
// Declare your global variables here
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
timer_ovf++;
TCNT0=0;
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRA=(0<450)
{
//lcd_clear();
lcd_gotoxy(0,1);
lcd_putsf(" ");
lcd_gotoxy(0,1);
lcd_putsf("Out of Range");
delay_ms(500);
}
else
{
//sprintf(dist_str,"Distance = %3.1f cm",distance);
ftoa(distance,1,dist_str);
lcd_gotoxy(0,1);
lcd_putsf("Distance:");
lcd_gotoxy(9,1);
lcd_puts(dist_str);
lcd_gotoxy(14,1);
lcd_putsf("cm");
delay_ms(1000);
lcd_gotoxy(9,1);
lcd_putsf(" ");
}
}
}