پنج شنبه, شهریور 29, 1403
ادامه منو
    خانهپروژه های میکروکنترلر AVRپروژه با انواع LCDپروژه AVR فاصله سنج با ماژول SRF05 و SRF04

    پروژه AVR فاصله سنج با ماژول SRF05 و SRF04

    در این پست از سایت اِمیک, اموزش راه اندازی ماژول های فاصله سنج التراسونیک SRF05 و SRF04 با استفاده از میکروکنترلر AVR قرار داده شده است. برنامه این پروژه به زبان C و با استفاده از نرم افزار کامپایلر کدویژن (CodeVisionAVR) نوشته شده است. در ادامه با ماژول های SRF05 و SRF04 بیشتر اشنا خواهیم شد.

    ماژول های فاصله سنج التراسونیک SRF05 و SRF04 :

    این ماژول ها برای اندازه گیری فاصله, امواج صوتی با فرکانس بالا تولید و ارسال می کنند و موج بازتاب شده را دریافت می کنند. با اندازه گیری زمان ارسال تا دریافت امواج می توانیم فاصله مورد نظر را محاسبه کنیم. دو ماژول SRF04 و SRF05 تفاومت چندانی با هم ندارد و در واقع ماژول SRF05 ارتقاء یافته ماژول SRF04 می باشد. مسافت قابل سنجش توسط این ماژولها از 2cm تا 450cm می باشد.

    این دو ماژول به گونه ای طراحی شده اند که می توان از انها بجای یکدیگر بدون نیاز به تغییر برنامه یا شماتیک پروژه استفاده کرد. در زیر تصویر این دو ماژول را مشاهده می کنید که تنها تفاوت ظاهری انها اضافه شدن یک پایه به نام OUT به ماژول SRF05 می باشد.

    Ultrasonic-Module-SRF-PIN-EMIC

    برای راه اندازی ماژول SRF05 دو مد وجود دارد, اما برای راه اندازی SRF04 یک مد یا روش وجود دارد که در ادامه مد یک و مد دو توضیح داده می شوند (مد یک برای راه اندازی هر دو ماژول می باشد و مد دو فقط برای SRF05 می باشد)

    مد یک :

    ماژول SRF05 دارای 5 پایه می باشد

    • پایه VCC که باید به 5 ولت متصل شود
    • پایه GND که به زمین (منفی تغذیه) متصل می شود
    • پایه Trig
    • پایه Echo
    • پایه OUT

    در ماژول SRF04 تعداد پایه ها 4 عدد می باشد و تنها تفاوت نسبت به SRF05 نداشتن پایه OUT است.

    برای راه اندازی در مد یک ابتدا باید به پایه Trig ماژول یک پالس به طول حداقل 10 میکرو ثانیه اعمال کنیم. در ادامه ماژول به طور خودکار 8 پالس با فرکانس 40K هرتز به محیط ارسال می کند. بعد از ارسال پالس ها توسط ماژول پایه Echo یک می شود و تا زمانی که پالس های برگشتی (بازتاب شده) را دریافت نکرده یک باقی می ماند. زمانی که ماژول پالس های برگشت شده را دریافت کرد پایه Echo دوباره صفر می شود.

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

    SRF05&04-mode1-emic

    همانطور که در دیاگرام بالا مشاهده می کنید طول پالس روی پایه Echo از 100 میکرو ثانیه تا 25 میلی ثانیه می باشد و در صورتی که طول پالس دریافتی از 30 میلی ثانیه بیشتر شد, یعنی ماژول هیچ جسمی را تشخیص نداده است.

    همانطور که در بالا گفته شد از این روش یا مد می توان برای راه اندازی هر دو ماژول SRF05 و SRF04 استفاده کرد و در این روش به راحتی می توان از دو ماژول بجای یکدیگر بدون نیاز به تغییر برنامه یا شماتیک استفاده کرد.

    توجه کنید که در این مد نیازی به استفاده از پایه OUT در ماژول SRF05 نیست و لازم نیست بجایی متصل شود.

    مد دو :

    در این روش از یک پایه برای تریگر (Trig) و اکو (Echo) استفاده می شود. این روش برای صرفه جویی در پایه های ورودی/خروجی(I/O) میکروکنترلر یا برد های اردوینو یا… طراحی شده است.

    در این روش که فقط برای ماژول SRF05 می باشد باید پایه OUT را به زمین متصل کنیم و دیگر نیازی به پایه Echo نداریم و نیازی نیست بجایی متصل کنیم. در این مد پالس را مانند مد اول به پایه Trig اعمال می کنیم, ولی پالس برگشتی را هم از همین پایه دریافت میکنیم در صورتی که در مد اول از پایه Echo پالس برگشتی را دریافت میکردیم. در زیر دیاگرام برای مد دو را مشاهده می کنید:

    SRF05&04-mode2-emic

    پروژه AVR فاصله سنج با ماژول SRF05 و SRF04 :

    در این پروژه ما با استفاده از ماژول فاصله سنج SRF05 و میکروکنترلر ATmega16 فاصله تا جسم را محاسبه می کنیم و روی یک LCD کاراکتری 2*16 نمایش می دهیم. ما از روش اول یا مد یک برای راه اندازی SRF05 استفاده می کنیم, بنابراین شما می توانید بدون نیاز به تغییر در برنامه یا شماتیک پروژه از ماژول SRF04 نیز استفاده کنید.

    P-SRF05&04-Test-with-avr-emic

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

    SRF05&04-Test-with-avr-emic

    همانطور که در شماتیک بالا مشاهده می کنید پایه Echo در ماژول NRF05 به پین 39 میکروکنترلر (پین 1 از پورت A) و پایه Trig به پین 40 میکرو (پین 0 از پورت A) متصل شده است.

    پایه های تغذیه میکروکنترلر (پایه های 10 و 11) که در تصویر بالا وجود ندارند را فراموش نکنید به تغذیه 5 ولت متصل کنید.

    برنامه کدویژن :

    در این پروژه فرکانس میکروکنترلر 8 مگاهرتز تنظیم شده است. در زیر برنامه نوشته شده به زبان C و کامپایلر کدویژن را مشاهده می کنید:

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

    SRF05&04-FMD-emic

    نکته: از اونجایی که ما زمان رفت تا برگشت را در فرمول میذاریم باید بر 2 تقسیم کنیم تا فاصله ما دو برابر محاسبه نشود.

    سرعت صوت در دمای 20 درجه سانتی گراد 343.2 متر بر ثانیه می باشد و همانطور که در فرمول مشاهده می کنید باید ان را تبدیل به سانتی متر بر میکروثانیه کنیم که بعد از تبدیل سرعت صوت برابر با 0.03432 سانتی متر بر میکروثانیه می شود و ما از این مقدار در برنامه بالا استفاده کرده ایم.

    ما از تایمر 0 میکرو استفاده کرده ایم که یک تایمر 8 بیتی هست, بنابراین این تایمر می تواند از 0 تا 255 بشمارد (2 به توان 8) هر بار که تایمر از 0 شروع می کند و تا 255 می شمارد, از اونجایی که بیشتر از این نمیتواند بشمارد به اصطلاح سر ریز می کند و دوباره برمی گردد و از 0 شروع می کند و تا زمانی که فعال است این روند را ادامه می دهد. با هر بار سر ریز تایمر یک وقفه اتفاق می افتد (وقفه در خط 12 برنامه) و همانطور که دستورات درون وقفه را مشاهده می کنید با هر بار اجرای وقفه یک واحد به متغیر overflow اضافه می شود. یعنی هر بار که تایمر صفر 256 واحد می شمارد یک واحد به متغیر overflow اضافه می شود.

    بنابراین ما در خط 59 برنامه برای بدست اوردن مقدار شمارش تایمر, متغیر overflow را در 256 ضرب کرده ایم و حاصل ان را با مقدار حال شمارنده (رجیستر TCNT0) نیز جمع کرده ایم تا مقدار شمارش کامل ما بدست بیاید. و از اونجایی که فرکانس کاری تایمر را 1 مگاهرتز تنظیم کرده ایم هر بار شمارش تایمر 1 میکرو ثانیه طول می کشد. در نتیجه می توانیم مقدار شمارش کامل تایمر 0 را که در خط 59 بدست اوردیم درون فرمول بالا به عنوان زمان رفت تا برگشت سیگنال قرار دهیم.

    توضیحات قسمت های مهم برنامه نوشته شده, اگر سوالی داشتید می تونید در قسمت نظرات مطرح کنید.

    کلیپ تست عملی پروژه :

     

    دانلود فایل ها

    پسورد فایل زیپ : www.emic.ir

     

    پروژه های مشابه:

     

    نظر یادتون نره …

    عابد رازانی
    عابد رازانیhttps://emic.ir/
    فارغ التحصیل کارشناسی الکترونیک از دانشکده باهنر شیراز و علاقمند به برنامه نویسی و طراحی مدارات الکترونیکی, در حال حاضر به تولید محتوای آموزشی و طراحی و انجام پروژه مشغول هستم.

    40 نظرات

    1. سلام وقتتون بخیر
      مهندس پروژه رو من ساختم همه چیز اوکی بود غیر از اینکه مثلا سه سانتی متر رو ۰.۳سانتی به ما نشان میده
      برای درست کردن این موضوع چه کاری انجام بدم؟!اگر امکانش هست زودتر جواب بدین ممنون میشم🙏🏻❤️

    2. داخل برنامه اگر ال سی دی به درستی روی پورت ها تعریف نشود ال سی دی به صورت مربعی نشون داده میشه در قسمت configure ببینید lcd به درستی روی پورت ها قرار گرفته

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

    ارسال دیدگاه

    لطفا نظر خود را وارد کنید!
    لطفا نام خود را اینجا وارد کنید

    spot_img