آموزش الکترونیکآموزش رزبری پایپروژه های رزبری پای

چطور سرعت موتور DC را با رزبری پای کنترل کنیم؟ با پایتون ! (آموزش Raspberry Pi #7)

سلام. چطور سرعت موتور DC را با Raspberry Pi کنترل کنیم؟ (آموزش رزبری پای #7) را آماده کردیم.

آموزش کنترل سرعت موتور DC با رزبری پای

ما در آموزش های قبلی در مورد ال ای دی چشمک زن، اتصال دکمه به رزبری پای و راه اندازی PWM در Raspberry Pi صحبت کرده ایم. در این آموزش سرعت یک موتور DC را با استفاده از تکنیک  PWM کنترل خواهیم کرد. PWM مخفف (Pulse Width Modulation) است. پی وی ام روشی است که برای گرفتن ولتاژ متغیر از یک منبع تغذیه ثابت استفاده میشود. ما سیگنال PWM توسط Raspberry Pi تولید میکنیم و سپس آن را به موتور DC میدهیم.

خواندن قسمت قبلی برای درک کامل این آموزش پیشنهاد میشود : چگونه از PWM در Raspberry Pi استفاده کنیم؟ (آموزش رزبری پای #6)

در Raspberry Pi 2 پین های خروجی GPIO 40 عدد هستند. اما از 40 پین، فقط 26 پین قابل برنامه ریزی هستند. برخی از این پین ها عملکردهای خاصی را انجام می دهند. با کنار گذاشتن GPIO ویژه، ما 17 GPIO داریم که میتوانیم به راحتی آن ها را برنامه ریزی کنیم. برای کسب اطلاعات کامل آموزش های رزبری پای را از ابتدا بخوانید(در مورد پین های GPIO و PWM در قسمت های قبلی به طور کامل بحث کرده ایم). هر یک از این 17 پین GPIO می توانند حداکثر 15 میلی آمپر را تحویل دهند. و مقدار جریان از کلیه پین ​​های GPIO نمی تواند از 50 میلی آمپر فراتر رود. بنابراین می توانیم از هر یک از این پین های GPIO حداکثر 3 میلی آمپر را بکشیم.

کنترل موتورDC با Raspberry Pi

برای اتصال ماژول ها و سنسور ها، پین های خروجی با قدرت +5 ولت (پین 4 و 2) و +3.3 (پین 1و 17) وجود دارد. ترمینال برق به موزازات توان پردازنده متصل است. بنابراین جریان از میزان دریافت برق از پین ها بر پردازنده نیز تاثیر میگذارد. به همین دلیل فیوزی در برد رزبری پای وجود دارد که به محض خروج بار زیاد، برق را قطع میکند تا به CPU آسیبی نرسد. شما میتوانید 100 میلی آمپر را با خیال آسوده از ترمینال 3.3 ولت بکشید. ما موتور دی سی را به پین 3.3 ولت متصل میکنیم. با توجه به محدودیت توان خروجی، ما از یک موتور کم مصرف استفاده میکنیم. در صورتی که میخواهید یک موتور پر قدرت را کنترل کنید باید از منبع تغذیه خارجی استفاده کنید.

توضیحات شماتیک مدار

در اینجا ما از رزبری پای 2 Model B با سیستم عامل Raspbian Jessie استفاده می کنیم. در قسمت های قبل، در مورد کلیه نیازهای اولیه سخت افزار و نرم افزار بحث کرده ایم. تصویر زیر شماتیک مدار پروژه کنترل سرعت فن DC با رزبری پای را نشان میدهد.

حتما ببینید :  آموزش PIC , PIC چیه ؟ (آموزش کامل PIC جلسه اول)

آموزش کنترل سرعت موتور DC با رزبری پای

همانطور که قبلاً گفته شد، ما نمی توانیم بیش از 15mA را از هر پین GPIO استفاده کنیم. و ممکن است موتور DC بیش از 15 میلی آمپر را جذب کند. بنابراین PWM تولید شده توسط Raspberry Pi نمی تواند مستقیماً به موتور DC تغذیه شود. و اگر ما برای کنترل سرعت، موتور را مستقیماً به PI وصل کنیم، ممکن است برد به طور دائمی آسیب ببیند.

با این وجود از ترانزیستور NPN 2N2222 استفاده کنیم. این ترانزیستور در اینجا با گرفتن سیگنال PWM از PI ، موتور DC پرقدرت را هدایت می کند. باید توجه داشت که اتصال نادرست ترانزیستور ممکن است به رزبری پای صدمه زیادی وارد کند.

به منظور کاهش نوسانات ولتاژ ، همانطور که در نمودار مدار نشان داده شده است ، یک خازن 1000uF را به منبع تغذیه متصل میکنیم.

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

  1. 220Ω یا 1KΩresistor – سه عدد
  2. موتور DC کوچک
  3. دکمه – دو عدد
  4. ترانزیستور 2N2222
  5. دیود 1N4007
  6. خازن 1000uF

توضیحات کد پروژه

وقتی همه چیز را مانند شماتیک مدار متصل کردید، می توانیم Raspberry Pi را روشن کنیم تا برنامه را در پایتون (PYHTON) بنویسیم. کد کامل در انتهای صفحه قرار داده شده است. در اینجا در مورد قسمت های مهم کد صحبت میکنیم.

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

import RPi.GPIO as IO

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

IO.setwarnings(False)

ما می توانیم پین های GPIO رزبری پای یا شماره پین آن یا شماره GPIO آن ها وارد کنیم. به طور مثال پین 35 روی برد Raspberry pi، همان پین GPIO 19 است. بنابراین ما میتوانیم آن را با 19 یا 35 معرفی کنیم.

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.
IO.setmode (IO.BCM)

ما GPIO19 (یا PIN35) را به عنوان پین ورودی تنظیم می کنیم. ما فشرده شدن دکمه توسط این پین را تشخیص خواهیم داد.

IO.setup(19,IO.IN)

حالا به قسمت PWM کد میرسیم. کد زیر را وارد میکنیم :

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

این کد برای تنظیم کانال و فرکانس سیگنال PWM است. p در اینجا متغیر است که میتواند هر چیزی باشد. ما از GPIO19 به عنوان کانال خروجی PWM استفاده می کنیم. فرکانس سیگنال پی وی ام 100 انتخاب شده است. زیرا نمی خواهیم شاهد چشمک زدن LED باشیم.

حتما ببینید :  پروژه برقراری ارتباط اندروید و رزبری پای با بلوتوث و کنترل پین ها

از دستور زیر برای شروع تولید سیگنال PWM استفاده میشود. ‘DUTYCYCLE’ برای تنظیم نسبت روشن به خاموش است. 0 بدین معنی است که LED برای 0 درصد از زمان روشن می شود، 30 به معنی LED برای 30٪ زمان و 100 یعنی کاملاً روشن.

p.start(DUTYCYCLE)

تا به اینجا همان کار های قسمت های قبلی را انجام دادیم، از این به بعد وارد قسمت کنترل سرعت میشویم.

حالا اینجا یک حلقه ایجاد میکنیم. و به جای مقدار DUTYCYCLE در کد بالا ، یک متغیر تعریف میکنیم با دو شرط.

شرط اول : اگر دکمه اول (پین 26) فشرده شود، به مقدار DUTYCYCLE = x یک عدد اضافه شود و موتور سریع تر بچرخد :

   p.ChangeDutyCycle(x)                  #تغییر چرخه وظیفه
      if(IO.input(26) == False):         #اگر دکمه 1 فشرده شود
          if(x<50):                      # و مقدار ایکس زیر 50 باشد
             x=x+1                       #ایکس را 1 عدد افزایش بده
             time.sleep(0.2)             #200 میلی ثانیه صبر کن

شرط دوم: اگر دکمه دوم (پین 19) فشرده شود، از مقدار DUTYCYCLE = x یک عدد کم شود و موتور آرام تر بچرخد :

      if(IO.input(19) == False):         #اگر دکمه 1 فشرده شود
           if(x>0):                      # و مقدار ایکس بالای 0 باشد
              x=x-1                      #ایکس را 1 عدد کاهش بده
              time.sleep(0.2)            #200 میلی ثانیه صبر کن

به همین سادگی به همین خوشمزگی ! قسمت های دیگر کد را توضیح نمیدهیم، قبلا کلی در مورد آن ها صحبت کرده ایم.

کد کامل :

import RPi.GPIO as IO
import time 
IO.setwarnings(False)
x=0 
IO.setmode (IO.BCM)
IO.setup(13,IO.OUT)
IO.setup(19,IO.IN)
IO.setup(26,IO.IN)
p = IO.PWM(13,100)
p.start(0) 
while 1:
   p.ChangeDutyCycle(x)
      if(IO.input(26) == False):   
          if(x<50):
             x=x+1 
             time.sleep(0.2) 
      if(IO.input(19) == False): 
           if(x>0):
              x=x-1 
              time.sleep(0.2)

فیلم عملکرد

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

قسمت بعد : آموزش کنترل سرعت و جهت استپر موتور با Raspberry Pi (آموزش رزبری پای #8)

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

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم.

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

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

دکمه بازگشت به بالا
بستن
بستن