সুচিপত্র:
- ধাপ 1: ভিতরে ঘূর্ণমান এনকোডার
- পদক্ষেপ 2: দু Misখ যা অনেকের জন্য আসল যন্ত্রণার কারণ হয়
- ধাপ 3: ফিনাইট স্টেট মেশিন (এফএসএম) সমাধান
- ধাপ 4: Arduino কোড
- ধাপ 5: ত্রুটিহীন ইন্টিগ্রেশন
ভিডিও: একটি সম্পূর্ণ Arduino ঘূর্ণমান সমাধান: 5 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:01
রোটারি এনকোডারগুলি ইলেকট্রনিক প্রজেক্টের জন্য টার্নেবল কন্ট্রোল নোবস, যা প্রায়ই আরডুইনো ফ্যামিলি মাইক্রোকন্ট্রোলারের সাথে ব্যবহৃত হয়। এগুলি টিউন প্যারামিটারগুলিকে সূক্ষ্ম করতে, মেনু নেভিগেট করতে, স্ক্রিনে বস্তুগুলি সরানোর জন্য, যে কোনও ধরণের মান নির্ধারণ করতে ব্যবহার করা যেতে পারে। এগুলি পোটেন্টিওমিটারের সাধারণ প্রতিস্থাপন, কারণ এগুলি আরও নির্ভুল এবং অসীমভাবে ঘোরানো যেতে পারে, তারা এক সময়ে একটি পৃথক মান বৃদ্ধি বা হ্রাস করে এবং প্রায়শই নির্বাচন ধরণের ফাংশনগুলির জন্য ধাক্কাযোগ্য সুইচের সাথে সংহত হয়। এগুলি সমস্ত আকার এবং আকারে আসে, তবে সর্বনিম্ন মূল্যের পরিসরটি নীচে ব্যাখ্যা করা হিসাবে ইন্টারফেস করা কঠিন।
রোটারি এনকোডারগুলির কাজের বিবরণ এবং ব্যবহারের পদ্ধতি এবং সেগুলি কীভাবে ব্যবহার করা যায় সে সম্পর্কে অসংখ্য নমুনা কোড এবং লাইব্রেরি সম্পর্কে অসংখ্য নিবন্ধ রয়েছে। একমাত্র সমস্যা হল যে তাদের কেউই সর্বনিম্ন মূল্য পরিসীমা চীনা ঘূর্ণমান মডিউলগুলির সাথে 100% নির্ভুলভাবে কাজ করে না।
ধাপ 1: ভিতরে ঘূর্ণমান এনকোডার
এনকোডারের ঘূর্ণমান অংশে তিনটি পিন রয়েছে (এবং twoচ্ছিক সুইচ অংশের জন্য আরও দুটি)। একটি হল সাধারণ স্থল (কালো জিএনডি), অন্য দুটি হল গিঁট ঘুরানোর সময় দিক নির্ধারণের জন্য (এগুলিকে প্রায়ই নীল সিএলকে এবং লাল ডিটি বলা হয়)। এই দুটিই মাইক্রোকন্ট্রোলারের একটি পুলআপ ইনপুট পিনের সাথে সংযুক্ত, যা লেভেলকে তাদের ডিফল্ট রিডিং করে তোলে। যখন গাঁটটি সামনে (বা ঘড়ির কাঁটার দিকে) ঘুরিয়ে দেওয়া হয়, প্রথমে নীল CLK LOW স্তরে পড়ে, তারপর লাল DT অনুসরণ করে। আরও ঘুরিয়ে, নীল CLK উচ্চতায় ফিরে আসে, তারপর সাধারণ GND প্যাচ যেমন উভয় সংযোগ পিন ছেড়ে দেয়, লাল DTও আবার উচ্চতায় উঠে যায়। এইভাবে একটি পূর্ণ টিক FWD (বা ঘড়ির কাঁটার দিকে) সম্পন্ন করা। একই দিক BWD (বা উল্টো ঘড়ির কাঁটার দিকে) যায়, কিন্তু এখন লালটি প্রথমে পড়ে, এবং নীলটি যথাক্রমে দুটি স্তরের ছবিতে দেখানো হয়েছে।
পদক্ষেপ 2: দু Misখ যা অনেকের জন্য আসল যন্ত্রণার কারণ হয়
Arduino hobbyists জন্য সাধারণ সমস্যা, যে সস্তা রোটারি এনকোডার মডিউল আউটপুট মাত্রা অতিরিক্ত পরিবর্তন বাউন্স, অতিরিক্ত এবং ভুল দিক গণনা রিডিং কারণ এটি ত্রুটিহীন গণনা রোধ করে এবং এই মডিউলগুলিকে সঠিক ঘূর্ণমান প্রকল্পে সংহত করা অসম্ভব করে তোলে। এই অতিরিক্ত বাউন্সগুলি সংযোগ পিনের উপর প্যাচগুলির যান্ত্রিক নড়াচড়ার কারণে ঘটে এবং এমনকি অতিরিক্ত ক্যাপাসিটর প্রয়োগ করলে সেগুলি সম্পূর্ণরূপে নির্মূল করা যায় না। বাউন্সগুলি সম্পূর্ণ টিক চক্রের যেকোনো স্থানে উপস্থিত হতে পারে এবং ছবিতে বাস্তব জীবনের দৃশ্যকল্প দ্বারা চিত্রিত হয়।
ধাপ 3: ফিনাইট স্টেট মেশিন (এফএসএম) সমাধান
ছবিটি দুটি পিনের (নীল সিএলকে এবং লাল ডিটি) সম্ভাব্য স্তরের পরিবর্তনের সম্পূর্ণ রাষ্ট্র স্থান দেখায়, উভয়ই সঠিক এবং মিথ্যা বাউন্সের জন্য। এই রাজ্য মেশিনের উপর ভিত্তি করে একটি সম্পূর্ণ সমাধান প্রোগ্রাম করা যেতে পারে যা সর্বদা 100% নির্ভুলভাবে কাজ করে। যেহেতু এই সমাধানটিতে কোন ফিল্টারিং বিলম্বের প্রয়োজন নেই, এটি দ্রুততম সম্ভব। পিনের স্টেট স্পেসকে ওয়ার্কিং মোড থেকে আলাদা করার আরেকটি সুবিধা হল যে কেউ নিজের পছন্দ অনুযায়ী পোলিং বা ইন্টারাপ্ট মোড উভয়ই প্রয়োগ করতে পারে। পোলিং বা বাধাগুলি পিনের স্তরের পরিবর্তনগুলি সনাক্ত করতে পারে এবং একটি পৃথক রুটিন বর্তমান অবস্থা এবং স্তরের পরিবর্তনের প্রকৃত ঘটনাগুলির উপর ভিত্তি করে নতুন রাজ্যের গণনা করবে।
ধাপ 4: Arduino কোড
নীচের কোডটি সিরিয়াল মনিটরে FWD এবং BWD টিক গণনা করে এবং switchচ্ছিক সুইচ ফাংশনকে সংহত করে।
// পিটার Csurgay 2019-04-10
// ঘূর্ণমান পিনগুলি Arduino পোর্টে ম্যাপ করা হয়েছে
#ডিফাইন SW 21 #ডিফাইন CLK 22 #ডিটি ডিফাইন 23
// ঘূর্ণমান দ্বারা সুরক্ষিত কাউন্টারের বর্তমান এবং পূর্ববর্তী মান
int curVal = 0; int prevVal = 0;
// FSM এর সাতটি রাজ্য (সসীম রাষ্ট্রীয় যন্ত্র)
#ডিফাইন IDLE_11 0 #ডিফাইন SCLK_01 1 #ডিফাইন SCLK_00 2 #ডিফাইন SCLK_10 3 #ডিফাইন SDT_10 4 #ডিফাইন SDT_00 5 #ডিফাইন SDT_01 6 int state = IDLE_11;
অকার্যকর সেটআপ() {
Serial.begin (250000); Serial.println ("Start…"); // লেভেল হাই সব পিন পিনমোডের জন্য ডিফল্ট হবে (SW, INPUT_PULLUP); পিনমোড (CLK, INPUT_PULLUP); pinMode (DT, INPUT_PULLUP); // CLK এবং DT উভয়ই সমস্ত স্তরের পরিবর্তনের জন্য ইন্টারাপ্টগুলিকে ট্রিগার করবে। attachInterrupt (digitalPinToInterrupt (DT), rotaryDT, CHANGE); }
অকার্যকর লুপ () {
// কিছু রোটারি এনকোডারে সংহত optionচ্ছিক সুইচ পরিচালনা করা হলে যখন (! digitalRead (SW)); } // কাউন্টার ভ্যালুর কোন পরিবর্তন সিরিয়াল মনিটরে প্রদর্শিত হয় যদি (curVal! = PrevVal) {Serial.println (curVal); prevVal = curVal; }}
// CLK স্তরের পরিবর্তনের জন্য স্টেট মেশিন ট্রানজিশন
void rotaryCLK () {if (digitalRead (CLK) == LOW) {if (state == IDLE_11) state = SCLK_01; অন্যথায় যদি (state == SCLK_10) state = SCLK_00; অন্যথায় যদি (state == SDT_10) state = SDT_00; } অন্য {যদি (state == SCLK_01) state = IDLE_11; অন্যথায় যদি (state == SCLK_00) state = SCLK_10; অন্যথায় যদি (state == SDT_00) state = SDT_10; অন্যথায় যদি (state == SDT_01) {state = IDLE_11; curVal--; }}}
// ডিটি স্তরের পরিবর্তনের জন্য স্টেট মেশিন ট্রানজিশন
void rotaryDT () {if (digitalRead (DT) == LOW) {if (state == IDLE_11) state = SDT_10; অন্যথায় যদি (state == SDT_01) state = SDT_00; অন্যথায় যদি (state == SCLK_01) state = SCLK_00; } অন্য {যদি (state == SDT_10) state = IDLE_11; অন্যথায় যদি (state == SDT_00) state = SDT_01; অন্যথায় যদি (state == SCLK_00) state = SCLK_01; অন্যথায় যদি (state == SCLK_10) {state = IDLE_11; কার্ভাল ++; }}}
ধাপ 5: ত্রুটিহীন ইন্টিগ্রেশন
আপনি সংযুক্ত ভিডিওতে চেক করতে পারেন যে FSM সমাধানটি বিভিন্ন বিক্ষিপ্ত বাউন্স প্রভাব সহ কম পরিসরের ঘূর্ণমান এনকোডারের ক্ষেত্রেও সঠিক এবং দ্রুত কাজ করে।
প্রস্তাবিত:
একটি ল্যাপটপে একটি CMOS ব্যাটারি সমস্যার সমাধান করুন: 7 টি ধাপ (ছবি সহ)
একটি ল্যাপটপে সিএমওএস ব্যাটারির সমস্যা সমাধান করুন: একদিন আপনার পিসিতে অনিবার্য ঘটে, সিএমওএস ব্যাটারি ব্যর্থ হয়। এটি কম্পিউটারের স্বাভাবিক কারণ হিসাবে নির্ণয় করা যেতে পারে যে প্রতিবার যখন কম্পিউটার শক্তি হারায় তখন সময় এবং তারিখ পুনরায় প্রবেশ করার প্রয়োজন হয়। যদি আপনার ল্যাপটপের ব্যাটারি শেষ হয়ে যায় এবং
একটি সার্ভোর ভিতরে কি এবং Arduino সম্পূর্ণ টিউটোরিয়াল দিয়ে কিভাবে ব্যবহার করবেন: 6 টি ধাপ
একটি Servo এর ভিতরে কি এবং Arduino ফুল টিউটোরিয়াল দিয়ে কিভাবে ব্যবহার করতে হয়: এই টিউটোরিয়ালে, এই ভিডিও টিউটোরিয়ালটি সার্ভোওয়াচ কি তা দেখে নেওয়া যাক
Arduino এবং ঘূর্ণমান এনকোডার সঙ্গে পাওয়ার টাইমার: 7 ধাপ (ছবি সহ)
আরডুইনো এবং রোটারি এনকোডারের সাথে পাওয়ার টাইমার: এই পাওয়ার টাইমারটি উপস্থাপিত টাইমারের উপর ভিত্তি করে তৈরি করা হয়েছে: https: //www.instructables.com/id/Timer-With-Arduin … একটি পাওয়ার সাপ্লাই মডিউল এবং একটি এসএসআর (সলিড স্টেট রিলে ) এর সাথে সংযুক্ত ছিল। 1KW পর্যন্ত পাওয়ার লোড চালানো যেতে পারে এবং ন্যূনতম পরিবর্তনের সাথে l
একটি ঘূর্ণমান ফোনকে একটি রেডিওতে পরিণত করুন এবং সময়ের মাধ্যমে ভ্রমণ করুন: 5 টি ধাপ (ছবি সহ)
একটি ঘূর্ণমান ফোনকে একটি রেডিওতে পরিণত করুন এবং সময়ের মাধ্যমে ভ্রমণ করুন: আমি একটি ঘূর্ণমান ফোনকে একটি রেডিওতে হ্যাক করেছি! ফোনটি তুলুন, একটি দেশ এবং এক দশক বেছে নিন এবং কিছু দুর্দান্ত সঙ্গীত শুনুন! এটি কীভাবে কাজ করে এই ঘূর্ণমান ফোনে একটি মাইক্রো কম্পিউটার বিল্ট-ইন (একটি রাস্পবেরি পাই) রয়েছে, যা একটি ওয়েব রেডিও radiooooo.com- এ যোগাযোগ করে। দ্য
একটি সম্পূর্ণ বিচ্ছিন্ন ড্রুপাল ফার্মে একটি ভার্চুয়াল ড্রুপাল সাইট যুক্ত করা: 3 টি ধাপ
একটি সম্পূর্ণ পৃথকীকৃত ড্রুপাল খামারে একটি ভার্চুয়াল ড্রুপাল সাইট যুক্ত করা: দ্রুপাল একটি বিষয়বস্তু ব্যবস্থাপনা ব্যবস্থা (সিএমএস)। এর একটি স্বতন্ত্র বৈশিষ্ট্য হল একটি কোডবেস থেকে অনেকগুলি সাইট পরিচালনার সহজতা - অনেকটা ভুতুড়ে ড্রুপাল ফার্ম এই নির্দেশনাটি আপনাকে সম্পূর্ণভাবে আলাদা করে তৈরি করতে সাহায্য করার লক্ষ্যে হবে