آموزش اتصال و راه اندازی سنسور اولتراسونیک HC-SR04 به میکروکنترلر AVR

آموزش اتصال و راه اندازی سنسور اولتراسونیک HC-SR04 به میکروکنترلر AVR ، در دنیای مدرن الکترونیک، سنسورها چشم و گوش دستگاههای ما هستند. همانطور که انسان بدون چشم نمیتواند فاصلهها را بسنجد، رباتها هم بدون سنسور قادر به درک محیط اطراف نیستند. یکی از پرکاربردترین سنسورها در حوزهی رباتیک و اتوماسیون، سنسورهای اولتراسونیک (Ultrasonic Sensors) هستند.
وقتی میخواهید یک ربات مسیریاب بسازید یا یک سیستم هشدار پارک خودرو طراحی کنید، اولین گزینهای که به ذهن میرسد، ماژول HC-SR04 است. علت هم روشن است: قیمت پایین، سهولت راهاندازی، و دقت مناسب.
در این مقاله، علاوه بر توضیح اصول کار و نحوهی اتصال، به کدنویسی با AVR، نکات تجربی در پروژههای واقعی، و حتی مشکلات رایج خواهیم پرداخت.
اصول کار سنسور HC-SR04
سنسور HC-SR04 دو بخش اصلی دارد:
- فرستنده (Transmitter) → موج فراصوتی با فرکانس 40kHz ارسال میکند.
- گیرنده (Receiver) → منتظر بازگشت موج است.
این فرآیند درست شبیه کاری است که خفاشها در تاریکی انجام میدهند: صدا تولید میکنند، به بازتاب گوش میدهند و فاصله تا مانع را محاسبه میکنند.
فرمول محاسبه فاصله
زمان رفت و برگشت موج فراصوت (بر حسب میکروثانیه) بهوسیلهی سنسور اندازهگیری میشود. چون سرعت صوت در هوا در دمای 25 درجه حدود 343 متر بر ثانیه است، فرمول تبدیل زمان به فاصله به صورت زیر است:
به بیان ساده:
- اگر زمان Echo = 1160 میکروثانیه باشد → فاصله ≈ 20 سانتیمتر
مشخصات فنی HC-SR04
- ولتاژ کاری: 5 ولت
- جریان مصرفی: کمتر از 15 میلیآمپر
- برد اندازهگیری: 2 سانتیمتر تا 400 سانتیمتر
- دقت: حدود 3 میلیمتر
- زاویه پوشش: حدود 15 درجه
پایهها
- VCC → +5V
- GND → زمین
- TRIG → پایه تحریک (ورودی پالس از میکروکنترلر)
- ECHO → پایه خروجی (پالس زمان بازگشت)
چرا از AVR استفاده کنیم؟
میکروکنترلرهای AVR (مثل ATmega16، ATmega32 یا ATmega8) به دلیل ویژگیهای زیر بسیار مناسباند:
- سازگاری کامل با ولتاژ 5 ولت (همولتاژ با HC-SR04)
- دارا بودن تایمرهای دقیق برای اندازهگیری زمان پالس
- منابع آموزشی فراوان
- سادگی کدنویسی در AVR-GCC
مدار اتصال سنسور به AVR
اتصالات پایهای:
- VCC → 5V میکروکنترلر
- GND → GND مشترک
- TRIG → خروجی دیجیتال (مثلاً PORTB0)
- ECHO → ورودی تایمر (مثلاً INT0 یا ICP1)
نکتهی امنیتی:
اگر به جای AVR از بردهایی مثل STM32 (3.3V) یا Arduino Due استفاده کنید، باید یک مقاومت کاهنده ولتاژ (Voltage Divider) برای پایه Echo در نظر بگیرید.
مراحل برنامهنویسی در AVR
- ارسال پالس Trigger
- پایه TRIG را به مدت 10 میکروثانیه High کنید.
- دریافت پالس Echo
- زمانی که موج بازگردد، پایه Echo High میشود.
- اندازهگیری زمان High بودن Echo
- با استفاده از تایمر (Timer/Counter) در AVR.
- محاسبه فاصله با فرمول
- تبدیل زمان به فاصله و نمایش آن.
نمونه کد AVR (به زبان C)
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
void trigger_pulse() {
PORTB |= (1<<PB0); // TRIG = High
_delay_us(10); // 10 میکروثانیه
PORTB &= ~(1<<PB0); // TRIG = Low
}
uint16_t measure_distance() {
uint16_t count;
trigger_pulse();
while(!(PINB & (1<<PB1))); // صبر برای شروع Echo
TCNT1 = 0;
TCCR1B |= (1<<CS11); // prescaler = 8
while(PINB & (1<<PB1)); // تا پایان پالس
TCCR1B = 0;
count = TCNT1;
return (count/58); // فاصله بر حسب سانتیمتر
}
int main(void) {
DDRB |= (1<<PB0); // TRIG خروجی
DDRB &= ~(1<<PB1); // ECHO ورودی
uint16_t distance;
while(1) {
distance = measure_distance();
_delay_ms(500);
}
}
کاربردهای عملی
- سیستم پارک خودرو: نمایشگر فاصله روی داشبورد
- ربات اجتناب از مانع: جلوگیری از برخورد با اجسام
- اندازهگیری سطح مایع: در مخازن و تانکها
- اتوماسیون صنعتی: تشخیص موقعیت قطعات در خط تولید
- خانه هوشمند: باز و بسته شدن خودکار دربها
مشکلات رایج و راهحلها
- خطا در اجسام نرم (مثل پارچه یا اسفنج)
- استفاده از سنسور IR مکمل
- نویز محیطی (کارخانهها یا محیط باز)
- اعمال فیلتر نرمافزاری (میانگینگیری چند نمونه)
- زاویه محدود (15 درجه)
- استفاده از چند سنسور با چینش زاویهای
سوالات متداول (FAQ)
بله، اما باد و رطوبت میتوانند خطا ایجاد کنند.
حدود 2 سانتیمتر؛ کمتر از این محدوده سنسور دچار خطا میشود.
خیر؛ برای مایعات باید از سنسورهای اولتراسونیک ضدآب (مانند مدل JSN-SR04T) استفاده کرد.
چند بار نمونهبرداری و میانگینگیری
استفاده از تایمر دقیقتر در AVR
کالیبره کردن بر اساس دما و فشار محیط
نتیجهگیری
سنسور HC-SR04 یکی از سادهترین و در عین حال قدرتمندترین ابزارها برای اندازهگیری فاصله است. اتصال آن به میکروکنترلر AVR باعث میشود بتوانید پروژههای متنوعی از رباتیک گرفته تا سیستمهای صنعتی طراحی کنید.
اگر تازهکار هستید، همین پروژهی سادهی اندازهگیری فاصله، میتواند شروع خوبی برای ورود به دنیای اتوماسیون و هوش رباتیک باشد. پیشنهاد میکنم بعد از یادگیری اصول اولیه، دادههای سنسور را روی LCD کاراکتری نمایش دهید یا از طریق UART به کامپیوتر ارسال کنید تا پروژهتان حرفهایتر شود.
اگر این مقاله آموزش اتصال و راه اندازی سنسور اولتراسونیک HC-SR04 به میکروکنترلر AVR برای شما مفید بود، آن را با دوستان خود به اشتراک بگذارید و برای مشاهده آموزشهای بیشتر به سایت ما سر بزنید.
مطلب پیشنهادی
اموزش برنامه نویسی تایمر دیجیتال ساده با میکروکنترلر AVR
دیدگاههای محترمانه: لطفاً نظرات خود را با رعایت احترام به دیگران و به صورت محترمانه ارسال کنید. از بهکار بردن زبان توهینآمیز، تهدیدآمیز یا نژادپرستانه خودداری کنید.
حفظ حریم خصوصی: از درج اطلاعات شخصی خود یا دیگران مانند شماره تماس، آدرس و هرگونه اطلاعات حساس خودداری کنید.
محتوای تبلیغاتی: ارسال دیدگاههای تبلیغاتی، لینکهای خارجی یا هر نوع محتوای تجاری که مرتبط با موضوع نباشد، ممنوع است.
موافقت با قوانین: با ارسال دیدگاه خود، شما تأیید میکنید که قوانین فوق را خوانده و با آنها موافقید. تیم ما حق دارد نظرات غیرمجاز را حذف کند.
پروژه های پیشنهادی
پروژه ریموت کنترل کدلرن حرفه ای
مشاهده پروژهپروژه امپلی فایر صوتی استریو با TDA2030
مشاهده پروژهپروژه قفل دیجیتال با ماژول RFID RC522
مشاهده پروژه