
서보 모터는 정밀한 위치 제어를 위해 설계된 특수한 모터이다. 일반적인 DC 모터는 특정 속도로 계속 회전하기 때문에 바퀴나 팬과 같은 연속 회전이 필요한 곳에 적합하다. 반면, 서보 모터는 단순히 회전하는 것이 아니라 제어 신호에 따라 특정 각도로 이동하고 그 위치를 유지한다. 이러한 특성 덕분에 로봇 팔, 자동화 장치, 원격 제어 기기 등 정밀한 움직임이 필요한 분야에서 널리 사용된다.
가장 보편적이고 저렴한 서보 모터 중 하나가 SG90이며, 임베디드 시스템과 교육용 프로젝트에서 많이 사용된다. 본 블로그에서도 이 모터를 다룰 것이다.
서보 모터는 다음과 같이 세 가지 주요 부품으로 구성되어 있다.
① 작은 모터
② 기어박스(gearbox)
③ 제어 회로(control circuit)
서보 모터는 PWM 신호를 통해 제어된다. PWM 신호의 pulse width이 다음과 같이 모터의 위치를 결정한다.
위의 예시는 특정 값에 대해 표기했으나, 특정 값 간 중간값의 경우에도 그에 대응되는 각도로 이동한다.
앞서 언급했듯이, 서보 모터는 일반 DC 모터처럼 계속 회전하지 않고, PWM이 가리키는 특정 각도에 정확히 이동하여 그 위치를 유지한다. 이러한 특성 덕분에 로봇 팔의 관절처럼 정확히 특정 위치에 고정되어야 하는 곳에 적합하다.
#include "mbed.h"
PwmOut servo(PA_15);
UnbufferedSerial pc(USBTX, USBRX, 112500);
int main() {
printf("Servo Program starting\n");
servo.period_ms(20);
while (true) {
// Move the servo to 0
printf("Pos 0\n");
servo.pulsewidth_us(500);
ThisThread::sleep_for(2000);
// Move the servo to 90
printf("Pos 90\n");
servo.pulsewidth_us(1500);
ThisThread::sleep_for(2000);
// Move the servo to 180
printf("Pos 100\n");
servo.pulsewidth_us(2500);
ThisThread::sleep_for(2000);
ThisThread::sleep_for(1000);
}
}





