সুচিপত্র:

Arduino এবং অ্যানালগ জয়স্টিক সহ 28BYJ-48 স্টেপার মোটরের কৌণিক অবস্থানগত নিয়ন্ত্রণ: 3 টি ধাপ
Arduino এবং অ্যানালগ জয়স্টিক সহ 28BYJ-48 স্টেপার মোটরের কৌণিক অবস্থানগত নিয়ন্ত্রণ: 3 টি ধাপ

ভিডিও: Arduino এবং অ্যানালগ জয়স্টিক সহ 28BYJ-48 স্টেপার মোটরের কৌণিক অবস্থানগত নিয়ন্ত্রণ: 3 টি ধাপ

ভিডিও: Arduino এবং অ্যানালগ জয়স্টিক সহ 28BYJ-48 স্টেপার মোটরের কৌণিক অবস্থানগত নিয়ন্ত্রণ: 3 টি ধাপ
ভিডিও: Arduino Tutorial 26 - Using Joystick with Arduino Taking Action | SunFounder's ESP32 IoT Learnig kit 2024, জুলাই
Anonim
Arduino এবং অ্যানালগ জয়স্টিক সহ 28BYJ-48 স্টেপার মোটরের কৌণিক অবস্থানগত নিয়ন্ত্রণ
Arduino এবং অ্যানালগ জয়স্টিক সহ 28BYJ-48 স্টেপার মোটরের কৌণিক অবস্থানগত নিয়ন্ত্রণ

এটি 28BYJ-48 স্টেপার মোটরের জন্য একটি কন্ট্রোল স্কিম যা আমি আমার চূড়ান্ত বছরের গবেষণামূলক প্রকল্পের অংশ হিসাবে ব্যবহার করার জন্য তৈরি করেছি। আমি এটি আগে দেখিনি তাই ভেবেছিলাম আমি যা আবিষ্কার করেছি তা আপলোড করব। আশা করি এটি অন্য কাউকে সাহায্য করবে!

কোডটি মূলত একটি স্টেপার মোটরকে একটি অ্যানালগ জয়স্টিকের কৌণিক অবস্থানকে "অনুলিপি" করার অনুমতি দেয়, অর্থাৎ আপনি যদি জয়স্টিকটিকে সামনে এগিয়ে দেন, মোটরটি "উত্তর" দিকে নির্দেশ করে। জয়স্টিকটিকে পশ্চিম দিকে ধাক্কা দিন, মোটরটি একই দিকে নির্দেশ করার জন্য ঘুরছে।

আমার বাস্তবায়নের জন্য আমি প্রয়োজন যে যদি জয়স্টিকটি ছেড়ে দেওয়া হয়, যেমন কোন কৌণিক অবস্থান নেই, মোটরটি "হোম" দিকের দিকে ফিরে আসে। বাড়ির দিকটি পূর্বমুখী, এবং মোটর (অথবা ইজারাতে আপনি যেই পয়েন্টার / ডিভাইসটি আউটপুট শ্যাফ্টের সাথে সংযুক্ত করেছেন!) চালিত হলে অবশ্যই এই দিকের মুখোমুখি হতে হবে।

সরবরাহ

Arduino Uno বা অনুরূপ

ব্রেডবোর্ড এবং জাম্পার তারের নির্বাচন (পুরুষ থেকে পুরুষ, পুরুষ থেকে মহিলা)

5V পাওয়ার সাপ্লাই

অ্যানালগ জয়স্টিক মডিউল (আদর্শভাবে একটি ক্ষণস্থায়ী পুশ বোতাম বৈশিষ্ট্য সহ, এটি "হোম" অবস্থানের সহজ বিশ্রামের জন্য তৈরি করে

28BYJ-48 স্টেপার মোটর এবং ULN2003 স্টেপার ড্রাইভার

কলম, কাগজ এবং ব্লু-ট্যাক (অথবা মোটরের সাথে সংযুক্ত করার জন্য অন্য কোন পয়েন্টার ডিভাইস!)

ধাপ 1: ধাপ 1: সেট আপ করা হচ্ছে

স্টেপার ড্রাইভারের সাথে স্টেপার মোটর সংযুক্ত করুন এবং পিনগুলি নিম্নরূপ সংযুক্ত করুন:

IN1 - Arduino পিন 8

IN2 - Arduino পিন 9

IN3 - Arduino পিন 10

IN4 - Arduino পিন 11

আপনার 5v পাওয়ার সাপ্লাই আপনার ব্রেডবোর্ডের সাপ্লাই রেলের সাথে সংযুক্ত করুন এবং ULN2003 5v ইনপুটগুলিকে সাপ্লাই রেলের সাথে সংযুক্ত করুন। আপনার আরডুইনোতে স্থল রেলকে মাটিতে সংযুক্ত করুন।

জয়স্টিকের জন্য, নিম্নরূপ সংযুক্ত করুন:

সুইচ পিন - Arduino পিন 2

এক্স অক্ষ - Arduino A0 (0 এ এনালগ)

Y অক্ষ - Arduino A1

+5V - Arduino 5V আউটপুট

GND - Arduino GND

অবশেষে আপনার রুটিবোর্ডের স্থলটিকে অন্য Arduino GND পিনের সাথে সংযুক্ত করুন

ধাপ 2: ধাপ 2: কোড ব্যাখ্যা করা

আমি ডাউনলোড এবং ব্যবহার করার জন্য সম্পূর্ণ Arduino কোড অন্তর্ভুক্ত করেছি। তবে এখানে প্রাসঙ্গিক অংশগুলি ব্যাখ্যা করার জন্য যথাসাধ্য চেষ্টা করব।

এই কোডের পিছনে তত্ত্বটি হল যে জয়স্টিক দ্বারা দখলকৃত স্থানটি গ্রাফে বিভক্ত, কেন্দ্রে 0, 0। যাইহোক জয়স্টিক ইনপুটগুলি কেন্দ্রে (প্রায়) 512 এ থাকে, তাই এই দুটি ফাংশনকে অতিক্রম করতে X এবং Y অক্ষ থেকে পড়া মানকে "শূন্য" করতে ব্যবহৃত হয়। আপনি যে বিদ্যুৎ সরবরাহ ব্যবহার করেন তার উপর নির্ভর করে আপনাকে ZeroX এবং ZeroY ফাংশনের মান পরিবর্তন করতে হতে পারে যাতে বিশ্রামের সময় আপনার জয়স্টিক 0 এর একটি নির্ভরযোগ্য পড়া দেয়।

যখন X, Y মানগুলি পড়া হয়, সেগুলি প্রথমে math.h লাইব্রেরিতে atan2 () ফাংশন ব্যবহার করে রেডিয়ানে রূপান্তরিত হয়। এই ফাংশনটি ব্যাখ্যা করা এই নির্দেশের সুযোগের বাইরে, কিন্তু দয়া করে এটি দেখুন - এটি জ্যামিতির একটি সহজ কৌশল!

পরিশেষে, আমরা যারা র্যাডের বদলে ডিগ্রিতে কাজ করতাম তাদের জীবনকে সহজ করতে, atan2 () দ্বারা গণনা করা রাড মান ডিগ্রীতে রূপান্তরিত হয়।

লুপের শীর্ষে কোডের একটি ছোট স্নিপেট রয়েছে যা আপনাকে "হোম" অবস্থান সরাতে জয়স্টিকের ক্ষণস্থায়ী বোতামে ক্লিক করতে দেয়। কোডটি পরীক্ষা করার সময় এটি অবিশ্বাস্যভাবে দরকারী ছিল, কিন্তু আমি এটি রেখে দিয়েছি কারণ আমি দেখতে পারি যে এটি কিছু ক্ষেত্রে কীভাবে কার্যকর হতে পারে।

এখন কোডের মূল অংশে! আমরা জয়স্টিক এক্স পড়ার মাধ্যমে শুরু করি, Y কোঅর্ডিনেট দুবার 10ms বিলম্ব দ্বারা পৃথক করা হয় এবং তারপর তারা একই কিনা তা পরীক্ষা করে - আমি দেখেছি যে জয়স্টিক মাঝে মাঝে বিক্ষিপ্ত রিডিং আউটপুট করবে, এবং এই সামান্য বিলম্ব মোটর ঘুরানো বন্ধ করার জন্য যথেষ্ট ছিল । এটি একটি ছোট যথেষ্ট বিলম্ব যে এটি ইচ্ছাকৃত ইনপুটগুলির সাথে হস্তক্ষেপ করে বলে মনে হয় না।

বাকি কোডটি বরং স্ব -ব্যাখ্যামূলক এবং আমি এটি নথিভুক্ত করার জন্য যথাসাধ্য চেষ্টা করেছি; IF স্টেটমেন্টের একটি সিরিজ বর্তমান জয়স্টিক কোণটিকে মোটর কোণের সাথে তুলনা করে এবং মোটরটিকে সেই কোণে নিয়ে যায়। 28BYJ-48 এর প্রতি ডিগ্রি 5.689 ধাপ আছে, তাই আমরা এই আপাতদৃষ্টিতে বিজোড় সংখ্যা দ্বারা প্রয়োজনীয় আন্দোলনকে গুণ করি!

কোডের একটি অংশ যার জন্য সর্বাধিক ব্যাখ্যা প্রয়োজন তা হল আমি যাকে "wraparound case" বলে ডাব করেছি। এমনকি জয়স্টিক এবং মোটর যেমন ছিল +175 °, এবং জয়স্টিক পরবর্তীতে -175 (জয়েস্টিকে মাত্র 10 of একটি আন্দোলন, পশ্চিমের উত্তর থেকে ঠিক দক্ষিণে পশ্চিমে), মোটরটি 350 by দ্বারা ভুল দিকনির্দেশে চলে যাবে! এই জন্য বিশেষ কেস লেখা হয়েছিল।

মোটর এবং জয়স্টিকের বিপরীত লক্ষণ রয়েছে তা যাচাই করে মোড়কটি কেস শুরু হয়, যেমন মোটর ইতিবাচক এবং জয়স্টিক নেতিবাচক, বা বিপরীত। এটি আরও পরীক্ষা করে যে জয়স্টিক এবং মোটরের পরম (অর্থাৎ ধনাত্মক মান) এর যোগফল 180 above এর উপরে।

যদি এই দুটি বিবৃতি সত্য হয়, তাহলে ফাংশনটি চেক করে যে মোটরটি ঘড়ির কাঁটার দিকে (মোটরের মান নেতিবাচক) বা অ্যান্টিক্লকওয়াইজ (যদি মোটরের মান ইতিবাচক হয়)।

মোটর এঙ্গেল এবং জয়স্টিক এঙ্গেলের পরম মানগুলি মোট, এবং 360 from থেকে বিয়োগ করে সরানোর দূরত্ব নির্ধারণ করা হয়। অবশেষে, মোটর এঙ্গেল (যা এখন জয়স্টিক কোণকে প্রতিফলিত করে) যেমন আপডেট করা হয়।

ধাপ 3: সমাপ্ত

সুতরাং, আপনার আরডুইনোতে কোডটি আপলোড করুন এবং এটি চালান! প্রকল্পটি কীভাবে কাজ করে তার একটি ভাল ধারণা পেতে উপরের ভিডিওটি দেখুন। এটি ক্যামেরা গিম্বাল, রোবোটিক অস্ত্র এবং অন্যান্য অনেক অ্যাপ্লিকেশনের জন্য দরকারী হবে!

আপনি যদি কোডটি ব্যবহার করেন, দয়া করে আমাকে জানান, এবং যদি আপনি কোডটি উন্নত করা যায় এমন কোন কিছু দেখতে পান, আমি আপনার প্রতিক্রিয়া শুনতে চাই।

প্রস্তাবিত: