প্রক্সিমিটি সুইচ
প্রক্সিমিটি সুইচ বা সেন্সরগুলি হ'ল অ-যোগাযোগের সুইচ যা তাদের আশেপাশে কোনও বস্তুর উপস্থিতি সনাক্ত করতে পারে। এই সেন্সরগুলি যখন কোনও অবজেক্ট সেন্সরের সামনে অবস্থান করে বা কোনও বস্তু কেড়ে নেওয়া হয় তবে কোনও লিনিয়ার অ্যাকিউটরেটরকে সরাতে বা থামাতে বলতে ব্যবহার করা যেতে পারে। এগুলি তাদের কাছে নিকটতম অবজেক্টটি কতটা দূরে রয়েছে তা নির্ধারণ করতেও ব্যবহার করা যেতে পারে এবং লিনিয়ার অ্যাকুয়েটর নিয়ন্ত্রণ করতে প্রতিক্রিয়া সরবরাহ করতে ব্যবহার করা যেতে পারে। সাধারণত, আপনি হ্যান্ডস-ফ্রি বা টাচলেস ডিভাইসগুলির সাথে ব্যবহৃত নৈকট্য সেন্সরগুলি দেখতে পাবেন যেমন টাচলেস হ্যান্ড ড্রায়ার এবং এসইউভিতে হ্যান্ডস-ফ্রি চালিত টেলগেটগুলি, তবে এটি বিস্তৃত শিল্প অ্যাপ্লিকেশনগুলিতেও ব্যবহৃত হয়। সাথে ব্যবহারের জন্য লিনিয়ার অ্যাকিউটিউটর, প্রক্সিমিটি সেন্সরগুলি টাচলেস নিয়ন্ত্রণ এবং অবজেক্ট সনাক্তকরণ প্রতিক্রিয়া সহ বিভিন্ন পরিস্থিতিতে ব্যবহার করা যেতে পারে।
প্রক্সিমিটি সেন্সরগুলি সাধারণত বৈদ্যুতিন চৌম্বকীয় ক্ষেত্র, আলো বা শব্দ [1] ব্যবহার করে কোনও বস্তুর উপস্থিতি সনাক্ত করে। আপনার লিনিয়ার অ্যাকুয়েটর যে পদ্ধতিটি সনাক্ত করে যে কোনও বস্তু উপস্থিত রয়েছে কিনা তা প্রক্সিমিটি সেন্সরের ধরণের উপর নির্ভর করবে। চারটি সাধারণ প্রকারের সান্নিধ্য সেন্সর রয়েছে:
- প্ররোচিত: লৌহ উপাদান সনাক্ত করতে চৌম্বকীয় ক্ষেত্র ব্যবহার করে
- ক্যাপাসিটিভ: কোনও অবজেক্ট সনাক্ত করতে ক্যাপাসিট্যান্সের পরিবর্তনগুলি ব্যবহার করে
- ফটোয়েলেকট্রিক: কোনও বস্তু উপস্থিত কিনা তা সনাক্ত করতে আলো ব্যবহার করে
- অতিস্বনক: কোনও বস্তু উপস্থিত রয়েছে কিনা তা সনাক্ত করতে শব্দ ব্যবহার করে
টাইপের আপনার পছন্দটি আপনার অ্যাপ্লিকেশন এবং আপনি কোন উপাদান সনাক্ত করতে চান তার উপর নির্ভর করবে [1]। আপনার কাছে সঠিক প্রক্সিমিটি সেন্সরটি বেছে নেওয়ার সময় আপনার অন্যান্য স্পেসিফিকেশনগুলির একটি হোস্টও থাকবে, যার মধ্যে সনাক্তকরণ পরিসীমা, প্রতিক্রিয়া সময়, স্যুইচিং ফ্রিকোয়েন্সি, অপারেটিং তাপমাত্রা এবং আউটপুট সিগন্যাল অন্তর্ভুক্ত রয়েছে। সঠিক প্রক্সিমিটি সেন্সরটি চয়ন করতে, আপনাকে আপনার অ্যাপ্লিকেশন প্রয়োজনীয়তা, সেন্সরের ধরণ, উপরের স্পেসিফিকেশনগুলি বিবেচনা করতে হবে এবং অতিরিক্ত তথ্যের জন্য সেন্সরের ডেটাশিটের সাথে পরামর্শ করতে হবে।
প্রক্সিমিটি সেন্সর এবং মোশন ডিটেক্টরগুলির মধ্যে পার্থক্য কী?
প্রক্সিমিটি সেন্সরগুলি মোশন ডিটেক্টর নয় কারণ তারা গতির পরিবর্তে কোনও বস্তুর সান্নিধ্য সনাক্ত করে। মোশন ডিটেক্টর, তাদের নাম অনুসারে, কোনও বস্তু বা ব্যক্তির ঘনিষ্ঠতার চেয়ে গতিবিধি বোধ করে। কার্যকরীভাবে, একটি প্রক্সিমিটি সেন্সর আপনাকে বলতে সক্ষম হবে যে কোনও অবজেক্টটি সেন্সরটির সাথে কতটা কাছাকাছি রয়েছে তা অবজেক্টটি চলমান কিনা। মোশন ডিটেক্টরগুলির সময়, কেবল তখনই ট্রিগার হবে যখন কোনও অবজেক্টের কাছাকাছি নির্বিশেষে চলাচল হয়।
স্পর্শহীন নিয়ন্ত্রণ
স্পর্শহীন নিয়ন্ত্রণের জন্য, আপনি সাধারণ পুশ বোতামের মতো প্রক্সিমিটি সেন্সরটি ব্যবহার করবেন। এটি করার জন্য, আপনি একটি প্রক্সিমিটি সেন্সর চয়ন করতে চাইবেন যা একটি সংক্ষিপ্ত সনাক্তকরণের পরিসীমা রয়েছে, তাই আপনি দুর্ঘটনাক্রমে স্যুইচটি ট্রিগার করবেন না এবং এমন একটি সেন্সর যা আপনার হাত, পা, বা আপনি যা সনাক্ত করার চেষ্টা করছেন তা সনাক্ত করতে পারবেন। এর জন্য একটি ভাল বিকল্প হ'ল একটি ক্যাপাসিটিভ প্রক্সিমিটি সেন্সর কারণ তাদের সংক্ষিপ্ত সনাক্তকরণের পরিসীমা রয়েছে এবং এটি বিস্তৃত উপকরণ সনাক্ত করতে পারে তবে অতিস্বনক এবং কিছু ফটোয়েলেকট্রিক প্রক্সিমিটি সেন্সরগুলি যতক্ষণ না তাদের সংক্ষিপ্ত সনাক্তকরণের পরিসীমা থাকে ততক্ষণ কাজ করবে [1]। আপনাকে একটি মাইক্রোকন্ট্রোলারের সাথে নৈকট্য সেন্সরটি সংযুক্ত করতে হবে, যেমন একটি আরডুইনো, সেন্সরের আউটপুট পড়তে। আপনি কীভাবে আপনার প্রক্সিমিটি সেন্সরটিকে আপনার মাইক্রোকন্ট্রোলারের সাথে সংযুক্ত করেন তা আপনার সেন্সরের পছন্দের উপর নির্ভর করবে তবে বেশিরভাগ ক্ষেত্রে, আপনার মাইক্রোকন্ট্রোলার হয় একটি ডিজিটাল রূপান্তরিত অ্যানালগ মান পাবেন বা একটি অ্যানালগ সংকেতকে একটি ডিজিটাল মানতে রূপান্তর করতে হবে।
প্রক্সিমিটি সেন্সরটি কেবল এই অ্যাপ্লিকেশনটিতে একটি একক পুশ বোতামের মতো কাজ করবে, যা লিনিয়ার অ্যাকুয়েটরের উপর আমাদের নিয়ন্ত্রণ সীমাবদ্ধ করবে। আমাদের মাইক্রোকন্ট্রোলার ব্যবহার করে, সেন্সরটি ট্রিগার করা হলে প্রসারিত এবং প্রত্যাহারগুলির মধ্যে টগল করার জন্য আমরা কোড লিখতে পারি এবং সম্পূর্ণ বর্ধিত বা প্রত্যাহারযুক্ত অবস্থানে পৌঁছে গেলে লিনিয়ার অ্যাকুয়েটরের অভ্যন্তরীণ সীমা স্যুইচগুলি ব্যবহার করে। আমরা অভ্যন্তরীণ প্রতিক্রিয়া বা বাহ্যিক সীমা স্যুইচগুলিও ব্যবহার করতে পারি যা আমাদের পুরোপুরি প্রসারিত বা প্রত্যাহার না করে অন্য অবস্থানগুলি ব্যবহার করতে দেয়, যদিও আমরা এখনও দুটি অবস্থানের মধ্যে সীমাবদ্ধ থাকব। আমাদের মাইক্রোকন্ট্রোলারের ফার্মওয়্যারে এটি করার জন্য, নৈকট্য সেন্সরটি ট্রিগার হওয়ার সময় আমাদের প্রতিবার একটি পতাকা ভেরিয়েবল টগল করতে হবে। নীচের কোড নমুনাটি কোন দিকটি নির্ধারণ করতে ফ্ল্যাগ সেন্সরফ্ল্যাগ ব্যবহার করে একটি আরডুইনো আইডিই কোডের মূল লুপটি দেখায় লিনিয়ার অ্যাকিউউটর চালান, যা একটি দ্বারা চালিত হয় মোটর ড্রাইভার.
void loop() { | |
if(sensorFlag == 0){ | |
// Retract Linear Actuator | |
analogWrite(10, 0); | |
analogWrite(11, 255); | |
}else if(sensorFlag == 1){ | |
// Extend Linear Actuator | |
analogWrite(10, 255); | |
analogWrite(11, 0); | |
} | |
} |
এই পতাকাটি টগল করতে, আমাদের প্রক্সিমিটি সেন্সরের মানটি পড়তে হবে। যেহেতু সেন্সরটি কখন ট্রিগার করা হবে তা আমরা জানি না, আমাদের হয় আমাদের কোডের মূল লুপে ক্রমাগত সেন্সরটি পড়তে হবে বা আমরা পর্যায়ক্রমে সেন্সরটি পড়তে অভ্যন্তরীণ টাইমার বিঘ্ন ব্যবহার করতে পারি। পরেরটি সেরা অনুশীলন হিসাবে বিবেচিত হয়, বিশেষত যদি আপনি আপনার মাইক্রোকন্ট্রোলারকে সমান্তরাল কার্যগুলি উপস্থাপন করতে ব্যবহার করতে চান, কারণ এটি নিশ্চিত করে যে আপনার সেন্সরটি সর্বদা সঠিক সময়ের মধ্যে পড়বে। নীচের কোডের নমুনা, যা একটি আরডুইনো ব্যবহার করে, দেখায় যে কীভাবে একটি অভ্যন্তরীণ টাইমার বাধা সেটআপ করতে হয় যা প্রতি সেকেন্ডে ট্রিগার হয়। আরডুইনোর জন্য, এটি বাহ্যিক বাধাগুলির চেয়ে কিছুটা জটিল এবং আপনার কিছু করার প্রয়োজন হতে পারে অতিরিক্ত পড়া কীভাবে আপনার অ্যাপ্লিকেশনটির জন্য আপনার বাধা সেট আপ করবেন তা শিখতে।
void setup() { | |
// Set Timer1 Interrupt to Trigger Every Second | |
TCCR1A = 0; // Set TCCR1A Register to 0 | |
TCCR1B = 0; // Set TCCR1B Register to 0 | |
TCNT1 = 0; // Initialize counter | |
// Set compare match register for 1hz increments | |
OCR1A = 15624; // = (16*10^6) / (1*1024) - 1 (must be <65536) | |
// Turn On CTC Mode | |
TCCR1B |= (1 << WGM12); | |
// Set CS10 and CS12 Bits for 1024 prescaler | |
TCCR1B |= (1 << CS12) | (1 << CS10); | |
// Enable Timer Compare Interrupt | |
TIMSK1 |= (1 << OCIE1A); | |
// Setup Pins | |
pinMode(A1, INPUT); // Input For Analog Signal From Proximity Sensor | |
pinMode(10, OUTPUT); // Configure pin 10 as an Output to Motor Driver | |
pinMode(11, OUTPUT); // Configure pin 11 as an Output to Motor Driver | |
} | |
SIGNAL(TIMER1_COMPA_vect) { | |
sensorValue = analogRead(A1); | |
if(sensorValue < thresholdValue & pressedFlag == 0){ | |
sensorFlag = !sensorFlag; | |
pressedFlag = 1; | |
} else if(sensorValue > thresholdValue){ | |
pressedFlag = 0; | |
} | |
} |
উপরের কোডটিতে সিঙ্গল ফাংশনটি টাইমার বিঘ্নের জন্য বিঘ্নিত পরিষেবা রুটিন, যা প্রতিবার বাধা ট্রিগার হওয়ার সময় চলে, প্রতি সেকেন্ডে প্রক্সিমিটি সেন্সর থেকে মান আপডেট করে। যদি সেন্সর থেকে পড়া মানটি আমাদের প্রান্তিক মানের চেয়ে ছোট হয় তবে আমরা সেন্সরগুলিকে "চাপ" বিবেচনা করি এবং সেন্সরফ্ল্যাগটি টগল করি। আপনার সেন্সরটি পরীক্ষা করে আপনাকে এই প্রান্তিক মানটি আগে নির্ধারণ করতে হবে এবং আপনি "চাপ" হিসাবে বিবেচনা করতে চান এমন একটি আউটপুট মান নির্ধারণ করতে হবে। সেন্সরটি "চাপ" থাকাকালীন সেন্সরফ্ল্যাগের টগলিংকে কেবল একবারে সীমাবদ্ধ করার জন্য, আরও একটি পতাকা রয়েছে যা সেন্সরের মানটি প্রান্তিক মানের চেয়ে আর ছোট না হওয়া পর্যন্ত পুনরায় সেট হয় না।
বাধা সনাক্তকরণ
প্রক্সিমিটি সেন্সরগুলি তাদের সামনের নিকটতম অবজেক্টটি কতটা কাছাকাছি তা পরিমাপ করতেও ব্যবহার করা যেতে পারে। এটি অ্যাকুয়েটরের সামনে বাধাগুলি সনাক্ত করতে এবং নীচের ভিডিওর মতো কোনও বস্তুর খুব কাছে আসে তবে অ্যাকিউটরেটর বন্ধ করতে কন্ট্রোলারের কাছে প্রতিক্রিয়া প্রেরণ করতে লিনিয়ার অ্যাকিউটেটরগুলির সাথে অ্যাপ্লিকেশনগুলিতে বিশেষভাবে কার্যকর হতে পারে। অনুরূপ ফ্যাশনে একটি প্রক্সিমিটি সেন্সর ব্যবহার করতে, আপনি একটি প্রক্সিমিটি সেন্সর চয়ন করতে চাইবেন যা একটি বৃহত্তর সনাক্তকরণের পরিসীমা রয়েছে এবং বিভিন্ন ধরণের উপকরণ সনাক্ত করতে সক্ষম। আল্ট্রাসোনিক সেন্সরগুলির জন্য এটির জন্য একটি ভাল পছন্দ কারণ তাদের বিস্তৃত সেন্সিং ক্ষেত্র থাকতে পারে, যদিও আপনাকে সেন্সরের অন্ধ দাগগুলি সম্পর্কে সতর্কতা অবলম্বন করতে হবে।
এই অ্যাপ্লিকেশনটির জন্য প্রক্সিমিটি সেন্সরের সেটআপটি টাচলেস নিয়ন্ত্রণের সাথে বেশ মিল। আপনাকে এখনও একটি মাইক্রোকন্ট্রোলার ব্যবহার করে সেন্সরের আউটপুটটি পড়তে হবে এবং আপনি আবারও সেন্সর থেকে মানগুলি পড়তে একটি অভ্যন্তরীণ টাইমার বাধা ব্যবহার করতে চাইবেন। যদিও, সেন্সরটি এখন এর সামনে বাধাগুলি সনাক্ত করতে অ্যাকিউয়েটারের সামনে অবস্থান করবে। সেন্সর থেকে আউটপুটটি সেন্সরের সামনের নিকটতম অবজেক্টের দূরত্বের সাথে সম্পর্কিত হবে, যার অর্থ আমরা ন্যূনতম নিরাপদ দূরত্বের উপর ভিত্তি করে একটি প্রান্তিক মান নির্ধারণ করতে পারি। এই প্রান্তিক মানটি নির্বাচিত সেন্সরের উপর ভিত্তি করে পরিবর্তিত হবে। নীচের কোডের নমুনায়, সিগন্যাল ফাংশন, যা বিঘ্নিত পরিষেবা রুটিন, প্রতিটি মিলিসেকেন্ডকে উপস্থাপন করা হয় এবং আমাদের সেন্সরের আউটপুট পরিমাপ করে এবং এটি আমাদের প্রান্তিক মানের সাথে তুলনা করে। যদি পরিমাপকৃত মানটি প্রান্তিক মানের চেয়ে ছোট হয় তবে পতাকা সেন্সরফ্ল্যাগটি 1 এ সেট করা হয় এবং লিনিয়ার অ্যাকুয়েটর বন্ধ করতে মূল লুপে ব্যবহৃত হয়। যদিও পরিমাপকৃত মানটি প্রান্তিক মানের চেয়ে ছোট, কোডটি অ্যাকিউউটরকে আরও বাড়ানোর অনুমতি দেবে না যতক্ষণ না পরিমাপের মানটি প্রান্তিক মানের চেয়ে বড় না হয় এবং পতাকাটি 0 এ পুনরায় সেট করা হয় তবে কোডটি এখনও লিনিয়ারের জন্য অনুমতি দেবে সেন্সরফ্ল্যাগটি 1 এ সেট করা থাকাকালীন প্রত্যাহার করার জন্য অ্যাকিউটরেটর কারণ এটি অ্যাকিউউটরটি প্রত্যাহার করা এখনও নিরাপদ।
void setup() { | |
// Set Timer1 Interrupt to Trigger Every Millisecond | |
TCCR1A = 0; // Set TCCR1A Register to 0 | |
TCCR1B = 0; // Set TCCR1B Register to 0 | |
TCNT1 = 0; // Initialize counter | |
// Set compare match register for 1000hz increments | |
OCR1A = 15; // = (16*10^6) / (1*1024) - 1 (must be <65536) | |
// Turn On CTC Mode | |
TCCR1B |= (1 << WGM12); | |
// Set CS10 and CS12 Bits for 1024 prescaler | |
TCCR1B |= (1 << CS12) | (1 << CS10); | |
// Enable Timer Compare Interrupt | |
TIMSK1 |= (1 << OCIE1A); | |
// Setup Pins | |
pinMode(A1, INPUT); // Input For Analog Signal From Proximity Sensor | |
pinMode(10, OUTPUT); // Configure pin 10 as an Output to Motor Driver | |
pinMode(11, OUTPUT); // Configure pin 11 as an Output to Motor Driver | |
} | |
SIGNAL(TIMER1_COMPA_vect) { | |
sensorValue = analogRead(A1); | |
if(sensorValue > thresholdValue){ | |
sensorFlag = 1; | |
} else{ | |
sensorFlag = 0; | |
} | |
} | |
void loop() { | |
if(digitalRead(2) == HIGH & digitalRead(3) == LOW){ | |
// Retract Actuator | |
analogWrite(10, 0); | |
analogWrite(11, 255); | |
} | |
else if(digitalRead(2) == LOW & digitalRead(3) == HIGH){ | |
if(sensorFlag == 1){ | |
// Stop Actuator | |
analogWrite(10, 0); | |
analogWrite(11, 0); | |
} else { | |
// Extend Actuator | |
analogWrite(10, 255); | |
analogWrite(11, 0); | |
} | |
} | |
else{ | |
// Stop Actuator | |
analogWrite(10, 0); | |
analogWrite(11, 0); | |
} | |
} |
রেফারেন্স
[1] কিন্নি, টি। এ। (2001, সেপ্টেম্বর) প্রক্সিমিটি সেন্সরগুলির সাথে তুলনা: ইন্ডাকটিভ, ক্যাপাসিটিভ, ফটোয়েলেকট্রিক এবং অতিস্বনক থেকে উদ্ধার: https://www.machinedesign.com/automation-iiot/sensors/article/21831577/proximity-sensors-compared-inductive-capacitive-photoelectric-and-ultrasonic
সেন্সর চিত্রগুলি থেকে: Digikey.com