برای محاسبه سرعت موتور از سنسور و انکودر استفاده میشود .
اما استفاده از سنسور دقت کار را پایین خواهد آورد . چون در یک دور چرخش موتور شما فقط یک پالس خواهید داشت .
در واقعیت شما ممکن است 3.95 دور یا 4.5 دور را در یک ثانیه داشته باشید . که این عدد وقتی در 60 ضرب میشه
اختلاف بزرگی رو ایجاد میکنه . شمارنده شما در استفاده از سنسور عدد یکسانی رو نمیتونه نشان بده .
ممکنه یک بار 4 و بار بعدی 5 را نشان دهد .
این بستگی داره در شروع زمان مثلا یک ثانیه فاصله سنسور تا زائده روی شفت چقدر است .
ممکنن است در یک ثانیه بعدی این فاصله وجود نداشته باشد . پس شما در این روش دقت پایینی خواهید داشت .
اما وقتی از انکودر استفاده می کنید به ازای اینکه انکودر شما چند پالس است ، در هر دور 500 ، 1025 و یا 3600 پالس خواهید داشت .
برای همین چون با قطاری از پالس ها مواجه هستید در هر برش زمانی زده شده ، تعداد پالس زیاد باعث میشه بتونید فیدبک خوبی از سرعت داشته باشید .
روش کار به این صورت است .
ابتدا در قسمت HSC نوع شمارش پالس رو بر روی Frequency قرار می دهید .
در قسمت پایین منو Frequency measuring period فعال میشود .
میتوان زمان 1 و 0.1 و 0.01 ثانیه را انتخاب کرد .
برای مثال ما 1 ثانیه رو در نظر میگیریم .
این انتخاب به معنی این است که تعداد پالس شمارش شده در 1 ثانیه در ID1000 ریخته میشود .
طبیعی است در 1 Sec بعدی دوباره مقدار پالس اندازه گیری شده رفرش می شود .
اگر موتور از حرکت بیاستد ، این عدد صفر خواهد شد .
حالا که تعداد پالس در یک ثانیه را داریم آنرا با دستور MUL در 60 ضرب می کنیم .
عدد به دست امده تعداد پالس در یک دقیقه خواهد بود .
برای محاسبه تعداد دور در یک دقیقه کافیست عدد به دست آمده رو تقسیم بر تعداد پالس انکودر به ازای یک دور کنیم .
برای مثال در اینجا انکودر ما 1024 پالس است . پس تقسیم بر 1024 می شود .
اگر بخواهیم تقسیم ما نتیجه دقیق تری داشته باشد ، باید از تابع DIV به صورت Real استفاده کنیم .
به این صورت اگر نتیجه تقسیم مقدار اعشار هم داشته باشد ، می توان آنرا مشاهده است .
حتما باید برای Float از دابل استفاده کنیم . مثلا MD16 . و سپس نوع نمایش رو بر روی floating-point numbers قرار دهیم .
در این پروژه نیازی به استفاده از CTRL-HSC یا وقفه OB40 نیست .