오늘은 아두이노에서 서보모터 (TG9e) 를 작동시켜 보도록 하겠습니다.
서보모터는 회전각도를 제어할 수 있는 모터입니다.
제가 가지고있는 서보모터 TG9e 입니다.
각도제어를 하는 서보모터는 내부에 가변저항이 포함되어 있어 회전에 따라 저항값이 변하게 됩니다. 이를 사용하여 서보모터는 비교적 정확한 회전각을 출력하게 됩니다.
서보모터의 제어에는 PWM 파형이 사용됩니다. 서보모터 제어의 주기는 20 ms 마다 이루어지며 펄스의 길이로 각도제어를 하게 됩니다.
이때 보통의 서보모터는 1 ms 일때 반시계 방향의 최대각을 출력하고, 2 ms 일때 시계방향의 최대각을 출력합니다.
※아두이노 구현
보드는 아두이노 우노(UNO)를 사용하여 구현하였습니다.
서보모터 ( TG9e )의 선을 보면 3개의 선을 볼 수 있습니다. 검정색, 빨강색, 노란색으로 이루어져 있는데
검정색은 Gnd, 빨강색은 5V에 연결하여 전원을 공급하는 선이며, 노란색은 아두이노를 통해 서보모터를 제어하는 선으로 아두이노의 9번핀을 사용하였습니다.
또한 서보의 각도를 조절할 수 있도록 하기 위해 가변저항을 하나 사용하여 이를 통해 서보모터의 각도를 결정하였습니다. 가변저항의 출력은 전압값을 입력받기 위해 A0 핀에 연결하였습니다.
- 아두이노 소스 코드
#include <Servo.h>
Servo servo1;
int angle;
void setup() {
servo1.attach(9);
servo1.write(90);
Serial.begin(9600);
}
void loop() {
angle = map(analogRead(0),0,1023,0,180);
servo1.write(angle);
delay(10);
}
아두이노에서는 서보모터를 구동하기위한 라이브러리를 제공하고 있습니다. <Servo.h> 라이브러리로 이를 사용하면 간단하게 서보모터를 제어할 수 있습니다. 또한 서보모터의 각도는 가변저항의 출력을 통해 결정하는데, analogRead 함수는 0~1023으로 반환합니다. 서보모터의 제어는 0~180으로 이루어지므로 0~1023을 0~180으로 변환해주는 함수인 map 함수를 사용하고 서보모터에 입력하였습니다.
- 아두이노 동작
'아두이노' 카테고리의 다른 글
아두이노를 위한 조이스틱 사용법 (0) | 2016.12.17 |
---|---|
아두이노를 위한 초음파센서 (HC-SR04) 사용법 (0) | 2016.12.17 |
아두이노를 위한 RGB LED 사용법 (0) | 2016.12.15 |