본문 바로가기

라즈베리파이

6. 라즈베리파이 서보모터 제어하기

라즈베리파이 서보모터 제어하기

오늘은 라즈베리파이를 이용하여 서보 모터(Servo Motor)를 제어하는 방법에 대해서 알아봅시다.


서보 모터는 일반 DC 모터와 달리 각도 제어를 할 수 있는 모터입니다.

쉽게 생각해서 주차장 입구에서 흔히 볼 수 있는 주차장 차단기를 생각하면 됩니다. 

닫힘 상태(0도)과 열림 상태(90도)를 제어할 수 있도록 설계된 모터입니다. 

주차장 차단기

서보 모터는 180도 제어가 가능한 것이 일반적이며 360도 제어 가능한 모터도 있습니다.


우선 라즈베리파이에 서보 모터를 연결해 봅시다. 

서보 모터 내부에는 별도 기판이 들어가 있어 라즈베리파이에 직접 연결하면 됩니다.

서보 모터

1. 외부 6 volt 전원을 사용하였으며 외부 전원의 (+)극을 서보 모터의 빨간색(가운데)선과 연결

2.  라즈베리파이의 GND(Ground)와 외부 전원의 (-)극, 그리고 서버 모터의 검은색 선을 연결 

3. 마지막으로 라즈베리파이 GPIO26 핀과 서보모터의 노란색 선을 연결


연결이 다 되었으면 파이썬(Python)으로 코드를 작성해봅시다.

from gpiozero import Servo from time import sleep servo = Servo(26) while True: servo.min() sleep(2) servo.mid() sleep(2) servo.max() sleep(2)


실행해보면 서보 모터가 각도(-90도, 0도, 90도) 제어하는 것을 볼 수 있습니다. 


다음은 2초 sleep대신 연속으로 회전하는 것처럼 Code를 작성해보자.

from gpiozero import Servo from gpiozero.tools import sin_values servo = Servo(26) servo.source = sin_values() servo.source_delay = 0.1


천천히 -90도에서 90도로 회전을 반복하는 것을 볼 수 있습니다. 


지난 번 블로그에 이용하였던 버튼 입력 시 서보 모터가 회전하는 코드를 작성해보고 실행해 봅시다.

from gpiozero import Servo, Button servo = Servo(26) button = Button(24) while True: servo.min() button.wait_for_press() servo.max() button.wait_for_press()

회로 연결은 다음과 같이 연결하세요.

서버모터_버튼

여기까지 따라해 보고 잘 안되는 부분 있으면 댓글 주세요~