رباتیک و هوافضا

آموزش پروژه محور رسپبری پای – جلسه پنجم کار با PWM

به نام خدا

آموزش پروژه محور رسپبری پای – جلسه پنجم کار با PWM

 

Raspberry-Pi-PWM

 

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

مدولاسیون پهنای پالس :

مدولاسیون پهنای پالس یا همان PWM در خیلی از پست های سایت ما توضیح داده شده است .

 

pulse-width-modulation-demo

 

در مدار بالا یک کلید را میبینید که میتواند جریان را قطع و وصل کند . اگر این کلید نیم ثانیه وصل باشد و نیم ثانیه قطع باشد میتوان گفت در کل مدت زمان روشن و خاموش شدن ، به طور میانگین نصف ولتاژ باتری به ال ای دی میرسد . این همان دیوتی سایکل ( Duty Cycle ) است . دیتوی سایکل برابر است با مدت زمان روشن بودن به کل مدت زمان روشن و خاموش بودن .

Duty Cycle =Turn ON time/ (Turn ON time + Turn OFF time)

Duty Cycle = (0.5/ (0.5+0.5)) = 50%

اگر ۰٫۲ ثانیه روشن باشد و ۰٫۸ خاموش باشد ، دیوتی سایکل ۲۰% خواهد شد . دیوتی سایکل ضربدر ولتاژ باتری ، ولتاژی است که به طور میانگین به ال ای دی میرسد . در این مثال فرکانس ما یک هرتز است . میتوان فرکانس را افزایش داد یعنی این عمل روشن و خاموش شدن به تعداد بیشتری در یک ثانیه انجام شود ، مثلا ۵۰ بار در ثانیه .

بیشتر بخوانید...  راه اندازی ماژول جی پی اس با رزبری پای

ولتاژ میانگین رسیده به LED برابر می شود با ولتاژی که در دو سر LED قرار دارد ضربدر دیوتی سایکل . به عنوان مثال در مدار بالا که به ۳ ولت وصل است میانگین ولتاژ رسیده به موتور با دیوتی سایکل مثلا %۴۰ برابر با ۱٫۲ ولت خواهد بود .

Raspberry-Pi-2-Model-B-GPIO-Layout

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

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

ما از برد رسپبری پای ۲ مدل B استفاده میکنیم هر چند که قبلا گفته شده فرق چندانی بین رسپبری پای های مختلف به خصوص ۲ و ۳ نیست . سیستم عامل ما هم رسپبین میباشد .

  • تعدادی سیم
  • مقاومت یک کیلو اهم یا ۲۲۰ اهم
  • LED
  • بردبورد
توضیحات مدار :

PWM-with-Raspberry-pi-fritzing-circuit_0

همان طور که در شکل بالا میبینید ال ای دی را به پین شماره ۳۵ رسپبری پای یعنی GPIO19 وصل کرده ایم . همان طور که قبلا گفته شد ، نمیتوانیم از این پین های رسپبری پای بیشتر از ۱۵ میلی آمپر جریان بکشیم . بنابریا برای محدود کردن جریان از مقاومت استفاده میکنیم .

توصیف عملکرد :

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

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

همچنین نام GPIO را به IO عوض میکنیم . با این کار در برنامه هر موقع که خواستیم به GPIO اشاره کنیم از کلمه IO استفاده میکنیم .

import RPi.GPIO as IO

برای اشاره کردن به پین های رسپبری پای میتونیم از شماره پایه ان یا شماره GPIO آن استفاده کنیم .

IO.setmode (IO.BCM)

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

IO.setup(19,IO.IN)

حالا باید خروجی PWM خود را تنظیم کنیم .

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

در دستور بالا کانال و فرکانس سیگنال PWM را در برد رسپبری پای تنظیم میکنیم . P یک متغیر است . ما از GPIO19 استفاده کرده ایم و فرکانس PWM را ۱۰۰ هرتز گذاشته ایم . به خاطر فرکانس بالا ( سرعت زیاد ) نمیتوانیم روشن خاموش شدن ال ای دی را ببینیم و فقط تغییر شدت نور آن را میبینیم .

بیشتر بخوانید...  جلسه چهارم : ترانزیستور ها در رباتیک

در دستور زیر سیگنال PWM شروع به کار میکند . در این خط ما دیوتی سایکل یا همان نرخ روشن بودن را مشخص میکنیم . دیوتی سایکل ۰ به معنی این است که ۰% زمان روشن است ، دیوتی سایکل ۳۰ به معنی روشن بودن در ۳۰ % زمان است و … .

p.start(DUTYCYCLE)

دستور زیر حلقه را ۵۰ بار تکرار میکند . X از ۰ تا ۴۹ میتواند افزایش یابد .

for x in range (50):

حلقه While 1 یک حلقه بی نهایت است که مدام اجرا میشود .

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

کد های برنامه :

برای دانلود کد های برنامه بر روی لینک زیر کلیک کنید .

 

دانلود فایل

 

فیلم عملکرد پروژه :

 

دیدگاه‌ها (0)

*
*