آردوینوپروژه آردوینو

مدار فاصله سنج آردوینو با استفاده از ماژول HC-SR04

مقدمه

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

اولتراسونیک چیست و چگونه کار میکند؟

سنسور های اولترا سونیک وسایل الکترونیکی هستند که می توانند انرژی الکتریکی را به صورت انرژی مکانیکی در قالب موج های فراصوتی تبدیل نمایند. این سنسور ها دارای یک مدار فرستنده به نام فرستنده فراصوتی و یک مدار گیرنده به نام گیرنده فراصوتی می باشند. موج های فراصوتی موج های مکانیکی هستند که فرکانسی بالاتر از ۲۰ kHz دارند.
این سنسور ها قادرند مقدار فاصله تا یک جسم جامد و فیزیکی را اندازه گیری نمایند. این عمل اندازه گیری در اصل با استفاده از تشخیص با موج های صدا می باشد.  این سنسور یک موج صدا با فرکانس بالا را ارسال کرده و سپس منتظر می ماند تا این موج پس از برخورد به شی ، برگشت پیدا کرده و توسط سنسور دریافت شود. این اتفاق زمانی می افتد که یک جسم در فاصله مناسبی از این سنسور قرار گرفته باشد. اگر هیچ گونه موجی به سنسور برگشت پیدا نکند، آنگاه هیچ گونه جسمی در مقابل سنسور نمی باشد.

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

یکی از شرایط تشخیص این سنسور ، بودن جسم در زاویه ۱۵ درجه ای از سنسور می باشد.

یک سنسور اولتراسونیک می تواند اشیاء را از فاصله ۲ سانتی متر تا ۴۰۰ سانتی متر (۴متر) را محاسبه نماید.

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

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

شرایطی که سنسور قادر به تشخیص صحیح مکان جسم روبروی آن را ندارد.

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

آردوینو UNO R3
برد برد
ماژول فاصله سنج SR04
LEDراه اندازی موتور DC با L293D

سنسوری که از آن می خواهیم استفاده نماییم، یک ماژول اولتراسونیک به نام HC-SR04 می باشد. برای ساخت یک سیستم تشخیص مسافت دقیق ، کافیست که این سنسور را با آردوینو ترکیب نماییم.

از مزیت های سنسور HC-SR04 می توان به ارزان بودن آن اشاره کرد.

در مجموع این سنسور دارای ۴ پایه می باشد که ۲ عدد مربوط به تغذیه و ۲ عدد نیز مربوط به پایه های دیجیتال می باشد. این پایه ها به شکل زیر می باشند.

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

توضیح پایه ها

پایه های VCC و GND مربوط به پایه های تغذیه می شوند. این سنسور به تغذیه ۵ ولت DC نیاز داشته و به دو عدد از پایه های دیجیتال برای ارتباط نیاز دارد.

پایه Trigger (تحریک) پایه ای است که با آن می توان سنسور را تحریک کرد تا شروع به فاصله سنجی کند. این تحریک توسط یک موج ۱۰ میکروثانیه ای صورت می گیرد تا سنسور را فعال نماید. اگر این موج به سنسور فرستاده نشود ، هیچ گاه سنسور نمی تواند مسافت را اندازه بگیرد. زمانی که سنسور پالس را دریافت کرد ، هشت موج با فرکانس۴۰KHz  را از طریق فرستنده های اولتراسونیک خود به سمت مقابل ارسال می کند و منتظر دریافت آن توسط گیرنده های اولترا سونیک می ماند.

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

نحوه اتصال

مدار نصب سنسور اولترا سونیک به آردوینو به شکل زیر می باشد.

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

پایه های تغذیه به پایه های ۵ ولت و زمین آردوینو متصل می شود. سپس پایه Trigger به پایه ۸ آردوینو و پایه Echo به پایه ۷ آردوینو متصل می شوند.

برنامه آردوینو

ما این برنامه را می نویسیم تا سنسور اشیاء را در فاصله ۳ اینچی خود تشخیص داده و درصورت تشخیص ، یک LED را روشن نماید. برنامه زیر را به آردوینو انتقال دهید.

const int signalPin= 7;
const int triggerPin= 8;
const int LEDPin= 13;
long signal, inches, centimeters;

void setup() {
Serial.begin(9600);
}


void loop() {
pinMode (signalPin, INPUT);
pinMode (triggerPin, OUTPUT);
pinMode (LEDPin, OUTPUT);

//sends trigger pulse to trigger pin to start sensor into ranging mode
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);

signal= pulseIn(signalPin, HIGH);

//With the HR-SRO4 sensor, it takes 148 microseconds for a signal to reflect back to the sensor
//this is how we know it's an inch away

inches= signal/148;
centimeters= inches * 2.54; //there are 2.54cm in 1 inch

Serial.print(inches);
Serial.print("in, ");
Serial.print(centimeters);
Serial.print("cm");
Serial.println();

delay(500); //the HC-SR04 sensor will check distance to an object every half a second

if (inches < 3){
digitalWrite(LEDPin, HIGH);
delay(10000);
}

}

در قسمت اول برنامه تمامی متغیر هایی که استفاده می شوند، تعریف می شوند. ۳ متغیر اول برنامه که در ۳ خط اول تعریف شده اند ، پایه های آردوینو را که با سنسور در ارتباط است را نشان می دهد. پایه اول به پایه echo سنسور متصل شده و اطلاعات را از سنسور دریافت می کند. پایه دوم به پایه trigger سنسور متصل شده و جهت ارسال فرمان شروع مسافت سنجی ، از آردوینو به سمت سنسور ارسال می شود. پایه مورد استفاده بعدی برای روشن کردن یک LED می باشد.

همچنین سه متغیر signal  و inches و  centimetersمربوط به محاسبه و نمایش فاصله می باشند.

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

چگونگی محاسبه مسافت

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

برای شروع مسافت سنجی سنسور ، بایستی یک موج که به مدت ۱۰ ثانیه در حالت HIGH می باشد را به پایه trigger ارسال کنیم. پس از ارسال این موج ، سنسرو اولتراسونیک با فرستادن یک موج اولتراسونیک ، شروع به مسافت سنجی می کند. اگر این سنسور مقادیری را دریافت کند، نتایج را به آردوینو ارسال می کند ، در غیر اینصورت هیچ گونه شی ای در برد سنسور نبوده و هیچ گونه مقداری به میکروکنترلر ارسال نمی شود.

دستور (pulseIn(signalPin, HIGH میزان زمانی که پالسی که از پایه signal (متصل به پایه echo سنسور) دریافت می شود ، در حالت HIGH قرار دارد را محاسبه کرده و در نهایت مدت زمان را در واحد میکروثانیه بر می گرداند. این مقدار در متغیر signal قرار می گیرد. اگر که پالسی دریافت نشود ، مقدار صفر را بر می گرداند.

مساحت بر حسب زمان دریافتی

سپس نوبت به محاسبه مسافت بر حسب زمان دریافتی است. برای سنسور اولتراسونیک با فرکانس ۴۰Khz ، مدت ۱۴۶ ثانیه طول می کشد تا این فرکانس مسافت یک اینچ را در یک رفت و برگشت طی کند (هر مسیر) . بنابراین بایستی مدت زمان دریافتی را بر ۱۴۶ تقسیم کنیم تا مسافت به اینچ محاسبه شود ( یعنی inches= signal/148 ).

از طرف دیگر هر اینچ برابر ۲.۵۴ سانتی متر است. بنابراین می توان با ضرب آن در این عدد ، معادل سانتی متر آن را داشته باشیم.

بعد از این دستورات یک دستور تاخیر داریم که یک وقفه نیم ثانیه ای تا رفتن به دستور بعدی ایجاد می کند. مقدار این وقفه بستگی به نیاز شما دارد. اگر می خواهید که هر یک دقیقه یک وقفه داشته باشید ، کافیست این مقدار را به ۶۰۰۰۰ میلی ثانیه برسانید. اما مقدار ۵۰۰ میلی ثانیه مقدار مناسبی می باشد.

در این قسمت با گذاشتن یک جمله شرطی ، می خواهیم که هر وقت سنسور جسمی را در مسافتی کمتر از ۳ اینچ تشخیص داد ، یک LED جهت اخطار دادن ، روشن شود. البته این دستور شرطی کاملا دلخواه بوده و شما می توانید یک اخطار دیگر جایگزین کرده و یا حتی آن را حذف نمایید.

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

برچسب ها
نمایش بیشتر

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید

بستن
دکمه بازگشت به بالا
بستن