شما به اینترنت متصل نیستید.
کنترل موتور DC با برد رزبری پای | درس دهم
نویسنده:
امتیاز دهید

کنترل موتور DC با برد رزبری پای | درس دهم

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

کنترل سروو موتور با برد رزبری | درس نهم
کنترل سروو موتور با برد رزبری | درس نهم
در این درس نحوه کنترل سروو موتور را توسط برد رسپبری پای یاد خواهید گرفت که می توانید از آن در پروژه های خود استفاده کنید.
زمان مطالعه: 10 دقیقه
کنترل موتور DC با برد رسپبری پای

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

قطعات مورد نیاز:

برای انجام این پروژه به قطعات زیر احتیاج دارید:

برد رسپبری پای
1 عدد
برد بورد
1 عدد
سیم اتصال به برد بورد
1 عدد
برد GPIO تی شکل + کابل
1 عدد
موتور 6 ولت DC
1 عدد
آی سی درایور موتور L293D
1 عدد
جعبه باتری 4 تایی
1 عدد

PWM

مدولاسیون پهنای پالس یا PWM یک تکنیک برای کنترل توان و قدرت می باشد. در این درس از PWM برای کنترل میزان توان وارد شده به موتور و میزان سرعت آن استفاده می شود.

دیاگرام پایین سیگنال های PWM تولید شده توسط برد رسپبری پای را نشان می دهد.

کنترل موتور DC با برد رسپبری پای

هر 1/500 ثانیه، خروجی PWM یک پالس تولید می کند. طول این پالس میزان انرژی دریافتی موتور را کنترل می کند. در صورتی که پالسی ارسال نگردد، موتور حرکت نمی کند. در صورتی که پالس کوتاه باشد، سرعت چرخش پایین است و به همین صورت هرچه طول پالس افزایش یابد، سرعت چرخش موتور نیز افزایش خواهد یافت.

آی سی L293D:

L293D یک آی سی بسیار کارآمد و مفید بوده و توانایی کنترل دو موتور را به طور مجزا دارد. در این درس فقط از نیمی از آن برای کنترل موتور DC استفاده می شود، چون برد رسپبری پای فقط توانایی تولید یک خروجی برای PWM را دارد و اکثر پین های سمت راست آن برای کنترل موتور دوم می باشند.

کنترل موتور DC با برد رسپبری پای

برای دریافت اطلاعات کامل تر در مورد درایورهای موتور مقاله آشنایی با موتورهای DC و درایورهای راه انداز را مطالعه کنید.

L293D دو پین برای +V دارد(پین 8 و 16). پین +Vmotor(8) توان مورد نیاز برای موتور و پین +V(16) توان منطقی برای آی سی را فراهم می کند. در اینجا پین 16 به 5V و پین 8 به جعبه باتری متصل خواهد شد.

سخت افزار:

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

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

کنترل موتور DC با برد رسپبری پای

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

نرم افزار:

علاوه بر اینکه نیاز است تا پین ها کنترل شوند،( متصل شده به پین های 4 و 17 از پورت GPIO) همچنین لازم است تا کتابخانه GPIO نصب گردد. برای کسب اطلاعات جزئی تر درس چهارم از این مقاله را مطالعه کنید.

روش های مختلفی برای وارد کردن دستورات زیر در برد رسپبری پای وجود دارد. شاید راحت ترین راه اتصال به برد رسپبری پای توسط SSH(درس ششم را مطالعه کنید) و باز کردن پنجره ویرایشگر توسط دستور زیر:

nano motor.py

سپس کد زیر را وارد کرده و در انتها فایل ها را توسط CTRL-x ذخیره کنید:

دستورات لازم برای برقراری ارتباط

کد را در اینجا مشاهده می کنید:

import RPi.GPIO as io

io.setmode(io.BCM)

 

in1_pin = 4

in2_pin = 17

 

io.setup(in1_pin, io.OUT)

io.setup(in2_pin, io.OUT)

 

def set(property, value):

    try:

        f = open("/sys/class/rpi-pwm/pwm0/" + property, 'w')

        f.write(value)

        f.close()  

    except:

        print("Error writing to: " + property + " value: " + value)

 

set("delayed", "0")

set("mode", "pwm")

set("frequency", "500")

set("active", "1")

 

def clockwise():

    io.output(in1_pin, True)   

    io.output(in2_pin, False)

 

def counter_clockwise():

    io.output(in1_pin, False)

    io.output(in2_pin, True)

 

clockwise()

 

while True:

    cmd = raw_input("Command, f/r 0..9, E.g. f5 :")

    direction = cmd[0]

    if direction == "f":

        clockwise()

    else:

        counter_clockwise()

    speed = int(cmd[1]) * 11

    set("duty", str(speed))

این برنامه پایتون در ابتدا دو پین GPIO را به عنوان خروجی تنظیم می کند. سپس از تابع set استفاده می شود، که در درس هشتم به کار رفته است. سپس از آن برای تنظیم پارامترهای PWM استفاده می شود.

در ادامه دو تابع دیگر با نام های clockwise و counter_clockwise وجود دارد، که برای کنترل جهت چرخش موتور با استفاده از تغییر دادن دو پین به کار می روند.

در صورتی که هر دوپین کنترلی high و یا هردو low باشند، موتور حرکت نخواهد کرد. ولی در صورتی که IN1 برابر high و پین IN2 برابر با low باشد، موتور در یک جهت چرخیده و با تغییر دادن وضعیت این دو پین، جهت چرخش تغییر خواهد کرد.

حلقه اصلی برنامه منظر می ماند تا شما دستوری را به صورت یک حرف f یا r و یک عدد دیجیتال بین 0 تا 9 وارد کنید. حرف وارد شده جهت چرخش موتور و عدد وارد شده برای سرعت آن را را مشخص می کند، البته با ضرب شدن در عدد 11 که نتیجه آن عددی بین 0 تا 99 می باشد که توسط کتابخانه PWM شناخته می شود.

تست و نکات نهایی:

برای اجرای برنامه باید آن را در حالت super user اجرا کنید تا به پین های GPIO دسترسی داشته باشید، لذا دستور زیر را تایپ کنید:

sudo python motor.py

سپس برنامه از شما درخواست می کند تا دستورات مربوط به سرعت و جهت چرخش را وارد کنید. موارد آورده شده در زیر را آزمایش کنید:

$sudo python motor.py

Command, f/r 0..9, E.g. f5 :f9

Command, f/r 0..9, E.g. f5 :r4

Command, f/r 0..9, E.g. f5 :

کنترل استپر موتور با برد رزبری پای | درس یازدهم

در جهت بهتر شدن محتوای مطالب لطف کنید نظرات، پیشنهادات و انتقادات خود را با ما درمیان بگذارید...

ترجمه شده و تکمیل توسط تیم الکترونیک اتومی | منبع: سایت adafriut

آیا این مطلب برایتان مفید بود؟
بله خیر
تاکنون هیچ نظری ثبت نشده است.
برای ثبت نظر وارد حساب کاربری خود شوید.