کنترل پایه ها با PWM

  • مدرس: علی بیگدلی
  • تاریخ انتشار: Aug 25, 2020

PWM چیست؟ PWM مخفف Modulation Width Pulse می باشد و این تکنیک برای کنترل روشنایی LED، کنترل سرعت موتور DC، کنترل موتور سروو یا جایی است که شما باید از طریق آن به خروجی های آنالوگ بپردازید. پین Raspyberry PI GPIO یا ما 3.3V (هنگامی که HIGH تبدیل می شود) یا 0V (هنگامی که تبدیل LOW) به ما می دهد و خروجی سیگنال موج مربعی است. بنابراین اگر می خواهیم یک LED را کم کنیم، ما نمی توانیم ولتاژ بین 0 و 3.3V را از پین GPIO بگیریم، اما می توانیم زمان ON و OFF سیگنال را تغییر دهیم. اگر مدت زمان ON و OFF را به اندازه کافی تغییر دهیم، روشنایی رهبری تغییر خواهد کرد. قبل از رفتن به ادامه، در مورد برخی از شرایط مرتبط با PWM صحبت کنید. TON (در زمان): زمانی که سیگنال بالا است، زمانی است. TOFF (زمان خاموش): این زمانی است که سیگنال کم است. Period: این مقدار در زمان و زمان خاموش است. Duty cycle : این درصد زمانی است که سیگنال در طول مدت دوره بالا بود.

بنابراین در فرکانس کاری 50٪ و فرکانس 1Hz، چراغ به مدت نیم ثانیه بالا خواهد رفت و برای نیم ثانیه دیگر پایین خواهد بود. اگر ما فرکانس را به 100Hz افزایش دهیم (100 بار ON و OFF در هر ثانیه)، سپس منجر به درخشش نوری توسط چشم انسان می شود. raspberry pi و PWM کتابخانه 'RPI.GPIO' برای Raspberry Pi دارای عملکردی است که ما می توانیم برای PWM استفاده کنیم. برای این کار ابتدا باید یک شی را ایجاد کنیم که در آن پارامترهای پین GPIO و فرکانس مورد نظر را می خواهیم استفاده کنیم. در دستور زیر، ما یک شیء از نام "pwm" ایجاد کردیم و سپس از تابع از کتابخانه نام بردیم.

pwm = GPIO.PWM(21, 100)

سپس ما باید PWM را شروع کنیم. برای شروع PWM، باید چرخه کار را بدهیم. در دستور زیر، من از چرخه کاری 50٪ استفاده کرده ام.

pwm.start(50)

اگر می خواهید چرخه کار را تغییر دهید، می توانید از دستور زیر استفاده کنید.

pwm.ChangeDutyCycle(80)

اگر می خواهید فرکانس را تغییر دهید، سپس از دستور زیر استفاده کنید.

pwm.ChangeFrequency(1000)

برای توقف PWM، از دستور زیر استفاده کنید.

pwm.stop()

LED را با تیره تمشک بین GPIO 21 و زمین از طریق مقاومت 220 اهمی وصل کنید. مثبت LED (پایه طولانی LED) باید به GPIO 21 متصل شود و منفی را که منجر به مقاومت 220 اونس شده است وصل کند و سپس انتهای دیگر مقاومت را به زمین وصل کند. ما می توانیم 15 میلی آمپر را از طریق هر پین GPIO از تمشک به دست بیاوریم تا این جریان را از مقاومت در برابر LED استفاده کنیم.

قطعه کد تست:

 

 # Importing RPi library to use the GPIO pins
import RPi.GPIO as GPIO
# Importing sleep from time library
from time import sleep
# Initializing the GPIO pin 18 for LED
led_pin = 18
# We are using the BCM pin numbering
GPIO.setmode(GPIO.BCM)          
# Declaring pin 18 as output pin
GPIO.setup(led_pin, GPIO.OUT)   
 # Created a PWM object
pwm = GPIO.PWM(led_pin, 100)   
 # Started PWM at 0% duty cycle
pwm.start(0)                   
try:
    # Loop will run forever
    while 1:                   
        # This Loop will run 100 times
        for x in range(100):    
           # Change duty cycle
            pwm.ChangeDutyCycle(x)
            # Delay of 10mS
            sleep(0.01)  
        # Loop will run 100 times; 100 to 0
        for x in range(100,0,-1):
            pwm.ChangeDutyCycle(x)
            sleep(0.01)
# If keyboard Interrupt (CTRL-C) is pressed
except KeyboardInterrupt:
    # Go to next line
    pass        
# Stop the PWM
pwm.stop()      
# Make all the output pins LOW
GPIO.cleanup()
ثبت دیدگاه
نام *
ایمیل*
دیدگاه *
captcha
0دیدگاه