সম্ভাব্য
পেন্টিওমিটারগুলি, যা পরিবর্তনশীল প্রতিরোধক, তাদের প্রতিরোধের কীভাবে পরিবর্তিত হয় তার অবস্থানগত প্রতিক্রিয়া বেস সরবরাহ করতে লিনিয়ার অ্যাকিউইটরেটরগুলিতে ব্যবহৃত হয়। লিনিয়ার অ্যাকিউটিউটর যা আমাদের মত প্রতিক্রিয়ার জন্য সম্ভাব্য ব্যবহার করে প্রতিক্রিয়া রড লিনিয়ার অ্যাকুয়েটর, নীচে দেখানো 3 টি অতিরিক্ত তারের সমন্বয়ে গঠিত হবে, ইনপুট ভোল্টেজের জন্য তারের 1, তারের 2 হ'ল পরিবর্তনশীল প্রতিরোধক, এবং তার 3 স্থল জন্য। আপনি তারের 2, আউটপুট এবং গ্রাউন্ডের মধ্যে ভোল্টেজ পরিমাপ করে পেন্টিওমিটারগুলির আউটপুটটি পড়তে পারেন, যা লিনিয়ার অ্যাকুয়েটরের পরম অবস্থানের ইঙ্গিত দেয়। এই প্রতিক্রিয়াটি ব্যবহার করতে, আপনাকে একটির মতো কিছু ধরণের মাইক্রোকন্ট্রোলার ব্যবহার করতে হবে আরডুইনো, অ্যাকুয়েটরটি চলার সাথে সাথে এই অবস্থানগত মানটি পড়তে।
একটি শক্তি থেকে অবস্থানগত প্রতিক্রিয়া
লিনিয়ার অ্যাকুয়েটরটি চলার সাথে সাথে পেন্টিওমিটারের পরিবর্তনশীল প্রতিরোধক পরিবর্তিত হওয়ার সাথে সাথে তারের 2 এবং স্থলগুলির মধ্যে ভোল্টেজের পার্থক্য পরিবর্তন হবে। এ কারণে, প্রতিক্রিয়াটি সহজেই কোনও আরডুইনোর মতো কোনও নিয়ামকের সফ্টওয়্যারটিতে পরিচালনা করা যায়, কারণ আপনি কেবল তারের 2 এর আউটপুট ভোল্টেজকে গ্রাউন্ডের সাথে তুলনা করতে পারেন। একটি আরডুইনো ব্যবহার করে, এটি কেবল একটি মাইক্রোকন্ট্রোলারের পিনে অ্যানালগ ব্যবহার করে এবং তার থেকে ভোল্টেজ পড়ার জন্য অ্যানালগ্রেড () ফাংশনটি ব্যবহার করে এটি করা যেতে পারে 2. কীভাবে একটি আরডুইনোকে পোটেন্টিওমিটার প্রতিক্রিয়া সহ একটি লিনিয়ার অ্যাকুয়েটরের সাথে সংযুক্ত করতে হয় তার একটি উদাহরণ দেখানো হয় নিচে.

এর পিনগুলিতে অ্যানালগ আরডুইনো অ্যানালগ-টু-ডিজিটাল রূপান্তরকারী (এডিসি), যা তারের 2 এ অ্যানালগ ভোল্টেজকে 10-বিট এডিসি মানতে রূপান্তর করবে যা 0 থেকে 1023 এর মধ্যে হবে Me 10-বিট এডিসি মানটির অর্থ কনভার্টরটি অ্যানালগ সংকেতকে অনুবাদ করবে 0 থেকে 1023 অবধি 2^10 বা 1024 স্বতন্ত্র মানগুলি সমস্ত মাইক্রোকন্ট্রোলার 10-বিট এডিসি নয়, কিছু 8-বিট বা 16-বিট এবং এডিসির রেজোলিউশন যত বেশি বিটের সংখ্যা তত বেশি। একবার আপনি যখন অ্যানালগ সংকেতটিকে একটি ডিজিটাল মান হিসাবে রূপান্তরিত করেছেন, স্ট্রোকের দৈর্ঘ্যের দিক থেকে একটি অবস্থানের মান নির্ধারণ করতে, যেমন ইঞ্চিগুলির মতো, আপনাকে আপনার নির্দিষ্ট লিনিয়ার অ্যাকুয়েটরের সঠিক অ্যানালগ পরিসীমা খুঁজে পেতে হবে কারণ এটি 0 থেকে অবধি নাও হতে পারে 1023. এটি পেন্টিওমিটারকে পুরোপুরি তার সীমাতে ঘোরানো প্রতিরোধকারীকে রোধ করে গিয়ারবক্সের কারণ এবং এর অর্থ আপনাকে ম্যানুয়ালি এই পরিসীমা নির্ধারণ করতে হবে। নীচে কোডিং উদাহরণের জন্য, 4 "স্ট্রোক দৈর্ঘ্যের প্রতিক্রিয়া রড লিনিয়ার অ্যাকুয়েটর 0 "এ 44 এর অ্যানালগ মান এবং 4 এ 951 এর অ্যানালগ মান ছিল। এই মানগুলি ব্যবহার করে, আপনি নীচের মতো স্ট্রোকের দৈর্ঘ্যের মান নির্ধারণ করতে অনুপাত ব্যবহার করতে পারেন:
এটি স্ট্রোকের দৈর্ঘ্য = 0.00441*(অ্যানালগ মান - 44) এ সরল করা যেতে পারে, নীচের কোডিং উদাহরণের মতো। আপনি আপনার মাইক্রোকন্ট্রোলারের কোডে এই অ্যানালগ মানটি কতবার পড়েন তা আরেকটি গুরুত্বপূর্ণ বিবেচনা। নীচের কোড উদাহরণে, আরডুইনো পেন্টিওমিটারটি পড়েন এবং যতক্ষণ না অ্যাকুয়েটরটি চলমান ততক্ষণ অবস্থানের মান আপডেট করে। তবে আপনি সময়ের একটি নির্দিষ্ট ব্যবধানে অবস্থানের মান আপডেট করতে অভ্যন্তরীণ টাইমারগুলিও ব্যবহার করতে পারেন বা আপনি কেবল কোডের মূল লুপের ভিতরে পেন্টিওমিটার রিড ফাংশনটি রাখতে পারেন এবং অবিচ্ছিন্নভাবে অবস্থানের মানটি আপডেট করতে পারেন। যদিও আপনি যদি একাধিক স্বতন্ত্র ফাংশন সম্পাদন করতে আপনার নিয়ামকটি ব্যবহার করার পরিকল্পনা করেন তবে পরবর্তীটি সুপারিশ করা হয় না।
https://gist.github.com/OMikeGray/4dec9e075a8fe41efaea001fa1e98d70
float pos; // Actuator Position
float conNum = 0.00441; // Constant to convert ADC to Inches
// Equal to (951 (ADC at 4") - 44 (ADC at 0")/4")^-1
void setup() {
pinMode(A1, INPUT); // Configure Analog In pin 1 as an Input
pinMode(10, OUTPUT); // Configure pin 10 as an Output
pinMode(11, OUTPUT); // Configure pin 11 as an Output
pinMode(2, INPUT_PULLUP); // Input for Button
pinMode(3, INPUT_PULLUP); // Input for Button
Serial.begin(9600);
}
void loop() {
if(digitalRead(2) == HIGH & digitalRead(3) == LOW){
// Retract Actuator
analogWrite(10, 0);
analogWrite(11, 255);
pos = readPotentiometer(); // Print position value to the Serial Display
Serial.println(pos);
delay(1);
}
else if(digitalRead(2) == LOW & digitalRead(3) == HIGH){
// Extend Actuator
analogWrite(10, 255);
analogWrite(11, 0);
pos = readPotentiometer();
Serial.println(pos); // Print position value to the Serial Display
delay(1);
}
else{
// Stop Actuator
analogWrite(10, 0);
analogWrite(11, 0);
}
}
/*Function to Read Potentiometer and Convert it to Inches*/
float readPotentiometer(void){
float pos;
pos = conNum*(analogRead(A1) - 44); // 44 ADC is equal to 0"
return pos;
}
বৈদ্যুতিক গোলমাল নিয়ে কাজ করা
পেন্টিওমিটার থেকে প্রতিক্রিয়ার একটি অপূর্ণতা হ'ল এটি বৈদ্যুতিক শব্দ দ্বারা প্রভাবিত হতে পারে এবং আপনার অবস্থানগত মানটি অস্থির করে তুলতে পারে। এটি কাটিয়ে ওঠার একটি উপায় হ'ল বৈদ্যুতিক শব্দটি অপসারণ করতে এবং স্থিতিশীল ফলাফল অর্জন করতে ডিজিটাল ফিল্টার ব্যবহার করা। কয়েকটি বিভিন্ন ধরণের ফিল্টার রয়েছে যা তাদের নিজস্ব সুবিধাগুলি সহ প্রতিটি উচ্চ-পাস এবং ব্যান্ড-পাস ফিল্টারগুলিতে ব্যবহার করা যেতে পারে তবে লিনিয়ার অ্যাকিউটিউটরগুলির সাথে অনেকগুলি অ্যাপ্লিকেশনগুলির জন্য, কেবল অবস্থানগত মানের একটি চলমান গড় ব্যবহার করে কাজ করবে। একটি চলমান গড় হ'ল ইনপুট সিগন্যালটি মসৃণ করতে পরিমাপের শেষ x পরিমাণের গড় গড়। আপনি গড় গড় পরিমাপের সঠিক সংখ্যাটি আপনার আবেদনের উপর নির্ভর করবে এবং কোনটি সবচেয়ে ভাল কাজ করে তা নির্ধারণ করতে আপনাকে এই নম্বরটির সাথে চারপাশে খেলতে হবে। কিছু বিষয় সম্পর্কে সচেতন হওয়ার জন্য, যদি আপনার গড়ের মধ্যে খুব কম পরিমাপ থাকে তবে আপনার সিগন্যালটি এখনও গোলমাল হবে, তবে আপনার যদি খুব বেশি পরিমাপ থাকে তবে আপনার ফলাফলগুলি অ্যাকুয়েটরের প্রকৃত অবস্থানের চেয়ে অনেক বেশি পিছিয়ে থাকবে যা ব্যবহারযোগ্য হতে পারে। এটি খুব কম এবং অনেকগুলি পরিমাপের মধ্যে একটি ভারসাম্য সন্ধান করছে যা আপনার ফিল্টারকে কার্যকর করে তুলবে। নীচে প্রকৃত ইনপুট সিগন্যালের বিপরীতে চলমান গড় ফিল্টারটির প্রভাব দেখানো একটি প্লট রয়েছে।
চলমান গড় বাস্তবায়নের জন্য ব্যবহৃত কোডটি নীচে দেখানো হয়েছে, এটি ইনপুট সিগন্যালটি মসৃণ করতে গড়ে 3 টি পরিমাপ ব্যবহার করে। তিনটি পরিমাপ বেছে নেওয়া হয়েছিল কারণ প্রকৃত ইনপুট সিগন্যালে খুব বেশি শব্দ ছিল না, তাই মানটি মসৃণ করার জন্য কেবল কয়েকটি পরিমাপের প্রয়োজন ছিল। ইনপুট সিগন্যালে যদি আরও শব্দ হয় তবে প্রচুর পরিমাণে পরিমাপের প্রয়োজন হবে। এমন পরিস্থিতিতে যেখানে প্রচুর প্ররোচিত উপাদান রয়েছে (অর্থাত্ মোটর) বৈদ্যুতিক শব্দটি অনেক বড় সমস্যা হবে।
https://gist.github.com/OMikeGray/b13f156c080a100a89e5bbd541d0565e
float readPotentiometer(void){
int sum = 0; // Sum of Measurements
static int j = 0;
valuesToAverage[j] = analogRead(A1); // Place Measurement in Buffer with Previous Values
for(int i = 0; i < numMeasure; i++){
sum +=valuesToAverage[i]; // Add Up all Muasurements
}
if(j < numMeasure-1){j++;}
else{j = 0;}
return conNum*((sum/numMeasure) - 44); // Divide by number of measurements
} // & Convert to Inches
অটোমেশনের জন্য প্রতিক্রিয়া ব্যবহার
আপনার ডিজাইনে প্রতিক্রিয়া বাস্তবায়নের দুর্দান্ত জিনিসটি হ'ল এটি আপনাকে একটি স্ব-স্বয়ংক্রিয় সিস্টেম তৈরি করতে দেয় যা কোনও প্রদত্ত ইনপুটটির জন্য কোথায় থাকতে পারে তা জানে। একটি স্বয়ংক্রিয় সিস্টেমে পেন্টিওমিটার প্রতিক্রিয়া ব্যবহার করতে আপনি আপনার লিনিয়ার অ্যাকুয়েটরের দৈর্ঘ্যের দৈর্ঘ্যের দৈর্ঘ্যের সাথে তুলনা করতে পারেন যা পেন্টিওমিটার দ্বারা প্রদত্ত প্রকৃত অবস্থানের সাথে। তারপরে আপনাকে কেবল সেই অনুযায়ী প্রসারিত বা প্রত্যাহার করতে আপনার অ্যাকিউউটরকে বলতে হবে। যদিও একটি স্বয়ংক্রিয় সিস্টেমে পেন্টিওমোমিটার প্রতিক্রিয়া ব্যবহার করার জন্য আপনাকে কয়েকটি সমস্যা কাটিয়ে উঠতে হবে। একটি হ'ল বৈদ্যুতিক শব্দের বিষয়টি, যা উপরে আলোচনা করা হয়েছিল, অন্যটি পুনরাবৃত্তিযোগ্য ফলাফল অর্জন করতে সক্ষম হচ্ছে। যেহেতু শক্তিগুলি অন্যান্য প্রতিক্রিয়া বিকল্পগুলির তুলনায় সাধারণত লিনিয়ার অ্যাকুয়েটরের ছোট আন্দোলনের প্রতি ততটা সংবেদনশীল নয়, এটি সুনির্দিষ্ট পুনরাবৃত্তিযোগ্য ফলাফল অর্জনকে আরও কঠিন করে তোলে। অনুশীলনে, এর অর্থ হ'ল আপনার পছন্দসই অবস্থানের চারপাশে আপনার একটি ত্রুটি রয়েছে, যা আপনার প্রদত্ত অ্যাপ্লিকেশনটির জন্য গ্রহণযোগ্য হতে পারে। আপনার যদি খুব সুনির্দিষ্ট অবস্থানের প্রয়োজন না হয় বা আপনার সিস্টেমটি স্বয়ংক্রিয় করতে কোনও মাইক্রোকন্ট্রোলারের সাথে ম্যানুয়াল স্যুইচটি প্রতিস্থাপন করে থাকেন তবে একটি পেন্টিওমিটার থেকে অবস্থানগত প্রতিক্রিয়া আপনার পক্ষে যথেষ্ট সঠিক হবে। আপনার যদি আপনার লিনিয়ার অ্যাকুয়েটর থেকে সঠিক অবস্থানের প্রয়োজন হয় তবে আপনাকে বিবেচনা করতে হবে অন্যান্য প্রতিক্রিয়া বিকল্প আপনার লিনিয়ার অ্যাকুয়েটরের জন্য বা আরও নির্ভরযোগ্য ফলাফল সরবরাহ করতে অতিরিক্ত উপাদান যুক্ত করুন। এই উপাদানগুলির মধ্যে সেন্সর বা অন্তর্ভুক্ত বাহ্যিক সীমা সুইচ যা আপনাকে পরম অবস্থানের আরও ভাল সূচক দিতে পারে।

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