সুচিপত্র:

আরডুইনো সহ রোটারি এনকোডারের টিউটোরিয়াল: 6 টি ধাপ
আরডুইনো সহ রোটারি এনকোডারের টিউটোরিয়াল: 6 টি ধাপ

ভিডিও: আরডুইনো সহ রোটারি এনকোডারের টিউটোরিয়াল: 6 টি ধাপ

ভিডিও: আরডুইনো সহ রোটারি এনকোডারের টিউটোরিয়াল: 6 টি ধাপ
ভিডিও: LDmicro 19: Rotary Encoder Menu Navigation (Microcontroller PLC Ladder Programming with LDmicro) 2024, জুলাই
Anonim
আরডুইনো সহ রোটারি এনকোডারের টিউটোরিয়াল
আরডুইনো সহ রোটারি এনকোডারের টিউটোরিয়াল

রোটারি এনকোডার হল একটি ইলেকট্রনিক উপাদান যা ঘোরানোর সময় আন্দোলন এবং অবস্থান পর্যবেক্ষণ করতে সক্ষম। রোটারি এনকোডার অপটিক্যাল সেন্সর ব্যবহার করে যা ডাল উৎপন্ন করতে পারে যখন ঘূর্ণমান এনকোডার ঘুরবে। রোটারি এনকোডারের প্রয়োগ সাধারণত যান্ত্রিক বা রোবোটিক মোশন মনিটর হিসেবে ডিসপ্লেতে মেনু নির্বাচনের জন্যও ব্যবহার করা যেতে পারে। রোটারি এনকোডারের দুটি আউটপুট রয়েছে যাতে এটি নেতিবাচক (CW) এবং ইতিবাচক (CCW) ঘূর্ণনের মধ্যে পার্থক্য করতে পারে এবং এর একটি একক বোতামও রয়েছে।

ধাপ 1: রোটারি এনকোডারের পালস প্রবাহ

ঘূর্ণমান এনকোডারের পালস প্রবাহ
ঘূর্ণমান এনকোডারের পালস প্রবাহ

নিম্নলিখিত ঘূর্ণমান এনকোডার দ্বারা উত্পাদিত পালস প্রবাহ উপরের ছবির মত।

ধাপ 2: রোটারি এনকোডারের পিনআউট

রোটারি এনকোডারের পিনআউট
রোটারি এনকোডারের পিনআউট

ব্যাখ্যা:

  • GND GND
  • + 5V
  • রোটারি এনকোডারের SW বোতাম টিপলে
  • ডিটি ডেটা
  • CLK ডেটা 2

DT বা CLK পিনগুলির মধ্যে একটি Arduino Uno এর বাধা পায়ের সাথে সংযুক্ত থাকতে হবে, অথবা DT এবং CLK উভয়ই ইন্টারাপ্ট পিনের সাথে সংযুক্ত।

ধাপ 3: পরিকল্পিত

পরিকল্পিত
পরিকল্পিত
  • GND à GND Arduino Uno
  • + à + 5V Arduino Uno
  • SW à PIN 4 Arduino Uno
  • DT à PIN 3 Arduino Uno
  • CLK à PIN2 Arduino Uno

ধাপ 4: কোড

কোড
কোড

নিচের টিউটোরিয়ালে, যা একটি বাধা হিসাবে ব্যবহার করা হবে Arduino Uno এর PIN 2, যখন PIN 3 শুধুমাত্র একটি নিয়মিত ইনপুট হিসাবে ব্যবহৃত হয়।

#সংজ্ঞায়িত encoder0PinA 2 #সংজ্ঞায়িত encoder0PinB 3 #সংজ্ঞায়িত encoder0Btn 4 int encoder0Pos = 0; অকার্যকর সেটআপ () {Serial.begin (9600); pinMode (encoder0PinA, INPUT_PULLUP); pinMode (encoder0PinB, INPUT_PULLUP); pinMode (encoder0Btn, INPUT_PULLUP); attachInterrupt (0, doEncoder, পরিবর্তন); } int valRotary, lastValRotary; অকার্যকর লুপ () {int btn = digitalRead (encoder0Btn); সিরিয়াল.প্রিন্ট (বিটিএন); সিরিয়াল.প্রিন্ট (""); Serial.print (valRotary); যদি (valRotary> lastValRotary) {Serial.print ("CW"); } যদি (valRotary {

Serial.print ("CCW");

} lastValRotary = valRotary; Serial.println (""); বিলম্ব (250); } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } অন্য {encoder0Pos--; } valRotary = encoder0Pos/2.5; }

পিন 2 Arduino Uno এর বাধা সক্ষম করতে উপরের স্কেচের লাইন 10 এ ব্যবহার করা হয়। "DoEncoder" ফাংশনে রোটারি এনকোডার থেকে গণনা করা হয়। যদি DT এবং CLK (Arduino Uno এর pin interrupt) এর মান একই হয়, তাহলে "encoder0Pos" ভেরিয়েবল বৃদ্ধি / যোগ করা হবে, সেই শর্ত ছাড়াও, "encoder0Pos" ভেরিয়েবল হ্রাস করা হবে।

ধাপ 5: ব্যাখ্যা

ValRotary মান হল চলমান হয়েছে এমন ধাপের সংখ্যার মান। ভ্যালরোটারি মান রোটারি সেন্সর এনকোডার রিডিং ভ্যালু থেকে 2.5 দ্বারা ভাগ করা হয়। পরীক্ষা থেকে 2.5 এর মান পাওয়া যায়, যেহেতু রোটারি এনকোডারের এক ধাপ 1 টি অতিক্রম করতে পারে, তাই পারস্টেপ অনুসারে তার মান এবং পড়ার বিলম্বের যোগের জন্য 2.5 দ্বারা ভাগ করুন।

19-25 লাইনে থাকাকালীন রোটারি রোটারি এনকোডার সিডব্লিউ বা সিসিডব্লিউ কিনা তা নির্ধারণের একটি প্রোগ্রাম। 19-25 লাইনের ব্যাখ্যা হল যখন বর্তমান রোটারি এনকোডার রিডআউট আগের ঘূর্ণমান ডেটার চেয়ে বড় হয় তখন CW হিসাবে প্রকাশ করা হয়। যদিও বর্তমান পাঠ যদি আগের পড়ার চেয়ে ছোট হয় তবে এটি CCW হিসাবে বলা হয়েছে।

ধাপ 6: আউটপুট

আউটপুট
আউটপুট

1 = রোটারির স্টার্ট বাটনের মান যখন এটি চাপানো হয়নি

প্রস্তাবিত: