이번 포스팅에서는 GPIO 모듈의 PWM을 이용한 서보모터 제어에 대해 정리해 보겠습니다.
이번에 사용할 서보모터는 아래와 같습니다.
서보모터의 연결선이 주황색, 빨간색, 갈색으로 되어 있습니다.
주황색은 GPIO 18번에 연결하고 빨간색은 VCC(5V), 갈색은 GND에 연결하도록 하겠습니다.
아래 이미지처럼 각각의 선을 보드 확장 쉘드에 연결해 주었습니다.
이제 파이썬으로 서보모터 제어를 위한 소스코드를 작성해 보겠습니다.
각도 제어를 위해 기준이 되는 주파수는 50hz의 신호로 Duty Cycle을 아래와 같이 설정해 주겠습니다.
주파수(hz) | Duty Cycle | 각도 변이 |
50 | 2.5 | 0 |
7.5 | 90 | |
12.5 | 180 |
import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
#서보모터 제어핀 설정
SERVO_PIN = 18
#서보모터 출력 설정
GPIO.setup(SERVO_PIN, GPIO.OUT)
#PWM 인스턴스 생성 및 주파수 50hz 초기화 설정
servo = GPIO.PWM(SERVO_PIN, 50)
#Duty Cycle 0으로 시작
servo.start(0)
try:
while True:
servo.ChangeDutyCycle(7.5) #90도
time.sleep(1)
servo.ChangeDutyCycle(12.5) #180도
time.sleep(1)
servo.ChangeDutyCycle(2.5) #0도
time.sleep(1)
except KeyboardInterrupt:
pass
servo.stop( )
GPIO.cleanup( )
실제 위 소스코드를 실행해 보겠습니다.
90도, 180도, 0도로 서보모터가 잘 회전하는 것을 확인할 수 있었습니다.
PWM을 통한 서보모터 제어에 대해서 정리해 보았습니다.
감사합니다.
'라즈베리파이&아두이노' 카테고리의 다른 글
PIR 센서(HC-SR501) 적외선 인체감지 센서 (1) | 2021.01.05 |
---|---|
PWM LED 제어하기 (1) | 2020.12.25 |
바운싱(Bouncing) 현상 방지 (0) | 2020.12.23 |
라즈베리파이 고정 IP설정하기 (0) | 2020.12.07 |
라즈베리파이 4 듀얼 팬 GPIO 확장 보드 슈퍼 냉각 팬 사용 후기 (0) | 2020.12.05 |
댓글