فهرست مطالب
هدف از این آموزش راه اندازی ماژول آلتراسونیک SR-04 و سنجش مسافت، به زبان برنامه نویسی C توسط مجموعه آموزشی AVR WIZARD میباشد .
قطعات مورد نیاز:
آلتراسونیک
کلمه آلتراسونیک Ultrasonic به معنای مافوق صوت است. محدوده فرکانس شنوایی انسان 20 هرتز تا 20 هزار هرتز است. محدوده فرکانسی امواج مافوق صوت 40 کیلو هرتز تا چندین مگا هرتز میباشد. امواج مافوق، کاربردهای فراوانی از جمله در لیزر، تخلیه الکتریکی برای بهبود خواص سطحی و افزایش نرخ باربرداری، سنجش فاصله، عمق مخزن، شستشوی دقیق ظروف آزمایشگاهی، تعیین فشار خون بیمار، همگن کردن مواد مذاب، جوشکاری مواد غیر هم جنس، ریخته گری، تراشکاری، فرزکاری، سوراخکاری و غیره دارد. برای استفاده از امواج فرا صوت از حسگرهایی استفاده میشود که این حسگرها بر اساس محدوده فرکانسی خود به دو دسته صنعتی و غیر صنعتی تقسیم بندی میشوند. حسگرهای فرا صوت غیر صنعتی در محدوده فرکانسی 40 کیلو هرتز و حسگرهای صنعتی در حد مگا هرتز هستند. حسگرهای آلتراسونیک معمولا دارای یک فرستنده و یک گیرنده آلتراسونیک هستند. امواج فرستاده شده از حسگر پس از برخورد با یک مانع به حسگر بر میگردند و توسط گیرنده حسگر دریافت میشوند. از این طریق و با در نظر گرفتن زمان بازگشت موج و کیفیت امواج بازتابی میتوان به اطلاعاتی راجع به عمق، نوع و سرعت مانع به دست آورد. حسگرهای فرا صوت مزیتهای فراوانی دارند مانند نویز پذیری کم، استفاده در شرایط نوری مختلف و…
سنسور HC-SR04 Ultrasonic
سنسور HC-SR04 Ultrasonic دارای 4 پین به نام های Vcc ، Trigger ، Echo و Ground می باشدکه برای اندازه گیری دقیق فاصله بسیار مفید است و به طور عمده روی امواج صوتی کار می کند.
بعد از اتصال ماژول به 5 ولت ، سنسور با استفاده از پین Trig شروع به انتقال امواج صوتی از طریق هوا کرده و به جسم مورد نظر ضربه می زنند. این امواج از جسم پرتاب و منتشر می شوند و سپس توسط پین Echo گیرنده ماژول دریافت می شوند.
نحوه اتصال سنسور HC-SR04 Ultrasonic به برد SENSOR SHIELD از مجموعه آموزشی AVR WIZARD
در برد شیلد ربات موسوم به ROBO SHIELD از مجموعه آموزشی AVR WIZARD کافی است سنسور التراسونیک مورد نظر را (HC-04 یا HC-05) در سوکت مربوطه قرار دهیم.
نحوه برنامه نویسی سنسور HC-SR04 Ultrasonic
برای تولید موج باید پین Trig را به مدت 10 میکرو ثانیه در حالت High قرار دهید. این موج شامل 8 سیکل صوتی که با سرعت صوت حرکت می کند می باشد که بازخورد آن در پین اکو دریافت می شود. پین اکو مدت زمانی را که موج صوتی طی کرده است، به میکرو ثانیه زمان می گیرد.
به عنوان مثال ، اگر جسم از سنسور 10 سانتی متر فاصله داشته باشد ، و سرعت صدا 340 متر بر ثانیه یا 0.034 cm / µs باشد ، موج صوتی باید در حدود 294 u ثانیه حرکت کند. اما آنچه از پین اکو دریافت خواهید کرد ، دو برابر خواهد بود زیرا موج صوتی یکبار مسیر را به جلو حرکت کرده و بار دیگر همان مسیر را برمی گردد. بنابراین برای بدست آوردن فاصله به سانتی متر ، باید مقدار زمان محاسبه شده از پین اکو را با 0.034 ضرب کرده و آن را به 2 تقسیم کنیم.
در ادامه نحوه محاسبه مسافت با سنسور آلتراسونیک را در تابع MAIN مشاهده می کنید:
#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
// 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(" ");
}
}
}