آموزش رزبری پای

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

در این آموزش قصد داریم با استفاده از مدولاسیون عرض پالس در MicroPython، سروو موتور را با Raspberry Pi Pico کنترل کنیم.

مدولاسیون عرض پالس (PWM) تکنیکی برای تغییر دامنه سیگنال های دیجیتال برای کنترل دستگاه ها و برنامه هایی است که نیاز به برق دارند. با استفاده از PWM ما میتوانیم از یک ولتاژ ثابت، ولتاژ متغیر دلخواه خود را ایجاد کنیم. ما با استفاده از PWM یک سروو موتور را با برد رزبری پای پیکو کنترل میکنیم.

مدار سروو موتور با رزبری پای Pico

اتصال سروو موتور به رزبری پای پیکو واقعا ساده است. می دانیم که سروو موتور سه سیم دارد. سیم سیاه یا قهوه ای برای GND، سیم قرمز به عنوان VCC و سیم زرد یا نارنجی برای ارائه سیگنال پالس استفاده می شود. در شماتیک مدار می بینید که VCC سروو را به پین VBUS برد پیکو وصل کرده ایم. پایه سیگنال سروو موتور به GPIO0 برد Pico و پایه Ground سروو به پایه GND برد Pico متصل شده است.

مدار سروو موتور با رزبری پای Pico

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

کد کامل این پروژه در فایل دانلودی انتهای صفحه قرار گرفته است. در اینجا قسمت های مهم کد را توضیح میدهیم.

from machine import Pin, PWM
from time import sleep

در ابتدا باید کلاس های Pin() و PWM() را از کتابخانه machine.py همانطور که در بالا ذکر شد وارد کنیم. در آموزش های قبلی ما بارها از کتابخانه ماشین استفاده کرده ایم و امیدوارم تاکنون با کتابخانه ماشینی آشنا شده باشید. pin() برای تعیین پین سیگنال سروو موتور استفاده می شود.

pwm = PWM(Pin(0))
pwm.freq(50)

همانطور که پین ​​سیگنال سروو موتور را به GPIO0 برد Pico وصل کرده ایم، پین (0) را اعلام میکنیم و با قرار دادن آن در تابع PWM() این پین را به عنوان PWM تنظیم میکنیم. متغیر pwm به عنوان یک شی در اینجا استفاده می شود. سپس با استفاده از pwm.freq(50) فرکانس را 50 هرتز اختصاص میدهیم.

#تنظیم زاویه
def setServoCycle (position):
    pwm.duty_u16(position)
    sleep(0.01)

تابع setServoCycle(position) را می توان برای تنظیم موقعیت سروو با تغییر پارامتر position از 1000 تا 9000 استفاده کرد. مقادیر duty_u16 به جای درجه بر حسب میکروثانیه است. مقادیر 1000-9000 نشان دهنده 0-180 درجه است.

while True:
    for pos in range(1000,9000,50):
        setServoCycle(pos)
    for pos in range(9000,1000,-50):
        setServoCycle(pos)

در حلقه while بالا، من از دو حلقه for استفاده می کنم. اولی برای تنظیم موقعیت سروو از 0 تا 180 یعنی 1000 تا 9000 و حلقه دوم for برای تنظیم موقعیت سروو از 180 به 0 یعنی 9000 به 1000 استفاده می شود. اکنون Thonny IDE را باز کنید. کد موجود در فایل main.py را باز کنید. قبل از ذخیره فایل ها، مطمئن شوید که برد Pico به لپ تاپ شما متصل است. هنگامی که کد را ذخیره می کنید، یک پنجره پاپ آپ ظاهر می شود، همانطور که در تصویر زیر نشان داده شده است، ابتدا باید Raspberry Pi Pico را انتخاب کنید، سپس نام فایل را “main.py” و ذخیره کنید. این رویه شما را قادر می سازد تا زمانی که Pico روشن میشود، برنامه اجرا شود.

آپلود کد در رزبری پای پیکو

هنگامی که کد را در برد pico آپلود و اجرا می کنید، را مشاهده خواهید کرد که سروو از 0 تا 180 درجه و 180 تا 0 درجه به طور مداوم می چرخد.

4/5 - (2 امتیاز)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام آیرنکس را دنبال کنید.
تصویر از محمد رحیمی

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

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

نشانی ایمیل شما منتشر نخواهد شد.