ايران ويج

نسخه‌ی کامل: تشخیص جهت حرکت چرخ با سنسور اپتوکانتر
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
با یه انکودر افزایشی چطوری میشه جهت چرخش چرخ رو فهمید؟
باید دوتا انکودر بذاری !

با شیفت زمانی میشه جهت چرخش رو فهمید !!!
سلام.
یه سوال: این سنسور همانی هست که در موس ها برای تشخیص جهت حرکت چرخ موس استفاده میشه؟(همونی که باهاش scroll bar هارو کنترل می کنیم)
دقیقا همونجوریه !!!

دستور encoder تو بسکام هم مشاهده بشه !!!
پس با 1 سنسور نمیشه؟ گفتم شاید بشه اختلاف فاز 90 درجه رو ایجاد کرد!! این سنسور های دو کاناله چطوری کار می کنن؟؟
دستور ENCODER :

ENCODER نوعی کلید دوطرفه میباشند

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

کد:
Var = ENCODER( pin1, pin2, LeftLabel, RightLabel , wait(
Var : یک متغییر از جنس دلخواه میباشد که به ازای پالس های فرد مقدار ان صفر و به ازای پالس های زوج مقدار ان یک است (مقدار ان حول صفر ویک تغییر میکند)

pin1 : نشان دهنده پایه ای است که پین 1 (چپ یا راست ) انکدر به ان متصل میشود.

pin2 : نشان دهنده پایه ای است که پین 2 (چپ یا راست ) انکدر به ان متصل میشود.

LeftLabel : نام برچسبی است که در هنگام به چپ چرخیدن انکودر به ان پرش میشود.باز گشت از برچسب با دستور return ان جام میشود.

RightLabel : نام برچسبی است که در هنگام به راست چرخیدن انکودر به ان پرش میشود. باز گشت از برچسب با دستور return ان جام میشود.

Wait : در صورتی که شما به جای این کلمه 1 بگذارید cpu میکرو بر روی این دستور متوقف میشود ، هنگامی که انکدور چرخید cpu به زیر برنامه میرود و بعد از انجام دستورات موجود در زیر برنامه دوباره روی این دستور متوقف شده و منتظر میماند تا پالسی اعمال شود و درصورتی که 0 قرار دهید cpu مدام در حلقه گردش میکند و اگر دستور انکودر در حلقه باشد ان را چک میکند و اکگر نباشد که هیچ.

مانند:

کد:
$regfile = "m16def.dat"
$crystal = 12000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.4 , Rs = Portd.5
Config Portb = Input
Dim A As Byte , B As Byte , C As Word : Cls
Do
A = Encoder(pinb.0 , Pinb.1 , Q , W , 0)
Locate 1 , 1
Lcd A
Loop
End
Q:
Incr B
Locate 1 , 5
Lcd B
Return
W:
Incr C
Locate 1 , 11
Lcd C
Return

در مثال بالا پایه مشترک انکدر به گراند و پایه چپ ان به پین b.0 و پایه راست ان به پین b.1 متصل شده است .

منبع : كتاب آموزش AVR به زبان بيسيك ( تاليف : آقاي 1نفر )
سلام

آیا مداری برای این کار وجود داره؟

من برنامه به زبان c با کد ویژن رو میخوام کسی میتونه کمکم کنه