آموزش رسپبری پای قسمت ششم- کنترل موتور DC با استفاده از رسپبری پای

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

برای انجام پروژه های رسپبری پای به درکی جامع از نحوه ی عملکردهای اصلی و پایه ای آن نیاز دارید. به همین دلیل در اینجا تمام ویژگی های اساسی رسپبری پای آموزش داده شده است. در هر سری آموزش در مورد یکی از عملکرد های رسپبری پای صحبت خواهد شد. در پایان این سری آموزش ها قادر خواهید بود تا پروژه های بزرگی بسازید. قبل از شروع راهنمای راه اندازی و پیکربندی رسپبری پای را مشاهده کنید.
در آموزش های قبل درمورد ساخت LED چشمک زن با استفاده از رسپبری پای، اتصال یک کلید به رسپبری پای و کار با PWM صحبت شد. در این آموزش سرعت یک موتور DC با استفاده از رسپبری پای و تکنیک PWM کنترل خواهد شد. PWM (مخفف مدولاسیون عرض پالس) روشی است که برای دستیابی به ولتاژهای متفاوت از یک منبع تغذیه با ولتاژ ثابت مورد استفاده قرار میگیرد. در مورد کار با PWM در آموزش های قبل صحبت شده است.
40 پین خروجی روی رسپبری پای 2 وجود دارد. اما تنها 26 پین از این 40 پین می توانند برای برنامه ریزی استفاده شوند که پین های GPIO2 تا GPIO27 هستند.این 26 پین GPIO میتوانند بر اساس هر نیازی برنامه ریزی شوند. با کنار گذاشتن پین های GPIO خاص، 17 پین باقی می ماند. برای اطلاعات بیشتر در مورد پین های GPIO ساخت LED چشمک زن با استفاده از رسپبری پای کنید.

academy 950530 controlling dc motor using raspberry pi 02

هر کدام از این 17 پین حداکثر می توانند 15 میلی آمپر جریان را تحویل دهند و همچنین جمع جریان کل GPIO ها نمی تواند از 50 میلی آمپر تجاوز کند. بنابراین میتوان گفت حداکثر جریانی که میتوان برای هر پینGPIO در نظر گرفت، حدودا 3 میلی آمپر است.
بر روی برد پین های تغذیه +5V (پین 2 و 4) و +3.3V (پین 1 و 17) برای اتصال به ماژول ها و سنسورها قرار داده شده است. این ریل تغذیه به صورت موازی به پردازنده ی قدرت متصل می شود. بنابراین کشیدن جریان بالا از این ریل تغذیه بر روی پردازنده اثر می گذارد. روی برد رسپبری پای یک فیوز وجود دارد که در هنگام اعمال بار بالا، می چرخد. شما می توانید با اطمینان 100mA را از ریل +3.3V بکشید.
اما چرا موتور DC به +3.3V متصل می شود؟ با توجه به محدودیت های توانی که وجود دارد، در اینجا تنها می توان از موتورهایی با قدرت کم استفاده کرد، اگر میخواهید از موتورهایی با قدرت بالاتر استفاده کنید باید آن ها را از یک منبع جداگانه تغذیه کنید.

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

در اینجا از رسپبری پای 2 مدل B با سیستم عامل Raspbian Jessie استفاده شده است. در مورد تمام نرم افزارها و سخت افزارهای مورد نیاز در قسمت معرفی رسپبری پای بحث شده است. علاوه بر آن به قطعات زیر نیاز دارید:

  1. پین های اتصال
  2. مقاومت 220اهم یا 1 کیلواهم (سه عدد)
  3. موتور DC کوچک
  4. دکمه (دو عدد)
  5. ترانزیستور 2N2222
  6. دیود 1N4007
  7. خازن 1000uF
  8. بردبورد

گام دوم:مدار

academy 950530 controlling dc motor using raspberry pi 03

همانطور که قبلا گفته شد، نمی توان بیشتر از 15mA از هر پین GPIO کشید و موتور DC بیشتر از 15mA می کشد، بنابراین PWM تولید شده توسط رسپبری پای نمی تواند به صورت مستقیم موتور DC را تغذیه کند. پس اگر موتور DC را برای کنترل سرعت، مستقیما به برد رسپبری پای متصل کنیم ، ممکن است برد آسیب ببینید.
بنابراین از یک ترانزیستور NPN (2N2222) به عنوان یک دستگاه سوئیچ استفاده می کنیم. این ترانزیستور در اینجا موتور DC با قدرت بالا را توسط سیگنال PWM دریافتی از رسپبری پای درایو می کند. دقت کنید تا ترانزیستور را اشتباها متصل نکنید چون ممکن است بار سنگینی روی برد تحمیل کند.
موتور DC القایی است و به همین دلیل وقتی موتور سوئیچ می شود، یک اسپک القایی را تجربه می کنید. این اسپک ترانزیستور را به شدت گرم خواهد کرد بنابراین باید از یک دیود (1N4007) برای محافظت ترانزیستور در برابر اسپک القایی استفاده شود.
به منظور کاهش نوسانات ولتاژ، همانطور که در شکل نشان داده شده ، یک خازن 1000uF مابین منبع تغذیه متصل می شود.

گام سوم: توضیح کار

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


import RPi.GPIO as IO


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


IO.setwarnings(False)


با استفاده از شماره ی پین روی برد یا شماره ی عملکرد آنها، می توان به پین های GPIO رسپبری پای اشاره کرد. در دیاگرام پین، شما پین 35 را روی برد GPIO19 میبینید. بنابراین در اینجا می توان با استفاده از عدد "35" یا "19" به پین اشاره کرد.


IO.setmode (IO.BCM)


GPIO19 یا پین 35 را به عنوان پین خروجی تنظیم کرده تا خروجی PWM را از این پین بگیرید.


IO.setup(19,IO.IN)


بعد از تنظیم پین به عنوان خروجی نیاز به تنظیم پین به عنوان پین خروجی PWM دارید.


p = IO.PWM(output channel , frequency of PWM signal)


دستور فوق برای تنظیم کانال و همچنین فرکانس سیگنال PWM مورد استفاده قرار میگیرد. در اینجا "p" متغیری است که می تواند هر چیز دیگری باشد. از GPIO19 به عنوان کانال خروجی PWM استفاده می کنیم. همچنین از آنجایی که نمی خواهیم چشمک زدن LED را ببینیم، فرکانس سیگنال PWM روی 100 انتخاب شده است.
دستور زیر برای آغاز تولید سیگنال PWM مورد استفاده قرار می گیرد. " DUTYCYCLE" برای تنظیم نرخ روشنایی است و 0 به این معنی است که LED برای 0% زمان روشن می ماند، 30 به معنی روشن ماندن LED در 30% زمان است و 100 به معنی روشن ماندن کامل LED خواهد بود.


p.start(DUTYCYCLE)


در حالتی که شرط داخل پرانتز صحیح باشد، جملات داخل حلقه یک بار اجرا می شود. بنابراین اگر پین 26 GPIO پایین شود ، در این صورت جمله ی داخل حلقه ی if یک بار اجرا می شود. اگر پین 26 GPIO پایین نرود ، در این صورت جمله ی داخل حلقه ی if اجرا نمی شود.


if(IO.input(26) == False):


While 1: برای حلقه های بی نهایت استفاده می شود. با این دستور عبارات داخل حلقه به صورت مداوم اجرا خواهند شد.
برای کنترل سرعت به تمام دستورات نیاز خواهد بود.
بعد از نوشتن برنامه و اجرای آن، همه چیز برای کنترل موتور آماده است. دو دکمه روی رسپبری پای قرار گرفته است؛ یکی برای افزایش چرخه ی وظیفه ی سیگنال PWM و دیگری برای کاهش چرخه ی وظیفه ی سیگنال. با فشار یکی از دکمه ها سرعت موتور DC افزایش و با فشار دکمه ی دیگر سرعت آن کاهش می یابد. بنابراین می توان گفت امکان کنترل سرعت موتور DC با استفاده از رسپبری پای فراهم شده است.

کد :


import RPi.GPIO as IO          # calling header file which helps us use GPIO’s of PI
import time                             # calling time to provide delays in program
IO.setwarnings(False)            #do not show any warnings
x=0                                         #integer for storing the duty cycle value
IO.setmode (IO.BCM)           #we are programming the GPIO by BCM pin numbers. (PIN35 as‘GPIO19’)
IO.setup(13,IO.OUT)         # initialize GPIO13 as an output.
IO.setup(19,IO.IN)             # initialize GPIO19 as an input.
IO.setup(26,IO.IN)             # initialize GPIO26 as an input.
p = IO.PWM(13,100)        #GPIO13 as PWM output, with 100Hz frequency
p.start(0)                            #generate PWM signal with 0% duty cycle
while 1:                             #execute loop forever
   p.ChangeDutyCycle(x)                 #change duty cycle for changing the brightness of LED.
      if(IO.input(26) == False):           #if button1 is pressed
          if(x<50):
             x=x+1                                 #increment x by one if x0):
              x=x-1                                #decrement x by one if x>0
              time.sleep(0.2)                 #sleep for 200ms

ویدیو

منبع : سایت circuitdigest

افزودن نظر

دسته بندی ها

Icon Arduino
آردوینو
Icon Raspberry Pi
رسپبری پای
Icon Launchpad
لانچ پد
Icon St
برد های دیسکاوری
Icon Sensors
سنسورها
Icon Other
سایر پروژه ها

جدیدترین آموزش ها


محبوبترین آموزش ها


شماره تماس: ۵۹ ۸۳ ۰۲ ۸۸ ۰۲۱

info@caferobot.ir

ایران | تهران

ما را در شبکه های اجتماعی دنبال کنید

ورود

ثبت


x

مطلب مفیدی بود؟

برای دریافت جدیدترین آموزش ها و خبرها در ایمیل خود، در خبرنامه کافه ربات عضو شوید