본문 바로가기

[라즈베리파이 3B+] PWM 사용하기

by rudals.kim 2020. 12. 27. 댓글 개
반응형

아래 테스트는 Raspbian GNU/Linux 10 (buster)에서 테스트되었습니다.

 

라즈베리파이에서 PWM을 사용하기 위해서 기존에 사용되어진 파이쎤 모듈인 RPi.GPIO를 사용하여 테스트 해 볼 예정입니다.

 

PWM은 Pulse Width Modulation의 약자로 주파수를 고정시킨채 펄스의 폭을 조절하여 평균전압을 조절하는 방식입니다.

예를들면 아래 그림과 같이 1Hz의 주파수를 갖는 시그널에서 폭을 4/4(High), 3/4, 2/4, 1/4, 0/4(Low)로 조절하여 동작시키는 방식입니다.

라즈베리파이에서 사용가능한 PWM핀은 아래와 같습니다.

아래와 같이 GPIO18(PWM0)에 LED를 연결하여 PWM 동작을 시켜 봅니다.

아래 소스코드를 사용하여 PWM 테스트를 해 보았습니다.

import RPi.GPIO as GPIO
from time import sleep

ledpin = 12
GPIO.setmode(GPIO.BOARD)		# 보드의 핀번호를 사용합니다.
GPIO.setup(ledpin,GPIO.OUT)
pi_pwm = GPIO.PWM(ledpin,1000)		# 1kHZ의 PWM 생성
pi_pwm.start(0)				
while True:
    for duty in range(0,101,1):
        pi_pwm.ChangeDutyCycle(duty) 	# 0~100까지 duty값을 변경
        sleep(0.01)
    sleep(0.5)
    
    for duty in range(100,-1,-1):
        pi_pwm.ChangeDutyCycle(duty)
        sleep(0.01)
    sleep(0.5)

 

정상적으로 PWM 시그널이 생성되어 LED가 밝아졌다 어두워졌다를 반복합니다.

반응형

댓글