Develop Note

[RaspberryPi3] Servoblaster를 이용한 서보 모터 제어 본문

개발 (Ko)/Raspberry Pi

[RaspberryPi3] Servoblaster를 이용한 서보 모터 제어

Chalsu 2017. 10. 28. 15:37


라즈베리파이3에서 Servoblaster를 이용해 서보 모터를 제어하는 방법을 정리한다.



0. Pan-Tilt 서보 모터 (SG90 * 2)


서보 모터는 다음과 같이 두 대를 결합하여 pan tilt 형식으로 사용 가능한 제품을 사용하였다.




1. ServoBlaster 설치


* 관련 링크: 

https://github.com/richardghirst/PiBits/tree/master/ServoBlaster


ServoBlaster는 라즈베리파이용 소프트웨어로, GPIO Pin들을 통해 여러 개의 서보 모터를 제어할 수 있게 하는 인터페이스를 제공한다.



// ServoBlaster 설치
$ git clone https://github.com/richardghirst/PiBits
$ cd PiBits/ServoBlaster/user/
$ sudo make install

// Servoblaster 데몬 실행
$ sudo ./servod

Board model:                     2
GPIO configuration:            P1 (40 pins)
Using hardware:                PWM
Using DMA channel:              14
Idle timeout:             Disabled
Number of servos:                8
Servo cycle time:            20000us
Pulse increment step size:      10us
Minimum width value:            50 (500us)
Maximum width value:           250 (2500us)
Output levels:              Normal

Using P1 pins:               7,11,12,13,15,16,18,22

Servo mapping:
     0 on P1-7           GPIO-4
     1 on P1-11          GPIO-17
     2 on P1-12          GPIO-18
     3 on P1-13          GPIO-27
     4 on P1-15          GPIO-22
     5 on P1-16          GPIO-23
     6 on P1-18          GPIO-24
     7 on P1-22          GPIO-25


데몬을 실행하면 위와 같이 각 GPIO 에 mapping된 서보 모터와 제어 가능한 범위에 대한 정보를 출력한다.

사용자에 따라 제어 범위와 값을 직접 수정/사용할 수 있다.



2. 서보 모터 연결


각 모터는 다음과 같이 점퍼 케이블 6개를 이용해 각각 연결하였다.







3. 서보 모터 제어


제어 방법은 간단하다. 

먼저 Servoblaster 데몬을 실행했을 때 출력되는 정보 중 Servo mapping에서 연결한 GPIO에 대한 pin 정보를 확인한다.


여기에서는 두 서보 모터를 각각 GPIO 17, 18번에 연결했으므로

제어할 번호는 1, 2번이 된다.


제어 가능 범위는 50(min)에서 250(max) 이며, 퍼센트(0~100%)로도 제어 가능하다.


// 1번 -> GPIO17 연결 모터 제어
$ echo 1=50% > /dev/servoblaster
$ echo 1=200 > /dev/servoblaster
// 2번 -> GPIO18 연결 모터 제어
$ echo 2=43% > /dev/servoblaster
$ echo 2=140 > /dev/servoblaster


입력한 대로 모터가 움직이는지 확인해 본다.


* 모터 조립 상태에 따라 최대/최소 제어 범위가 맞지 않을 수 있으므로,

중간 값부터 차례로 제어해 본 다음 최대/최소 값으로 제어해 본다.

범위 이상의 값으로 계속 제어할 경우 서보 모터에 무리가 갈 수도 있다고 한다.



Comments