آموزش راه اندازی سنسور آلتراسونیک HC-SR04 {جلسه سی و یکم}
مقدمه
در این جلسه به طور کامل در مورد سنسور آلتراسونیک HC-SR04 و نحوه راه اندازی آن بحث خواهیم کرد. در خصوص راه اندازی سنسور HC-SR05 می توانید از لینک های زیر استفاده کنید:
آلتراسونيك چيست؟
آلتراسونيك يك نوع از موج صوتي است كه فركانس آن بيشتر از محدوده شنوايي انسان است (موج فراصوت).
همانگونه که در شکل بالا مشاهده می کنید گوش انسان قادر به شنيدن امواج صوتي با نوسانات 20 هرتز (سر و صداي عميق) تا 20000 هرتز (سوت بلند) است. آلتراسونيك فركانسي بيش از 20 كيلوهرتز است و برای ما قابل شنیدن نیست.
سخت افزا SR04
هسته مركزي آن از دو مبدل آلتراسونيك تشكيل شده است. يكي از آنها بهعنوان فرستنده سيگنال های الكتريكي را به پالسهاي صوتي آلتراسونيك 40KHz تبديل ميكند. گیرنده بعد از از ارسال این پالس را دریافت می کند و عرض اين پالس جهت تعيين فاصلهاي كه موج طي كرده است به کار برده می شود.
مشخصات فنی این سنسور به صورت زیر است:
DC 5V | ولتاژ كاري |
15mA | جريان كاري |
40KHz | فركانس كاري |
4m | بیشترین رنج فاصله سنجي |
2cm | کمترین رنج فاصله سنجي |
3mm | دقت فاصله سنجي |
15degree | زاويه اندازه گيري |
10µS TTL pulse | سيگنال تريگر |
45x20x15mm | ابعاد |
پایه های SR04
- VCC : پين تغذيه ماژول است که به پين 5 ولت آردوينو وصل می شود.
- Trig : اين پين براي فعالسازی پالس صوتي آلتراسونیك به کار برده می شود.
- Echo : هنگامی که سيگنال برگشتی دريافت ميشود، يك پالس توليد شود که طول این پالس متناسب با مدت زمان رفت و برگشت سیگنال ارسالی است.
- GND : پين اتصال به زمين سنسور است كه به زمين آردوينو اتصال می یابد.
نحوه کارکرد SR04
برای شروع کار يك پالس تريگر 10 ميكروثانيهاي به پين Trig اعمال شود، سنسور فعال می شود و هشت پالس صوتي 40 کیلوهرتزی را روانه می کند. اين رشته پالس هشت تايي به نوعی امضاي منحصربفرد سنسور ساطع کننده امواج است و به گيرنده سنسور اجازه تشخيص سيگنال های ساطع شده همان سنسور را در بين ساير سيگنالهاي آلتراسونيكي كه احتمالاً در محيط بسیاز زیاد وجود دارند، خواهد داد (محافظت در برابر نويز آلتراسونيكي محيط).
هنگام ارسال پالس، مقدار پين Echo بهصورت High است تا فرايند دريافت سيگنال برگشتي را شروع كند. در صورتی که سيگنال برگشتي وجود نداشته باشد، مقدار پين Echo پس از مدت زماني 38 میلیثانیه مجدداً Low می شود. بنابراين ميتوان گفت كه پالس 38 میلیثانیه بدین معنی است كه هيچگونه مانعي تا فاصله 4 متری سنسور وجود ندارد.
در صورت بازگشت پالس های ارسالی، به محض دريافت توسط گيرنده سنسور مقدار پایه Echo بهصورت Low در خواهد آمد. بنابراين با توجه به میزان زمان بازگشتی پالس از لحظه ارسال تا لحظه دریافت، يك پالس متناسب با عرض 150µs(میکروثانیه) تا 25ms(میلی ثانیه) توليد خواهد شد. همانگونه که در شکل زیر مشاهده می کنید در صورتی که مانع وجود داشته باشد یک مدت زمانی طول می کشد تا سیگنال مسیر رفت و برگشت را طی کند که در اینجا زمان آن را با T نشان داده ایم.
محاسبه عرض پالسSR04
برای محاسبه عرض پالس که در شکل بالا نشان داده شده است بهتر است ابتدا فرمول مسافت را مرور کنیم:
X:مسافت
ٰV: سرعت
T: زمان
طبق فرمول مسافت X=V*T یعنی اینکه مسافت طی شده برابر است با سرعت ضربدر مدت زمان
در فرمول بالا سرعت نور 340m/s است که همیشه ثابت است. فقط کافی است زمان رفت و برگشت سیگنال ارسالی را داشته باشیم تا مسافت طی شده را بدست آوریم. حال فرض کنید زمان رفت و برگشت سیگنال ارسالی مثلا 200µs باشد. سرعت نور هم بر حسب cm/µs برابر با 0.034cm/µs است. بنابراین فاصله مانع تا سنسور به صورت زیر است:
6.8=X=0.034*200
چون مسافتی که سیگنال تا مانع طی می کند رفت و برگشتی است می بایست عدد به دست آمده را بر دو تقسیم کنیم که نتیجه 6.8/2 یعنی 3.4 سانتی متر است.
ارتباط سریال نیز بر روی 9600 قرار می دهیم:
void setup() { Serial.begin(9600); }
در حلقه ما تابع ()ping_cm را فراخوانی می کنیم. این تابع یک پینگ ارسال می کند و در پنجره سریال مانیتور فاصله بر حسب سانتی متر را به ما نشان داده می شود.
void loop() { Serial.print("Distance = "); Serial.print(sonar.ping_cm()); Serial.println(" cm"); delay(500); }
اگر قصد داشتید فاصله ها بر حسب اینچ باشد می توانید از تابع زیر به جای ()ping_cm استفاده کنید.
Serial.print(sonar.ping_in());
کد فوق داراي رزولوشن يك سانتیمتر است. اگر قصد دارید فاصله با دقت اعشار اندازهگيري شود ميبایست بجاي اينكه از NewPing در مد distance استفاده كنيد، آن را در مد duration بكار ببرید. که لازم است به جای کد زیر:
Serial.print(sonar.ping_cm());
از این کد بجای آن استفاده کنید:
Serial.print((sonar.ping() / 2) * 0.0343);
جهت افزایش دقت SR04 ميتوان از تابع ديگري با نام “iterations” از كتابخانه NewPing استفاده کرد. که به معني تكرار كردن بوده و مفهوم آن این است كه به سراغ چيزي بيش از یک بار برويم که همان كاري است كه مد iteration mode برای ما انجام میدهد. با چندین بار خواندن، داده های نامعتبر حذف می شود و متوسط بقيه اندازهگيريها محاسبه می شود. بهصورت دیفالت، 5 بار اندازهگیری انجام می شود. اما تعداد اندازه گیری های آن را می توانید افزایش دهید.
int iterations = 5; Serial.print((sonar.ping_median(iterations) / 2) * 0.0343);
اتصال سه سیم سنسور
در این حالت چهارپایه سنسور به سه پایه آردوینو متصل متصل می شود. بسياري از سنسورهاي آلتراسونيك نظير سنسور parallax ping بر مبناي اين مد كار ميكنند. زیرا فقط سه پایه دارند:
در این مد یک پایه آردوینو هم به عنوان ورودی و هم به عنوان خروجی تعریف می شود زیرا هیچ موقع ورودی و خروجی به صورت همزمان به کار برده نمی شوند یعنی ابتدا باید سیگنالی فرستاده شود سپس سیگنالی دریافت شود. با اینکار یک پین آردوینو آزاد می شود و می توان برای کاربردهای دیگر از آن بهره برد. یا در چیپ هایی نظیر ATtiny85 که تعداد پین های I/O آنها محدود است استفاده از این مد بسیار مفید است.
در زير نحوه اتصال HC-SR04 در مد سه سيم به آردوينو را مشاهده می کنید.
تنها تفاوتی که در کد به وجود می آید این است که دو پایه Trig و Echo به صورت یکسان به پایه 9 آردوینو متصل شوند که هم به عنوان ورودی و هم به عنوان خروجی به کار برده شود. بقیه کد هیچ تفاوتی ندارد.
#define TRIGGER_PIN 9 // Trigger and Echo both on pin 9
#define ECHO_PIN 9
معایب سنسورSR04
- حداکثر فاصله ای که سنسور می تواند تشخیص دهد حدودا 4 متر است.
- اندازه مانع پيش روي سنسور آنقدر كوچك باشد كه سيگنال برگشتي به سمت سنسور بازگشت داده نشود. همچنين، اگر سنسور آلتراسونیک SR04 در پائين وسيله مورد نظر كار گذاشته شود، ممكن است هيچ سيگنالي از سمت سطح برگشت داده نشود.
- اجسام نرم و غیرمنظم معمولا مقداری از سیگنال ارسالی را جذب میکنند و باعث بروز خطا می شوند.
شرایط غیرعادی
دقت کنید که سرعت صوت که در بالا بیان نمودیم برای شرایط عادی است.سرعت صوت در هوا به ميزان دما، فشار و رطوبت بستگی دارد و با آنها تغییر میکند. بنابراین در شرایط غیرعادی که دما و فشار و رطوبت بیشتر از حد معمول است می بایست سرعت صوت را اصلاح کنید که می توانید از رابطه زیر کمک بگیرید.
Speed of Sound (m/s) = 331.4 + (0.606 * Temp) + (0.0124 * Humidity)
این جلسه نیز به پایان رسید. در صورتی که نیاز به اطلاعات اضافی داشتید می توانید در قسمت کامنت ها بیان نمایید تا مطالب وب سایت آپدیت شوند.
دوستان عزیز بیشتر دوره های مربوط به این وب سایت رایگان می باشد. در صورت تمایل می توانید به اندازه وسع مالی خود(هر چند ناچیز) جهت پرداخت هزینه های نگهداری وب سایت از ما حمایت کنید:
مثل همیشه میتوانید ما را در تلگرام و یا اینستاگرام دنبال کنید:
دیدگاهتان را بنویسید