سنسور نوری
سنسورهای نوری ، در صورت استفاده محرک های خطی ،عملکرد بسیار شبیه به سنسورهای اثر سالن، به جز آنها نور را به جای میدان های مغناطیسی تشخیص می دهند [1]. سنسورهای نوری با استفاده از نور از LED یا منبع نور دیگری که از طریق دیسک رمزگذار منتقل می شوند ، کار می کنند. این دیسک رمزگذار شکاف داده می شود تا نور به طور دوره ای از آن عبور کند. در طرف دیگر دیسک یک فوتودکتور وجود دارد که هنگام عبور از شکافهای موجود در دیسک ، نور را تشخیص می دهد و سیگنال خروجی را ایجاد می کند [1]. با حرکت محرک ، دیسک رمزگذار می چرخد و نور توسط فوتودکتور که موج مربعی از پالس های ولتاژ تولید می کند ، تشخیص داده می شود. از این پالس ها می توان به طور مشابه با پالس های یک سنسور اثر هال استفاده کرد تا مشخص شود که محرک تا چه اندازه حرکت کرده است.
بازخورد مثبت از یک سنسور نوری
از آنجا که سنسورهای نوری از نظر خروجی آنها کاملاً شبیه به سنسورهای اثر هال عمل می کنند ، این پست وبلاگ به طور خلاصه نحوه خواندن خروجی خود را برای بازخورد موقعیتی پوشش می دهد. اگر به دنبال جزئیات بیشتر هستید ، پست ما را در مورد نحوه خواندن بازخورد موقعیتی از یک سنسور اثر سالن به همان اندازه که مشابه خواهد بود ، بررسی کنید.
مانند سنسورهای اثر هال ، سنسورهای نوری 3 پین برای اتصال به آنها دارند. یکی ولتاژ ورودی ، دیگری زمین و در آخر ، یکی سیگنال خروجی است. برای استفاده از پالس های موجود در سیگنال خروجی برای بازخورد موقعیتی ، باید از میکرو کنترل کننده برای شمارش پالس های تولید شده. شما می خواهید از پین های قطع خارجی میکروکنترلر خود استفاده کنید تا به طور دقیق این پالس ها را بشمارید. از آنجا که وقفه های خارجی با تغییر ولتاژ ایجاد می شود ، می توان از آنها برای تشخیص هر پالس در هنگام وقوع استفاده کرد. هنگامی که وقفه خود را در کد میکروکنترلر خود تنظیم کردید ، باید یک روال سرویس قطع را تنظیم کنید که پالس ها را در صورت بروز آنها حساب می کند. عملکرد CountSteps () در مثال کد زیر برای شمارش تعداد پالس های سنسور نوری استفاده می شود.
برای استفاده از این پالس ها برای تعیین مقدار موقعیتی ، باید موقعیت قبلی محرک خطی و مسیری را که محرک خطی در آن سفر می کند بدانید. همانطور که کنترل می کنید که چه روشی محرک خطی شما حرکت می کند ، می توانید به سادگی یک متغیر را تنظیم کنید برای ردیابی جهت محرک در کد خود. از این متغیر می توان برای تعیین اینکه آیا شما نیاز به اضافه کردن یا تفریق پالس از موقعیت قبلی خود دارید ، استفاده شود. پس از به روزرسانی موقعیت خود ، باید پالس های شمارش شده را به صفر تنظیم کنید. مثال کد زیر تابعی را به شما نشان می دهد که موقعیت را بر اساس تعداد پالس های شمارش شده به روز می کند. پس از داشتن موقعیت از نظر پالس ، می توانید با استفاده از پالس در هر اینچ مشخصات محرک خطی خود به اینچ تبدیل شوید.
محرک خطی خود را به هم بزنید
برای استفاده دقیق از بازخورد موقعیتی از یک سنسور نوری ، باید همیشه موقعیت شروع محرک خطی خود را بدانید. اگرچه وقتی برای اولین بار سیستم خود را روشن می کنید ، میکروکنترلر شما نمی تواند بگوید که آیا محرک تمدید شده است یا خیر. این امر شما را ملزم می کند که محرک خطی خود را به یک موقعیت شناخته شده در خانه خود بکشید. به خانه خود محرک خطی، شما باید آن را به یک موقعیت شناخته شده مانند کاملاً جمع شده منتقل کنید. با استفاده از کد Arduino در زیر به عنوان نمونه ، ما یک حلقه را تنظیم کرده ایم که محرک خطی ما را به سمت موقعیت شناخته شده ما سوق می دهد. در این مثال ، ما می دانیم که با بررسی اینکه آیا متغیر مراحل تغییر کرده است ، در موقعیت شناخته شده خود قرار گرفته ایم یا خیر. ما همچنین باید اطمینان حاصل کنیم که زمان کافی گذشته است تا انتظار داشته باشد که وقفه ایجاد شود ، برای این کار ما از عملکرد Millis () استفاده می کنیم و آن را با تمبر زمان قبلی مقایسه می کنیم. هنگامی که ما تشخیص دادیم که محرک خطی در موقعیت خانه ما قرار دارد ، رانندگی محرک را متوقف می کنیم ، متغیر مراحل را تنظیم می کنیم و از حلقه در حالی خارج می شویم.
برخورد با محرک های دروغین
در حالی که سنسورهای نوری به اندازه پتانسیلومترها نسبت به سر و صدای الکتریکی حساس نیستند ، سر و صدای الکتریکی و تندرست سوئیچ هنوز هم می تواند سیگنال خروجی را تحت تأثیر قرار دهد و ممکن است باعث شود پالس های کاذب شمارش شود. چند پالس اضافی خیلی در موقعیت یابی تأثیر نمی گذارد ، اما با گذشت زمان ممکن است مسئله بزرگتر باشد. شما می توانید با استفاده از تایمر داخلی برای فیلتر کردن محرک های کاذب ، با این مسائل مبارزه کنید. از آنجا که می توانید تعیین کنید که چقدر مکرر انتظار می رود پالس های جدید تشخیص داده شود ، می توانید هنگام وقفه با سر و صدا ، فیلتر کنید. در نمونه کد زیر ، Trigdelay تأخیر زمانی بین هر پالس است. اگر وقفه قبل از این تأخیر انجام شود ، پالس شمارش نمی شود. مدت زمان این تأخیر بر اساس کاربرد شما متفاوت خواهد بود ، اما اگر خیلی کوتاه باشد ، سر و صدا را به درستی فیلتر نمی کند و اگر خیلی طولانی باشد پالس های واقعی را از سنسور نوری از دست می دهد.
راه دیگر برای مبارزه با محرک های دروغین ، اصلاح مقدار موقعیتی هر بار که محرک به یک موقعیت شناخته شده می رسد. مانند خانه کردن محرک خطی ، اگر محرک خطی را به موقعیتی کاملاً جمع شده یا گسترده سوق داده اید یا از سوئیچ های حد خارجی استفاده می کنید ، می دانید که برای رسیدن به آن موقعیت چند پالس طول می کشد. سپس می توانید هنگام رسیدن به آن موقعیت شناخته شده ، مقدار موقعیت را با استفاده از آن مقدار اصلاح کنید. در نمونه کد زیر ، این کار برای موقعیت های کاملاً گسترده و کاملاً جمع شده انجام می شود. این روش یک راه حل عملی برای اطمینان از دقیق بودن ارزش موقعیت شما ارائه می دهد.
خلاصه
سنسورهای نوری مورد استفاده برای بازخورد موقعیتی ، دقت و وضوح بیشتری را در مقایسه با سنسورهای اثر هال و پتانسیلومترها فراهم می کنند ، در حالی که دارای نقاط قوت و اشکالاتی در سنسورهای اثر هال هستند. اگرچه آنها موقعیت مطلق را اندازه گیری نمی کنند و برای ارائه مقدار موقعیتی به موقعیت شروع شناخته شده نیاز دارند ، اما تعداد زیادی از پالس در اینچ امکان قابلیت اطمینان در موقعیت یابی را فراهم می کند و اطمینان از چندین محرک خطی به طور همزمان حرکت می کند. استفاده از ما FA-Sync-X کنترل کننده محرک یا از طریق کد اضافی، شما حتی می توانید اطمینان حاصل کنید که محرک ها بدون توجه به بار ، در یونیسون حرکت می کنند.
برای مثال کد کامل ، وبلاگ ما را بررسی کنید نحوه خواندن بازخورد موقعیتی از یک سنسور اثر سالن به همان اندازه مشابه خواهد بود. مقادیر مانند پالس در اینچ و تأخیر در زمان بین پالس برخی از تغییراتی است که شما برای استفاده از آن کد برای استفاده دقیق از سنسور نوری خود باید استفاده کنید.
[1] Paschotta ، R. مقاله در مورد سنسورهای نوری. برگرفته از:https://www.rp-photonics.com/optical_sensors.html