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

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

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

آموزش راه اندازی PWM در رزبری پای

در مورد کلیات Raspberry Pi قبلا خیلی توضیح داده ایم. پیشنهاد میشود حتما پیش از خواندن این آموزش، قسمت های قبلی آموزش رزبری پای را بخوانید. ما در قسمت قبلی آموزش، یک ال ای دی را به وسیله یک دکمه با واسطه گری برد رزبری پای کنترل میکردیم.

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

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

ما برای بدست آوردن PWM از رزبری پای ، ال ای دی را به پین GPIO متصل میکنیم. توضیحات پین های GPIO را در قسمت چهارم آموزش رزبری پای داده ایم.

PWM چیست ؟

ما قبلاً بارها در مورد PWM صحبت کرده ایم و بحث PWM را برای آردوینو و AVR به طور کامل آموزش داده ایم.

چرخه وظیفه چیست ؟ Duty Cycle

به تصویر بالا نگاه کنید. اگر سوئیچ به طور مداوم طی یک مدت زمان بسته باشد، ال ای دی در این مدت به صورت مداوم روشن خواهد ماند. اگر سوئیچ به مدت نیم ثانیه بسته باشد و برای نیم ثانیه دیگر باز باشد، ال ای دی فقط در نیمه اول یک ثانیه روشن خواهد شد. به نسبت روشن بودن ال ای دی در کل زمان ، چرخه وظیقه یا Duty Cycle گفته میشود. چرخه وظیفه را میتوانید به صورت زیر محاسبه کنید.

چرخه وظیفه = زمان روشن /  (زمان روشن + زمان خاموش)

چرخه وظیفه = (0.5 / (0.5 + 0.5)) = 50٪

بنابراین متوسط ​​ولتاژ خروجی 50٪ ولتاژ باتری خواهد بود.

حتما ببینید :  ADC چیست ؟ مبدل آنالوگ به دیجیتال

این حالت برای یک ثانیه اتفاق می افتد و می توانیم شاهد باشیم که LED برای نیمی از ثانیه خاموش و LED در نیمه دوم روشن است. اگر فرکانس این عمل از یک بار در ثانیه به 50 بار در ثانیه تبدیل شود، چشم انسان نمی تواند این فرکانس را ثبت کند. برای یک چشم معمولی، چراغ LED طوری بنظر میرسد که انگار فقط با نصفه ولتاژ روشن است. یعنی فکر میکنیم دارای نیمی از روشنایی اصلی است. بنابراین با کاهش بیشتر زمان روشن بودن ال ای دی، درخشندگی بسیار کمتر به نظر میرسد.

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

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

آموزش راه اندازی PWM در رزبری پای

همانطور که در شماتیک بالا میبینید، ما میخواهیم یک ال ای دی را به پین 35 (GPIO19) متصل کنیم و به پین 39 (GND) متصل میکنیم. همانطور که در قسمت های قبل گفتیم، ما نمیتوانیم بیش از 15 میلی آمپر از هر یک از پین ها بکشیم. بنابراین برای محدود کردن جریان میتوانیم یک مقاومت 220 اهم یا 1 کیلو اهم را به صورت سری به LED متصل میکنیم.

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

توضیحات کد راه اندازی PWM با Raspberry Pi

پس از اتصال همه چیز ، می توانیم Raspberry Pi را روشن کنیم تا برنامه را در PYHTON بنویسیم و آن را اجرا کنیم. ما در مورد چند فرمان که می خواهیم در برنامه 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)

دستور زیر 50 بار حلقه را اجرا می کند، x از 0 تا 49 افزایش می یابد.

for x in range (50):

while 1: برای حلقه بی نهایت استفاده می شود. با این کد، دستور های داخل این حلقه بطور مداوم اجرا می شوند.

کد کامل :

کد کامل پروژه در زیر آورده شده است. کد را در پایتون قرار دهید.

import RPi.GPIO as IO 
import time
IO.setwarnings(False)
IO.setmode (IO.BCM)
IO.setup(19,IO.OUT)
p = IO.PWM(19,100)
p.start(0)
while 1:
    for x in range (50):
        p.ChangeDutyCycle(x)
        time.sleep(0.1)
    for x in range (50):
        p.ChangeDutyCycle(50-x)
        time.sleep(0.1)

فیلم عملکرد

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

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

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

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

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

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

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