روٹری انکوڈر کیسے کام کرتا ہے اور اسے Arduino کے ساتھ انٹرفیس کرتا ہے۔

Rw Ry Ankw R Kys Kam Krta Awr As Arduino K Sat An Rfys Krta



روٹری انکوڈر ایک اہم الیکٹرو مکینیکل ڈیوائس ہے جس کے الیکٹرانکس کے میدان میں متنوع استعمال ہوتے ہیں۔ یہ مضمون روٹری انکوڈر کی Arduino کے ساتھ انٹرفیسنگ کے ساتھ اس کی اقسام اور کام کی وضاحت کرے گا۔

روٹری انکوڈر کیا ہے؟

ایک روٹری انکوڈر ایک ڈیجیٹل ان پٹ ڈیوائس ہے جو روٹری نوب کی کونیی پوزیشن کو محسوس کرتا ہے اور مائکرو کنٹرولر یا کسی دوسرے آلے کو سگنل بھیجتا ہے جس سے وہ جڑے ہوئے ہیں۔ وہ بغیر رکے 360° کو گھما سکتے ہیں۔ اسے شافٹ انکوڈر بھی کہا جاتا ہے۔ یہ پرنٹرز، آڈیو الیکٹرانکس، موٹرز اور کنٹرولرز میں استعمال ہوتا ہے۔









روٹری انکوڈرز کی اقسام

روٹری انکوڈرز کی بنیادی طور پر دو قسمیں ہیں جن کا فیصلہ ان کے ذریعہ تیار کردہ آؤٹ پٹ سگنل کی بنیاد پر کیا جاتا ہے۔ ان اقسام کے نام ہیں:



انکریمنٹل روٹری انکوڈر

اس قسم کا انکوڈر روٹری نوب کی گردشوں کو دالوں کی شکل میں شمار کرتا ہے۔ جب نوب کو ایک بار گھمایا جاتا ہے تو ایک نبض پیدا ہوتی ہے۔ ہر نبض کے لیے، شافٹ کی کونیی پوزیشن کو ظاہر کرنے کے لیے کاؤنٹر میں اضافہ ہوتا ہے۔





مطلق روٹری انکوڈر

اس قسم کا انکوڈر شافٹ کی مطلق کونیی پوزیشن دیتا ہے، کیونکہ اس میں ہر شافٹ پوزیشن کے لیے الگ کوڈ ہوتا ہے، اور یہ اس کوڈ کے ذریعے زاویہ کی پیمائش کرتا ہے۔ کونیی پوزیشن کا آؤٹ پٹ دینے کے لیے اسے کاؤنٹر کی ضرورت نہیں ہے۔ یہاں تک کہ اگر مطلق روٹری انکوڈر کو ڈی انرجائز کیا گیا ہے، کونیی پوزیشنوں کے لیے متعلقہ قدریں برقرار ہیں۔ یہ ایک کم لاگت انکوڈر بھی ہے۔



روٹری انکوڈر کا کام کرنا

روٹری انکوڈر ایک ڈسک پر مشتمل ہوتا ہے جس میں مساوی فاصلہ والے حصے ایک عام پن سی سے جڑے ہوتے ہیں جو گراؤنڈ ہوتا ہے۔ دو دیگر پن A اور B رابطہ پن ہیں جو روٹری نوب کو گھمانے پر C سے رابطہ کرتے ہیں۔ جب پن A یا B زمین سے جڑ جاتا ہے، تو ایک سگنل پیدا ہوتا ہے۔ آؤٹ پٹ پنوں سے پیدا ہونے والے یہ سگنلز 90° فیز سے باہر ہیں۔ اس کی وجہ یہ ہے کہ جب نوب کو گھڑی کی سمت موڑ دیا جاتا ہے تو پن A زمین سے جڑ جاتا ہے، اور جب نوب کو گھڑی کی سمت موڑ دیا جاتا ہے تو پن B زمین سے پہلے جڑ جاتا ہے۔ لہذا، ان کنکشن کے ذریعے knob گردش کی سمت کا تعین کیا جاتا ہے.

اگر کی حالت بی کے برابر نہیں ہے اے ، پھر نوب گھڑی کی سمت مڑ گیا ہے۔


اگر B کی حالت A کے برابر ہے تو نوب گھڑی کی مخالف سمت میں مڑ گیا ہے۔

روٹری انکوڈر کی پن کنفیگریشن

نیچے دیا گیا خاکہ روٹری انکوڈر کا ایک پن آؤٹ دیتا ہے جو آؤٹ پٹ پن A اور B دکھاتا ہے، ایک روٹری سوئچ جسے پش بٹن کے طور پر استعمال کیا جا سکتا ہے، اور پاور سپلائی کے لیے پن دکھاتا ہے۔

روٹری انکوڈر کی پن تفصیل

تمام روٹری انکوڈر پنوں کی تفصیل درج ذیل ہے۔

B یا CLK سے باہر

یہ پن اس بات کا آؤٹ پٹ دیتا ہے کہ نوب یا روٹری انکوڈر کتنی بار گھوم چکا ہے۔ ہر بار جب نوب کو گھمایا جاتا ہے، CLK HIGH اور LOW کا ایک چکر مکمل کرتا ہے۔ اسے ایک گردش کے طور پر شمار کیا جاتا ہے۔

باہر A یا DT

یہ روٹری انکوڈر کا دوسرا آؤٹ پٹ پن ہے جو گردش کی سمت کا تعین کرتا ہے۔ یہ CLK سگنل سے 90° پیچھے ہے۔ لہذا، اگر اس کی حالت CLK کی حالت کے برابر نہیں ہے تو گردش کی سمت گھڑی کی سمت ہے، دوسری صورت میں، مخالف گھڑی کی سمت۔

سوئچ کریں۔

سوئچ پن کو چیک کرنے کے لیے استعمال کیا جاتا ہے کہ آیا پش بٹن دبایا گیا ہے یا نہیں۔

وی سی سی

یہ پن 5V سپلائی سے منسلک ہے۔

جی این ڈی

یہ پن زمین سے جڑا ہوا ہے۔

Arduino کے ساتھ روٹری انکوڈر کو انٹرفیس کرنا

روٹری انکوڈر میں پانچ پن ہوتے ہیں۔ روٹری انکوڈر کے VCC اور GND Arduino کے ساتھ جڑے ہوئے ہیں۔ باقی پن CLK، DT، اور SW Arduino کے ڈیجیٹل ان پٹ پنوں سے جڑے ہوئے ہیں۔

روٹری انکوڈر کے لیے Arduino کوڈ

// روٹری انکوڈر ان پٹس
#CLK_PIN 2 کی وضاحت کریں۔
DT_PIN 3 کی وضاحت کریں۔
#SW_PIN 4 کی وضاحت کریں۔
int counter = 0 ;
int currentCLKState؛
int lastCLKState;
سٹرنگ کی موجودہ سمت = '' ;
غیر دستخط شدہ long lastButtonPressTime = 0 ;
باطل سیٹ اپ ( ) {
// انکوڈر پن سیٹ کریں۔ کے طور پر ان پٹ
پن موڈ ( CLK_PIN، INPUT ) ;
پن موڈ ( DT_PIN، INPUT ) ;
پن موڈ ( SW_PIN، INPUT_PULLUP ) ;
// سیریل مانیٹر سیٹ اپ کریں۔
سیریل شروع کریں۔ ( 9600 ) ;
// CLK کی ابتدائی حالت پڑھیں
lastCLKState = ڈیجیٹل ریڈ ( CLK_PIN ) ;
}
باطل لوپ ( ) {
// CLK کی موجودہ حالت پڑھیں
currentCLKState = ڈیجیٹل ریڈ ( CLK_PIN ) ;
// اگر آخری اور CLK کی موجودہ حالت مختلف ہے، پھر ایک نبض واقع ہوئی
// صرف ردعمل کا اظہار کریں۔ 1 دوہری گنتی سے بچنے کے لیے ریاست کی تبدیلی
اگر ( موجودہ سی ایل کے اسٹیٹ ! = lastCLKState && currentCLKState == 1 ) {
// اگر DT کی حالت CLK ریاست سے مختلف ہے، پھر
// انکوڈر گھڑی کی مخالف سمت میں گھوم رہا ہے، لہذا کمی
اگر ( ڈیجیٹل ریڈ ( DT_PIN ) ! = موجودہ سی ایل کے اسٹیٹ ) {
جوابی--
موجودہ سمت = 'CCW' ;
} اور {
// انکوڈر گھڑی کی سمت گھوم رہا ہے، اس لیے انکریمنٹ
کاؤنٹر++؛
موجودہ سمت = 'CW' ;
}
سیریل۔ پرنٹ ( 'گھومنے کی سمت:' ) ;
سیریل۔ پرنٹ ( موجودہ سمت ) ;
سیریل۔ پرنٹ ( ' | کاؤنٹر ویلیو:' ) ;
Serial.println ( کاؤنٹر ) ;
}
// یاد رکھیں آخری CLK ریاست
lastCLKState = currentCLKState؛
// بٹن کی حالت پڑھیں
int buttonState = ڈیجیٹل ریڈ ( SW_PIN ) ;
// اگر ہمیں کم سگنل کا پتہ چلتا ہے، تو بٹن دبایا جاتا ہے۔
اگر ( بٹن اسٹیٹ == کم ) {
// اگر اس کے بعد سے 50ms گزر چکے ہیں۔ آخری کم نبض، اس کا مطلب ہے کہ
// بٹن دبایا گیا، جاری کیا گیا، اور دوبارہ دبایا گیا۔
اگر ( ملی ( ) - آخری بٹن پریس ٹائم > پچاس ) {
Serial.println ( 'بٹن دبایا!' ) ;
}
// یاد رکھیں آخری بٹن پریس ایونٹ وقت
lastButtonPressTime = ملی ( ) ;
}
// ڈال میں میں تھوڑی تاخیر مدد پڑھنے کو ختم کرنا
تاخیر ( 1 ) ;
}


اوپر دیے گئے کوڈ میں، CLK پن کی حالت لوپ() فنکشن میں چیک کی جاتی ہے۔ اگر یہ اپنی پچھلی حالت کے برابر نہیں ہے، تو یہ ظاہر کرتا ہے کہ روٹری نوب گھوم گیا ہے۔ اب، نوب کی گردش کی سمت کو جانچنے کے لیے، CLK کی موجودہ حالت کا موازنہ DT کی حالت سے کیا جاتا ہے۔ اگر دونوں حالتیں غیر مساوی ہیں، تو یہ ظاہر کرتا ہے کہ نوب نے گھڑی کی سمت میں گھمایا ہے اور روٹری نوب کی پوزیشن کو ظاہر کرنے کے لیے اس کی قدر میں اضافہ کرتا ہے۔ مخالف صورت میں، کاؤنٹر کمی۔

نتیجہ

روٹری انکوڈرز اعلی درجے کی پوزیشن کے سینسر ہیں جو مسلسل گھوم سکتے ہیں۔ وہ دو اقسام میں دستیاب ہیں: اضافی اور مطلق۔ روٹری انکوڈر نوب کی گردش کی وجہ سے پیدا ہونے والی دالوں کو گن کر کام کرتا ہے۔ اس میں روزمرہ کی زندگی کے الیکٹرانکس سے لے کر صنعتی آٹومیشن میں متنوع اطلاقات ہیں۔