قطعات الکترونیک مدارهای الکترونیک پروژه های آردوینو

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

راه اندازی ماژول hc-sr04 با استفاده از آردوینو
نوشته شده توسط علیرضا قربانی

به نام خدا

دراین مطلب قصد داریم ب آموزش راه اندازی ماژل آلتراسونیک HC-SR04 با استفاده از آردوینو Uno بپردازیم.با  دیجی اسپارک همراه باشید

ماژول HC-SR04 یک فاصله سنج آلتراسونیک بوده که فادر است فاصله ۲cm تا ۴۰۰cm  را با دقت ۳میلی متر بدون تماس با اجسام اندازه گیری کند.

 

سخت افزار مورد نیاز

آردوینو Uno

ماژول فاصله سنج hc-sr04

 

ویژگی ها:

ولتاژ کاری ۵ ولت

فرکانس ۴۰Hz

زاویه قابل اندازه گیری ۱۵ درجه

سیگنال تریگر ورودی ۱۰ میکرو ثانیه است.
سیگنال Echo: سیگنال خروجی TTL PWL

برای راه اندازی ماژول فاصله سنج HC-SR04   ابتدا باید یک پالس به زمان ۱۰ میکروثانیه به پایه تریگر اعمال کنیم. سپس شروع به دریافت پالس از پین echo  میکنیم.(به زبان ساده تر،شروع به شمارش زمان تغییر وضعیت پین echo از وضعیت ۱ منطقی به صفر منطقی میکنیم.)

طول پالس دریافتی بین ۱۰۰ میکروثانیه  و ۱۸ میلی ثانیه می باشد.اگر پالس دریافتی در محدوده ی ۳۶ میلی ثانیه و یا  بیشتر باشد بدین معنی است که در مقابل ماژول مانعی وجود ندارد.

آموزش راه اندازی ماژول آلتراسونیک hc-sr04 با استفاده از آردوینو

پس از محاسبه زمان برای بدست آوردن فاصله تا شی  بر حسب سانتی متر باید زمان محاسبه شده  را بر ۵۸ و بر حسب اینچ باید بر ۱۴۸ تقسیم کنیم.(این اعداد در دیتاشیت ماژول ارائه شده است)

ممکن است سوال پیش بیاید که  عدد ۵۸ از چه طریقی بدست آورده شده  است.؟!

هنگامی که طول پالس دریافتی را محاسبه کردیم  باید این عدد را در سرعت صوت در هوا ضرب کنیم ( و اگر امواج در آب فرستاده میشدند بایددر سرعت صوت در آب  ضرب کنیم) و سپس بر ۲ تقسیم کنیم( زیرا موج مسیر رفت و برگشت را طی میکند)

راه اندازی ماژول hc-SR04 با استفاده از arduino

T زمان محاسبه شده می باشد

 

کدهای برنامه

#include <LiquidCrystal.h>
LiquidCrystal lcd (6, 7, 8, 9, 10, 11, 12);
#define triger 2
#define echo 3
double duration = 0;
double distance = 0;
void setup()
{
 Serial.begin(9600);
 pinMode(2, OUTPUT);
 pinMode(3, INPUT);
 lcd.begin(16, 2);
}
void loop()
{
 delayMicroseconds(2);
 digitalWrite(triger , LOW );
 delayMicroseconds(10);
 digitalWrite(triger , HIGH);
 duration = pulseIn(echo , HIGH);
 distance = (duration / (58));
 lcd.print("distance:");
 Serial.println(distance);
 lcd.print(distance);
 lcd.print("cm");
 delay(500);
 lcd.clear();
}

 

تابع pulseIn  زمان پالس اعمل شده به پین  echo را بر حسب میکروثانیه  محاسبه میکند.

فرم کلی این تابع به صورت زیر می باشد.

pulseIn(pin, value)
pulseIn(pin, value, timeout)

برای مثال اگر مقدار value برابر high باشد ، تابع منتظر می ماند  تا پین مورد نظر ۱ منطقی شود  ، سپس شروع به شمارش زمان میکند و هنگامی که این پین دوباره به وضعیت ۰ منطقی تغییر کرد ، شمارش را متوقف میکند و مقدار زمان محاسبه شده را بر حسب میکرو ثانیه بر میگرداند.

برای دانلود کد ها اینجا کلیک کنید

 

فیلم راه اندازی ماژول hc-sr04

[advanced_iframe securitykey=”e3ac59a02708b32a0e36dd27eecce7b410abc919″   src=”http://www.aparat.com/video/video/embed/videohash/aXQie/vt/frame” allowFullScreen=”true” webkitallowfullscreen=”true” mozallowfullscreen=”true” height=”360″ width=”640″” ]

درباره نویسنده

علیرضا قربانی

علیرضا قربانی هستم دانشجوی مهندسی پزشکی. چیزهای خیلی زیادی رو در دنیا دوست دارم. یک گیک هستم و یشه گفت یک هکر. نه به معنی دزدی پسورد و ایمیل مردم. به معنی عشق به دونستن و عشق به تحقیق درباره خیلی از چیزهایی که می بینم و می‌شنوم. اگر بخوام علاقه‌مندی‌ درجه یکم رو نام ببرم میتونم بگم برنامه نویسی و بعد از اون امبدد سیستم ها.

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۳ دیدگاه

  • با سلام و خسته نباشید.یک سوال داشتم اینه که اگه بخوایم تو برناممون از delaymicrosesond استفاده نکینم باید چیکار کنیم ، چون من نمیخوام تو برنامم تاخیر به وجود بیاد.با تشکر

    • سلام زنده باشین
      میتونین از تایمر استفاده کنید .در همین سایت پست آموزش تایمر در آردوینو را ملاحظه کنید.
      البته کتابخونه‌ای هم مخصوص این آلتراسونیک می‌باشد که با استفاده از تایمر این کار را انجام می‌دهد.
      موفق و موید باشید

  • با سلام
    ببخشید من یه سوال کوچیک داشتم اینکه کد زیر برای چیه و دقیقا چه کارش چیه؟ (duration = pulseIn(echo , HIGH
    ;(( distance = (duration / (58
    با تشکر

    • سلام
      در این خط پایه Echo فعال می‌شود. سپس سنسور تشخیص فاصله، فاصله را تشخیص داده و طبق فرمولی که برای تشخیص فاصله تعریف شده است، فاصله را محاسبه خواهد کرد.

  • با سلام
    این ماژول رو بنده تازه دریافت کردم ولی الان با کد شما همیشه مقدار صفر را نشان می دهد مشکل از چیست ؟
    با تشکر

  • سلام و ممنون بابت سایتتون.
    یه سوال داشتم اگه به جای ۱۰ میکرو ثانیه مثلا ۱ میلی ثانیه به پایه ی تریگ اعمال کنیم چه اتفاقی میوفته؟

    • با سلام
      طبق اطلاعات گفته شده در دیتاشیت سیگنال تریگر ورودی ۱۰ میکرو ثانیه است و این مورد تست نشده است.