خانه / پروژه / avr / راه اندازی ماژول فاصله سنج SRF05 با میکرو کنترلر AVR

راه اندازی ماژول فاصله سنج SRF05 با میکرو کنترلر AVR

راه اندازی ماژول فاصله سنج SRF05 با میکرو کنترلر AVR

Ultrasonic distance sensor

مقدمه

حتما همه واژه التراسونیک را شنیده ایم. سنسورهایی که با امواج التراسونیک کار می کنند ، کاربردهای بسیاری در صنعت دارند. یکی از کاربردهای التراسونیک تشخیص فاصله است. در بسیاری از پروژه ها نیاز به دانستن فاصله با دقت میلیمتری هستیم. برای مثال در کاربردهایی نظیر سنجش ارتفاع آب ، فاصله دو جسم از یکدیگر ، سنسورهای دنده عقب خودرو و … از این سنسورها استفاده می شود.


التراسونیک چیست ؟

کلمه آلتراسونیک Ultrasonic  به معنای مافوق صوت است. محدوده فرکانس شنوایی انسان 20 هرتز تا 20 هزار هرتز است. محدوده فرکانسی امواج مافوق صوت 40 کیلو هرتز تا چندین مگا هرتز می‌باشد. امواج مافوق، کاربردهای فراوانی از جمله در لیزر، تخلیه الکتریکی برای بهبود خواص سطحی و افزایش نرخ باربرداری، سنجش فاصله، عمق مخزن، شستشوی دقیق ظروف آزمایشگاهی، تعیین فشار خون بیمار، همگن کردن مواد مذاب، جوشکاری مواد غیر هم جنس، ریخته گری، تراشکاری، فرزکاری، سوراخکاری و غیره دارد.


حسگرهای آلتراسونیک

برای استفاده از امواج فرا صوت از حسگرهایی استفاده می‌شود که این حسگرها بر اساس محدوده فرکانسی خود به دو دسته صنعتی و غیر صنعتی تقسیم بندی می‌شوند. حسگرهای فرا صوت غیر صنعتی در محدوده فرکانسی 40 کیلو هرتز و حسگرهای صنعتی در حد مگا هرتز هستند. حسگرهای آلتراسونیک معمولا دارای یک فرستنده و یک گیرنده آلتراسونیک هستند. امواج فرستاده شده از حسگر پس از برخورد با یک مانع به حسگر بر می‌گردند و توسط گیرنده حسگر دریافت می‌شوند. از این طریق و با در نظر گرفتن زمان بازگشت موج و کیفیت امواج بازتابی می‌توان به اطلاعاتی راجع به عمق، نوع و سرعت مانع به دست آورد. حسگرهای فرا صوت مزیت‌های فراوانی دارند مانند نویز پذیری کم، استفاده در شرایط نوری مختلف و…
امواج فرا صوت همانند امواج دیگر خواص شکست، پراش، بازتاب و عبور دارند. این امواج به سه روش مکانیکی، مغناطیسی و الکتریکی ایجاد می‌شوند.


معرفی ماژول فاصله سنج SRF05

SRF05 یک فاصله سنج التراسونیک بوده و با استفاده از این ماژول قادر خواهید بود فاصله دقیق یک مانع  را مشخص نمایید. این ماژول به نوعی مدل تکامل یافته SRF04 است. در این ماژول انعطاف طراحی بالا رفته و برد مفید فاصله سنجی ارتقاء یافته است. SRF05 با SRF04 کاملا تطابق داشته و برد آن از 3 متر به 4 متر افزایش یافته است. برای صرفه جویی در پایه های I/O ی میکروکنترلر یا هر سیستم میزبان دیگر امکان جدیدی در SRF05 تعریف شده است. در این حالت میتوانید از طریق یک پایه پالس تریگر را ارسال و سیگنال اکو را دریافت کنید.

 

 

ویژگی های ماژول SRF05

ولتاژ کاری: 5VDC
جریان مصرفی استاتیک:  <2mA
زاویه سنسور: <15 درجه
سیگنال خروجی: سیگنال فرکانس الکتریکی high level 5V, low level 0V
مسافت قابل سنجش:  2cm تا 450cm
دقت : 2mm
سیگنال تریگر ورودی: 10us TTL  ایمپالس
سیگنال اکو: خروجی سیگنال TTL PWL
عملکرد ماژول SRF05

ترتیب قرار گرفتن پایه های این ماژول همان طور که از روی تصویر مشخص می باشد از قرار زیر است:

VCC
TRIG
ECHO
OUT
GND
تغذیه این ماژول +۵ ولت می باشد و برای راه اندازی این ماژول باید پایه های TRIG و ECHO به میکروکنترلر وصل شود و عملکرد این پایه ها از قرار زیر می باشد.

 

 

ابتدا باید یک پالس با طول حداقل ۱۰ میکرو ثانیه به پایه TRIG اعمال شود. ماژول به صورت اتوماتیک ۸ عدد پالس با فرکانس ۴۰ کیلو هرتز ارسال میکند. وقتی که پالس ها ارسال شد پایه ECHO یک میشه و تا زمانی که برگشت پالس ها از جسم را دریافت نکند این پایه یک باقی میماند. پس با اندازه گیری مدت زمانی که این پایه در سطح منطقی ۱ بوده است میتوان زمان رفت و برگشت صوت را بدست آورد. برای اندازه گیری پالس روی پایه ECHO باید از تایمر استفاده کرد. بعد از اطلاع از زمان رفت و برگشت سیگنال اولتراسونیک با استفاده از رابطه زیر فاصله سنسور تا مانع به راحتی محاسبه می شود.

نکته: سرعت صوت در شرایط آب و هوایی مختلف، متفاوت است به صورت پیش فرض میتوان سرعت صورت را ۳۴۰ متر در ثانیه لحاظ کرد.

شبیه سازی ماژول SRF05 در پروتئوس

توضیح سخت افزار : سخت افزار این پروژه را در نرم افزار پروتئوس به صورت فوق رسم کردیم. یک LCD کاراکتری 2 در 16 برای نمایش مسافت در نظر گرفتیم. پایه های تریگر و اکو از ماژول SRF05 نیز به ترتیب به پایه های PD.0 و PD.1 متصل شده اند. پایه های Vcc و GND ماژول نیز به Vcc و GND میکرو وصل هستند.

برنامه میکروکنترلر :

;include &lt;mega32.h&gt#
;include &lt;delay.h&gt#
;include &lt;stdio.h&gt3 #
;include &lt;alcd.h&gt#

;int timer
;float d = 0.0
;[char str[20

}(interrupt [TIM0_OVF] void timer0_ovf_isr(void
;= TCNT0
;++timer
{
(void main(void)
}
;PORTD=0x00
;DDRD=0x01
Timer/Counter 0 initialization//
Clock source: System Clock//
Clock value: 1000.000 kH//

 Mode: Normal top=0xFF//
OC0 output: Disconnected//
;TCCR0=0x02
;=TCNT0

Timer(s)/Counter(s) Interrupt(s) initialization//
;TIMSK=0x01
Alphanumeric LCD initialization//
Connections specified in the//
Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu//
0 RS – PORTA Bit//

1 RD – PORTA Bit //
EN – PORTA Bit 2//
D4 – PORTA Bit 4//
D5 – PORTA Bit 5//
D6 – PORTA Bit 6//
D7 – PORTA Bit 7//
Characters/line: 16//
; (lcd_init(16
Global enable interrupts//
(“asm(“sei#
(while (1
}
;PORTD.=1
;( delay_us(20
; =.PORTD
;( ==while(PINC.1
;=timer
;=TCNT0
;TCCR0=0x02
; (while(PINC.1 == 1
;TCCR0=0x00
}  (  if (timer*256.0+TCNT0&gt;30000.0
;(  )lcd_clear
;( ,) lcd_gotoxy
;(” lcd_puts(“no contact
{
else
}
;=d
;d=((timer*256.0+TCNT0)*1.7)+100
; ( ) lcd_clear
; ( sprintf(str,”d = %3.1f cm”,d)
;(lcd_puts(str
;( delay_ms(150
{

   {

{

توضیح عملکرد برنامه :

یک متغیر تایمر از نوع int تعریف کردیم که هر بار که تایمر پر می شود ( از 0 تا 255 ) ، یک واحد به آن اضافه می گردد. با توجه به اینکه فرکانس کاری تایمر استفاده شده 1Mhz است ، بنابراین اضافه شدن شمارنده تایمر 1us طول می کشد. بنابراین برای تعیین کل زمان عملکرد تایمر از فرمول زیر استفاده می کنیم که در آن فاصله بر حسب متر بدست می آید و T نیز از رابطه زیر آن بدست می آید.
یعنی زمان کل بر حسب میکروثانیه برابر است با مقدار کنونی عدد شمارش شده در تایمر صفر ( TCNT0 ) به اضافه ی تعداد مرتبه هایی که تایمر پر شده است ( timer ) ضربدر 256 میکروثانیه .

سپس برنامه این مقدار را رویLCD نشان می دهد و دوباره کار را از سر میگیرد.

elecguide.ir

همچنین ببینید

راه اندازی lcd

راه اندازی LCDکاراکتری

راه اندازی LCDکاراکتری: در این پروژه از lcd کاراکتری 16 بیتی استفاده شده است.برای اطلاعات …

یک دیدگاه

  1. سلام.خواستم بابت وبسایت خوبتون ازتون تشکر کنم و امیدوارم باعث ایجاد انگیزه براتون بشه

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *