در این پست از سایت اِمیک, اموزش راه اندازی ماژول های فاصله سنج التراسونیک SRF05 و SRF04 با استفاده از برد اردوینو قرار داده شده است. برای راه اندازی این ماژول ها از برد اردوینو UNO استفاده شده است, البته شما می توانید از هر نوع برد اردوینویی که دارید استفاده کنید. قبلا این ماژول ها را با استفاده از میکروکنترلر AVR راه اندازی کرده بودیم که در ان پست بطور کامل در مورد ماژول های SRF05 و SRF04 و مدهای راه اندازی انها توضیح داده شد, بنابراین در صورتی که با این ماژول ها و مدهای راه اندازی انها اشنا نیستید حتما پست “پروژه AVR فاصله سنج با ماژول SRF05 و SRF04” را مطالعه کنید.
پروژه آردوینو فاصله سنج با ماژول SRF05 و SRF04 :
در این پروژه ما با استفاده از برد اردوینو یونو (UNO) ماژول فاصله سنج التراسونیک SRF05 را راه اندازی خواهیم کرد. البته شما می توانید بدون نیاز به تغییر در برنامه یا شماتیک پروژه از ماژول SRF04 نیز استفاده کنید.در زیر ترتیب پایه های این دو ماژول را مشاهده می کنید:
ماژول SRF05 دارای 5 پایه می باشد
- پایه VCC که باید به 5 ولت متصل شود
- پایه GND که به زمین (منفی تغذیه) متصل می شود
- پایه Trig
- پایه Echo
- پایه OUT
در ماژول SRF04 تعداد پایه ها 4 عدد می باشد و تنها تفاوت نسبت به ماژول SRF05 نداشتن پایه OUT است.
در ادامه شماتیک این پروژه را مشاهده می کنید:
شماتیک ساده این پروژه را در بالا مشاهده می کنید که بجز برد اردوینو و ماژول SRF05 از یک LCD کاراکتری 2*16 نیز برای نمایش مقادیر فاصله بدست امده, استفاده شده است. پتانسیومتر RV1 برای تنظیم کنتراست (روشنایی) ال سی دی کاراکتری استفاده شده است و در صورتی که نخواستید از پتانسیومتر استفاده کنید باید پین 3 ال سی دی را به زمین متصل کنید.
همانطور که در شماتیک مشاهده می کنید, پایه Trig در ماژول SRF05 به پین A0 در برد اردوینو متصل شده و پایه Echo نیز به پین A1 اردوینو متصل شده است. برای تست پروژه در صورتی که تغذیه پروژه را از برد اردوینو تامین می کنید, برد اردوینو را با استفاده از اداپتور راه اندازی کنید تا جریان دهی مناسبی داشته باشد.
برنامه :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
//////// WWW.EMIC.IR //////// #include <LiquidCrystal.h> /* lcd معرفي کتابخانه */ /* متصل شود LCD تابع زیر مشخص می کند که کدام پین های اردوینو به */ LiquidCrystal lcd(13, 12, 11, 10, 9, 8, 7); #define Trig A0 /*Trig اردوینو با عبارت A0 برابر قرار دادن پین */ #define Echo A1 /*Echo اردوینو با عبارت A1 برابر قرار دادن پین*/ void setup() { pinMode(Trig, OUTPUT); pinMode(Echo, INPUT); lcd.begin(16, 2); /*(LCD بررسي اتصال) LCD پيکره بندي */ } void loop() { unsigned long Time ; float distance ; /*اردوینو است ایجاد می کنند A0 که همان پایه Trig سه خط زیر یک پالس به مدت 10 میکروثانیه روی پایه*/ digitalWrite(Trig, HIGH); delayMicroseconds(10); digitalWrite(Trig, LOW); Time = pulseIn(Echo, HIGH); /*ذخیره می کند Time دستور روبرو زمان رفت و برگشت سیگنال را بر حسب میکروثانیه در متغیر*/ distance = (Time / 2) * 0.03432 ; /*دستور روبرو فاصله ما را بر حسب سانتي متر باتوجه به زمان سپري شده و سرعت صوت محاسبه مي کند*/ /*روی ال سی دی نمایش می دهد cm در زیر در صورتی که فاصله در حال اندازه گیری ما در محدوده قابل اندازه گیری توسط سنسور بود مقدار ان را به*/ /*را نمایش می دهد out of range در صورتی که فاصله مورد نظر بیش از محدوده قابل اندازه گیری توسط سنسور بود روی ال سی دی متن*/ lcd.clear(); lcd.setCursor(0, 0); if (Time < 30000) { lcd.print("d="); lcd.print(distance); lcd.print("cm"); lcd.setCursor(0, 1); lcd.print("WWW.EMIC.IR"); delay(500); } else lcd.print("out of range"); } |
فرمول بدست اوردن فاصله با استفاده از ماژول التراسونیک SRF05 و SRF04 به صورت زیر می باشد که ما در خط 26 برنامه از این فرمول استفاده کرده ایم:
همانطور که در بالا گفته شد حتما پست راه اندازی ماژول های SRF05 و SRF04 با میکروکنترلر AVR را مطالعه کنید, بخصوص قسمت مد یک برای راه اندازی این ماژول ها که ما در این پروژه به روش مد یک این کار را انجام می دهیم.
همانطور که در فرمول بالا مشاهده می کنید ما برای محاسبه فاصله باید زمان رفت و برگشت سیگنال را بدست اوریم. ماژول SRF05 و SRF04 در زمان ارسال تا دریافت سیگنال پایه Echo خود را یک می کنند, بنابراین ما با اندازه گیری زمان یک بودن (HIGH بودن) پایه Echo می توانیم زمان رفت تا برگشت سیگنال را بدست اوریم. این کار با استفاده از یک دستور ساده در اردوینو انجام می شود که در زیر ان را مشاهده می کنید:
1 |
pulseIn(pin, value) |
pin : پین مورد نظر از اردوینو که می خواهیم مدت زمان پالس روی ان را بخوانیم (مدت زمان یک بودن یا صفر بودن ان را بدست اوریم)
value : مشخص می کنیم که می خواهیم مقدار زمان یک بودن یا مقدار صفر بودن را بدست اوریم. در صورتی که یک بودن را می خواهیم باید مقدار ان را برابر با HIGH و در صورتی که مدت زمان صفر بودن را می خواهیم باید مقدار ان را برابر با LOW قرار دهیم.
نکته : خروجی تابع بالا یک زمان برحسب میکروثانیه می باشد. همانطور که در خط 25 مشاهده می کنید ما از این دستور برای بدست اوردن زمان رفت تا برگشت سیگنال استفاده کرده ایم.
نکته: از اونجایی که ما زمان رفت تا برگشت را در فرمول میذاریم باید بر 2 تقسیم کنیم تا فاصله ما دو برابر محاسبه نشود.
سرعت صوت در دمای 20 درجه سانتی گراد 343.2 متر بر ثانیه می باشد و همانطور که در فرمول مشاهده می کنید باید ان را تبدیل به سانتی متر بر میکروثانیه کنیم که بعد از تبدیل سرعت صوت برابر با 0.03432 سانتی متر بر میکروثانیه می شود و ما از این مقدار در برنامه بالا استفاده کرده ایم.
توضیحات قسمت های مهم برنامه نوشته شده, اگر سوالی داشتید می تونید در قسمت نظرات مطرح کنید.
کلیپ تست عملی پروژه :
پسورد فایل زیپ : www.emic.ir
نظر یادتون نره …
سلام عالی بود
فقط داخل ایف time < 30000 رو ار کجا به دست آوردرین و بر حسب چی هست ؟
سلام میخواستم بدونم میشه به این پروژه قابلیت ذخیره سازی مثلاً ۲۰ فاصله آخر رو اضافه کرد یا مثلاً محاسبه مساحت
با سلام من این پروژه را انجام دادم ولی فقط صفر سانتی متر نشون می ده و اصلا تکون نمی خوره
سلام, حتما یه اشتباهی کردید که جواب نگرفتید. بررسی کنید که اتصالاتتون درست باشد و برد اردوینو بدرستی پروگرام شده باشد
سلام من ساختمش کار میکنه ولی نور lcdخیلی کمه له 5 ولت وصله پین سه هم به منفی وصله مشکل کجاست؟
سلام, پایه 3 ال سی دی را به یک پتانسیومتر متصل کنید و کنتراست ال سی دی را تنظیم کنید
سلام این پروژ برای srf 04 هم کار میکنه دیگه
سلام, بله
سلام و عرض ادب میخواستم بدونم تا چند متر فاصله را میتونه اندازه گیری کنه؟
سلام, از 2cm تا 450cm