دو شیوه برای خوندن شفت انکودر توسط میکرو وجود داره:
1- ساده: در این روش خروجی Aآ و B سفت انکودر به دو پایه میکرو مثل INT0آ و INT1آ وصل میشه و اینتراپت این دو پایه را روی any change تنظیم کنید. و در روتین اینتراپت هرکدوم یک خط برنامه بنویسید:
کد:
unsigned int ENC;
interrupt [EXT_INT0] void ext_int0_isr(void)
{
if (ENC_A==ENC_B) ENC--; else ENC++;
}
interrupt [EXT_INT1] void ext_int1_isr(void)
{
if (ENC_A==ENC_B) ENC++; else ENC--;
}
و تمام
2- روش پیچیده یا حرفه ای: در این روش که در صنعت هم ازش استفاده میشه ما باید سیگنالهای انکودر را از یک فیلتر دیجیتالی عبور دهیم. البته آی سی های مخصوصی برای اینکار ساخته شده مثل LS7366 که تمام کارها را خودش انجام میده و کافیه با SPI میکرو اونو بخونید.
اگه این IC رو در بازار پیدا نکنید باید خودتون با CPLD یا FPGAآ مدارشو پیاده سازی کنید.
خود من از یک میکروی جداگانه برای خوندن شفت انکودر استفاده می کنم و از طریق SPI اونو به میکروی اصلی وصل می کنم. اما این روش من در پالسهای فرکانس بالا خوب جواب نمی ده.
با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.
دیدگاه