티스토리 뷰

    서보모터는 입력한 각도만큼 회전하는 모터입니다. 프로그램에 각도를 미리 지정해도 되지만, 만약 외부 입력장치를 이용한다면 실시간으로 모터를 제어할 수 있습니다. 오늘은 입력 장치 중 가장 간단한 포텐셔미터로 서보모터를 제어해 보겠습니다.


<그림 1> 아두이노, 포텐셔미터, 서보모터


포텐셔미터

    포텐셔미터(Potentiometer)는 사용자가 조작해서 내부 저항을 바꿀 수 있는 부품입니다. 흔히 가변저항이라 부르기도 합니다. 저항에 따라 받은 전압 중 일부분을 내보냅니다. 핀이 3개인데 각각 입력, 출력, GND 입니다. 아두이노의 5V를 입력으로 받았다고 가정해 보겠습니다. 포텐셔미터를 돌려 최소로 맞추면 0V가 출력되고, 최대면 5V가 출력됩니다. 이렇게 손잡이를 돌려가며 출력값을 바꿀 수 있고 이 값을 아두이노로 읽어 사용할 수 있습니다. 이번 회로에서는 모터의 동작을 제어하는 데 쓰였지만, 볼륨 조절이나 LED 밝기 조절에 쓸 수도 할 수 있습니다.

<그림 2> 포텐셔미터

(출처: 위키피디아)


완성된 회로


<그림 3> 포텐셔미터로 서보모터 제어하기 회로



완성된 코드

#include <Servo.h> //servo motor library
Servo servo;

int potentio = 0;  //Get potential meter input at A0
int val;

void setup() {
  servo.attach(9);  //Servo motor control with pin9  
}

void loop() {
  val = analogRead(potentio);
  val = map(val, 0, 1023, 0, 180); //mapping 0-1023 potentiometer input to 0-180 degree servo motor angle
  servo.write(val); 
  delay(15);    
}

    코드 중간에 map 함수가 나옵니다. 두 범위 값을 대응시켜 주는 함수 입니다. 아두이노는 아날로그 핀으로 입력된 전압을 1023으로 나누어 그 크기를 읽습니다. 서보모터는 0-180중 입력된 각도에 맞춰 돌아 갑니다. (0 : 1023 = 0 : 180)으로 맞추고 나면 아날로그에 입력된 값에 맞춰 비례적으로 서보모터를 돌릴 수 있습니다.

작동 모습

<그림 4> 포텐셔미터를 돌려 서보모터 각도를 조절하는 모습


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함