في Progressive Automations، نقدّم العديد من الخيارات للتحكم في المشغل الخطي لديك. من الحلول البسيطة مثل مفاتيح الروكر، إلى وحدات التحكم الأكثر تقدمًا مثل صندوق التحكم PA-35 عبر Wi‑Fi، لدينا الكثير من خيارات الوصل والتشغيل. ومع ذلك، أحيانًا تكون متطلبات المشروع واحتياجات العميل أكثر تفرّدًا مما قد تقدمه هذه الخيارات. وهنا يأتي دور المتحكمات الدقيقة التي يمكن أن تكون صديقنا فعلًا. في هذا المقال، سنستعرض كيفية تغيير موضع المشغل استنادًا إلى كمية الضوء الموجودة، ما يمنحك شكلًا فريدًا ومتقدمًا من التحكم بالمشغل الخطي.
ما الذي ستحتاج إليه؟
كل ما نحتاجه لهذا المشروع هو أردوينو (في هذه الحالة Arduino Uno)، ومقاوم يعتمد على الضوء (ويُعرف أيضًا بالمقاوم الضوئي أو LDR)، ومقاوم 10k أوم واحد، ووحدة مرحل ثنائية القناة، وبالطبع مشغل.
اختيار المشغل الخطي
في كثير من الحالات، سنستخدم هذا النوع من المُشغّلات للتطبيقات الخارجية، مثل مشغل باب قن الدجاج العامل بالطاقة الشمسية. عليك مراعاة نوع البيئة التي سيعمل فيها المشغل، والتأكد من أن المشغل يمتلك تصنيف IP الصحيح. للمساعدة في ذلك، يمكنك العثور على دليل تصنيف IP هنا. كما نحتاج أيضًا للتأكد من أنك تجد طول الشوط المناسب وتصنيف القوة لمشغلك. للحصول على المساعدة، يمكنك الرجوع إلى أحد منشورات مدونتنا العديدة هنا. وباختصار، يعتمد نوع المشغل الذي تستخدمه كليًا على تطبيقك ومدى قسوة البيئة المحيطة بك.
الأسلاك

تكون أسلاك مشروع المشغل العامل بالطاقة الشمسية كما يلي:
LDR إلى Arduino
- سلك LDR رقم 1 – أرضي
- سلك LDR رقم 2 – 5 فولت (عبر مقاوم 10k)
- سلك LDR رقم 2 – الرجل التناظرية 0
وحدة المرحل إلى Arduino
- VCC – 5V
- GND – GND
- IN1 – الرجل 2
- IN2 – الرجل 3
وحدة المرحل إلى مزود الطاقة والمشغل
- +12V إلى NC1 (الطرف المغلق عادةً في المرحل الأول)
- -12V إلى NO1 (الطرف المفتوح عادةً في المرحل الأول)
- NC1 إلى NC2
- NO1 إلى NO2
- COMMON1 إلى سلك المشغل 1
- COMMON2 إلى سلك المشغل 2
باستخدام وحدة مرحل ثنائية القناة، فالتعليمات أعلاه توضح كيفية توصيل هذا المشروع. هذا إعداد بسيط جدًا وسهل البرمجة، لكنه يملك بعض الحدود. إذا أردت إضافة ميزات مثل التحكم في السرعة أو تغذية راجعة للقوة، فقد ترغب في استخدام درع سائق المحرك MegaMoto بدلًا من المرحلات. مزيد من المعلومات هنا.
برمجة المشغل العامل بالطاقة الشمسية
الغرض من الشيفرة المرفقة أن تكون بسيطة قدر الإمكان. عندما يتوفر الضوء، سيتراجع المشغل. وعندما يحل الظلام، سيمتد المشغل. ولمنع تشغيل المشغل دون قصد (إذا مر شخص وحجب الضوء، أو التقط المستشعر وميض برق)، يجب أن تستمر حالة الانتقال من الظلام إلى الضوء (أو العكس) لمدة لا تقل عن ثلاثين ثانية. يمكن تغيير هذه المهلة بسهولة بتعديل قيمة “const int triggerDelay”.
يُحدَّد مقدار الضوء الموجود بقراءة الجهد المتجه إلى الرجل التناظرية 0. كلما زاد الضوء، قلّت مقاومة المقاوم الضوئي. وبما أننا نستخدم مقاوم سحب لأعلى (pull-up)، فهذا يعني أن الجهد سينخفض مع ازدياد السطوع. يقرأ أردوينو ذلك كقيمة بين 0 و1028. إذا رغبت في تغيير القيمة التي يتغير عندها حالة المشغل، فقط غيّر قيمة “const int threshold” (مضبوطة افتراضيًا على 650).
ستؤدي هذه الشيفرة غرضها كما هي، لكن الرائع في مثل هذه المشاريع أنه يوجد دائمًا مجال للتحسين. لا تتردد في تعديل هذه الشيفرة لتناسب تطبيق المشغل الخطي العامل بالطاقة الشمسية لديك بشكل أفضل! بعض الأمثلة على وظائف إضافية يمكن إضافتها: مؤقت انتهاء يمنع المشغل من مواصلة الحركة إذا لم يصل إلى مفتاح حدّي خلال مدة معينة؛ أو كشف التصادم عبر مراقبة سحب التيار (سيتطلب سائق MegaMoto بدلًا من المرحلات)؛ أو وظيفة تتيح ضبط المشغل على مواضع متعددة بناءً على كمية الضوء (وليس فقط أعلى موضع أو أسفله).
/*The hardware required for this project is an Arduino, one light dependant resistor (LDR), a 10K resistor and a 2-channel 5V relay module.
Its purpose is to control the extension and retraction of an actuator based on the amount of light that is present.
Written by Progressive Automations 12/02/2020
*/
#define relay1 2 //relay used to extend actuator
#define relay2 3 //relay used to retract actuator
int ldr; //analog reading from light dependent resistor
int countOpen = 0;//counts how long sensor is recieving light
int countClose = 0;//counts how long the sensor is not recieving light
const int triggerDelay = 3000;//number of seconds x 100 to wait after lighting changes before triggering actuator
const int threshold = 650;//
void setup() {
Serial.begin(9600);
pinMode(relay1,OUTPUT);
pinMode(relay2,OUTPUT);
digitalWrite(relay1,HIGH);
digitalWrite(relay2,HIGH);
}
void loop() {
checkSensor();
}
void checkSensor()
{
ldr = analogRead(0);
Serial.println(ldr);
if(ldr > threshold)//if reading is greater than threshold, start counting
{
countOpen++;//count how long the sensor is not recieving light
delay(10);
}
else
{
countOpen = 0;//reset count to zero if statement is not true
}
if(countOpen > triggerDelay)// wait x seconds before triggering actuator
{
extend();//extend actuator
}
if(ldr < threshold)//if reading is less than threshold, start counting
{
countClose++;//count how long sensor is recieving light
delay(10);
}
else
{
countClose = 0;
}
if(countClose > triggerDelay)// wait x seconds before triggering actuator
{
retract();
}
}
void extend()
{
digitalWrite(relay1,LOW);
digitalWrite(relay2,HIGH);
}
void retract()
{
digitalWrite(relay2,LOW);
digitalWrite(relay1,HIGH);
}
الخلاصة
هذا كل شيء! هذه منهجيتنا لاستخدام حساس ضوئي مع المشغل الخطي للتحكم في مشغلك باستخدام الطاقة الشمسية. نعلم أن ليست كل التطبيقات متشابهة، لذا قد تكون لديك استفسارات حول هذا المشروع، أو تعديلات تود مناقشتها مع فريق مهندسينا. لا مشكلة – فقط أرسل لنا بريدًا عبر sales@progressiveautomations.com، أو اتصل بنا مجانًا على 1-800-676-6123.