راسبيري باي -الدرس العاشر- التحكم بالمحرك الخطوي “Stepper”

مبتدئ

image_pdf

 المحرك الخطوي  من أشهر و أهم أنواع المحركات، وبعد مهم في مجالات مختلفة مثل الروبوتات،  في هذا الدرس سوف نتعلم برمجة المحرك الخطوي (Stepper Motor) والتحكم باتجاه دوران المحرك باستخدام الراسبيري باي  و الدائرة المتكاملة (L293D) . 

المواد و الأدوات

راسبيري باي

X1 راسبيري باي

محرك خطوي

X1 محرك خطوي

لوحة تجارب

X1لوحة تجارب

دائرة متكاملة L293D

X1 الدائرة المتكاملة (L293D IC)

محول طاقة

X1 محول طاقة 

وحدة توصيل

X1 لوح توصل مع كابل للراسبيرى

شريط توصيل مرن

X1شريط توصيل مرن

اسلاك توصيل

مجموعة أسلاك توصيل (ذكر/ذكر)

توصيل الدائرة

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

توصيل الدائرة

المحرك الخطوي

يتكون المحرك الخطوي المستخدم في هذا الدرس (28BYJ-48) من جزء ثابت وهو عبارة عن 4 ملفات تشكل حلقة حول الدوار وهو الجزء المتحرك ، ومبدأ عمله أنه يحول النبضات الكهربائية إلى دوران ميكانيكي، عند تطبيق الإشارات الكهربائية ،و يدور بزيادات دقيقة وثابتة تُعرف بالخطوات.
توضح الصورة كيفية عمل دوران المحرك.

stepper Motor

يحتوي هذا المحرك على أربع ملفات. يتم توصيل أحد طرفي جميع الملفات بسلك 5 فولت (أحمر) ويتم سحب الطرف الآخر من كل ملف بألوان السلك البرتقالي والوردي والأصفر والأزرق على التوالي

المحرك الخطوي

حساب الخطوات

 لتعيين عدد الخطوات في دورة واحدة للمحرك الخطوي ، تحتاج أن تعود إلى ورقة البيانات الخاصة بالمحرك الذي تستخدمه لتعرف قيمة وضع الخطوة الكاملة، و نسبة تروس التخفيض (Variation Ratio).
في محرك (28BYJ-48) حسب ورقة البيانات عند عمل المحرك في وضع الخطوة الكاملة فإنه بمقدار 11.25درجة إذا يحتاج المحرك إلى 32 خطوة ليكمل دورة بمقدار 360 درجة. (11.25*360)
يجب ضرب نسبة التروس 1/64 في عدد الخطوات لكل دورة (32 * 63.68395 خطوة لكل دورة = 2037.8864 تقريبًا 2038 خطوة).

البرمجة

افتح نافذة SSH الخاصة بالراسبيري باي ثم اكتب الأمر التالي لفتح ملف نصي جديد باسم stepper:

$nano stepper.py

انسخ الكود البرمجي التالي ثم قم بالضغط على CTRL+x ثم إضغط Y لحفظ الملف:

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
 
enable_pin = 18
coil_A_1_pin = 4
coil_A_2_pin = 17
coil_B_1_pin = 23
coil_B_2_pin = 24
 
GPIO.setup(enable_pin, GPIO.OUT)
GPIO.setup(coil_A_1_pin, GPIO.OUT)
GPIO.setup(coil_A_2_pin, GPIO.OUT)
GPIO.setup(coil_B_1_pin, GPIO.OUT)
GPIO.setup(coil_B_2_pin, GPIO.OUT)
 
GPIO.output(enable_pin, 1)

def setStep(w1, w2, w3, w4):
    GPIO.output(coil_A_1_pin, w1)
    GPIO.output(coil_A_2_pin, w2)
    GPIO.output(coil_B_1_pin, w3)
    GPIO.output(coil_B_2_pin, w4)

try:
 
    while True:
 
        #forward
    for i in range(512):
            setStep(1, 0, 1, 0)
            time.sleep(0.05)
            setStep(0, 1, 1, 0)
            time.sleep(0.05)
            setStep(0, 1, 0, 1)
            time.sleep(0.05)
            setStep(1, 0, 0, 1)
            time.sleep(0.05)
 
        time.sleep(1)
        #backwards
    for i in range(512):
            setStep(1, 0, 0, 1)
            time.sleep(0.05)
            setStep(0, 1, 0, 1)
            time.sleep(0.05)
            setStep(0, 1, 1, 0)
            time.sleep(0.05)
            setStep(1, 0, 1, 0)
            time.sleep(0.05)
        
        time.sleep(1)
 
except KeyboardInterrupt:
 
        GPIO.cleanup()

أخيرًا لتشغيل البرنامج قم بكتابة الأمر التالي:

sudo python stepper.py

شرح البرمجة

في البداية نقوم باستدعاء المكتبات المطلوبة و هي مكتبة (GPIO) و مكتبة الوقت

import RPi.GPIO as GPIO 
import time 
GPIO.setmode(GPIO.BCM)

 نعرف المنافذ  التي تم توصيل المحرك معها

enable_pin = 18
coil_A_1_pin = 4
coil_A_2_pin = 17
coil_B_1_pin = 23
coil_B_2_pin = 24
 
GPIO.setup(enable_pin, GPIO.OUT)
GPIO.setup(coil_A_1_pin, GPIO.OUT)
GPIO.setup(coil_A_2_pin, GPIO.OUT)
GPIO.setup(coil_B_1_pin, GPIO.OUT)
GPIO.setup(coil_B_2_pin, GPIO.OUT)
 
GPIO.output(enable_pin, 1)

نعرف دالة لتشغيل المنافذ

def setStep(w1, w2, w3, w4):
    GPIO.output(coil_A_1_pin, w1)
    GPIO.output(coil_A_2_pin, w2)
    GPIO.output(coil_B_1_pin, w3)
    GPIO.output(coil_B_2_pin, w4)

نعطي أمر ليتحرك في إتجاهان مع عقارب الساعة و عكس عقارب الساعة

 

 

X
تم إضافة المنتج إلى السلة بنجاح