সুচিপত্র:

চ্যানেল মিক্সিং বোঝা: 4 টি ধাপ (ছবি সহ)
চ্যানেল মিক্সিং বোঝা: 4 টি ধাপ (ছবি সহ)

ভিডিও: চ্যানেল মিক্সিং বোঝা: 4 টি ধাপ (ছবি সহ)

ভিডিও: চ্যানেল মিক্সিং বোঝা: 4 টি ধাপ (ছবি সহ)
ভিডিও: ধনী হতে চাইলে এই 4 টি কথা কউকে বলবেন না || How to Become Rich || Inspirational Video 2024, নভেম্বর
Anonim
Image
Image
মিশ্রণ পদ্ধতি one না
মিশ্রণ পদ্ধতি one না

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

চেসিসের প্রতিটি পাশে কতটা বিদ্যুৎ সরবরাহ করা উচিত তা নির্ধারণ করতে আপনার জয়স্টিক থেকে ডেটা কীভাবে ব্যবহার করা হয় তা কেবল মিশ্রণ।

আপনি যদি একটি জয়স্টিক খুলেন, সাধারণত আপনি দুটি potentiometers ভিতরে দেখতে পাবেন। একটি Y অক্ষ বরাবর আপনার বর্তমান অবস্থান পরিমাপ করার জন্য (উপরে এবং নিচে), এবং অন্যটি X অক্ষ বরাবর আপনি কোথায় আছেন তা পরিমাপ করার জন্য (পাশ থেকে পাশে)।

যদিও এই বিষয়ে আমার কোন আনুষ্ঠানিক প্রশিক্ষণ নেই, আমাকে আগে কোডে মিশ্রণ করতে হয়েছিল এবং সম্প্রতি আমি বিষয়টির একটু গভীরে যেতে চেয়েছিলাম।

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

আসুন কিছু ভিন্ন মিশ্রণ পন্থা দেখুন।

ধাপ 1: মিশ্রণ পদ্ধতি one কোনটি নয়

প্রথমে একনজরে দেখে নেওয়া যাক যদি আপনি একদমই মিক্সিং ব্যবহার না করেন তাহলে কি হবে। আপনি যদি কেবল একটি অক্ষ থেকে চেসিসের একপাশে এবং অন্য অক্ষকে অন্য দিকে পাঠান, তবে আপনার যানটি আপনি যেভাবে চান তা সাড়া দেবে না।

উদাহরণস্বরূপ, যদি আপনি জয়স্টিকটিকে সরাসরি এগিয়ে নিয়ে যান, Y অক্ষটি পুরো থ্রোটলে এবং X অক্ষটি 0 এ থাকে।

ধাপ 2: পদ্ধতি পদ্ধতি ot ঘোরান

পদ্ধতি পদ্ধতি ot ঘোরান
পদ্ধতি পদ্ধতি ot ঘোরান

একজন সহকর্মী একবার আমার দিকে ইঙ্গিত করেছিলেন যে, একটি চিম্টিতে আপনি আপনার ট্রান্সমিটারটি একটি দরিদ্র মানুষের মিশ্রণের জন্য 45 ডিগ্রি ঘুরাতে পারেন। যদি আপনি একটি গ্রিডে x x y অক্ষ (উভয় অক্ষের সাথে -100 থেকে +100 পর্যন্ত বিস্তৃত) হিসাবে একটি জয়স্টিকের দুটি পটেন্টিওমিটারের মানগুলি মনে করেন তবে এটি অনেকটা অর্থবহ করে তোলে কারণ আপনি উভয় অক্ষে +100 যাচ্ছেন যখন আপনি জয়স্টিকটি উপরে এবং ডানদিকে ধাক্কা দেন। সুতরাং যদি এটি সরাসরি আপনার দুটি চ্যাসি চ্যানেলে (আপনার রোবটের বাম এবং ডান দিক) মানচিত্র তৈরি করে তবে এটি আপনার রোবটকে এগিয়ে নিয়ে যাবে।

তাই মিশ্রণের প্রথম পদ্ধতি যা আমি চেষ্টা করেছি তা হল গাণিতিকভাবে গ্রিডের কেন্দ্র বিন্দুতে x এবং y সমন্বয় 45 ডিগ্রী ঘুরানো।

এটি ঠিক কাজ করে, তবে আমি 100% শক্তি নিয়ে এগিয়ে যেতে পারি না কারণ যখন আপনি ঘোরান তখন সামগ্রিক আন্দোলন গ্রিডের মধ্যে একটি বৃত্তে সীমাবদ্ধ থাকে, যার অর্থ আপনি কখনই সেই উপরের ডান কোণে প্রবেশ করতে পারবেন না।

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

আপনি যদি আমার মত একজন ভিজ্যুয়াল লার্নার হন তবে এই নির্দেশের শুরুতে ভিডিওটি দেখে এই ধারণাটি আরও সহজ হতে পারে।

আসুন কিছু কোড উদাহরণ দেখি।

আমার কোড উদাহরণ সম্পর্কে নোট: আমি আপনার প্রকল্পের উপর নির্ভর করে পরিবর্তিত হবে বলে আপনি জয়স্টিক_এক্স এবং জয়স্টিক_ ই মানগুলি কীভাবে পাবেন তা ছেড়ে দিচ্ছি। এছাড়াও আমি ± 100 তে ম্যাপিং/সীমাবদ্ধ করব কিন্তু আপনার সম্ভবত PWM এর জন্য 1000 - 2000 অথবা এনালগ আউটপুট ইত্যাদির জন্য 0 - 255 ম্যাপ করার প্রয়োজন হতে পারে।

Arduino উদাহরণ:

// গাণিতিকভাবে ঘোরানো

ডাবল রেড = -45*এম_পিআই/180; int leftThrottle = joystick_x * cos (rad) - joystick_y * sin (rad); int rightThrottle = joystick_y * cos (rad) + joystick_x * sin (rad); // বাঁধা বাম থ্রটল = সীমাবদ্ধ (বাম থ্রটল, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100);

জাভাস্ক্রিপ্ট উদাহরণ:

// গাণিতিকভাবে rotatevar rad = -45*Math. PI/180; leftThrottle = joystick_x * Math.cos (rad) - joystick_y * Math.sin (rad); rightThrottle = joystick_y * Math.cos (rad) + joystick_x * Math.sin (rad); // constrainleftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100); // সহায়ক ফাংশনভার constrain = ফাংশন (সংখ্যা, মিনিট, সর্বোচ্চ) {ফেরত Math.min (Math.max (সংখ্যা, মিনিট), সর্বোচ্চ); };

ধাপ 3: পদ্ধতি পদ্ধতি »সহজ

পদ্ধতি পদ্ধতি »সহজ
পদ্ধতি পদ্ধতি »সহজ

পরবর্তীতে আমাদের একটি খুব সহজ সমীকরণ রয়েছে যা আমি প্রথম শন হিমেলের অ্যাডভেঞ্চার ইন সায়েন্স স্পার্কফুন ভিডিও থেকে তুলেছিলাম যেখানে তিনি আমার কাজ করা প্রকল্পের সাথে খুব অনুরূপ প্রকল্পে কাজ করেছিলেন।

এই সমীকরণটি আপনাকে এগিয়ে যাওয়ার সময় পূর্ণ গতিতে পেতে দেয় কিন্তু অনেকটা ঘোরানো পদ্ধতির মতো, এটি গ্রিডের কোণ এলাকাগুলিকে উপেক্ষা করে। এর কারণ হল কিছু ক্ষেত্রে সর্বোচ্চ 100 এবং কিছু ক্ষেত্রে সর্বাধিক 200।

এবং যাইহোক আমি এই সহজ আপত্তিকর কল না … সরলতা একটি সৌন্দর্য আছে।

Arduino উদাহরণ:

int leftThrottle = joystick_y + joystick_x;

int rightThrottle = জয়স্টিক_y - জয়স্টিক_এক্স; // বাঁধা বাম থ্রটল = সীমাবদ্ধ (বাম থ্রটল, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100);

জাভাস্ক্রিপ্ট উদাহরণ:

var leftChannel = জয়স্টিক_ y + জয়স্টিক_এক্স;

var rightChannel = joystick_y - joystick_x; // constrain leftChannel = constrain (leftChannel, -100, 100); rightChannel = constrain (rightChannel, -100, 100); // সহায়ক ফাংশনভার constrain = ফাংশন (সংখ্যা, মিনিট, সর্বোচ্চ) {ফেরত Math.min (Math.max (সংখ্যা, মিনিট), সর্বোচ্চ); };

ধাপ 4: পদ্ধতি পদ্ধতি »আনুপাতিক

পদ্ধতি পদ্ধতি »আনুপাতিক
পদ্ধতি পদ্ধতি »আনুপাতিক

আমি উভয় বিশ্বের সমীকরণ একটি সেরা করতে আশা সহজ পদ্ধতি বন্ধ বসন্ত-বোর্ডেড। এখানে ধারণাটি সব দিক থেকে সম্পূর্ণভাবে আনুপাতিক হতে হবে এমনকি তির্যকভাবে সত্ত্বেও যদিও আপনি একটি বৃহত্তর দূরত্ব সরাচ্ছেন তবে এটি একই পরিসীমা রয়েছে যখন আপনি উল্লম্বভাবে সরান যা একটি ছোট দূরত্ব।

আপনি আমার উদাহরণে সব দিক থেকে -200 থেকে +200 স্কেল দিয়ে শেষ করেন আমি এটিকে 100 ডলারে ম্যাপ করি কারণ এটি প্রতিটি চ্যানেলে যাওয়ার শক্তির শতাংশকে প্রতিনিধিত্ব করে - তবে আপনি এটি আপনার ব্যবহারে যা কাজ করে তা মানচিত্র করতে চান- আপনার মোটর নিয়ামকের ক্ষেত্রে। উদাহরণস্বরূপ যদি আপনি একটি PWM সিগন্যাল পাঠাচ্ছেন তাহলে আপনি 1000 থেকে 2000 এ ম্যাপ করতে পারেন অথবা যদি আপনি একটি এনালগ সিগন্যাল পাঠাচ্ছেন তাহলে আপনি 0-255 এ ম্যাপ করতে পারেন এবং বুলিয়ান ইত্যাদি হিসাবে দিকনির্দেশ সেট করতে পারেন।

Arduino উদাহরণ:

int leftThrottle = joystick_y + joystick_x;

int rightThrottle = joystick_y - joystick_x; // কিছু ক্ষেত্রে সর্বাধিক 100, কিছু ক্ষেত্রে এটি 200 // আসুন ফ্যাক্টর ফ্যাক্টর তাই সর্বোচ্চ সর্বদা 200int diff = abs (abs (joystick_y) - abs (joystick_x)); leftThrottle = leftThrottle <0? leftThrottle - diff: leftThrottle + diff; rightThrottle = rightThrottle <0? rightThrottle - diff: rightThrottle + diff; // Map 200 থেকে ± 100 পর্যন্ত মানচিত্র অথবা যে কোন পরিসীমা আপনার প্রয়োজন হবে। // constrainleftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100);

জাভাস্ক্রিপ্ট উদাহরণ:

var leftThrottle = joystick_y + joystick_x; var rightThrottle = joystick_y - joystick_x; // কিছু ক্ষেত্রে সর্বোচ্চ 100 হয়, কিছু ক্ষেত্রে এটি 200 হয়, // আসুন ফ্যাক্টর ফ্যাক্টর করি যাতে সর্বোচ্চ সবসময় 200var diff = Math.abs (Math.abs (joystick_y) - Math.abs (joystick_x)); leftThrottle = leftThrottle <0? leftThrottle - diff: leftThrottle + diff; rightThrottle = rightThrottle <0? rightThrottle -diff: rightThrottle + diff; // মানচিত্র ± 200 থেকে নিচে ± 100 অথবা যা আপনার প্রয়োজন হবে। -100, 100); // constrain leftThrottle = constrain (leftThrottle, -100, 100); rightThrottle = constrain (rightThrottle, -100, 100); // কিছু সাহায্যকারী ফাংশন var constrain = function (num, min, max) {return Math.min (Math সর্বোচ্চ (সংখ্যা, মিনিট), সর্বোচ্চ); }; var map = ফাংশন (num, inMin, inMax, outMin, outMax) {var p, inSpan, outSpan, mapped; inMin = inMin + inMax; num = num + inMax; inMax = inMax + inMax; inSpan = Math.abs (inMax-inMin); p = (সংখ্যা/ইনস্প্যান)*100; outMin = outMin + outMax; outMax = outMax + outMax; outSpan = Math.abs (outMax - outMin); ম্যাপ করা = আউটস্প্যান*(পি/100) - (আউটম্যাক্স/2); ফেরত ম্যাপ করা;};

প্রস্তাবিত: