عکس پیش‌فرض نوشته

در این مطلب به بررسی ماژول SRF05 و SRF04 خواهیم پرداخت و در نهایت ارتباط آن را با ماژول Arduino برقرار می کنیم و برنامه ای ارائه می کنیم که بتوان فواصل را با آن سنجید.
 
فاصله سنج با Arduino
 

ماژول SRF04

با این ماژول، حداقل فواصل 1 سانتی متر و حداکثر 4 متر را می توان اندازه گیری کرد.

ولتاژ کاری آن 5 ولت و دارای چهار پایه به نام های GND , VCC , Trig , Echo است.

برای راه اندازی آن باید پایه GND به منفی و VCC به مثبت 5 ولت وصل شود و دو پایه Trig و Echo نیز به میکرو متصل شوند.

نحوه کار این ماژول به این صورت است که ابتدا باید یک پالس 10 میکروثانیه به پایه Trig اعمال کرد و بلافاصله پالسی که از پایه Echo دریافت می شود را بررسی کرد. مقدار عدد دریافتی از پایه Echo با توجه به فاصله مانع با ماژول بین اعداد 58 تا 23200 است که با توجه به دیتاشیت این ماژول باید این عدد تقسیم بر 58 شود تا فاصله بر حسب سانتی متر بدست آید.

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

اعدادی که ماژول به ما می دهد در حقیقت زمان رفت و برگشت صوت می باشد حال اگر مانع نزدیک ماژول باشد این زمان کمتر و هرچه دورتر باشد این زمان بیشتر می شود.

ماژول SRF05

مشخصات این ماژول همانند ماژول SRF04 است با این تفاوت که یک پایه اضافی به نام OUT دارد.

این ماژول در دو مدکاری، کار می کند.

مد اول مشابه ماژول SRF04 است. برای راه اندازی ماژول در این مد باید پایه OUT را به هیچ جا متصل نکنید.

مد دوم به این صورت است که ما برای ارسال و دریافت پالس از پایه Trig استفاده می کنیم. در این حالت باید پایه OUT به زمین و پایه Echo آزاد باشد.

 

برنامه فاصله سنج با Arduino

حال برنامه ای برای تست و ارتباط این ماژول ها با ماژول Arduino می نویسیم.

برای این کار ما از ماژول Arduino UNO و ماژول SRF05 استفاده کرده ایم.

همانطور که گفته شد برای اتصال SRF05 به Arduino در مد اول، پایه OUT را آزاد می گذاریم و پایه Trig را به پایه 2 و پایه Echo را به پایه 3 ماژول Arduino وصل می کنیم.

 

#define Trigpin 2
#define Echopin 3
void setup() {
  Serial.begin(9600);
  pinMode(Trigpin,OUTPUT);//Trig
  pinMode(Echopin,INPUT);//Echo
}
void loop() {
  digitalWrite(Trigpin,HIGH);
  delayMicroseconds(10);
  digitalWrite(Trigpin,LOW);
  int distanc=pulseIn(Echopin,HIGH);
  distanc=distanc/58;
  Serial.println(distanc);
  delay(100);
}

 

توضیحات برنامه:

خط اول و دوم مشخص کردن پایه های Trig و Echo

خط چهارم تعریف پورت سریال

خط پنجم و ششم تعیین خروجی و ورودی بودن پایه های ماژول Arduino

خط 9 و 10 و 11 ایجاد پالس بر روی پایه Trig

خط 12 خواندن مقدار پالس دریافتی از پایه Echo

خط 13 تقسیم عدد پالس ورودی به عدد 58

خط 14 ارسال فاصله به پورت سریال