التحكم في المحركات الخطية بمقاوم يعتمد على الضوء

مقاومات تعتمد على الضوء

المقاومات التي تعتمد على الضوء (LDR) ، أو المخلوقات الضوئية ، هي مقاومات متغيرة لها تغيير قيمة المقاومة على أساس كمية الضوء التي يتم اكتشافها بواسطة عنصر كهروضوئي. بشكل عام ، كلما زاد الضوء على المضيق الضوئي ، كلما انخفضت قيمة المقاومة التي يمتلكها المركب الضوئي [1]. يمكن أن يكون هذا مفيدًا للغاية حيث يمكن قراءة قيمة المقاومة المتغيرة هذه كمؤشر على كمية الضوء الموجودة واستخدامها بواسطة أ متحكم لإجراء إجراء مقابل. غالبًا ما يتم العثور على LDRs كعنصر غير مكلف وأساسي ، كما هو موضح أدناه ، ولكن يمكنك أيضًا العثور على أجهزة استشعار الضوء مصممة خصيصًا للكشف عن ضوء الشمس أو الأشعة فوق البنفسجية. اعتمادًا على المستشعر الذي تختاره ، قد تحتاج إلى استشارة ورقة البيانات الخاصة بها لمعرفة كيفية توصيلها مع متحكم الخاص بك.

مقر الضوئي

هل أجهزة الاستشعار الضوئية للضوء؟

الإجابة المختصرة هي نعم ، المتجهات الضوئية هي أجهزة استشعار بصرية. ولكن ليس كل المستشعرات البصرية تعمل مثل المخلوقات الضوئية. أجهزة الاستشعار البصرية هي عائلة من أجهزة الاستشعار التي تستخدم الضوء بطرق مختلفة. يستخدم بعض المستشعر البصري الضوء للكشف عن وجود كائن أو حتى يستخدم في ردود الفعل في المحركات الخطية، في حين أن المخلوقات الضوئية يعطي مؤشرا على مقدار الضوء الموجود. عند البحث عن مستشعر للكشف عن الضوء ، من المهم معرفة التمييز بين المتجانس الضوئي وأجهزة الاستشعار البصرية الأخرى.

 المستشعر البصري في Actutaor الخطي

حالات الاستخدام المحتملة مع المحركات الخطية

يمكن استخدام LDRs بالاقتران مع المحركات الخطية لأغراض أساسية ؛ الأول هو أن يكون للمشغل أن يتفاعل عندما يكون هناك الكثير من الضوء ، والآخر هو أن يكون المحرك يتحرك لزيادة كمية الضوء إلى الحد الأقصى من LDR. تعتبر حالة الاستخدام الأولى مفيدة للتطبيقات التي تريد تقليلها إلى الحد الأدنى من كمية الضوء ، مثل حماية النباتات الحساسة للضوء أو أتمتة المظلة على الفناء أو الشرفة. تعتبر حالة الاستخدام الثانية مفيدة في التطبيقات مثل الألواح الشمسية حيث تحاول وضعها لزيادة كمية الضوء إلى الحد الأقصى من اللوحات.

الألواح الشمسية

استخدام LDR للتحكم في مشغل خطي

لحسن الحظ ، لن تتغير ردود الفعل من LDR استنادًا إلى أي حالة من حالات الاستخدام ، لذلك يمكن تنفيذ التوصيل وقراءة التعليقات من LDR بشكل متماثل. لإعداد المركب الضوئي ، تحتاج ببساطة إلى توصيل الجانب الإيجابي لمدافع ضوئي بمصدر طاقة مناسب والجانب السلبي إلى دبوس تمثيلي من متحكم ، مثل أردوينو، لقراءة الإخراج. سترغب أيضًا في توصيل المقاوم ، وهو متصل بالأرض ، إلى جانب الخرج من المخلل الضوئي ، كما هو موضح أدناه ، لحماية المسامير التناظرية للموكاج الدقيق.

 المدعى الضوئي المتصل بـ Arduino

 

يمكنك قيادة المشغل الخطي باستخدام متحكم باستخدام إما زوج من يمرر أو باستخدام أ سائق دراجه ناريه. لمعرفة كيفية القيام بذلك ، يمكنك التحقق من مدونتنا على كيفية التحكم في مشغل خطي مع Arduino. سيعتمد وضع مستشعر LDR الخاص بك بناءً على حالة الاستخدام الخاصة بك ؛ إذا كنت تحاول حماية منطقة من الضوء ، فستحتاج إلى LDR مع كل ما تحاول حمايته ، ولكن إذا كنت ترغب في زيادة التعرض للضوء ، فستحتاج ضوء. لقراءة ردود الفعل من LDR في كلتا الحالتين سيكون متطابقًا حيث تقرأ ببساطة الجهد التناظري من جانب الإخراج من المستشعر.

// Connect Output of Photoresistor to A1 of Arduino
photoresistorValue = analogRead(A1);

ستختلف كيفية استخدام هذه الملاحظات للتحكم في المشغل الخطي بناءً على تطبيقك واستخدام الحالة. بالنسبة لحالة الاستخدام الأولى التي تقلل فيها من التعرض للضوء ، يمكنك إما قيادة المشغل الخطي إلى موضع معروف إذا تم اكتشاف كمية معينة من الضوء أو يمكنك قيادة المشغل الخطي حتى يكتشف جهاز المضيق الضوئي كمية أقل من الضوء. يظهر السابق في عينة الكود أدناه. على الرغم من أن هذا تطبيق أساسي ، يمكنك القيام بمزيد من الحلول الإبداعية باستخدام هذا الحل كنقطة انطلاق. على سبيل المثال ، يمكنك وضع ظل على نبات حساس للضوء فقط خلال أوقات النهار الذروة وفقط عندما يكون الأمر مشمسًا. باستخدام الموجه الضوئي ، يمكنك تحديد ما إذا كان الأمر مشمسًا بما يكفي للحاجة إلى تحريك المشغل ووضع الظل.

/* Firgelli Automations
* Limited or no support: we do not have the resources for Arduino code support
*/
int photoresistorValue = 0; // Value of LDR
int lightLevel = 300; // Level of Light to require shade to be Position
bool runFlag = 0; // Flag used to indicate if the Actuator has moved
void setup() {
pinMode(A1, INPUT); // Configure pin A1 as an Input from the LDR
pinMode(10, OUTPUT); // Configure pin 10 as an Output
pinMode(11, OUTPUT); // Configure pin 11 as an Output
}
void loop() {
photoresistorValue = analogRead(A1);
if(photoresistorValue > lightLevel && runFlag == 0){
//Extend Actuator to Position Shade
analogWrite(10, 255);
analogWrite(11, 0);
delay(5000); // Wait 5 seconds
// Stop Actuator
analogWrite(10, 0);
analogWrite(11, 0);
runFlag = 1;
} else {
// Stop Actuator
analogWrite(10, 0);
analogWrite(11, 0);
}
}

في حالة الاستخدام الثانية التي تقوم فيها بزيادة التعرض للضوء ، ستحتاج إلى تحديد الموضع الذي يزيد من الضوء المعرض إلى LDR. للقيام بذلك بفعالية ، ستحتاج إلى الاستفادة من أ ردود الفعل المشغل الخطي لتتبع موقف المحرك. يمكنك العثور على أدلة حول كيفية استخدام خيارات التغذية المرتدة المختلفة للمشغلات الخطية على صفحة البرنامج التعليمي. يوضح لك عينة الكود أدناه كيف يمكنك إنجاز هذا باستخدام أ Actuator Linear Actuator. يمكنك ببساطة تتبع أدنى قيمة للمقاومة من LDR ، وهي أعلى قيمة للجهد ، والموقف المقابل للمشغل. ستحتاج أولاً إلى تمديد المشغل إلى طول الحد الأقصى ثم تراجعه لقياس إخراج LDR على طول المشغل بالكامل. بمجرد أن يتحرك المشغل عبر مجموعته بالكامل ، يمكنك ببساطة الانتقال إلى الموضع الذي كان لديه أعلى الناتج المقابل من LDR. لتنفيذ هذا عمليًا ، ربما ترغب في تشغيل الرمز أدناه على مؤقت للعثور على موضع جديد بشكل دوري طوال اليوم.

/* Firgelli Automations
* Limited or no support: we do not have the resources for Arduino code support
*/
int ldrValue = 0; // Value of LDR
int pos = 0; // Position of Actuator
int maxPos = 928; // Max Position
int minPos = 75; // min Position
int goalPos = 0; // Desired Position of Actuator
bool runFlag = 1;
int highestLightPos; // the Actautor Positin with Highest LDR value
int highestLDRValue = 0; // Highest LDR value
void setup() {
pinMode(A1, INPUT); // Configure pin A1 as an Input from the LDR
pinMode(A2, INPUT); // Configure pin A1 as an Input from the Linear Actuator
pinMode(10, OUTPUT); // Configure pin 10 as an Output
pinMode(11, OUTPUT); // Configure pin 11 as an Output
ldrValue = analogRead(A1);
pos = analogRead(A2);
}
void loop() {
if(runFlag == 1){
findMaxLight();
}
}
// Function to Find Max Value from LDR
void findMaxLight(void){
static int task = 0;
switch(task){
case 0:
goalPos = maxPos;
runActuator(goalPos);
if(pos == maxPos){task++; delay(100);}
break;
case 1:
goalPos = minPos;
runActuator(goalPos);
if(pos == minPos){task++; delay(100);}
break;
case 2:
goalPos = highestLightPos;
runActuator(goalPos);
if(pos == goalPos){
task = 0;
runFlag = 0;
}
break;
}
ldrValue = analogRead(A1);
if(ldrValue > highestLDRValue){
highestLDRValue = ldrValue;
highestLightPos = pos;
}
}
// Function to Run Linear Actuator to a Specific Position
void runActuator(int goal){
if(goal > maxPos){goal = maxPos;}
if(goal < minPos){goal = minPos;}
if(abs(pos - goal) > 5){
if(pos < goal){
//Extend Actuator
analogWrite(10, 180);
analogWrite(11, 0);
pos = analogRead(A2);
} else if(pos > goal){
//Extend Actuator
analogWrite(10, 0);
analogWrite(11, 180);
pos = analogRead(A2);
}
}else{
pos = goal;
// Stop Actuator
analogWrite(10, 0);
analogWrite(11, 0);
}
}
view raw LDR_UseCas2.ino hosted with ❤ by GitHub

هناك الكثير من الطرق الإبداعية التي يمكنك من خلالها الاستفادة من المخلوقات الضوئية مع مشغلات خطية ونود أن نرى ما قمت به. مع Firgelli الأتمتة مجموعة واسعة من المحركات والملحقات الخطية ، يمكنك جعل مشروعك التالي الذي يتحكم فيه الضوء نسيمًا.

مراجع:

  1. ملاحظات الالكترونيات. المقاوم المعتمد على الضوء LDR: المخصصة الضوئية. استردادها من: https://www.electronics-notes.com/articles/electronic_components/resistors/light-dependent-resistor-ldr.php
Share This Article
Tags: