آردوینو آردوینو Arduino Uno آموزش آردوینو سخت افزار قطعات الکترونیک

سنسور فاصله سنج و تشخیص مانع E18-D80NK

getting-started-with-e18-d80nk-sensor-infrared-digispark
نوشته شده توسط پریسا پوربلورچیان
سنسور فاصله سنج E18-D80NK یک سنسور اپتیکال است که با استفاده از تکنولوژی امواج فرابنفش (IR) فاصله بین یک شیء و سنسور را اندازه گیری می کند. این سنسور می تواند فاصله ای را تا حدود ۸۰ سانتیمتر اندازه گیری کند.این سنسور در بسیاری از کاربردها مانند رباتیک، سیستم های امنیتی، سامانه های اتوماسیون صنعتی و خودروهای هوشمند مورد استفاده قرار می گیرد.همچنین، مانع E18-D80NK یک واحد حفاظتی است که به صورت جداگانه با سنسور E18-D80NK فروخته می شود. این مانع به منظور جلوگیری از ایجاد اختلال در عملکرد سنسور در محیط هایی که دارای نور بالا یا دمای بالا هستند، مورد استفاده قرار می گیرد.در ادامه معرفی و روش کار با سنسور مادون قرمز e18-d80nk با مرجع تخصصی الکترونیک و آردوینو به زبان فارسی دیجی اسپارک همراه باشید.

 

 


معرفی سنسور مادون قرمز E18-D80NK


سنسور فاصله سنج E18-D80NK از ماهیت فتوالکترویک استفاده کرده و بخشی از خانواده سنسورهای مادون قرمز به شمار می‌آید. سنسور فاصله سنج E18-80DNK فاصله شی تا سنسور را توسط پرتو الکترومغناطیسی شناسایی کرده و از پرتو نور جهت شناسایی مانع استفاده می‌کند. در این حالت از خاصیت بازتاباننده استفاده شده است به این معنی که سنسور دارای بازتاب کننده نور است و نور را از سنسور فرستنده دریافت کرده و به سنسور گیرنده بازتاب می‌کند. سپس اگر مانع بین سنسور فرستنده و بازتاب کننده نور وجود داشته باشد، به سنسور ارسال می‌کند. سنسور E18-D80NK در فاصله ۳ تا ۸۰ سانتی متر مانع را شناسایی کرده و توسط یک مولتی ترن قابلیت تنظیم شدت نور دریافتی را دارد. سنسور E18 از یک ال ای دی اینفرارد و گیرنده جهت تشخیص شی در فاصله خاص استفاده می‌کند. سنسور از یک سیگنال دیجیتال ساده استفاده می‌کند و خروجی سنسور به صورت پیشفرض High است و با قرار گرفتن شی در مجاورت سنسور LOW می‌شود. فاصله تشخیص ۳ تا ۸۰ سانتی متری توسط مولتی ترن قابل تنظیم است و در پشت سنسور یک ال ای دی LED تعبیه شده است که پس از شناسایی مانع به صورت چشمک زن عمل می‌کند. این سنسور دارای سه پایه VCC, GND و OUT است که در سه رنگ آبی، قهوه ای و مشکی در بازار موجود است. همچنین سه رنگ قرمز، سبز و زرد هم از این سنسور وجود دارد. سنسور E18 طبق اطلاعات گفته شده در ابتدا در خط تولید جهت تشخیص اشیا در حال حرکت مصرف داشته و به مرور زمان به دلیل دقت اندازه گیری بالا در مصارف دیگر مانند تشخیص مانع و سیستم های امنیتی هم استفاده شده است. با چرخش مولتی ترن در جهت ساعتگرد CW دامنه شناسایی افزایش یافته و با چرخش در جهت پادساعتگرد دامنه شناسایی کاهش می‌باید. در صورتیکه مولتی ترن تا آخرین حالت پادساعتگرد چرخانده شود، سنسور دیگر هیچ تشخیصی انجام نمیدهد تا دوباره توسط مولتی ترن به حالت ساعتگرد بازگردد و همچنین این اتفاق برعکس هم رخ میدهد. همچنین این سنسور فقط قابلیت تشخیص مانع را دارد و برای اندازه گیری فاصله تا شی مناسب نمی‌باشد.

 


مشخصات فنی سنسور E18-D80NK


در زیر مشخصات فنی سنسور E18-D80NK آمده است:
  • نام سنسور: E18-D80NK
  • نوع سنسور: فاصله سنج اپتیکال
  • محدوده فاصله اندازه گیری: ۰ تا ۸۰ سانتیمتر
  • ولتاژ کاری: ۳٫۳ تا ۵ ولت
  • جریان مصرفی: کمتر از ۱۰۰ میلی آمپر
  • خروجی: خروجی دیجیتال با فرمت TTL (0 و ۱)
  • زمان پاسخگویی: کمتر از ۲٫۳ میلی ثانیه
  • دمای کاری: -۲۵ تا +۵۵ درجه سانتیگراد
لازم به ذکر است که مشخصات فنی سنسور E18-D80NK ممکن است با توجه به شرایط کاری و پیکربندی سیستم متفاوت باشد.

 

 


تست سنسور مادون قرمز E18-D80NK


سنسور در محیط های مناسب و نور کافی تشخیص قابل قبولی دارد و از آنجایی که میزان بازتاب نور IR بسته به زاویه و نور محیط است ممکن است شرایط مکانی مختلف نتایج متفاوتی را رقم بزند. با توجه به اینکه این سنسور توسط نور IR Infrared مانع را شناسایی می‌کند، شرایط محیطی، نور محیط و زاویه دید سنسور در دستگاه مورد استفاده از اهمیت ویژه ای برخوردار است. به عنوان مثال در دیتاشیت سنسور E18-D80NK اشاره شده است که در صورتیکه سنسور در مقابل یک سطح سفید براق قرار گیرد، سنسور تا فاصله ۱۴۰ سانتی متری مانع را تشخیص خواهد داد. همچنین این مورد با سطح سیاه مسطح تست شده است و با قرار گرفتن سنسور در مقابل سطح سیاه تا فاصله ۱۲۰ سانتی متری را تشخص خواهد داد که تمامی این موارد قطعا نیاز به تست دارد و نتیجه برای همه یکسان نبوده است و شرایط محیطی تست سنسور تاثیر گذار خواهد بود. ایده آل ترین فاصله اندازه گیری شده توسط سنسور ۸ سانتی متر در نور طبیعی می‌باشد.

 


پایه سنسور مادون قرمز E18-D80Nk


سنسور E18-D80NK از سه پایه VCC, GND و OUT تشکیل شده است که به ترتیب رنگ آبی، قهوه ای و مشکی می‌باشد.

  • پایه VCC کابل قهوه ای  BROWN می‌باشد.
  • پایه GND کابل آبی  BLUE می‌باشد.
  • پایه OUT کابل مشکی BLACK می‌باشد.

 

 


راه اندازی بدون برنامه نویسی


یکی از روش های رایج راه اندازی سنسور E18-D80NK اتصال مستقیم و ساده دیجیتال است. تغذیه مورد نیاز جهت راه اندازی سنسور ۵ ولت DC و جریان ۱۰۰ میلی آمپر است. پایه OUT همان پایه سیگنال دیجیتال است که به خروجی مورد نظر متصل می‌شود.

رله Relay

رله در مدارات الکترونیک همانند کلید عمل کرده و  نوعی کلید الکترونیکی است. با عبور جریان الکتریکی از داخل آن، همانند یک کلید عمل می‌کند. در خروجی می‌تواند یک مدار دیگر را به حالت باز یا بسته تبدیل کند. له معمولی دارای بوبین که از پرکاربردترین نوع است. در خروجی دارای ۳ پایه می‌باشد.پایه وسط مشترک و دو پایه کناری یکی NO به مفهوم Normally Open یعنی به صورت پیش فرض در حالت باز قرار دارد. پایه دیگر NC به مفهوم Normally Close یعنی به صورت پیش فرض در حالت بسته قرار دارد. خروجی رله به صورت کلید میان راهی بین یکی از سیم‌ها قرار می‌گیرد. به عنوان مثال در ادامه روش اتصال مستقیم سنسور به رله مشخص شده است:

  • پایه ۵ ولت سنسور E18-D80NK را به پایه ۵ ولت رله اتصال دهید.
  • پایه GND سنسور E18-D80NK را به پایه GND رله اتصال دهید.
  • پایه OUT سنسور E18-D80NK را به پایه IN رله اتصال دهید.

با اعمال تغذیه سنسور فعال شده و با نزدیک شدن شی در مجاورت سنسور، سنسور مانع را تشخیص داده و رله فعال HIGH خواهد شد.

 


راه اندازی با برنامه نویسی Arduino


از دیگر روش های راه اندازی سنسور استفاده از میکروکنترلرهایی مانند آردوینو Arduino، Nodemcu, Wemos و رزبری پای Raspberry Pi است که نیاز به دانش برنامه نویسی خواهد داشت. در این مرحله نمونه کد راه اندازی سنسور E18-D80NK توسط برد آردوینو Arduino UNO R3 قرار گرفته شده است.

برد آردوینو

برد آردوینو یک میکروکنترلر با قابلیت دسترسی به پورت های دیجیتال و آنالوگ و پروتکل های I2C و SPI است. در این آموزش از آردوینو Arduino مدل UNO استفاده شده است.  آردوینو Arduino دارای تراشه Atmega328P است و با در اختیار داشتن پایه های کنترلی آنالوگ و دیجیتال I/O میتوان با سنسورهای مختلف ارتباط برقرار کرد. با در نظر گرفتن پروتکل ارتباطی آن ها را راه اندازی و کدنویسی کرد. محیط برنامه نویسی IDE Arduino است که نباز به دانش برنامه نویسی C++ خواهد داشت. با انتقال کد به محیط برنامه نویسی و کامپایل کد پروژه آماده اجرا خواهد بود.مراحل نصب نرم افزار آردوینو Arduino در آموزش زیر نوشته و منتشر شده است. در صورتیکه تا به حال با برد آردوینو کار نکرده اید، ابتدا آموزش زیر را مطالعه و سپس مراحل بعدی را اجرا کنید.

آموزش کار با برد آردوینو Arduino و نصب نرم افزار Arduino IDE

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

لینک دانلود نرم افزار آردوینو

 


کد آردوینو Arduino


کد زیر را کپی و یک تب جدید در نرم افزار آردوینو باز کرده و سپس انتقال دهید.

int const LED = 13;       // در صورت دلخواه از یک ال ای دی برای نمایش وضعیت میتوانیداستفاده کنید. همچنین ال ای دی شماره ۱۳ ال ای دی داخلی برد میباشد
int const E18D80NK = 10;     // پایه مشکی رنگ OUT سنسور را به پایه شماره ۱۰ آردوینو اتصال دهید
boolean detect = false; // یک نشانه گذاری برای زمان تشخیص مانع توسط سنسور در نظر بگیرید که در حالت پیش فرض به صورت فالس است.


void setup() {
  pinMode(LED, OUTPUT);     // تعریف پایه ال ای دی به عنوان خروجی
  pinMode (E18D80NK, INPUT);    //تعریف پایه سنسور به عنوان ورودی
  Serial.begin(9600); // نمایش متن در سریال مانیتور با بادریت پیشفرض ۹۶۰۰
}
void loop() {
  if ( digitalRead( E18D80NK))       // در صورتیکه خروجی سنسور HIGH باشد ، مانع وجود ندارد
  {
    if (detect == true) {         // اگر قبلا یک شی تشخیص داده شده بود
     detect = false;             // نشانه گذاری کنید که هیچ شی شناسایی نشده است
      digitalWrite (LED, LOW);      // اگر هیچ شی شناسایی نشده است، ال ای دی خاموش باشد
    }
  }
  else                                 // در صورتیکه خروجی LOW باشد، نشان دهنده تشخیص مانع است
  {
    detect = true;               // نشانه گذاری کنید
    digitalWrite (LED, HIGH);      //ال ای دی به نشانه تشخیص مانع روشن شود
    Serial.println("Object Detected"); // و پیام تشخیص مانع برای سریال مانیتور ارسال شود. 
  }
  delay(100);                         // زمان تاخیر برای تشخیص دوباره
}

جهت کامپایل برنامه در برد آردوینو ابتدا کد را Verify کنید. با اینکار در صورتیکه خطایی در انتقال کد و یا غلط املایی وجود داشته باشد، نمایش داده می‌شود. سپس بر روی Upload کلیک کنید تا برنامه بر روی برد آپلود Upload و کامپایل شود.

 


تحلیل کد آردوینو Aruino


در ابتدا جهت شروع برنامه نویسی پایه های مورد استفاده ورودی و خروجی را در برنامه تعریف میکنیم. خروجی میتواند هر قطعه ای مانند ال ای دی LED و یا رله Relay باشد که در کدنویسی تاثیری ندارد. پایه ها را مانند زیر تعریف میکنیم:

int const LED = 13;       // در صورت دلخواه از یک ال ای دی برای نمایش وضعیت میتوانیداستفاده کنید. همچنین ال ای دی شماره ۱۳ ال ای دی داخلی برد میباشد
int const E18D80NK = 10;     // پایه مشکی رنگ OUT سنسور را به پایه شماره ۱۰ آردوینو اتصال دهید
boolean detect = false; // یک نشانه گذاری برای زمان تشخیص مانع توسط سنسور در نظر بگیرید که در حالت پیش فرض به صورت فالس است.

همچنین از یک flag یا به ترجمه فارسی نشانه گذاری جهت مشخص کردن وضعیت سنسور در کدها تعریغف میکنیم که به صورت پیشفرض False می‌باشد و به این معنی است که در مرحله اول هیچ مانعی توسط سنسور تشخیص داده نشده است.

در مرحله بعدی Void setup جهت مشخص شدن ورودی و خروجی و سریال مانیتور نوشته شده است.

void setup() {
  pinMode(LED, OUTPUT);     // تعریف پایه ال ای دی به عنوان خروجی
  pinMode (E18D80NK, INPUT);    //تعریف پایه سنسور به عنوان ورودی
  Serial.begin(9600); // نمایش متن در سریال مانیتور با بادریت پیشفرض ۹۶۰۰
}

مرحله اصلی حلقه برنامه است که وضعیت فعال و غیرفعال شدن سنسور مشخص می‌شود:

void loop() {
  if ( digitalRead( E18D80NK))       // در صورتیکه خروجی سنسور HIGH باشد ، مانع وجود ندارد
  {
    if (detect == true) {         // اگر قبلا یک شی تشخیص داده شده بود
     detect = false;             // نشانه گذاری کنید که هیچ شی شناسایی نشده است
      digitalWrite (LED, LOW);      // اگر هیچ شی شناسایی نشده است، ال ای دی خاموش باشد
    }
  }
  else                                 // در صورتیکه خروجی LOW باشد، نشان دهنده تشخیص مانع است
  {
    detect = true;               // نشانه گذاری کنید
    digitalWrite (LED, HIGH);      //ال ای دی به نشانه تشخیص مانع روشن شود
    Serial.println("Object Detected"); // و پیام تشخیص مانع برای سریال مانیتور ارسال شود. 
  }
  delay(100);                         // زمان تاخیر برای تشخیص دوباره
}

در این حالت سنسور به صورت پیشفرض HIGH است و با قرار گرفتن مانع در مسیر سنسور E18-D80NK سنسور به وضعیت LOW رسیده و ال ای دی روی برد آردوینو و ال ای دی سنسور همزمان با یکدیگر روشن شده و نشان دهنده فعال شدن سنسور و تشخیص مانع است. در این حالت در صورتیکه خروجی سنسور HIGH باشد، هیچ مانعی در مسیر سنسور قرار ندارد و فلگ Flag به صورت پیش فرض False تعریف شده است به این معنی که مانع هنوز تشخیص داده نشده است و ال ای دی به صورت پیشفرض خاموش است. پس از تشخیص مانع، سنسور LOW شده و سپس فلگ به صورت True یعنی تشخیص مانع می‌باشد و ال ای دی روشن شده و نشانگر تشخیص مانع است.

 


وسایل مورد نیاز


سنسور مادون قرمز E18-D80NK 

برد آردوینو Arduino UNO R3

ال دی دی LED

رله Relay

کابل نری به نری

 

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

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۰ دیدگاه

  • سلام . میشه بفرمایید خروجی این ماژول PNP هست یا NPN و اینکه NO می باشد یا NC ؟ و اینکه اپن کلکتور هست یا نه ؟ مطالب مختلفی تو اینترنت و دیتاشیت های چینی هست . هرکدوم یه چیزی نوشتن .

    • با سلام
      در اکثر دیتاشیت هایی که بنده بررسی کردم سنسور به صورت NPN NO تعریف شده است.

  • سلام
    از این ماژول برای ساخت مایع ریز کرونا میشه استفاده کرد؟ یه ویدیو دیدم ازش، میشه راهنمایی کنید؟

    • با سلام
      بله امکان پذیر است. ورودی ماژول یعنی پایه دیتا را به ورودی رله متصل کنید. در همین آموزش کامل توضیح داده ام.

  • سلام وقت بخیر
    از سنسور های مادون قرمز ( مثلا VL53L0X ) میتوانیم در محیط بیرون و در نور خورشید استفاده کنیم ؟
    شما تست کردید ؟ سنسور دچار مشکل میشه یا نه ؟
    ممنونم

    • با سلام
      این مورد توسط بنده تست نشده است اما در نظر داشته باشید تابش مستقیم نور در عملکرد سنسور تاثیر منفی خواهد داشت.