في هذا المثال ، سنتحكم في اتجاه مشغل خطي باستخدام Arduino ومفتاحين لحظيين. يعتمد هذا البرنامج التعليمي على المبادئ التي تمت مناقشتها في البرنامج التعليمي "التحكم في سرعة سائق المحرك مع اردوينو"، ننصح بمراجعة هذا البرنامج التعليمي قبل المتابعة.
ينقسم هذا البرنامج التعليمي إلى قسمين: الأزرار الانضغاطية التي تعمل في الوضع اللحظي (أي تتوقف المشغلات عن الحركة عند تحرير الزر) وأزرار الضغط التي تعمل في وضع الاستدامة (أي تستمر المحركات في التحرك حتى عند تحرير الزر)
ملاحظة: يفترض هذا البرنامج التعليمي معرفة مسبقة بالمبادئ الإلكترونية الأساسية وأجهزة وبرامج Arduino. إذا كانت هذه هي المرة الأولى التي تستخدم فيها Arduino ، فنحن نقترح تعلم الأساسيات من أحد البرامج التعليمية العديدة للمبتدئين المتوفرة من خلال عمليات البحث في Google و YouTube. يرجى العلم أنه ليس لدينا الموارد اللازمة لتقديم الدعم الفني للتطبيقات المخصصة ولن نقوم بتصحيح الأخطاء أو تحريرها أو توفير تعليمات برمجية أو مخططات الأسلاك خارج هذه البرامج التعليمية المتاحة للجمهور.
مكونات
- المحرك الخطي 12 فولت
- 12 فولت امدادات الطاقة
- اردوينو
- سائق دراجه ناريه
- زران مؤقتان (اختياريًا زر ثالث للتحكم في الإغلاق)
- الأسلاك الكهربائية لعمل التوصيلات وأداة العقص أو لحام الحديد
الأسلاك
نظرة عامة على الأجهزة والبرامج للتحكم اللحظي
تُستخدم المفاتيح المؤقتة عندما تريد فقط أن يتحرك المشغل أثناء الضغط على الزر ، سيتوقف المشغل تلقائيًا عن الحركة عند تحرير الزر. قم بتحميل الكود أدناه.
كود للتحكم اللحظي
https://gist.github.com/Will-Firgelli/aeee209bda6b2246359eed70ec353eb8
/* Firgelli Automations
* Limited or no support: we do not have the resources for Arduino code support
*
* Program enables momentary direction control of actuator using push button
*/
int RPWM = 10; //connect Arduino pin 10 to IBT-2 pin RPWM
int LPWM = 11; //connect Arduino pin 11 to IBT-2 pin LPWM
int downPin = 12;
int upPin = 13;
int Speed = 255; //choose any speed in the range [0, 255]
void setup() {
pinMode(RPWM, OUTPUT);
pinMode(LPWM, OUTPUT);
pinMode(downPin, INPUT_PULLUP);
pinMode(upPin, INPUT_PULLUP);
}
void loop() {
if(digitalRead(upPin)==LOW){ //check if extension button is pressed
analogWrite(RPWM, 0);
analogWrite(LPWM, Speed);
}
else if(digitalRead(downPin)==LOW){ //check if retraction button is pressed
analogWrite(RPWM, Speed);
analogWrite(LPWM, 0);
}
else{ //if no button is pushed, remain stationary
analogWrite(RPWM, 0);
analogWrite(LPWM, 0);
}
}
نظرة عامة على الأجهزة والبرامج للحفاظ على التحكم
بدلاً من ذلك ، قد ترغب أحيانًا في استخدام زر الإغلاق ؛ اجعل المشغل يتحرك عندما تضغط على زر ثم استمر في الحركة عند تحرير الزر. لتحقيق ذلك ، ستحتاج إلى إضافة مفتاح آخر ، متصل بالطرف 8 و GND ، ثم تحميل البرنامج أدناه. نظرًا لأن المشغل لن يتوقف عن الحركة عند تحرير الزر ، فإن هذا المفتاح الجديد سيعمل على زر "إيقاف".
كود للحفاظ على السيطرة
https://gist.github.com/Will-Firgelli/2b96dce14c0cee7a0009e61e47cc5f67/* Firgelli Automations
* Limited or no support: we do not have the resources for Arduino code support
*
* Program enables latching direction control of actuator using push button
*/
int RPWM = 10; //connect Arduino pin 10 to IBT-2 pin RPWM
int LPWM = 11; //connect Arduino pin 11 to IBT-2 pin LPWM
int stopPin = 8;
int downPin = 12;
int upPin = 13;
int Speed = 255; //choose any speed in the range [0, 255]
void setup() {
pinMode(RPWM, OUTPUT);
pinMode(LPWM, OUTPUT);
pinMode(stopPin, INPUT_PULLUP);
pinMode(downPin, INPUT_PULLUP);
pinMode(upPin, INPUT_PULLUP);
}
void loop() {
if(digitalRead(upPin)==LOW){ //check if extension button is pressed
analogWrite(RPWM, 0);
analogWrite(LPWM, Speed);
}
else if(digitalRead(downPin)==LOW){ //check if retraction button is pressed
analogWrite(RPWM, Speed);
analogWrite(LPWM, 0);
}
else if(digitalRead(stopPin)==LOW){ //check if retraction button is pressed
analogWrite(RPWM, 0);
analogWrite(LPWM, 0);
}
}