آموزش اتصال استپر موتور به رزبری پای

استپرموتورها در دسته ای بین موتورهای DC معمولی  و سرووموتورها  قرار می گیرند . آن ها مزیت قرارگیری در موقعیت های مختلف به طور دقیق و حرکت به عقب یا جلو به صورت پله پله و همچنین چرخش مداوم را دارند. در این قسمت از آموزش نحوه کنترل یک استپرموتور را با RaspberryPi و همان چیپ L293D که در قسمت قبلی آموزش از آن استفاده کردیم فرا میگیرید.

آموزش اتصال استپر موتور به رزبری پای

 

این قسمت همچنین نحوه استفاده از یک چیپ درایور جایگزین , ULN2803 , را نیز به شما می آموزد . برای این پروژه استفاده از L293D یا ULN2803 تفاوتی ندارد. قیمت کمتر ULN2803 و 4 خروجی اضافی آن که می توانید برای کارهای دیگری از آن ها استفاده کنید آن را به گزینه ی بهتری تبدیل می کند.

قطعات مورد نیاز برای اتصال استپر موتور به رزبری پای

برای ساخت این پروژه به قطعات زیر نیاز دارید :

  • استپر موتور 5ولت
  • آیسی L293D
  • آیسی ULN2803
  • مینی بردبرد
  • سیم جامپر نری به نری

استپر موتور 5ولت

این موتور بسیار کم مصرف است و از مشکل جریان کشی لحظه ای بر خلاف موتور های DC و سرووموتور ها (که از موتور DC استفاده می کنند ) کمتر رنج می برد . بنابراین این پروژه با تغذیه از خروجی 5 ولت RaspberryPi نیز کار می کند به شرطی که RaspberryPi به یک تغذیه با خروجی حداقل 1 آمپر تغذیه شود .

استپر موتور 5ولت

آیسی L293D

آیسی L293D

آیسی ULN2803

ULN2803

مینی بردبردمینی بردبرد

سیم جامپر نری به نریسیم جامپر نری به نری

در این پروژه از یک برد واسط برای انتقال پایه های رزبری پای روی برد برد استفاده شده ولی شما میتوانید هر طوری که میخواهید پایه ها را روی برد بورد منتقل کنید. همچنین عکس های این پروژه برای رزبری پای ورژن یک هست ولی شما میتوانید در ورژن 2/3 و یا ورژن های بعدی هم استفاده کنید. فقط پین های استفاده شده را شناسایی و روی برد رزبری خود به برد بورد منتقل کنید.

مطلب پیشنهادی:  تولید PWM در رزبری‌پای با استفاده از پایتون و C

سخت افزار (L293D)

استپر موتور 5 سیم دارد و این بار ما از هر دو نیمه ی L293D استفاده می کنیم . این به این معنی است که اتصالات زیادی روی بردبرد وجود خواهد داشت .

موتور یک کانکتور 5پایه دارد که باید سیم های جامپر داخل آن کنید و به بردبرد متصل کنید .

سخت افزار (L293D)

توجه کنید که سیم قرمز استپر موتور به چیزی وصل نمی شود .

از رنگ های سیم ها برای شناسایی استفاده کنید و نه از مکانی که از موتور خارج می شوند!.

سخت افزار (ULN2803)

اگر از ULN2803 استفاده می کنید از تمامی 5 سیم استپر موتور استفاده خواهد شد .

موتور یک کانکتور 5پایه دارد که باید سیم های جامپر داخل آن کنید و به بردبرد متصل کنید .

این شیوه اتصال تنها با استپر موتور های 5 پایه (تک قطب ) قابل اجراست .

سخت افزار (ULN2803)

اگر چه کد زیر از پایه 18 GPIO به عنوان پین Enable استفاده می کند اما این پین فقط برای L293D استفاده می شود .

استپر موتورها

استپر موتورها از یک چرخ دندانه دار و اکترومگنت ها برای چرخاندن روتور یک پله در هر مرحله استفاده می کنند .

استپر موتورها

با تحریک سیم پیچ ها به ترتیب مناسب , موتور شروع به چرخیدن می کند . تعداد پله هایی که یک استپر موتور در یک چرخش 360 درجه دارد در واقع تعداد دندانه های روی چرخ آن است .

موتوری که ما از آن استفاده می کنیم 8 پله دارد , اما سپس یک گیربکس کاهنده 1:64  وجود دارد که تعداد پله ها را به 8*64=512 عدد افزایش می دهد .

در این آموزش ما از اتصال مشترک قرمز رنگ استفاده نمی کنیم . این سیم تنها زمانی مفید است که از یک مدار راه انداز متفاوت که امکان تغییر جهت جریان در هر سیم پیچ را ندارد استفاده شود .

مطلب پیشنهادی:  اتصال سنسور فاصله‌سنج HC-SR04 به رزبری‌پای

وجود یک اتصال مرکزی در هر سیم پیچ به این معناست که میتوان با تحریک کردن نیمه ی راست یا چپ سیم پیچ جهت جریان را بدون استفاده از یک مدار که آن را برعکس کند تغییر داد .

از آنجایی که ما از L293D استفاده می کنیم که کار تغییر جهت جریان را به خوبی انجام می دهد این اتصال مشترک را نیاز نداریم .  با این آیسی می توان جریان را در هر جهتی به کل یک سیم پیچ اعمال کرد .

پایه های ULN2803

در قسمت کنترل موتور DC با رزبری پای آموزش L293D را دیدیم که چیپ بسیار کاربردی است .

ULN2803

L293D 4 خروجی دارد که جهت آن ها می تواند عوض شود و ULN2803 8 خروجی دارد که سیگنال های ضعیف RaspberryPi را تقویت می کنند تا قادر باشند جریان های بیشتری را کلید بزنند .

اما برخلاف L293D خروجی های ULN2803 تنها می توانند جریان بکشند . بنابراین سیم قرمز مثبت استپر موتور استفاده می شود . بنابراین , مثلا به جای استفاده از تمام سیم پیچ بین سیم های نارنجی و صورتی تنها نیمی از سیم پیچ که بین سیم های قرمز و صورتی قرار دارد تحریک می شود .

استپر موتور

 نرم افزار و بر نامه نویسی مورد نیاز برای اتصال استپر موتور به رزبری پای

بخش نرم افزاری این پروژه برای هر دو آیسی L293D و ULN2803 یکسان است . این پروژه از کتابخانه Rpi.GPIO استفاده می کند . اگر تاکنون این کار را انجام نداده اید , ابتدا باید این مورد را نصب کنید .

برای نصب کد , می توانید از طریق SSH به RaspberryPi متصل شوید و یک پنجره ویرایشگر را با دستور زیر باز کنید :

$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 forward(delay, steps): 
 for i in range(0, steps):
 setStep(1, 0, 1, 0)
 time.sleep(delay)
 setStep(0, 1, 1, 0)
 time.sleep(delay)
 setStep(0, 1, 0, 1)
 time.sleep(delay)
 setStep(1, 0, 0, 1)
 time.sleep(delay)

def backwards(delay, steps): 
 for i in range(0, steps):
 setStep(1, 0, 0, 1)
 time.sleep(delay)
 setStep(0, 1, 0, 1)
 time.sleep(delay)
 setStep(0, 1, 1, 0)
 time.sleep(delay)
 setStep(1, 0, 1, 0)
 time.sleep(delay)


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)

while True:
 delay = raw_input("Delay between steps (milliseconds)?")
 steps = raw_input("How many steps forward? ")
 forward(int(delay) / 1000.0, int(steps))
 steps = raw_input("How many steps backwards? ")
 backwards(int(delay) / 1000.0, int(steps))

هنگامی که استپر موتور ها حرکت نمی کنند نیز همچنان فعال اند و موقعیت خود را حفظ می کنند که این کار جریان می کشد . اگر به نگه نداشتن موقعیت توسط استپر نیاز ندارید می توانید دستور (setStep(0,0,0,0  را فراخوانی کنید تا سیم پیچ ها آزاد شوند . اکنون موتور آزادانه می چرخد و جریانی نمی کشد .

تست و راه اندازی

این برنامه باید به عنوان کاربر super-user اجرا شود , بنابراین دستور زیر را وارد پنجره SSH کنید :

$sudo python stepper.py

یک زمان تاخیر وارد کنید ( 5 مقدار مناسبی است ) و سپس یک عدد برای تعداد پله ها (512 یک دور چرخش کامل است) .

تست و راه اندازی

با تغییر مقادیر تاخیر و کاهش آن حداکثر سرعت موتور را می توانید پیدا کنید .

 Source : Adafruit.com

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

مطالعه دیگر جلسات این آموزش<< جلسه قبلی                    جلسه بعدی >>

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *