اندازه‌گیری فاصله | قسمت سی و دوم آموزش آردوینو

اندازه‌گیری فاصله | قسمت سی و دوم آموزش آردوینو
محمد کبیر
35 بازدید
۱۴۰۴-۰۴-۲۹
8 دقیقه
  • نویسنده: Arduino captain
  • درباره نویسنده: من کاپیتان آردوینو، اسمم میلاده و اینجا هستم تا تجربیاتم در رابطه با آردوینو رو با شما به اشتراک بزارم!

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

فرض کنید می‌خواهید فاصله تا چیزی را اندازه‌گیری کنید، مانند یک دیوار یا فردی که به سمت آردوینو حرکت می‌کند.

سنسور Parallax PING)))

در این پروژه از سنسور فاصله‌سنج التراسونیک Parallax PING))) برای اندازه‌گیری فاصله یک جسم در بازه‌ای از ۲ سانتی‌متر تا حدود ۳ متر استفاده می‌شود. فاصله اندازه‌گیری‌شده روی سریال مانیتور نمایش داده می‌شود و همچنین، هرچه جسم به سنسور نزدیک‌تر شود، یک LED با سرعت بیشتری چشمک می‌زند (اتصالات در شکل 1 نشان داده شده‌اند.)

کد برنامه برای سنسور PING)))

سنسور اتصالات

شکل 1: سنسور اتصالات

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

پالس صوتی “پینگ” زمانی تولید می‌شود که پین pingPin به مدت دو میکروثانیه در وضعیت HIGH قرار گیرد. پس از آن، سنسور یک پالس ایجاد می‌کند که با بازگشت صدا به سنسور پایان می‌یابد.

عرض (مدت‌زمان) این پالس متناسب با مسافتی است که صدا طی کرده و برنامه با استفاده از تابع pulseIn این مدت را اندازه‌گیری می‌کند.

فرمول محاسبه فاصله

سرعت صوت حدود ۳۴۰ متر بر ثانیه است که معادل ۲۹ میکروثانیه برای هر سانتی‌متر می‌باشد.
فرمول محاسبه فاصله برای رفت‌ و برگشت صدا به این صورت است:

فاصله (سانتی‌متر) = مدت‌زمان (میکروثانیه) ÷ ۲۹

بنابراین، فرمول محاسبه فاصله یک‌طرفه (رفت) در واحد سانتی‌متر به این صورت است:

فاصله = مدت‌زمان (میکروثانیه) ÷ 29 ÷ 2

عدد 340 متر بر ثانیه، سرعت تقریبی صوت در دمای 20 درجه سانتی‌گراد (68 درجه فارنهایت) است.

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

جایگزین ارزان‌تر: سنسور HC-SR04

یک جایگزین ارزان‌تر برای سنسور Parallax PING)))، سنسور HC-SR04 است که توسط بسیاری از فروشندگان و همچنین در سایت‌هایی مانند eBay قابل‌تهیه می‌باشد.

اگرچه HC-SR04 دقت و برد کمتری نسبت به PING))) دارد، اما در مواردی که قیمت اهمیت بیشتری نسبت به عملکرد دارد، می‌تواند گزینه مناسبی باشد.

برخلاف PING)))، در سنسور HC-SR04 پین‌های جداگانه‌ای برای ارسال پالس صوتی (Trigger) و دریافت بازتاب آن (Echo) وجود دارد.

کد برنامه برای سنسور HC-SR04

کد اصلاح‌شده‌ی زیر، نمونه‌ای از استفاده این سنسور را نشان می‌دهد:

نکات استفاده از HC-SR04

بر اساس دیتاشیت سنسور HC-SR04، توصیه می‌شود که حداقل ۶۰ میلی‌ثانیه بین هر اندازه‌گیری فاصله باشد. البته، چون در این پروژه چشمک‌زدن LED خودش مقداری زمان صرف می‌کند، استفاده از delay(60); باعث ایجاد تأخیری بیش از حد نیاز می‌شود.

اما اگر در کد شما هیچ تأخیر دیگری وجود نداشته باشد، بهتر است همان تأخیر ۶۰ میلی‌ثانیه‌ای را حفظ کنید تا سنسور به‌درستی و بادقت کار کند.

سنسور HC-SR04 بهترین عملکرد را با ولتاژ ۵ ولت دارد، اما می‌توان از آن در بردهایی با ولتاژ ۳٫۳ ولت نیز استفاده کرد، به شرطی که آن بردها نسبت به ۵ ولت مقاوم  5-volt tolerant باشند؛ مانند برد Teensy 3.

شکل 2 نحوه‌ی سیم‌کشی این سنسور را برای یک برد ۵ ولتی نشان می‌دهد:

اتصالات سنسور HC-SR04

شکل 2: اتصالات سنسور HC-SR04

 

سنسور MaxBotix EZ1

سنسور اولتراسونیک دیگری که می‌توان برای اندازه‌گیری فاصله استفاده کرد، MaxBotix EZ1  است.

این سنسور نسبت به Ping))) یا HC-SR04 راحت‌تر قابل‌استفاده است، زیرا نیازی به ارسال پالس “پینگ” ندارد و می‌تواند با ولتاژ ۳.۳ یا ۵ ولت کار کند.

این سنسور اطلاعات فاصله را به‌صورت مداوم ارائه می‌دهد که می‌تواند به شکل ولتاژ آنالوگ یا پالس با عرض متناسب باشد.

شکل 3 نحوه اتصال این سنسور را نشان می‌دهد.

اتصال خروجی PW سنسور EZ1 به یک پین ورودی دیجیتال

شکل 3: اتصال خروجی PW سنسور EZ1 به یک پین ورودی دیجیتال

کد برنامه برای خروجی عرض پالس (PW)

کد (اسکچ) زیر، از خروجی عرض پالس (PW) سنسور EZ1 استفاده می‌کند تا خروجی‌ای مشابه با کد قبلی تولید کند.

سنسور EZ1 از طریق پایه‌های +5 ولت و زمین (GND) تغذیه می‌شود که باید به پایه‌های متناظر در آردوینو متصل شوند.

پایه PW سنسور EZ1 را به پایه دیجیتال شماره ۵ آردوینو وصل کنید.

کد، عرض پالس را با استفاده از فرمان pulseIn اندازه‌گیری می‌کند.

عرض پالس معادل ۵۸ میکروثانیه به‌ازای هر سانتی‌متر یا ۱۴۷ میکروثانیه به‌ازای هر اینچ است.

نکات اتصالات و پایداری

اگر از سیم‌های اتصال بلند برای سنسور استفاده می‌کنید، ممکن است نیاز باشد که یک خازن بین پایه‌های +5V و GND قرار دهید تا منبع تغذیه سنسور پایدارتر شود.

اگر خوانش‌های سنسور نابسامان یا ناپایدار بود، یک خازن ۱۰ میکروفاراد (10 µF) را در نزدیکی سنسور بین +5 ولت و زمین وصل کنید.

شما همچنین می‌توانید مقدار فاصله را از طریق خروجی آنالوگ سنسور EZ1 دریافت کنید.

برای این کار، پایه AN را به یکی از پایه‌های ورودی آنالوگ آردوینو متصل کرده و مقدار آن را با تابع analogRead بخوانید.

کد زیر مقدار ورودی آنالوگ را خوانده و آن را به سانتی‌متر تبدیل کرده و چاپ می‌کند:

مقدار به‌دست‌آمده از تابع analogRead تقریباً معادل ۴.۸ میلی‌ولت به‌ازای هر واحد است.

طبق دیتاشیت، خروجی آنالوگ سنسور EZ1 در ولتاژ ۵ ولت برابر با ۹.۸ میلی‌ولت به‌ازای هر اینچ و در ولتاژ ۳.۳ ولت برابر با ۶.۴ میلی‌ولت به‌ازای هر اینچ است.

برای تبدیل فاصله از اینچ به سانتی‌متر، کافی است مقدار به‌دست‌آمده را در ۲.۵۴ ضرب کنید.

اندازه‌گیری دقیق فاصله با سنسورهای Time of Flight (ToF)

فرض کنید می‌خواهید فاصله اجسام تا آردوینو را با دقت بیشتری نسبت به روش گفته‌شده اندازه‌گیری کنید.

سنسورهای فاصله‌ی Time of Flight (ToF) از یک لیزر کوچک و سنسور استفاده می‌کنند تا مدت زمانی را که طول می‌کشد پرتوی نور لیزری به جسم برخورد کرده و به سنسور بازگردد، اندازه‌گیری کنند.

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

بااین‌حال، برد آن‌ها معمولاً کمتر است.

به‌عنوان‌مثال:

سنسور HC-SR04 می‌تواند فاصله‌ای بین ۲ سانتی‌متر تا ۴ متر را اندازه‌گیری کند، درحالی‌که سنسور VL6180X از نوع ToF تنها می‌تواند فاصله‌ای بین ۵ تا ۱۰ سانتی‌متر را اندازه‌گیری کند.

کدی که در ادامه این بخش آمده از سنسور VL6180X ساخت شرکت Adafruit (شناسه محصول 3316) استفاده می‌کند.

شکل 4 نحوه اتصال سنسور را نشان می‌دهد.

کد برنامه برای سنسور VL6180X

برای استفاده از این کد، لازم است که کتابخانه Adafruit_VL6180X را نصب کنید.

 

 اتصال سنسور فاصله‌یابی VL6180X (Time of Flight)

شکل 4: اتصال سنسور فاصله‌یابی VL6180X (Time of Flight)

 

سنسور VL6180X از پروتکل I2C برای ارتباط با آردوینو استفاده می‌کند. برای این ارتباط، لازم است پایه‌های SCL و SDA سنسور به پایه‌های متناظر آردوینو متصل شوند.

جزئیات کد و مدیریت خطاها

در کد مربوطه:

کتابخانه‌ی Wire برای پشتیبانی از ارتباط I2C اضافه شده است.

همچنین کتابخانه‌ی Adafruit_VL6180X نیز اضافه شده که توابع لازم برای کار با سنسور را فراهم می‌کند.

قبل از تابع setup، یک شیء مثلاً با نام sensor از کلاس مربوط به سنسور تعریف می‌شود تا بتوان با آن کار کرد.

سپس در داخل تابع setup، سنسور مقداردهی اولیه (initialize) می‌شود تا آماده خواندن داده‌ها باشد.

تابع setup پورت سریال را راه‌اندازی می‌کند و تلاش می‌کند سنسور را نیز مقداردهی اولیه کند.

اگر مقداردهی اولیه سنسور با شکست مواجه شود، یک پیام خطا از طریق پورت سریال چاپ می‌شود و سپس برنامه با واردشدن به یک حلقه (loop) بی‌نهایت (infinite while) متوقف می‌شود تا از ادامه اجرای کد جلوگیری شود.

در هر بار اجرای حلقه loop، برنامه فاصله را از سنسور می‌خواند و همچنین وضعیت سنسور را بررسی می‌کند تا مطمئن شود که در حالت خطا قرار ندارد.

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

مثالی که همراه کتابخانه Adafruit_VL6180X ارائه شده، بررسی‌های دقیق‌تری روی تمام حالت‌های خطا انجام می‌دهد. به جز خطاهای سیستمی که این برنامه بررسی می‌کند، بیشتر خطاها موقتی هستند و در خوانش‌های بعدی خودبه‌خود رفع می‌شوند.

اطلاعات
35
0
0
لینک و اشتراک
جلسات دیگر
آردوینو

سنسور های داخلی آردوینو + سنسور تشخیص حرکت...

profile

Arduino captain

متخصص الکترونیک

من کاپیتان آردوینو، اسمم میلاده و اینجا هستم تا تجربیاتم در رابطه با آردوینو رو با شما به اشتراک بزارم!

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

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

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
family

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ
سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله