في هذا الدرس سوف نتعلم كيف نستخدم محرك DC وكيف نتحكم باتجاه وسرعة المحرك باستخدام لغة البايثون (Python) وشريحة L293D.
في الدرس الثامن تعلمنا كيف نخرج النبضات من خلال PWM لنتحكم باتجاه حركة محرك السيرفو ، في هذا الدرس سوف نستخدم PWM ولكن للتحكم بسرعة محركة الدي سي ، وسوف نستخدم شريحة L293D للتحكم باتجاه حركة المحرك.
القطع
لتطبيق الدرس نحتاج للقطع التالية:
راسبيري باي
وصلة خارجية لتوصيل أرجل GPIO في لوحة الاختبار
أسلاك توصيل
لوحة الاختبار
محرك “DC” الدي سي 6V
شريحة L293D IC
علبة بطاريات + 4 بطاريات AA
التحكم بالسرعة من خلال PWM
من فوائد استخدام PWM التحكم بمستوى الطاقة ، ونحن نستخدمها للتحكم بمستوى الطاقة الذي بدوره سوف يؤثرعلى سرعة دوران المحرك ، الصور التالية تبين لك نبضات PWM الخارجة من الراسبيري باي.
كل 1/500 من الثانية يخرج الـ PWM نبضة واحدة ، طول النبضة سوف يحدد قيمة الطاقة والتي تعني سرعة حركة المحرك ، إذا لم تخرج أي نبضة سوف يتوقف المحرك عن الدوران ، النبضة القصيرة تعني دوران بطيء.
شريحة L293D
هذا الشريحة جدًا مفيدة لأنه بإمكانها التحكم بمحركين في نفس الوقت ، لكن في هذا الدرس سوف نستخدم نصف الشريحة للتحكم بمحرك واحد ، أكثر الأرجل التي في الجهة اليمنى من الشريحة تستخدم لتحكم بالمحرك الثاني.
شريحة L293D بها رجلين V+ رقم (8 و 16) ، الرجل رقم 8 “Vmotor+” تأخذ الطاقة من البطارية الخاصة بالمحرك ، أما الرجل 16 تأخذ الطاقة للشريحة من الراسبيري باي.
توصيل الأسلاك والقطع
هنالك سببين لاستخدام شريحة L293D في هذا الدرس ، السبب الأول التيار الخارج من الراسبيري باي غير كافي لتشغيل المحرك بشكل مباشر ، وتوصيل المحرك بشكل مباشر من الممكن أن يتسبب بالضرر للراسبيري باي.
السبب الثاني هو للتحكم بإتجاه حركة المحرك ، وهذا ممكن فقط بعكس اتجاه التيار الكهربائي بين طرفي المحرك ، ولذلك نحن نحتاج إلى شريحة L293D للقيام بذلك.
الصورة التالية توضح طريقة التوصيل:
ملاحظة هنالك حلول أخرى لكن استخدام شريحة L293D تعتبر من أسهل الطرق للمبتدئين.
الكود البرمجي
سوف نستخدم الرجلين رقم 4 و17 للتحكم باتجاه حركة المحرك، كما أننا سوف نستخدم المكتبة RPi.GPIO للتحكم بـ GPIO + PWM.
ملاحظة: راجع الدرس الرابع والثامن للإطلاع على GPIO+PWM.
الأن افتح نافذة SSH الخاثة بالراسبيري باي ثم اكتب الأمر التالي لفتح ملف نصي جديد باسم DCmotor:
nano DCmotor.py
الآن انسخ الكود البرمجي التالي ثم قم بالضغط على CTRL+x ثم إضغط Y حفظ الملف:
import RPi.GPIO as io import time io.setmode(io.BCM) in1_pin = 4 in2_pin = 17 io.setup(in1_pin, io.OUT) io.setup(in2_pin, io.OUT) io.setup(18, io.OUT) p = io.PWM(18, 50) p.start(0) try: while True: #clockwise io.output(in1_pin, True) io.output(in2_pin, False) for i in range(100): p.ChangeDutyCycle(i) time.sleep(0.04) #counter_clockwise time.sleep(1) io.output(in1_pin, False) io.output(in2_pin, True) for i in range(100): p.ChangeDutyCycle(100-i) time.sleep(0.04) time.sleep(1) except KeyboardInterrupt: p.stop() io.cleanup()
أخيرًا لتشغيل البرنامج قم بكتابة الأمر التالي:
sudo python DCmotor.py