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

قبل أن نغوص في التوصيلات والبرمجة، من المفيد أن نفهم المكونات التي سنستخدمها. يعمل المقاوم المتغير (البوتنشيومتر) كمقاوم متغير يمكنه تعديل جهد الخرج اعتمادًا على موضعه، وسنستخدمه لتحديد زاوية السيرفو. ستعرض شاشة LCD1602 قيمة البوتنشيومتر الحالية والزاوية المقابلة للسيرفو. يمكنك الرجوع إلى الفيديو (في الفيديو عند 00:00) للحصول على دليل مرئي للعملية بأكملها.
شرح الأجهزة
المكونات الرئيسية التي سنستخدمها في هذا المشروع هي:
- لوحة أردوينو:سيعمل هذا كوحدة التحكم في النظام بأكمله، حيث يعالج الإشارات الواردة من المقاومة المتغيرة (البوتنشيومتر) ويتحكم في موضع السرفو بناءً على تلك الإشارات.
- مقاوم متغير:سيُستخدم مقاوم متغير بقيمة 10 كيلو أوم لتوفير دخل تماثلي إلى الأردوينو. له ثلاثة أطراف: أحدها موصول بجهد 5V، وآخر بالأرضي، والطرف الأوسط موصول بالدبوس التماثلي (A0) على الأردوينو.
- محرك سيرفو:سيتم التحكم في هذا السيرفو عن طريق إرسال زاوية إليه بناءً على موضع المقاومة المتغيرة. سلك الإشارة يتصل بدبوس رقمي في لوحة الأردوينو (الدبوس 9).
- شاشة LCD1602:ستعرض هذه الشاشة قيمة البوتنشيوميتر (المقاوم المتغير) وزاوية المحرك المؤازر. تتصل بعدة دبابيس رقمية على لوحة أردوينو للتحكم.
يعمل المقاوم المتغير عن طريق تغيير المقاومة وبالتالي الجهد عند طرفه الأوسط، والذي تقرأه لوحة أردوينو كمدخل تناظري. يُتحكم في محرك السيرفو عن طريق إرسال إشارة تعديل عرض النبضة (PWM) محددة تتوافق مع الزاوية المطلوبة. تستخدم شاشة LCD1602 مكتبة تتيح لنا التحكم بسهولة في عرضها وإخراج معلومات تتعلق بالمقاوم المتغير ومحرك السيرفو.
تفاصيل ورقة البيانات
| المُصنِّع | متنوع |
|---|---|
| رقم القطعة | LM016L |
| جهد المنطق/الإدخال/الإخراج | 5 فولت |
| جهد التغذية | 4.5 - 5.5 V |
| تيار الإخراج (لكل قناة) | حتى 2 mA |
| التيار الأقصى (لكل قناة) | 20 ميلي أمبير |
| إرشادات تردد PWM | 50 هرتز |
| عتبات منطق الإدخال | 0.3 × Vنسخة كربونية(منخفض)، 0.7 × Vنسخة(عالي) |
| هبوط الجهد / Rالمصرف-المصدر (عند التشغيل)/ التشبع | 0.2 V كحد أقصى |
| الحدود الحرارية | 85 °م |
| حزمة | حزمة DIP ذات 16 دبوس |
| ملاحظات / متغيرات | شاشة عرض 16×2 محارف |
- وصل الدبوس الأوسط للمقاوم المتغير إلى الدبوس التناظري A0.
- تأكد من تزويد السيرفو بمصدر طاقة 5V وأنه متصل بالدبوس الرقمي 9.
- استخدم المكتبة المناسبة لشاشة LCD وتأكد من تضمينها في Arduino IDE الخاص بك.
- كن حذراً مع الأسلاك لتجنب القصر الكهربائي، خاصة في توصيلات السيرفو.
- تحقق من تهيئة شاشة LCD بشكل صحيح في الكود لتجنب مشاكل العرض.

تعليمات التوصيل الكهربائي
لتوصيل المكونات معًا، ابدأ بتوصيل المقاومة المتغيرة. وصل أحد الأطراف الخارجية للمقاومة المتغيرة إلى دبوس 5V في الأردوينو، والطرف الخارجي الآخر إلى الأرضي. الطرف الأوسط يذهب إلى الدبوس التناظريA0.
بعد ذلك، بالنسبة لمحرك السرفو، قم بتوصيل السلك البني أو الأسود بالأرضي، والسلك الأحمر إلى دبوس 5V، والسلك الأصفر أو البرتقالي إلى الدبوس الرقمي9على الأردوينو. بالنسبة لشاشة LCD1602، قم بتوصيل الـVDDوصل الدبوس إلى 5 فولت،RWإلى الأرض، وV0إلى الدبوس الأوسط للمقاومة المتغيرة لضبط التباين. قم بالتوصيلRSتثبيت12،ENتثبيت11,D4تثبيت5،D5تثبيت4،D6أن يثبّت3، وD7تثبيت2.
كما يُنصح أيضًا بإضافة مقاوم بقيمة 220 أوم على التوالي مع الـLED إذا كنت تستخدم واحدًا، وتوصيله بمصدر 5 فولت. بالإضافة إلى ذلك، يمكن توصيل مكثف بقيمة 470 µF عبر طرفي الطاقة والأرضي للسيرفو لتصفية أي ضوضاء أثناء التشغيل.
أمثلة على الكود وشرح خطوة بخطوة
يبدأ الكود بإدراج المكتبات اللازمة وتهيئة دبابيس شاشة LCD ومحرك السيرفو. المقتطف التالي يوضح إعداد شاشة LCD والسيرفو:
void setup() {
lcd.begin(16, 2);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Robojax Servo Knob");
delay(2000);
}هذا المقتطف يقوم بتهيئة شاشة LCD لتحتوي على 16 عمودًا و2 صفين، ويربط السيرفو بالدبوس 9، ويعرض رسالة ترحيب على شاشة LCD. الـlcd.clear()تضمن الدالة إزالة أي رسائل سابقة.
بعد ذلك، تستمر الحلقة في قراءة قيمة المقوّم المتغيّر وتحديث موضع السرفو وشاشة LCD:
void loop() {
val = analogRead(potpin); // reads the value of the potentiometer
angle = map(val, 0, 1023, 0, 180); // scale it to use it with the servo
myservo.write(angle); // sets the servo position according to the scaled value
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Pot. Value:");
lcd.setCursor(11, 0);
lcd.print(val);
lcd.setCursor(0, 1);
lcd.print("Angle :");
lcd.setCursor(11, 1);
lcd.print(angle);
delay(500);
}تقرأ هذه الحلقة قيمة المقاوم المتغير (البوتنشيومتر)، وتحولها إلى زاوية مقابلة للسيرفو، وتحدّث شاشة LCD بقيمة المقاوم المتغير وزاوية السيرفو معًا. الـdelay(500)في نهاية الحلقة، يمنع ذلك العرض من التحديث بسرعة كبيرة.
عرض توضيحي / ما الذي تتوقعه
عند تشغيل النظام، ستعرض شاشة LCD Robojax Servo Knob لمدة 2 ثانية، تليها قيمة المقاوم المتغير وزاوية السرفو. عند تدوير المقاوم المتغير، ستتغير زاوية السرفو وفقًا لذلك، وستنعكس قيمة المقاوم المتغير الجديدة على شاشة LCD. إذا لاحظت أي سلوك غير متوقع، مثل تحرك السرفو في الاتجاه الخاطئ، فتحقق من توصيلات الأسلاك للمقاوم المتغير والسرفو (في الفيديو عند 10:00).
الموارد والمراجع
-
خارجياستخدام شاشة LCD1602 مع أردوينوyoutube.com
-
خارجيمكتبة LCD1602 (من GitHub)github.com
ملفات📁
لا توجد ملفات متاحة.