- ابزارآلات و آهنربا
-
ابزارآلات
- ابزار اندازه گیری (مولتیمتر، کولیس و . . .)
- ابزار سوراخکاری (مته، سه نظام، چهار نظام، پنج نظام و . . .)
- ابزار و تجهیزات کار (پیچ گوشتی، انبردست، سیمچین، پنس و . . .)
- برد بورد، فیبر خام و سوراخدار (فیبر مدار چاپی و PCB)
- پیچ و اسپیسر (پیچ و مهره رباتیک و اسپیسر پلاستیکی و فلزی)
- سیم و کابل (سیم افشان، فلت، باندی، کابل شارژ، پرینتر، و . . .)
- لحیمکاری (هویه، نوک هویه، پایه هویه، سیم لحیم، روغن لحیم و . . . )
- منبع تغذیه، باتری و جاباتری (باتری قلمی، نیم قلمی، کتابی و . . . )
-
ابزارآلات
- برد هوشمند
- پرینتر سه بعدی
- رباتیک و پروازی
- ماژول
- قطعات الکترونیک
- کیت الکترونیکی و انواع جعبه
- موتور
- اصناف مختلف
آموزش راه اندازی ماژول فاصله سنج اولتراسونیک SRF04 با آردوینو
ارسال توسط
فروشگاه بهنام رباتیک
در تاریخ 2023/04/18
دیدگاهها برای آموزش راه اندازی ماژول فاصله سنج اولتراسونیک SRF04 با آردوینو بسته هستند
در این پروژه آردوینو از بلاگ بهنام رباتیک، میخواهیم نحوه راه اندازی ماژول فاصله سنج اولتراسونیک SRF04 با آردوینو را به شما آموزش دهیم.
فهرست مطالب
این ماژول میتواند اشیاء قرار گرفته تا فاصله تقریباً 4 متری را تشخیص دهد. یکی از چندین کاربرد SRF04 آن است که میتوانید آن را در ربات خود قرار دهید تا مانع از برخورد آن با دیوار یا موانع موجود در مسیر شوید.
موج اولتراسونیک چیست؟
موج اولتراسونیک صدای بسیار بلندی است که فرکانس آن برای سیستم شنوایی انسان بسیار بالاست و به همین دلیل نمیتوان آن را شنید.
انسانها میتوانند امواج صوتی را بشنوند که در رنج 20 تا 20000 هزار بار در ثانیه میلرزند. این در حالی است که امواج اولتراسونیک فرکانس بیش از 20000 هرتزی دارند و در نتیجه توسط انسانها قابل شنیدن نیستند.
آشنایی با ماژول اولتراسونیک SRF04
ماژول SRF04 دارای دو بخش اولتراسونیک است. یکی از آنها به عنوان فرستنده و مبدل سیگنالهای الکتریکی به پالسهای اولتراسونیکی 40 هرتزی و دیگری به عنوان گیرنده پالسهای ارسال شده فعالیت میکنند.
زمانی که گیرنده پالسها را دریافت میکند، پالس خروجی به وجود میآورد که عرض آنها نسبتاً با فاصله شیء قرار گرفته در اطراف به صورت نسبی محاسبه میشود.
این سنسور میتواند به صورت از راه دور، اشیاء قرار گرفته در فاصله تقریبی 2 سانتیمتری تا 4 متری را با دقت 3 میلیمتر تشخیص دهد.
از آن جایی که اس آر اف 04 برای فعالیت به ولتاژ 5 ولت نیاز دارد، میتوانید آن را مستقیماً به آردوینو و یا هر میکروکنترلر منطقی 5 ولتی وصل کنید.
مشخصات فنی ماژول اولتراسونیک SRF04
ابعاد |
45 × 20 × 15 میلیمتر |
ولتاژ کاری |
5 ولت DC |
جریان کاری |
15 میلیآمپر |
فرکانس کاری |
40 کیلوهرتز |
حداکثر فاصله پوشش |
4 متر |
حداقل فاصله پوشش |
2 سانتیمتر |
دقت فاصله پوشش |
3 میلیمتر |
زاویه اندازهگیری |
15 درجه |
محرک سیگنال ورودی |
TTL پالس 10 میکرو ثانیه |
آشنایی با پینهای ماژول فاصله سنج اولتراسونیک SRF04 با آردوینو
- VCC: تأمینکننده نیروی ماژول. امکان اتصال این پین به پین خروجی 5 ولت آردوینو وجود دارد.
- Trig (Trigger): محرک پالسهای امواج اولتراسونیک. با تنظیم این پین روی وضعیت HIGH و 10 میکرو ثانیه، سنسور امواج اولتراسونیک ارسال میکند.
- Echo: این پین فرستنده امواج اولتراسونیک را دریافت و در وضعیت High قرار میگیرد تا وقتی بازتاب به وجود آمد، وضعیت آن به حالت Low درآید. با بررسی زمان، Echo در وضعیت High قرار خواهد گرفت تا فاصله اندازهگیری شود.
- اتصال به زمین (GND): امکان اتصال به پین اتصال به زمین (GND) آردوینو.
لوازم مورد نیاز برای پروژه راه اندازی ماژول فاصله سنج اولتراسونیک SRF04 با آردوینو
ماژول اولتراسونیک SRF04 چگونه کار میکند؟
زمانی که پین محرک در وضعیت High و 10 میکرو ثانیه قرار میگیرد، فرآیند محاسبه مسافت آغاز میشود. در پاسخ، سنسور اس آر اف 04 تعداد هشت پالس 40 کیلوهرتزی را میفرستد. این تعداد پالس مشخصاً ایجاد شدهاند تا گیرنده بتواند پالسهای دریافتی را از نویزهای اولتراسونیک اطراف شناسایی کند.
پالسهای اولتراسونیک از طریق هوا به سمت فرستنده هدایت میشوند و در همین حال پین اکو به وضعیت High درمیآید تا سیگنال بازگشت اکو را تولید کند.
اگر پالسهای اولتراسونیک بازتاب نداشته باشند، پس از 38 میلیثانیه سیگنال اکو منقضی شده و وضعیت پین به حالت Low در خواهد آمد. بر این اساس، یک پالس 38 میلیثانیهای یعنی اینکه هیچ مانعی بین شیء و موج وجود ندارد.
در سمت دیگر، چنانچه پالسها بازگردانده شوند، پین اکو به محض دریافت سیگنال Low میشود. این اتفاق روی پین اکو پالس به وجود میآورد که عرض آنها با توجه به زمان دریافت سیگنال، بین 150 میکرو ثانیه تا 25 میلیثانیه خواهد بود.
محاسبه مسافت توسط ماژول اولتراسونیک SRF04
عرض پالس دریافتی بدین منظور استفاده میشود تا فاصله نسبت به شیء محاسبه گردد. میتوان نحوه فعالیت SRF04 را با استفاده از فرمول زیر متوجه شد.
سیمکشی مدار پروژه راه اندازی ماژول فاصله سنج اولتراسونیک SRF04 با آردوینو
حالا که تقریباً به صورت تمام و کمال با سنسور اولتراسونیک SRF04 آشنا شدهایم، میتوانیم پروژه راه اندازی ماژول فاصله سنج اولتراسونیک SRF04 با آردوینو را آغاز کنیم.
وصل کردن این ماژول به آردوینو بسیار آسان است. اول SRF04 را روی برد بورد بگذارید. سپس پین VCC را به پین 5 ولت آردوینو و پینهای اتصال به زمین (GND) را به یکدیگر وصل کنید. اینک پینهای محرک (trig) و اکو (echo) را به ترتیب به پینهای شماره 9 و 10 آردوینو بزنید.
زمانی که سیمکشی پروژه راه اندازی ماژول فاصله سنج اولتراسونیک SRF04 با آردوینو به پایان رسید، مدار شما باید چیزی شبیه تصویر زیر باشد.
نصب کتابخانه برای پروژه راه اندازی ماژول فاصله سنج اولتراسونیک SRF04 با آردوینو
تحریک کردن سنسور اولتراسونیک و اندازهگیری سیگنال پالس دریافتی به صورت دستی بسیار زمانبر است اما خوشبختانه کتابخانههای زیادی برای انجام این کار وجود دارند. یکی از محبوبترین آنها، کتابخانه NewPing است.
کتابخانه NewPing بسیار پیشرفته است به طوری که در لحظه توانایی پشتیبانی از 15 سنسور اولتراسونیک را دارد و میتواند خروجیها بر حسب سانتیمتر، اینچ و یا بازههای زمانی مختلف ارائه کند.
این کتابخانه در نرمافزار Arduino IDE وجود ندارد بنابراین باید خودتان آن را نصب کنید.
برای انجام این کار ابتدا به مسیر Sketch> Include Libraries… بروید. سپس منتظر Library Manager بمانید تا کتابخانه را دانلود و لیست کتابخانههای نصب شده را آپدیت کند.
جستجوی خود را با نوشتن newping فیلتر کنید. اینک روی اولین مورد یافت شده کلیک نمایید تا کتابخانه نصب شود.
کدهای پروژه راه اندازی ماژول فاصله سنج اولتراسونیک SRF04 با آردوینو
در ادامه کدهایی را میبینید که با استفاده از مانیتور سریال، فاصله اندازهگیری شده را بر حسب سانتیمتر ارائه میکنند.
// Include NewPing Library
#include "NewPing.h"
// Hook up HC-SR04 with Trig to Arduino Pin 9, Echo to Arduino pin 10
#define TRIGGER_PIN 9
#define ECHO_PIN 10
// Maximum distance we want to ping for (in centimeters).
#define MAX_DISTANCE 400
// NewPing setup of pins and maximum distance.
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("Distance = ");
Serial.print(sonar.ping_cm());
Serial.println(" cm");
delay(500);
}
زمانی که کدهای داده شده در نرمافزار آردوینو آپلود شدند، باد ریت را روی 9600bpm تنظیم کنید. اینک اشیاء مختلفی را به سمت سنسور بگیرید تا فاصله آنها را ببینید.
توضیحات کد پروژه راه اندازی ماژول فاصله سنج اولتراسونیک SRF04 با آردوینو
این کدها با معرفی کتابخانه تازه نصب شده NewPing آغاز میشوند.
#include "NewPing.h"
اولین پینهای آردوینو نیز نشان داده شدهاند تا به ما بگویند که پینهای محرک و اکو SRF04 به کجا وصل هستند. در اینجا همچنین، یک مقدار به نام Max_Distance ایجاد شده تا بیشترین فاصلهای که سنسور میتواند تشخیص دهد، اعلام گردد. در واقع اشیایی که خارج از رنج پوششی سنسور قرار میگیرند، پینگ دریافت نمیکنند یا اصطلاحاً 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);
در قسمت Setup، ارتباط سریال با رایانه شروع میشود.
void setup() {
Serial.begin(9600);
}
در بخش Loop، تابع ping_cm() ایجاد و نتیجه روی سریال مانیتور پخش میشود. این تابع یک پینگ میفرستد و فاصله را بر حسب سانتیمتر نشان میدهد.
void loop() {
Serial.print("Distance = ");
Serial.print(sonar.ping_cm());
Serial.println(" cm");
delay(500);
}
سایر توابع کاربردی در کتابخانه NewPing
در ادامه میتوانید برخی توابع کاربردی موجود در کتابخانه NewPing را مشاهده کنید و با آنها آشنا شوید.
کدهایی که در قسمت قبل ارائه کردیم، فاصله را بر حسب سانتیمتر مشخص میکنند. اگر میخواهید نتیجه بر حسب اینچ باشد، از تابع sonar.ping_in() استفاده کنید.
Serial.print(sonar.ping_in());
کد بالایی فاصله را گرد کرده و به صورت عددی صحیح نشان میدهد. چنانچه میخواهید نتیجه به شکل یک عدد اعشاری باشد، میتوانید به جای حالت فاصلهای، از حالت مدتدار کتابخانه NewPing استفاده کنید. برای انجام این کار کد زیر را حذف نمایید:
Serial.print(sonar.ping_cm());
و به جای آن کد زیر را قرار دهید:
Serial.print((sonar.ping() / 2) * 0.0343);
در این کتابخانه روشی به نام ping_median(iterations) وجود دارد تا دقت سنسور SRF04 را افزایش دهد. این روش چندین شیوه اندازهگیری را به کار میگیرد، دادههای مربوط به اشیاء قرار گرفته خارج از رنج را کنار میگذارد و از اطلاعات کسب شده میانگین میگیرد. به صورت پیشفرض، این کتابخانه 5 نوع داده ذخیره میکند ولی شما میتوانید تعداد آنها را زیاد کنید.
int iterations = 5;
Serial.print((sonar.ping_median(iterations) / 2) * 0.0343);
راه اندازی ماژول فاصله سنج اولتراسونیک SRF04 با آردوینو با حالت 3-Wire
زمانی که پینهای دیجیتالی I/O محدودی در آردوینو دارید، میتوانید از حالت 3 سیمه (3-Wire) بهره ببرید. معمولاً وقتی SRF04 را به آردوینو وصل میکنید، به دو پین I/O نیاز خواهید داشت ولی در حالت 3-Wire، تنها به یک پین I/O نیاز دارید.
در این حالت فقط از یک پین I/O به عنوان ورودی و خروجی استفاده میشود. این اتفاق شدنی است زیرا پینهای اکو و محرک به صورت همزمان به کار نمیروند.
در ادامه تصویری را میبینید که نحوه سیمکشی مدار پروژه راه اندازی ماژول فاصله سنج اولتراسونیک SRF04 با آردوینو در حالت 3 سیمه را نشان میدهد.
تمام کاری که باید انجام دهید این است که پینهای اکو و محرک را به پین دیجیتالی شماره 9 آردوینو بزنید و در کدها همین پین را به عنوان برای مقادیر انتخاب کنید. سایر قسمتهای کدنویسی تفاوتی نکردهاند.
#define TRIGGER_PIN 9 // Trigger and Echo both on pin 9
#define ECHO_PIN 9
محدودیتهای استفاده از سنسور فاصلهسنج SRF04
اس آر اف 04 از نظر دقت و ثبات، در مقایسه با سایر حسگرهای اولتراسونیک ارزان قیمت، سنسور بینظیری است اما این به معنای کارآمد بودن آن در همه شرایط نیست. تصاویر زیر محدودیتهای سنسور SRF04 را نشان میدهند:
فاصله بین شیء و سنسور بیش از 4 متر یا 13 فوت
وجود سطح بازتابنده با زاویه تند بر روی شیء و عدم برگشت به سمت سنسور
کوچک بودن شیء و ناتوانی در بازگرداندن امواج
وجود اشیاء نرم بین سنسور و شیء و ناتوانی سنسور در دریافت امواج