آموزش راه اندازی انکودر صنعتی (Autonics) با بهترین روش


مطلب اختصاصی مرکز مکاترونیک ایران

توسط :محمدرضا ناظم

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

روش عملکرد انکودر ها به این صورت هست که به ازای مثلا یک دور کامل ۳۶۰۰ پالس تولید کنند. در نتیجه با شمارش پالس ها می توان میزان چرخش و در نتیجه میزان جابه جایی را محاسبه نمود.

فرض کنید یک چرخ با قطر ۱۰ سانتی متر را به یک انکودر بسته ایم. در اینجا به ازای هر دور چرخ ۳۶۰۰ پالس تولید می شود که در حقیقت این ۳۶۰۰ پالس بیانگر محیط طی شده دایره چرخ می باشد. که با یک نسبت ساده در برنامه نوشته شده برای انکودر، قابل محاسبه خواهد بود. بدیهی است هرچه تعداد پالس ها بیشتر شوند، دقت محاسبه حرکت هم بیشتر می شود ولی باید این نکته را هم در نظر گرفت که آی سی متصل شده به انکودر نیز قادر به شمردن این پالس ها با توجه به کریستال به کار برده شده در شمارنده، باشد.

از جمله انکودرهای مستقل که در حال حاظر در بازار به انکودر آسانسورها نیز معروفند، انکودرهای Autonics  می باشند که با پالس های گوناگون و دقیق از جلمه ۱۰۲۴، ۲۰۴۸، ۳۶۰۰ (از ۱۰ پالس تا ۱۰۰۰۰ پالس) در بازار می باشند. این انکودر ها در گروه بندی به انکودرهای INCREMENTAL  نیز معروف هستند که در ادامه به بحث  توضیح آنها خواهیم پرداخت.

عملکرد اصلی یک انکودر بر اساس تولید پالس هاست و هدف اصلی ما در این آموزش ارائه ی روشی مطمئن برای شمارش این پالس ها توسط AVR می باشد.

و اما یک انکودر در عمل چگونه کار می کند.

بسیاری از انکودر های بازار دارای چند سیم مختلف هستند که به طور کلی به صورت زیر می باشد:

۱- سیم ولتاژ (VCC) انکودر

۲- سیم زمین (GND)انکودر

۳- سیم A برای پالس اول

۴- سیم B برای پالس دوم با اختلاف فاز ۹۰ درجه نسبت به پالس A

5- سیم Z  که به ازای هر دور کامل انکودر (از لحظه حرکت آن ، تا یک دور کامل) یک پالس تولید می کند.

۶- سیم شیلد دار برای حذف نویز

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

آموزش راه اندازی انکودر صنعتی (Autonics) با بهترین روش

و اما روش شمارش پالس ها با AVR :

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

گام هایی که در اینجا برای شمارش پالس ها نیاز است:

۱- ساخت مدار ساده فلیپ فلاپ از نوع D برای شناسایی پالس پیشتاز  (در حقیقت برای شناسایی CCW یا CW انکودر)

۲- فعال سازی Interupt خارجی میکرو برای شمارش تعداد پالس های تولیدی و ارتباط این پالس با میکرو به بهترین شکل

۳- ایجاد سطح ولتاژ مناسب آی سی برای حذف کاهش خطا با توجه به ولتاژ انکودر (۵ ولت یا ۱۲ ولت)

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

برای حل این مشکل تقسیم مقاومتی مناسب، ولتاژ ۱۰ ولت را به سطح ۵ ولت می آورد و قابل اعمال برای عملکرد صحیح فلیپ فلاپ می شود.

و اما شروع کار:

در مرحله اول می خواهیم با آی سی ۴۰۱۳ یک فلیپ فلاپ از نوع D (تاخیری) را برای اتصال به انکودر آماده سازی کنیم. (PDF این آی سی در فایل پیوست قابل دانلود است.)

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

در زیر شماتیک این مدار را می توانید مشاهده کنید (برای بزرگتر شدن تصویر، روی آن کلیک کنید…):

آموزش راه اندازی انکودر صنعتی (Autonics) با بهترین روش

همچنین از این لینک می توانید فایل شبیه سازی و روش  استفاده از آی سی ۴۰۱۳ در پروتئوس ۷.۷ را دانلود کنید. (احتمالا با ورژن های پایین تر مشکل خواهید داشت.)

دانلود کنید:

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

و اما روش برنامه نویسی:

تا کنون با روش شناسایی جهت چرخش انکودر آشنا شدید. همانطور که می دانید ، آی سی های AVR دارای Interrupt خارجی برای عملیات روی پالس هستند که می توانند در مدهای زیر عمل کنند.

توضیح این حالت ها در حقیقت شرح بخش های مختلف وقفه خارجی در Wizard کدویژن است.

۱- Low Level: با اعمال یک سطح پایین به پایه فعال می شود . (در بعضی از میکرو ها این سطح پایین وجود ندارد.) مادامی که INTX میکرو در وضعیت صفر قرار دارد، این وقفه فراخوانی می شود…

۲- Falling Edge: وقفه با لبه پایین رونده پالس اعمالی به اینتراپت میکرو، فعال میشود.

۳- Rising Edge : عکس حالت پایین رونده

۴- Any Change : وقفه برای مورد ۲ و ۳ نام برده، با توجه به وضعیت پایه اینتراپت میکرو فعال می شود.

نکته: حداقل کریستال مورد نیاز برای یک انکودر با دقت ۱۰۲۴ پالس، ۸ مگاهرتز انتخاب شود تا مشکلی در دقت آن بوجود نیاید.

حال که با وضعیت کلی وقفه ها آشنا شدید، به روش برنامه نویسی می پردازیم:

در ابتدا با Wizard کدویژن تنها یکی از اینتراپت ها را فعال و آنرا به لبه بالا رونده حساس کنید. (دقت کنید پایه ای که انتخاب می شود، باید مطابق پایه ای باشد که در دیتاشیت AVR اینتراپت آن معرفی شده و شما در عمل پالس خروجی A یا B انکودر را به آن وصل کرده اید.)

سپس برای آنکه اعداد بتوانند در حافظه آی سی به درستی قرار گیرند، باید حافظه را آدرس دهی کنید. برای این کار به صورت زیر متغیر ها را تعریف کنید:

;int  result=0

;float result2=0

;char x

;char buffer[33];// need spacechar *str=buffer,*str2=buffer

حال دستور زیر را برای INTX خارجی میکرو می نویسیم:

 

 

 

  (interrupt [EXT_INTX] void ext_intX_isr(void

  

}

 

( if (PINC.0==0 

     ;result2=result2+1   

(if (PINC.0==1 

 ;result2=result2-1   

{

 

 

در اینجا فرض می کنیم، نتیجه خروجی فلیپ فلاپ را به پایه ۰ پین C داده بودیم. (این پایه همان جهت ساعتگرد یا پادساعتگرد انکودر را بیان می کرد)

هدر stdlib.h را با دستورinclude به اول برنامه اضافه می کنیم و عدد شمارش شده انکودر را با دستور زیر به رشته تبدیل می کنیم:

;(void)ftoa(result2,0,str)

نتیجه در رشته str قرار می گیرد که می توان با دستور (puts(str به خروجی برد. یا با دستور (lcd_puts(str بر روی ال سی دی به نمایش در آورید.

در زیر یک نمونه سورس کد تست شده با آی سی ATMEGA64 و با متصل نمودن ۲ انکودر و همچنین ارسال اطلاعات بر روی کامپیوتر برای دیدن اعداد  قرار گرفته است:

برای دانلود کلیک کنید:

 

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

  

بحث و سوال در مورد این مطلب در انجمن:

ورود به مبحث انکودر صنعتی در انجمن
*نمونه ای از یک وب سایت نمایندگی فروش اتونیکس با انواع متنوع 

 


جوابی بنویسید

ایمیل شما نشر نخواهد شدخانه های ضروری نشانه گذاری شده است. *

*


+ 5 = 7

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

بالا