نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
أَللّهُمَّ ارْزُقْنی شَفاعَةَ الْحُسَیْنِ یَومَ الْوُرُودِ
حمید زارع

سنجش مسافت التراسونیک HC-SR04 و HC-SR05 با Atmel Studio

95

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

ماژول های سنج مسافت التراسونیک انواع مختلفی دارند و در رنج های وسیعی از ۲ سانتی متر تا چندصد متر بسته به نوع, برای مقاصد خاصی طراحی و استفاده می شوند. برای مشاهده انواع مختلف این نوع ماژول ها به اینجا مراجعه فرمایید.

سنجش مسافت التراسونیک HC-SR04 و HC-SR05 با Atmel Studio

پروژه AVR

اکثر ماژول های التراسونیک سنجش مسافت (Ultrasonic Ranging Module) از دو قسمت فرستنده و گیرنده تشکیل شده اند.قسمت فرستنده در کسری از ثانیه امواج التراسونیک را ارسال می کند این امواج پس از برخورد به جسم بازتاب داده می شوند. وظیفه قسمت گیرنده دریافت امواج بازتابی از جسم است.

گیرنده و فرستنده ماژول های HC-SR04 و HC-SR05 در کنار یکدیگر  قرار دارند و می توانند جسم های در فاصله ۲ تا ۳۰۰ ساتی متر را با دقت قابل قبولی (من تا ۵ میلی متر تست کردم جواب داد yes ) تشخیص دهند. البته ماژول هایی نیز وجود دارند که قسمت گیرنده و فرستنده به صورت جدا از یکدیگر طراحی شده اند و می توان گیرنده و فرستنده را رویروی یکدیگر قرار داد و اکثرا برای مقاصدی همچو تشخیص مانع استفاده می شوند.

سنجش مسافت التراسونیک HC-SR04 و HC-SR05 با Atmel Studio

با اندازه گیری مدت زمان رفت و برگشت امواج ارسالی و با دانش بر اینکه سرعت امواج التراسونیک برابر با سرعت صوت (۳۰۰ متر بر ثانیه) است، فاصله جسم قابل محاسبه می باشد. (x = vt )

راه اندازی ماژول SRF05  و ماژول SRF04 عینا مشابه یکدیگر است و تفاوتی در نوع راه اندازی این دو ماژول وجود ندارد.فقط تفاوت در تعداد پایه هاست که در مدل ۰۵ یک پایه out وجود دارد و ما کاری به آن نداریم و آن پایه را به جایی وصل نمی کنیم.

البته باید بگم که مدل SRF05 دو مد راه اندازی داره که در اینجا ما مد ۱ رو توضیح دادیم.

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

قبل از توضیح کدها لازم است کتابخانه کاربردی زیر را تعریف کنیم که در اون ماکرو های مربوط به صفر و یک کردن بیت ها در محیط Atmel Studio رو قرار دادم.

برای راه اندازی این ماژول ها یک کتابخانه نوشتم و در زیر به تشریح کدهای اون می پردازم.در این کتابخانه توابع زیر وجود دارند:

اینم پیاده سازی توابع بالا که توی کتابخانه Ultrasonic_Modules.h قرار دادیم.
ابتدا اول برنامه با دستور زیر پورتی که ماژول بهش وصله رو به صورت ورودی / خروجی ست می کنیم.
بعد از مقدار دهی اولیه تنها کاری که باید انجام بدیم اینه که هر جا فاصله رو خواستیم بدست بیاریم تابع زیر رو صدا می زنیم:
در صورتی که فاصله خیلی زیاد باشه (بیشتر از رنج قابل قبول) تابع بالا عدد -۲ رو به عنوان خروجی بر میگردونه!
این هم تابع اصلی برنامه که چک میکنه اگر مقدار فاصله از یک مقدار آستانه بیشتر بود پایه ۶ پورت D رو یک می کنه.
 
در آخر هم فایل اصلی پروژه و شماتیک پروتئوس رو برای دانلود قرار دادم.

دانلود پروژه HC-SRF04

 برای سلامتی و تعجیل ظهور امام زمان (عج) صلوات

درباره : 
تعداد مطالب : 3 تا
دانشجوی دکتری هوش مصنوعی و رباتیکز دانشگاه شیراز علاقه مندی ها:برنامه نویسی،AVR،شبکه های عصبی، نجوم،رویت هلال،عکاسی،Game Design، 3D Modeling،Image Processing
بقیه جلسات :
این مطلب هیچ طبقه بندی یی ندارد!
ارسال دیدگاه
38
نظرات این مطلب بسته شده است.
  1. محمد

    مهمان

    محمد

    سلام وقت بخیر خدا قوت و خسته نباشید
    برای اندازه گیری نرخ سوزش میل سوخت جامد استوانه ای شکل به قطر 8mm طول 15cm که بصوزت سیگاری در محفظه تحت فشار دما بالا میسوزه میخواستم ببینم میشه با روش التراسونیک سرعت سوختن رو اندازه گیری کنم اگه میشه چه سنسوری رو پیشنهاد میکنین؟
    دقت هم خیلی مهمه
    ممنون میشم راهنماییم کنید

    مشاهده پاسخ ها (1)
    • حمید زارع

      نویسنده این مطلب

      حمید زارع

      سلام دوست عزیز. با توجه به اینکه قطر استوانه کوچک است این نوع سنسور جوابگوی کار شما نمی باشد. میتوانید از سنسور (ماژول) های مادون قرمز استفاده کنید. شما می توانید ماژول مناسب خود را در اینجا پیدا کنید.

  2. خادم المهدی(عج)

    مهمان

    خادم المهدی(عج)

    احسنت
    دستت درد نکنه
    سایت و مطالب شما و اقعا عالیه
    موفق باشید

  3. Shahab

    مهمان

    Shahab

    سلام
    اطلاعی از نحوه کار سنسور های پارک خودرو ( التراسونیک) و طریقه اتصالشون به میکرو رو دارین?
    این سنسور ها فقط دو سیم مثبت و منفی دارن و خبری از Vcc و GND و تریگر نیست!
    با تشکر

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      سلام – نه والا – یه لینک بدید ازش بررسی کنم.

  4. محمد

    مهمان

    محمد

    سلام مهندس من میخواستم این تابلو هایی که جلوش میایستیم و روشن میشه رو مدارشو طراحی کنم از همین ماژول استفاده کردم براشم بازه تعریف کردم روی دیوار و اجسام درست کار میکنه مثلان وقتی یه جسمی رو به ۲۰ سانتیش نزدیک میکنم رله فعال میشه ولی وقتی بدن انسان جلوش قرار میگیره قاتی میکنه ممنون میشم راهنماییم کنید

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      سلام-معمولا اگه دیده باشی از این سنسور استفاده نمیکنن – یه سنسوری که شبیه یه نیم دایره هستش استفاده میکنن – تو فروشگاه ها هستش ولی من اسمشو دقیقا خاطرم نیست.

  5. محمد صنعتگر

    نویسنده سایت

    محمد صنعتگر

    متشکرم

  6. الناز

    مهمان

    الناز

    سلام خسته نباشید.ببخشید تو برنامه بالا متوجه نمیشم این قسمتو که چرا فاصله رو ضربدر2 کردین جای تقسیم بر 2؟؟؟

    مشاهده پاسخ ها (4)
    • حمید

      مهمان

      حمید

      برای کالیبره کردن در 2 ضرب میشه. چون توی تبدیل به سانتی متر عرض پالس بر 58 تقسیم شده و سپس مقدار به دست اومده رو در 2 ضرب می کنیم. می توانستیم مستقیما عرض پالس را در 29 تقسیم کنیم. این اعداد به صورت تجربی و باتوجه به نوع ماژول و عرض پالس و … به دست می ایند

      • الناز

        مهمان

        الناز

        آخه تو دیتاشیت فقط عدد 58 ذکر شده در حالی که این ضرب در 2 چرا باید بر کالیبره شدن استفاده بشه؟فاصله رو اشتباه نمیکنه؟؟تو سایت دیگه ای هم مشابه اینو دیدم ولی اونجا هم ضربدر 2 نشده بود!!!!!
        ممنون از پاسخگویی شما.

        • حمید

          مهمان

          حمید

          من وقتی مدار رو راه اندازی کردم، توی تست های اولیه متوجه شدم اون فاصله ای که نمایش داده میشه نصف فاصله واقعی هست. بنابراین در 2 ضرب کردم.این بستگی به نوع دستگاه آلتراسونیک داره و معمولا با تست های اولیه می تونین مقدار صحیح رو حدس بزنید. توی مدلی که من استفاده کردم اینجوری بود.

          • الی

            مهمان

            الی

            Ok
            خیلی ممنون

  7. دانیال

    مهمان

    دانیال

    سلام با تشکر از سایتتون
    ببخشید سرعت این ماژول بیشتره یا srf05 ?

  8. محسن

    مهمان

    محسن

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

    مشاهده پاسخ ها (5)
    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      سلام
      بهتره توی eca.ir مطرح کنید

      • محسن

        مهمان

        محسن

        اوکی خیلی ممنون . من آشنایی زیادی در الکترونیک و رباتیک ندارم و با کمک توضیحات شما مطالب رو بهتر درک میکنم اگر امکانش هست پروژه ساخت گیرنده gps رو با همین شیوه قرار بدید . بازم تشکر میکنم از وقتی که برای ما میذارین

    • حمید

      مهمان

      حمید

      سلام. مکانیزم این سنسورها این هست که فرستنده سیگنالی را ارسال میکنه و بعد از برخورد به یک جسم بازتاب می شه و توسط گیرنده دریافت میشه. فاصله به دست اومده باید تقسیم بر دو بشه (مسیر رفت + مسیر برگشت) حالا اگه دو سنسور روبروی هم باشن مسافت دیگه تقسیم بر دو نمیشه. باید از مدل هایی استفاده کنید که گیرنده و فرستنده از هم جدا هستند.اتفاقا قیمتشون هم ارزونتره.

      • محسن

        مهمان

        محسن

        سلام . ممنون از پاسخ شما
        با تصور اینکه سنسور فرستنده دست کاربر باشه و هرقت بخواد بتونه این مسافت رو روی ال سی دی ببینه(با فشردن یک دکمه) . سنسور گیرنده چطور میفهمه که سیگنال کی ارسال شده و از چه طریقی این مدت زمان دریافت سیگنال رو به دستگاه فرستنده اعلام میکنه ؟
        بازم تشکر میکنم از شما

        • حمید

          مهمان

          حمید

          ماژول کلی از زمانی که پالس ارسال میشه شروع می کنه به شمارش ثانیه ها و وقتی که سیگنال به گیرنده رسید شمارش تموم میشه. شما باید مکانیزمی تعبه کنید تا مدت زمان ارسال پالس توسط فرستنده تا دریافت توسط گیرنده رو به دست بیارید.حالا زمان رو دارید و سرعت پالس رو هم دارید. با استفاده از رابطه x = vt می تونید مسافت رو حساب کنید.
          سنسور گیرنده فقط میگه که من پالس رو دریافت کردم و این شما هستید که باید مکانیزی رو طراحی می کنید تا متوجه بشید در چه مدت زمانی پالس توسط گیرنده دریافت شده.

  9. یکی

    مهمان

    یکی

    سلام
    هی پسر کارت خعلی درسته دمت گرم
    ایمیلم سرکاریه :)))))))))))))))

  10. کریم

    مهمان

    کریم

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

  11. nima.solymani

    مهمان

    nima.solymani

    همین هگز رو وقتی میخوام پروگرام کنم ارور میده 0h
    ایسی بدون مشکل پاک میشه ولی وقتی میخوام وریفای فلش کنم این ارور رو میده
    لطفا اگه میشه یه راهنمایی کنید این مشکلم حل شه فاصله سنج لازمم dash

  12. nima.solymani

    مهمان

    nima.solymani

    من پروژه Sr 04 رو میخوام

    مشاهده پاسخ ها (1)
  13. nima.solymani

    مهمان

    nima.solymani

    میشه تو محیط کد ویژن این رو بزارید

    مشاهده پاسخ ها (5)
    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      یه مطلب برا کدویژن من تو سایت گزاشتم اگه دقت کرده باشی

      • محمد

        مهمان

        محمد

        سلام…ممنون میشن بگی کد ویژنش کجاست یا بگإاری رو سایت….میخوام بسازم مدارو احتیاج دارم…ممنون

        • مهدی دمرچیلو

          مدیر سایت

          مهدی دمرچیلو

          سلام
          متوجه سوالتون نشدم

          • محمد

            مهمان

            محمد

            سلام
            من ترم آخر کاردانی الکترونیک هستم….میخوام واسه پروژه ساختم فاصله سنج بسازم….اگر امکانش هست برنامه این پروژه در محیط کدویژن….یا پروژه ای در حد این بهم معرفی کنی بی نهایت سپاسگزارم

          • مهدی دمرچیلو

            مدیر سایت

            مهدی دمرچیلو

            سلام
            همین پروژه با کدویژن تو سایت هستش…بگردی پیدا میکنی

  14. nima.solymani

    مهمان

    nima.solymani

    این مدار تو پروتوس حتی رو ال سی دی هم چیزی نشون نمیده

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      dash
      تو پروتئوس چییزی رو هم نباید نشون بده…. چون پروتئوس اکثر ماژول ها رو شبیه سازی نمیتونه بکنه

  15. حمید زارع

    نویسنده این مطلب

    حمید زارع

    سلام
    ببخشید که دیر جواب میدم:
    نقل قول: “این ماژول تو دقت انداز گیری با هم فرق ندارن؟؟؟؟”
    توس سایتهای مختلفی راجع به این دو بحث شده و جاهایی نوشتن که SRF05 دقیقتره ولی توی چند موردی که من تست کردم تفاوتی را احساس نکردم! البته شاید ابزار اندازه گیری من دقیق نبوده
    نقل قول : ” این چند صد متر…کدوم ماژول بیش از ۱۵ متر اندازه میگیره؟؟؟ ”
    پاسخ: سنسورهای التراسونیک بر اساس محدوده فرکانسی خود به دو دسته صنعتی و غیر صنعتی تقسیم بندی می‌شوند. حسگرهای فرا صوت غیر صنعتی در محدوده فرکانسی 40 کیلو هرتز و حسگرهای صنعتی در حد مگا هرتز هستند. سونار ها نیز که برای ناوبری کشتی ها استفاده می شود از این دسته اند. که میتوانند تا چندصد متر زیر دریا را عمق سنجی کنند (عمق سنجی آکوستیکی)

  16. فرشته

    مهمان

    فرشته

    با بسکام هم یاد بدین ممنون منتظرم .ایمیلمو گذاشتم

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      با بسکام یاد نمیدیم…….بسکام ارزش کار کردن نداره…..
      به نطر من شما هم برید سمت c

  17. مهدی

    مهمان

    مهدی

    این ماژول تو دقت انداز گیری با هم فرق ندارن؟؟؟؟
    (منظورم srf05 و srf04 بودش…………)

  18. مهدی

    مهمان

    مهدی

    این ماژول تو دقت انداز گیری با هم فرق ندارن؟؟؟؟
    تو اول مطلب گفتی که :
    [“ماژول های سنج مسافت التراسونیک انواع مختلفی دارند و در رنج های وسیعی از ۲ سانتی متر تا چندصد متر بسته به نوع, برای مقاصد خاصی طراحی و استفاده می شوند”]
    این چند صد متر…کدوم ماژول بیش از 15 متر اندازه میگیره؟؟؟امکان داره اسم ماژول رو بگید..
    من بیشتری بردی که دیدم 12متر بود تقریبا که قیمت ماژولش حدا 100 تومن بود shock
    good