خانه » محاسبه مسافت توسط ماژول SRF04) SRF05) و آردوینو
آخرین بروز رسانی: 16 آذر 1401

محاسبه مسافت توسط ماژول SRF04) SRF05) و آردوینو

ماژول فاصله سنج اولتراسونیک SRF04 یا SRF05 (تفاوت این دو ماژول فقط در یک پایه خروجی دیجیتال اضافه out در ماژول SRF05 است) دارای یک جفت فرستنده-گیرنده فراصوت است که می تواند مانع پیش روی خود را تا فاصله حدود 4 متری تشخیص دهد. این ماژول کم مصرف (مناسب برای دستگاه های دارای باتری)، مقرون به صرفه و بسیار پرکاربرد در پروژه های الکترونیکی است.

اجزای مورد نیاز

شما به اجزای زیر نیاز دارید:

اولتراسوند چیست؟
اولتراسوند یک موج صوتی فرکانس بالا است که فرکانس آن از محدوده شنوایی انسان فراتر است.

انسان می تواند امواج صوتی را بشنود که در محدوده فرکانسی حدود ۲۰ هرتز (20 نوسان در ثانیه) تا ۲۰ کیلو هرتز باشد. در نتیجه، امواج فراصوت فرکانسی بیشتر از ۲۰ کیلو هرتز دارند و برای انسان قابل شنیدن نیستند.
بررسی سخت افزار SRF05
ماژول فاصله اولتراسونیک SRF05 در واقع از دو مبدل اولتراسونیک تشکیل شده است. یکی به عنوان فرستنده عمل می کند که سیگنال الکتریکی را به پالس های صوتی اولتراسونیک ۴۰ کیلوهرتز تبدیل می کند و دیگری به عنوان گیرنده عمل می کند و پالس های ارسالی را دریافت می کند. هنگامی که گیرنده این پالس ها را دریافت می کند، پالس خروجی تولید می کند که عرض آن متناسب با فاصله شی مقابلش است. این سنسور می تواند یک مانع روبروی خود را در فاصله 2 تا 400 سانتی متری تشخیص دهد. از آنجایی که این سیستم با ولتاژ ۵ ولت کار می کند، می تواند مستقیما به یک برد Arduino یا هر میکروکنترلر دیگری که در سطح منطقی 5 ولت کار می کند، متصل شود.
پایه های ماژول  آلتراسونیک SRF04 (مشابه SRF05)
پایه های ماژول التراسونیک در شکل زیر نمایش داده شده است:

پایه VCC : پایه تغذیه مثبت ماژول آلتراسونیک است که باید به ولتاژ ۵V منبع تغذیه یا پایه 5 ولت آردوینو خود متصل کنید.

پایه تریگر Trig: توسط این پایه فرستنده ماژول فعال شده و امواج فراصوت را ارسال می کند. برای فعال شدن این پایه توسط آردوینو یک پالس با عرض 10 میکروثانیه به این پایه باید اعمال شود.

پایه اکو Echo: زمانی که موج های فراصوت ارسال می شوند این پایه فعال می شود و تا زمانی که گیرنده سنسور موجی را دریافت نکند، فعال می ماند و بلافاصله پس از دریافت اولین موج غیر فعال می شود. با اندازه گیری زمان فعال بودن پایه اکو، می توان فاصله را محاسبه کرد.

پایه GND: پایه زمین مدار ماژول.

سنسور فاصله سنج اولتراسونیک SRF05 چگونه کار می کند؟

همه چیز زمانی شروع می شود که یک پالس با عرض 10 میکرو ثانیه به پایه تریگر ماژول اعمال شود. در پاسخ این پالس، این سنسور 8 موج فراصوت 40 کیلوهرتز را توسط فرستنده خود ارسال می کند. این الگوی ۸ پالسی به طور خاص طراحی شده است تا گیرنده بتواند پالس های ارسالی را از نویز اولتراسونیک محیط تشخیص دهد. این هشت پالس موج فراصوت در هوا از فرستنده دور می شوند. در همین حال پین اکو فعال می شود تا فرآیند دریافت موج برگشتی را آغاز کند. اگر این پالس ها به به سمت گیرنده منعکس نشوند، موج های ارسالی از بین می روند و پس از ۳۸ میلی ثانیه پایه اکو غیر فعال می شود. بنابراین پالس ۳۸ میلی ثانیه به ما نشان می دهد که هیچ مانعی باعث بازگشت موج ها نشده است.
اگر این پالس ها به سمت گیرنده منعکس شوند، پایه اکو به محض دریافت پالس موج ها غیر فعال می شود. این کار پالسی را بر روی پایه اکو ایجاد می کند که پهنای آن بسته به زمان صرف شده برای دریافت سیگنال از ۱۵۰ میکرو ثانیه تا ۲۵ میلی ثانیه متغیر است.
محاسبه فاصله
عرض پالس دریافتی برای محاسبه فاصله ماژول از شی ای که موج ها از آن بازتاب شده استفاده می شود. این کار را می توان با استفاده از معادله ساده فاصله – زمان که در دبیرستان یاد گرفتیم، انجام داد. یک راه آسان برای به خاطر سپردن معادله این است که حروف را در یک مثلث قرار دهیم.
با یک مثال فرمول را توضیح می دهیم. فرض کنید ما یک شی در مقابل سنسور در فاصله نامعلومی داریم و پالسی به عرض ۵۰۰ میکرو ثانیه را بر روی پایه اکو دریافت می کنیم. حالا اجازه دهید محاسبه کنیم که شی چقدر از سنسور فاصله دارد. برای این کار از معادله زیر استفاده خواهیم کرد.

Distance = Speed x Time

در اینجا ما مقدار زمان یعنی ۵۰۰ میکرو ثانیه را داریم و سرعت صوت را هم می دانیم. برای محاسبه فاصله باید سرعت صوت را به سانتی متر بر میکرو ثانیه تبدیل کنیم که ۰.۰۳۴ سانتی متر بر میکرو ثانیه می شود. با این اطلاعات اکنون می توانیم فاصله را محاسبه کنیم.

Distance = 0.034 cm/µs x 500 µs

اما هنوز کار تمام نشده است. به یاد داشته باشید که پالس موج فراصوت زمان لازم برای ارسال و بازتاب موج را نشان می دهد. بنابراین برای رسیدن به فاصله، باید نتیجه خود را به دو قسمت تقسیم کنید.

Distance = (0.034 cm/µs x 500 µs) / 2

Distance = 8.5 cm

حالا می دانیم که شی مورد نظر ۸.۵ سانتی متر با سنسور فاصله دارد.

نحوه اتصال ماژول SRF05 به آردوینو

اکنون که درک کاملی از نحوه عملکرد سنسور اولتراسونیک SRF05 داریم، می توانیم آن را به آردوینو متصل کنیم. اتصال SRF05 به آردوینو بسیار آسان است. با قرار دادن ماژول روی بردبورد خود شروع کنید. پایه VCC را به پایه ۵V روی برد آردوینو و پایه GND را به پایه زمین برد متصل کنید. همچنین پایه های تریگر و اکو را به ترتیب به پایه های دیجیتال ۹ و ۱۰ برد آردوینو متصل کنید. در نهایت باید اتصالاتی شبیه به تصویر زیر داشته باشید.

نصب کتابخانه

برای سهولت در راه اندازی و کدنویسی ماژول اولتراسونیک و اندازه گیری عرض پالس سیگنال می توانیم از کتابخانه های موجود در نرم افزار آردوینو استفاده کنیم. یکی از کتابخانه های پر طرفدار در این زمینه کتابخانه NewPing است. این کتابخانه ای است که ما در نمونه کدهای پروژه خود از آن استفاده خواهیم کرد. کتابخانه NewPing بسیار پیشرفته است و تا ۱۵ سنسور اولتراسونیک را به صورت هم زمان پشتیبانی می کند و می تواند خروجی محاسباتی فاصله توسط سنسور را به سانتی متر، اینچ یا عرض پالس به ما تحویل دهد. این کتابخانه بصورت پیش فرض در IDE آردوینو نصب نیست، بنابراین ابتدا باید آن را نصب کنید. برای نصب کتابخانه به مسیر Sketch > Include Libraries > Manage Libraries بروید.
در قسمت جستجو Library Manager خود کلمه newping را تایپ کنید. روی اولین کتابخانه کلیک کرده و سپس Install را انتخاب کنید.
نمونه کد آردوینو
در این نمونه کد از قسمت سریال مانیتور نرم افزار آردوینو برای نمایش فاصله اندازه گیری شده به واحد سانتی متر استفاده می کنیم. ابتدا کد زیر را بر روی برد خود آپلود کنید:
پس از اجرای برنامه، قسمت سریال مانیتور نرم افزار خود را باز کنید و نرخ باودریت را روی 9600bps تنظیم کنید. سعی کنید فرستنده-گیرنده ماژول را به سمت اجسامی که در اطراف شما قرار دارند نشانه بگیرید. باید مانند شکل زیر اعداد مقدار فاصله به سانتی متر نمایش پیدا کنند.
توضیح کد:
در ابتدای کد کتابخانه NewPing فراخوانی شده است.
"include "NewPing.h
در این قسمت پایه های آردوینو متصل به پایه های تریگر (Trig) و اکو (Echo) تعریف شده اند. همچنین یک عدد ثابت به نام MAX_DISTANCE تعریف کرده ایم. این عدد حداکثر فاصله را تعیین می کند که اگر داده های بیرون از این رنج دریافت شدند تابع کدنویسی شده مقدار no ping clear را برمی گرداند. مقدار MAX_DISTANCE در حال حاضر روی 400 [پیش‌فرض = 500 سانتی‌متر] تنظیم شده است.
define TRIGGER_PIN 9
define ECHO_PIN 10
define MAX_DISTANCE 400
پس از این، تابعی از کتابخانه NewPing به نام sonar ایجاد می شود.
;NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE)
همچنین جهت راه اندازی ارتباط سریال با PC را بادریت (نرخ ارسال اطلاعات) را مقداردهی اولیه می کنیم.
}()void setup
	;Serial.begin(9600)
{
در حلقه تکرار برنامه، ما به سادگی تابع ()ping_cm را فراخوانی می کنیم و نتیجه را بر روی قسمت سریال مانیتور چاپ می کنیم. این تابع فرآیند ارسال و دریافت موج فراصوت را مدیریت کرده و در نهایت فاصله را بر حسب سانتی متر برمی گرداند.
}()void loop
	;Serial.print("Distance = ")
	;Serial.print(sonar.ping_cm())
	;Serial.println(" cm")
	delay(500)
{
پروژه آردوینو – فاصله یاب فراصوت
بیایید یک پروژه دیگر ایجاد کنیم تا نشان دهیم که چگونه یک سنسور اولتراسونیک ساده را می توان به یک فاصله یاب کاربردی تبدیل کرد. در این پروژه ما از یک LCD کاراکتر 16×2 استفاده خواهیم کرد که یک نوار افقی را برای نشان دادن فاصله از جسم نمایش می دهد. نحوه اتصالات مدار پروژه در شکل زیر نمایش داده شده است.
نصب کتابخانه
قبل از آپلود کد و شروع کار با سنسور، باید کتابخانه ای به نام LCDBarGraph را نصب کنیم. این کتابخانه به ترسیم یک نوار افقی روی LCD کمک می کند، بطوریکه طول نوار نشان دهنده فاصله تا جسم است. برای نصب کتابخانه به Sketch > Include Libraries > Manage Libraries بروید و منتظر بمانید تا قسمت Library Manager لیست کتابخانه های موجود را به روز کند. جستجوی خود را با تایپ “lcdbargraph” فیلتر کنید. روی اولین کتابخانه کلیک کنید و سپس Install را انتخاب کنید.
کد آردوینو
پس از نصب کتابخانه، کد زیر را بروی برد خود آپلود کنید.
خروجی به شکل زیر خواهد بود:
توضیح کد:
در ابتدای کد، کتابخانه نمایشگر کاراکتری  را فراخوانی می کنیم. سپس پس نوشتن دستورات متداول تعریف نمایشگر کاراکتری، توسط دستور زیر سه پارامتر آخر دستور را تعریف می کنیم. پارامتر اول تعداد ستون Character در LCD است که برای پروژه ما عدد 16 می باشد و دو پارامتر آخر اختیاری هستند و امکان تعیین موقعیت سفارشی نوار را فراهم می کنند.
;LcdBarGraph lbg(&lcd, 16, 0, 1)
پس از محاسبه فاصله توسط سنسور، از تابع drawValue(value, maxValue) برای نمایش نمودار استفاده می کنیم که یک نمودار با مقادیر بین 0 و max_distance ترسیم می کند.
;lbg.drawValue(distance, max_distance)
محدودیت های استفاده از این ماژول چیست؟
سنسور اولتراسونیک SRF05 از نظر دقت و قابلیت کاربرد در پروژه های معمولی در مقایسه با سایر سنسورهای اولتراسونیک، ارزان قیمت و قابل راه اندازی آسان است. البته این بدان معنا نیست که سنسور SRF05 همیشه بدرستی کار می کند. برای استفاده از این ماژول باید موارد زیر را در نظر بگیرید. تصاویر زیر برخی از محدودیت های SRF05 را نشان می دهد:
  • فاصله بین سنسور و جسم / مانع بیشتر از 13 فوت یا 4 سانتی متر است.
  • سطح بازتابنده جسم در یک زاویه کم است به طوری که موج به حسگر منعکس نمی شود.
جسم خیلی کوچک است که باعث می شود مقدار کافی از موج فراصوت سنسور منعکس کند. همچنین، اگر سنسور SRF05 شما در پایین دستگاه شما نصب شده باشد، احتمالاً بازتاب موج از روی زمین را خواهید داشت که باعث ایجاد خطا می شود.
برخی از اجسام با سطوح نرم و نامنظم (مانند حیوانات عروسکی) صدا را به جای انعکاس آن جذب می کنند، بنابراین سنسور SRF05 ممکن است به سختی این اجسام را تشخیص دهد.
دسته‌بندی: آموزش آردوینو

مقالات مرتبط رو حتما ببینید

نظر شما برای ما با ارزشه

0 دیدگاه