ساخت فاصله سنج دیجیتالی با آردوینو

چاپ

 اتمام فصل 1 را به شما تبریک می گوییم، اینک به فصل 2 خوش آمدید. از اینجا به بعد کارها کمی پیچیده می شود، زیرا ما می خواهیم از قابلیت های قدرتمند ریزپردازنده ی آردوینو استفاده کنیم. در این فصل می خواهیم ببینیم که چگونه می توان با استفاده از یک حسگر(سنسور) و یک صفحه ی ال سی دی(LCD) یک خط کش یا فاصله سنج دیجیتالی تولید کنیم. برای انجام این کار، ما از یک سنسور فراصوت برای اندازه گیری فاصله ی بین سنسور و اشیاء استفاده می کنیم. ما برای تبدیل این فاصله به سانتی متر یا اینچ از آردوینو و ریاضیات کمک می گیریم و در انتها نتیجه را بر روی ال سی دی نشان می دهیم. 


قطعات مورد نیاز

برای ایجاد یک فاصله سنج با آردوینو به قطعات زیر نیاز داریم. در جلوی هریک از این قطعات، آدرس اینترنتی سایتی که می توانید این قطعه را به صورت پستی از ایران سفارش دهید آورده شده است:

 


 کمی در مورد سنسور فاصله سنج

سنسور SR04 یک سنسور بسیار قدرتمند است و معمولا از آن برای تعیین فاصله یا نزدیکی به چیزی استفاده می شود. سنسور SR04 امواج فراصوتی را ساطع می کند که در حقیقت امواج صوتی با فرکانس بالا(40KHz) هستند و برای انسان قابل شنیدن نیستند. وقتی که این امواج به یک شیء برخورد می کنند، برخی از آنها انعکاس می یابند. این امواج منعکس شده توسط سنسور دریافت می شوند و سنسور زمان رفت و برگشت موج را محاسبه می کند. و سپس این زمان را به فاصله تبدیل می کند. 

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

مدار سنسور در آردوینو

 در حقیقت مدار ما به صورت زیر خواهد بود:

 مدار سنسور واقعی آردوینو

 اکنون یک sketch جدید در IDE آردوینو ایجاد کنید و برنامه ی SR04_Blink.ino که فایل آن در اینجا قرار دارد را دانلود کرده و در آن load کنید. حال کدهای مورد نظر را پس از لود شده در IDE با نام SR04_Blink.ino در رایانه ی خود ذخیره کنید. با انجام این کار، می توانیم از فایل دانلودی بعنوان نسخه ی پشتیبان استفاده کنیم تا اگر به کدهای اصلی احتیاج پیدا کردیم و دچار خطا شدیم بتوانیم آنها را بازیابی کنیم. حالا یک بار دیگر بررسی کنید که پین ها به درستی متصل شده باشند، این موضوع را می توانید از خط های بالایی کدها متوجه شوید. اکنون کدها را Upload کنید. حالا Serial Monitor را در IDE آردوینو باز کنید و مقدار 9600 را بعنوان نرخ علامت در ثانیه(baud rate) انتخاب کنید. حالا دست خود، یا یک چیز صاف مثل یک کتاب را به سنسور نزدیک کنید و فاصله را تغییر دهید.  باید بتوانید فاصله های مختلف را در صفحه ی نمایش مشاهده کنید، درست مثل تصویر زیر:

فاصله های مختلف در آردوینو

 همان طور که مشاهده می کنید، اگر مقادیر سنسور ما بزرگتر از 200 سانتی متر باشد عبارت Outside sensor range چاپ خواهد شد؛زیرا بیشترین مقداری که می تواند اندازه گیری کند همین است. همچنین اگر سنسور را در معرض هیچ چیزی قرار ندهیم باز هم مقدار 200 سانتی متر برای آن در نظر گرفته می شود زیرا برد آن همین قدر است. 

اندازه گیری با سنسور در آردوینو

 متوجه خواهید شد که هرچه شیء را از 15 سانتی متر به سنسور نزدیک تر کنید ال ای دی شروع به روشن شدن می کند. این موضوع به این دلیل است که آستانه(threshold ) طبق کدهای زیر بر روی 15 سانتی متر تنظیم شده است:

 

if (distance < 15) { //آستانه یا فاصله 15 سانتی متر است و اگر فاصله بیشتر از آن شود ال ای دی خاموش می شود
  digitalWrite(ledPin,HIGH);
}
else {
digitalWrite(ledPin,LOW);
}
if (distance >= 200 || distance <= 0){
  Serial.println("Outside sensor range");
}
else {
  Serial.print(distance); // فاصله را چاپ می کند
  Serial.println(" cm");
}
  delay(500); // وقفه پس از هربار قرائت
}

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

در کدهای اصلی که دانلود کردید، یک خط کد به صورت زیر وجود دارد:

distance = duration / 58

این خط زمان رفت و برگشت را به فاصله تبدیل می کند که قبلا به طور خلاصه به آن اشاره کردیم. صوت، با سرعت 340 متر بر ثانیه حرکت می کند، با استفاده از این می توانیم محاسبه کنیم که صوت، هر سانتی متر را در مدت زمان 29 میکروثانیه طی می کند. صوتی که از سنسور ساطع می شود یک مسیر رفت دارد و یک مسیر برگشت. بنابراین فاصله را دوبار طی می کند تا دوباره به سنسور برگردد.  از این رو، 2*29 یعنی 58 میکروثانیه طول می کشد تا صوت یک سانتی متر را برود. 

$$340 \frac{m}{s }= 340\times \frac{100cm}{10^6\mu s} = 0.034\frac{cm}{\mu s} \cong \frac{1}{29} \frac{cm}{\mu s}$$

$$x = v \times t \rightarrow x = \frac{1}{29} \times \frac{t_2}{2} = \frac{t_2}{58}$$

اکنون به برد مینیمم و ماکسیمم فکر کنید. همان طور که در کدهای بالا دیدیم، برد ماکسیمم ما 200 سانتی متر است. اکثر سنسورهای فراصوت که بعنوان تمرین استفاده می شوند، حداکثر بردشان 200 سانتی متر است؛ اما می تواند کمتر نیز باشد. مقدار می نیمم به 0 سانتی متر تنظیم شده است زیرا سنسور حداقل می تواند تا این فاصله را با دقت کمتر محاسبه کند. با اینکه می دانیم چنین نیست. 

در برخی موارد، ممکن است Serial Monitor به صورت هزرنامه، مقدار 0cm را بعنوان مقدار سنسور گزارش کند. برای حل این مشکل به جای کدهای زیر:

if (distance< 15)

کدهای زیر را قرار دهید:

if((distance > 0) && (distance < 15))

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