সুচিপত্র:

সহজ রোটারি ডিকোডার: 4 টি ধাপ
সহজ রোটারি ডিকোডার: 4 টি ধাপ

ভিডিও: সহজ রোটারি ডিকোডার: 4 টি ধাপ

ভিডিও: সহজ রোটারি ডিকোডার: 4 টি ধাপ
ভিডিও: Rotary Encoder কি ভাবে কাজ করে।ভিতরে অংশ দেখতে কেমন হয়। #Rotary #encoder 2024, জুলাই
Anonim
Image
Image
সহজ রোটারি ডিকোডার
সহজ রোটারি ডিকোডার

এই নির্দেশযোগ্য একটি Arduino Uno R3 ব্যবহার করে একটি অনুক্রমিক ঘূর্ণমান এনকোডার ডিকোড করার একটি সহজ পদ্ধতি বর্ণনা করে।

কমপ্যাক্ট সফটওয়্যার রুটিনগুলি ট্রানজিশনের সংখ্যা গণনা, যোগাযোগ বাউন্স দূর করতে এবং ঘূর্ণনের দিক নির্ধারণ করতে ব্যবহৃত হয়। অতিরিক্ত উপাদান এবং সন্ধান টেবিল প্রয়োজন হয় না।

কোডের ইন্টারাপ্ট এবং নন-ইন্টারাপ্ট ভার্সন দেওয়া হয়েছে।

কোডের ইন্টারাপ্ট ভার্সনে শুধুমাত্র একটি ইন্টারাপ্ট পিন প্রয়োজন।

ছবি:

  • খোলার ছবিটি একত্রিত এনকোডার দেখায়।
  • স্ক্রিন শটটি ইন্টারাপ্ট ভার্সনের কোড দেখায় এবং এনকোডার শ্যাফট ঘড়ির কাঁটার দিকে এবং ঘড়ির কাঁটার উল্টো দিকে ঘোরে।
  • ভিডিওটি দ্রুত ঘূর্ণনের সময় গণনা দেখায়।

ধাপ 1: সার্কিট ডায়াগ্রাম

বর্তনী চিত্র
বর্তনী চিত্র

এনকোডার ওয়্যারিং ডায়াগ্রামটি চিত্র 1 এ দেখানো হয়েছে।

জাম্পার তারগুলি সরাসরি এনকোডার পিনগুলিতে বিক্রি হয়।

গণনার দিক বিপরীত হলে দুটি নীল তারের বিনিময় করুন।

ধাপ 2: যন্ত্রাংশ তালিকা

নিম্নলিখিত অংশগুলি https://www.aliexpress.com/ থেকে প্রাপ্ত হয়েছিল

  • ইউএসবি কেবল সহ 1 শুধুমাত্র আরডুইনো ইউএনও আর 3।
  • সুইচ সহ 1 শুধুমাত্র অনুক্রমিক ঘূর্ণমান এনকোডার (EC11 বা সমতুল্য)।
  • 1 শুধুমাত্র খাদ জন্য উপযুক্ত
  • 3 শুধুমাত্র Arduino পুরুষ থেকে পুরুষ জাম্পার তারের।

ধাপ 3: তত্ত্ব

তত্ত্ব
তত্ত্ব

অনুক্রমিক ঘূর্ণমান এনকোডার দুটি বর্গ-তরঙ্গ উৎপন্ন করে যার প্রত্যেকটি 90 ডিগ্রি দ্বারা স্থানচ্যুত হয় যেমন চিত্র 1 এ দেখানো হয়েছে।

কন্টাক্ট এ এবং কন্টাক্ট বি -তে লজিক প্যাটার্ন ভিন্ন হয় যখন শ্যাফট ঘড়ির কাঁটার দিকে (CW) এবং কাউন্টার ক্লকওয়াইজ (CCW) 1 থেকে 6 পজিশনের মাধ্যমে ঘোরানো হয়।

ঘূর্ণনের দিক নির্ধারণের সাধারণ পদ্ধতিগুলির মধ্যে রয়েছে:

  • হার্ডওয়্যার
  • জোড়া বাধা
  • প্যাটার্ন সন্ধান টেবিল

এই প্রকল্পটি এমন একটি সফটওয়্যার পদ্ধতি ব্যবহার করে যার জন্য লুকআপ টেবিলের প্রয়োজন হয় না। [1]

অভিমুখ

কন্টাক্ট এ এবং কন্টাক্ট বি থেকে আউটপুট প্যাটার্ন দেখার পরিবর্তে কন্টাক্ট এ -তে ফোকাস করা যাক।

যদি আমরা প্রতিটি পরিচিতি একটি সংক্রমণের পরে যোগাযোগ বি নমুনা করি তবে আমরা লক্ষ্য করি যে:

  • কন্টাক্ট এ এবং কন্টাক্ট বি এর বিপরীত লজিক স্টেট থাকে যখন এনকোডার CW ঘুরানো হয়
  • যোগাযোগ A এবং যোগাযোগ B একই যুক্তি অবস্থা যখন এনকোডার ঘুরানো হয় CCW

প্রকৃত কোড:

// ----- ট্রানজিশন গণনা

CurrentStateA = stateContactA (); যদি (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB); যদি (CurrentStateA == CurrentStateB) গণনা ++; যদি (CurrentStateA! = CurrentStateB) Count--; LastStateA = CurrentStateA; }

এই পদ্ধতি নিম্নলিখিত সুবিধা প্রদান করে:

  • সন্ধান টেবিল প্রয়োজন হয় না
  • শুধুমাত্র একটি একক বাধা লাইন প্রয়োজন

ডিবাউন্স

সমস্ত যান্ত্রিক এনকোডার "কন্টাক্ট বাউন্স" এ ভোগে।

যদি একটি সুইচ যোগাযোগ পরিষ্কারভাবে না করে/ভাঙতে না পারে তবে সুইচ যোগাযোগ স্থির না হওয়া পর্যন্ত তার যুক্তিবিজ্ঞান উচ্চ থেকে নিম্ন পর্যন্ত দ্রুত দোলবে। এর ফলে মিথ্যা গণনা হয়।

যোগাযোগ বাউন্স দমন করার জন্য একটি পদ্ধতি হল প্রতিটি সুইচ যোগাযোগের মধ্যে একটি ছোট ক্যাপাসিটর যুক্ত করা। ক্যাপাসিটর এবং সংশ্লিষ্ট পুল-আপ প্রতিরোধক একটি সংযোজক গঠন করে যা কার্যকরভাবে উচ্চ ফ্রিকোয়েন্সি শর্ট করে এবং সুইচ ভোল্টেজকে সুন্দরভাবে বৃদ্ধি/পতনের অনুমতি দেয়।

এই পদ্ধতির নেতিবাচক দিক হল যে এনকোডার শ্যাফ্ট দ্রুত ঘোরানো হলে ট্রানজিশন মিস করা যেতে পারে।

সফটওয়্যার ডিবাউন্সিং

এই পদ্ধতিতে দুটি কাউন্টার (খোলা, বন্ধ) ব্যবহার করা হয়েছে যা শূন্যতে সেট করা হয়েছে। [2]

একবার যোগাযোগ A- এ একটি স্থানান্তর ধরা পড়লে:

  • ক্রমাগত পোল যোগাযোগ এ
  • খোলা কাউন্টার বাড়ান, এবং বন্ধ কাউন্টারটি পুনরায় সেট করুন, যখনই যোগাযোগ A উচ্চ হয়।
  • বন্ধ কাউন্টার বাড়ান, এবং খোলা কাউন্টারটি পুনরায় সেট করুন, যখনই যোগাযোগ A কম হয়।
  • কাউন্টারগুলির মধ্যে একটি পূর্বনির্ধারিত গণনায় পৌঁছলে লুপ থেকে প্রস্থান করুন। যেকোনো কন্টাক্ট বাউন্সের পর আমরা কার্যকরভাবে স্থিতিশীল অবস্থা খুঁজছি।

প্রকৃত কোড:

// ----- ডিবাউন্স যোগাযোগ এ

যখন (1) {যদি (digitalRead (ContactA)) {// ----- ContactA খোলা বন্ধ = 0; // খালি বিপরীত সংহতকারী খোলা ++; // সংহত করুন যদি (ওপেন> ম্যাক্সকাউন্ট) উচ্চ ফেরত আসে; } অন্য {// ----- ContactA বন্ধ খোলা = 0; // খালি বিপরীত সংহতকারী বন্ধ ++; // ইন্টিগ্রেট করুন যদি (বন্ধ> MaxCount) কম ফিরে আসে; }}

কন্টাক্ট বি কে ডিবাউন্স করার দরকার নেই কারণ কন্টাক্ট এ এবং কন্টাক্ট বি ট্রানজিশন একসাথে হয় না।

গণনা

একটি যান্ত্রিক "আটক" কার্যকরভাবে আপনার গণনাকে দ্বিগুণ করে কারণ দুটি গণনা ক্লিকের মধ্যে নিবন্ধিত হয় (চিত্র 1 দেখুন)।

নীচে দেখানো হিসাবে মডুলো 2 গাণিতিক ব্যবহার করে "আটক" সংখ্যা নির্ধারণ করা যেতে পারে।

প্রকৃত কোড:

// ----- "আটককারী" গণনা করুন

যদি (গণনা % 2 == 0) {সিরিয়াল.প্রিন্ট ("গণনা:"); Serial.println (গণনা / 2); }

তথ্যসূত্র

আরও তথ্য এখানে পাওয়া যাবে:

[1]

howtomechatronics.com/tutorials/arduino/ro…

[2]

newbiehack.com/ButtonorSwitchDebounceinSof…

ধাপ 4: সফটওয়্যার

এই প্রকল্পের জন্য Ardino Uno R3 IDE (সমন্বিত উন্নয়ন পরিবেশ) এর একটি সাম্প্রতিক সংস্করণ প্রয়োজন যা https://www.arduino.cc/en/main/software থেকে পাওয়া যায়

নিম্নলিখিত দুটি Arduino স্কেচ ডাউনলোড করুন (সংযুক্ত)

  • rotary_encoder_1.ino (পোলিং ভার্সন)
  • rotary_encoder_2.no (ইন্টারাপ্ট ভার্সন)

আপনার পছন্দের সংস্করণে ডাবল ক্লিক করুন এবং পর্দায় নির্দেশাবলী অনুসরণ করুন।

উপভোগ করুন…

আমার অন্যান্য নির্দেশাবলী দেখতে এখানে ক্লিক করুন।

প্রস্তাবিত: