فهرست
- آشنایی با ماژول فاصلهسنج SR-04
– معرفی
– نحوهی کارکرد سنسور
– مشخصات فنی - قطعات مورد نیاز
- نحوهی اتصالات
- کد در آردوینو
آشنایی با ماژول فاصلهسنج SR-04
– معرفی
HC-SR04 سنسوری مقرون به صرفه با کاربری آسان است که برای اندازه گیری فاصله در بازهی 2 تا 400 سانتی متر به کار میرود. این سنسور که از دو مبدل اولتراسونیک تشکیل شده است از روشی غیر تماسی برای تعیین فاصلهی بین سنسور و اشیا استفاده میکند. یکی از مبدلهای آن فرستندهای است که پالسهای صوتی اولتراسونیک را تولید و ارسال میکند و دیگری گیرندهای است که به امواج بازتابی گوش میدهد. این ماژول در واقع یک SONAR است که از نمونهی پیشرفتهی آن در زیردریاییها برای تشخیص اشیاء زیر آب استفاده میشود.
– نحوهی کارکرد سنسور
این سنسور مشابه شیوهی حرکتی و تشخیص موانع خفاشها که بر اساس اصل مداخله است کار میکند. این عملکرد شامل دو مؤلفه اصلی است: یکی فرستنده اولتراسونیک و دیگری گیرنده اولتراسونیک. فرستنده، امواج اولتراسونیک را که از طریق هوا حرکت میکند منتشر میکند. اگر این امواج در مسیر خود با یک شیء روبرو شوند، آنها به عقب بازگردانده شده و توسط گیرنده شناسایی میشوند. با اندازه گیری زمان رفت و برگشت سیگنال ارسالی و سرعت موج صوتی سنسور میتواند فاصله را محاسبه کند.
سنسور دارای 4 پین است. پینهای VCC و GND که به پایههای 5 ولت و GND تغذیه وصل میشوند و پینهای Trig و Echo که به هر پایه دیجیتالی (میکروکنترلر، آردوینو و …) میتوانند وصل شوند. با استفاده از پین Trig ما امواج اولتراسوند را از طریق فرستنده ارسال می کنیم و با پین Echo به سیگنال بازتابی گوش می دهیم.
برای تولید موج فراصوتی باید پین Trig به مدت 10 میکروثانیه روی حالت High تنظیم شود. در این وضعیت یک موج اولتراسونیک 8 سیکلی ارسال میشود که با سرعت صوت حرکت میکند. پینهای اکو بلافاصله پس از ارسال موج اولتراسونیک High شده و شروع به گوش دادن میکند و منتظر میماند تا موج ارسالی از یک شی منعکس شود. اگر جسم یا پالس بازتابی وجود نداشته باشد، پین اکو پس از 38 میلیثانیه تایم اوت میشود و به حالت Low باز میگردد.
اگر قبل از این بازهی زمانی یک پالس بازتابی دریافت کنیم، پین اکو زودتر Low میشود. با توجه به مدت زمانی که پین اکو HIGH بود، میتوانیم مسافتی را که موج صوتی طی کرده است را اندازهگیری و در نتیجه فاصله سنسور تا جسم را تعیین کنیم.
برای این منظور از فرمول زیر برای محاسبه فاصله استفاده میکنیم:
Distance = (Speed × Time) / 2
فاصله = (سرعت × زمان) / 2
در این رابطه ما هم مقدارسرعت را میدانیم و هم زمان را. زمان مدتی است که پین اکو HIGH بوده است و سرعت، سرعت صوت است که 340 متر بر ثانیه است. یک مرحله اضافی وجود دارد که باید انجام دهیم، و آن تقسیم نتیجه نهایی بر 2 است. و زیرا زمانی که اندازهگیری شده مربوط به مدت زمانی است که موج صوتی به سمت جسم حرکت کرده و بعد از برخورد برگشته است.
به عنوان مثال، فرض کنید پین Echo به مدت 2 میلی ثانیه HIGH بود. اگر بخواهیم فاصله را بر حسب سانتی متر بدست آوریم، می توانیم سرعت صوت را از 340 متر بر ثانیه به 34 سانتی متر بر ثانیه تبدیل کنیم.
Distance = (Speed × Time) / 2 = (34cm/ms × 1.5ms) / 2 = 25.5cm.
بنابراین، اگر پین Echo برای 2 میلیثانیه HIGH بود، فاصله سنسور تا جسم 25.5 سانتیمتر است.
– مشخصات فنی
ولتاژ عملیاتی | 5V DC |
جریان مصرفی | 15mA |
فرکانس کاری | 40KHz |
کمترین بازهی اندازهگیری | 2cm |
بیشترین بازهی اندازهگیری | 400cm |
دقت | 3mm |
زاویه اندازهگیری | <15° |
ابعاد ماژول | 45 |
قطعات مورد نیاز
- آردوینو UNO
- سنسور فاصلهسنج HC SR-04
- برد برد
- سیم جامپر (سیم بردبردی)
نحوهی اتصالات
مطابق شکل زیر اتصالات را انجام دهید:
پایههای VCC و GND ماژول باید به ترتیب به پایهی 5 ولتی و GND روی برد آردوینو وصل شود. پایههای Trig و Echo به هر پایهی دیجیتال I/O در برد Arduino میتوانند متصل شوند. در این پروژه، این پینها به ترتیب به پایههای 9 و 10 از آردوینو متصل شدهاند.
کد در آردوینو
در ادامه یک نمونه کد آردوینو برای استفاده از سنسور اولتراسونیک HC-SR04 با آردوینو Uno آورده شده است.
// HC-SR04 Ultrasonic Sensor
const int trigPin = 9; // Trig pin connected to Arduino digital pin 9
const int echoPin = 10; // Echo pin connected to Arduino digital pin 10
// Variables for calculating distance
long duration; // Time taken for the ultrasonic waves to return
int distance; // Calculated distance in centimeters
void setup() {
// Initialize serial communication
Serial.begin(9600);
// Set trigPin as an output and echoPin as an input
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
// Trigger the sensor by sending a 10 microsecond pulse
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Measure the duration of the echo pulse
duration = pulseIn(echoPin, HIGH);
// Calculate the distance in centimeters
distance = duration * 0.034 / 2;
// Display the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Add a delay before the next measurement
delay(1000);
}
در این کد با توجه به اتصالات، پین Trig و پین Echo را به ترتیب به پایههای دیجیتال 9 و 10 تعریف شده است.
تابع ()setup برای مقداردهی اولیه ارتباط سریال و تنظیم حالتهای پین استفاده می شود.
در تابع ()loop، سنسور را با ارسال یک پالس فعال میکنیم.
سپس مدت زمان پالس اکو را با استفاده از ()pulseIn اندازهگیری میکنیم، فاصله را با استفاده از سرعت صدا محاسبه می کنیم و نتیجه را در مانیتور سریال نمایش می دهیم.
این کد را در آردوینو Uno خود آپلود کرده و مانیتور پورت سریال را با باودریت (Baud Rate) 9600 باز کنید تا فاصله اندازه گیری شده را بر حسب سانتی متر مشاهده کنید. تأخیر در تابع ()loop را میتوانی مطابق با فرکانس اندازه گیری دلخواه خود تنظیم کنید.
توجه
در صورتی که در راهاندازی این پروژه نیاز به راهنمایی بیشتر دارید، در قسمت دیدگاه مطرح کنید.
بدون دیدگاه