[아두이노] [강좌] 41. 서보 모터 (2) - Servo 함수 알아보기

대망의 모터 시리즈 완결편. 두둥.


brown_and_cony-8 




서보 모터도 스텝 모터와 마찬가지로 아두이노에서 라이브러리를 제공하고 있다.

 

 

 

스케치 툴의 파일예제→Servo→Sweep” 파일을 선택해보자기본 동작은 이전 강좌에서 구현한 예제와 동일하다. 0°에서 180°를 왔다 갔다 하는 것



 Servo→Sweep.ino

 

 #include <Servo.h>

 

 Servo myservo;  // create servo object to control a servo

 

 int pos = 0;    // variable to store the servo position

 

 void setup()

 {

   myservo.attach(9, 600, 2400);  // attaches the servo on pin 9 to the servo object

 }

 

 void loop()

 {

   for(pos = 0; pos <= 180; pos += 1) // goes from 0 degrees to 180 degrees

   {                                  // in steps of 1 degree

     myservo.write(pos);              // tell servo to go to position in variable 'pos'

     delay(15);                       // waits 15ms for the servo to reach the position

   }

   for(pos = 180; pos>=0; pos-=1)     // goes from 180 degrees to 0 degrees

   {                               

     myservo.write(pos);              // tell servo to go to position in variable 'pos'

     delay(15);                       // waits 15ms for the servo to reach the position

   }

 }


 



서보 라이브러리를 사용하기 위해 “Servo.h” 파일을 추가했고, Servo 클래스 타입인 ‘myservo’라는 객체를 선언했다그리고 서보 위치를 저장하는 변수 ‘pos’를 선언한 후 0으로 초기화 해준다.

 

setup() 함수에서는 ‘myservo’ 객체를 초기화해주는 attach() 함수를 호출한다.

 


Servo.attach(pin)

 

Servo.attach(pin, min, max)



Servo 객체의 초기화 함수다.



 

 매개 변수

 

 pin : 신호를 출력할 핀 번호를 지정한다여기서는 9번 핀을 지정했다.

 

 min : 최소 펄스 폭모터가 시계 반대 방향으로 최대한 이동했을 때의 신호 시간을 설정한다설정하지 않을 경우 기본으로 544 마이크로초가 설정된다.

 

 max : 최대 펄스 폭모터가 시계 방향으로 최대한 이동했을 때의 신호 시간을 설정한다설정하지 않을 경우 기본으로 2400 마이크로초가 설정된다


 



min max 값은 줘도 되고 안 줘도 됨.

 

참고로 pin 번호는 스케치 툴 버전이 0016 이후라면 어느 핀을 지정해도 상관 없지만 이전 버전이라면 9번 핀과 10번 핀만 사용할 수 있다.

 


서보 라이브러리는 아두이노 메가(Mega 2560/ADK) 이 외의 보드인 경우 최대 12개의 모터를 제어할 수 있고메가의 경우는 48개까지 제어할 수 있다. 메가 이 외의 보드에서즉 우노(Uno) 등의 보드에서 서보 라이브러리를 사용할 경우 9번 핀과 10번 핀을 PWM 핀으로 사용할 수 없다동일한 타이머를 사용하기 때문에메가의 경우 서보 모터 개수가 12개 이하라면 PWM 핀과 상관없이 사용할 수 있고 12개 이상을 사용한다면 11, 12번 핀을 PWM 기능으로 사용할 수 없다.

 

 

다시 예제 소스로 돌아가서.

 

 

그리고 loop() 함수에서는 for() 반복문을 사용하여 0°에서 180°까지 회전한 후 다시 0°로 돌아온다회전 각도 설정을 위해 사용된 함수는write() 함수.



 

Servo.write(angle)



서보 모터의 위치를 지정한다. 지정한 위치에 해당하는 신호가 핀으로 출력된다.



 

 매개 변수

 

 angle : 회전 각도일반 서보 모터의 회전 각도를 설정하지만서보 모터가 회전 가능한 서보 모터일 경우 90°에서 정지, 0°에서 최고 속도로 회전하며 180°에서는 반대 방향으로 회전한다. 


 


회전 가능한 서보 모터란서보 방식으로 제어되는 DC 모터 등을 말한다. DC 모터를 제어하기 위한 모터 드라이버 중에 서보 방식을 사용하는 애들이 있음얘들을 사용할 경우에 0을 주면 최고 속도로 회전하며, 180을 주면 반대 방향으로 최고 속도로 회전한다. 45를 주면 중간 정도의 속도로 회전하겠지.

 


 

Servo.writeMicroseconds(us)

 


서보 모터의 신호를 각도가 아닌 마이크로초 단위로 지정한다대부분의 서보 모터의 경우 1000 ~ 2000 사이의 값을 지정하면 된다.



 

 매개 변수

 

 us : 서보 제어 신호 폭(=시간). 마이크로초 단위.


 

 



Servo.detach()


Servo.attach() 함수로 설정한 핀으로 출력하던 신호를 중단하고 기능을 해제한다. 매개 변수는 엄슴.

 


서보 라이브러리를 사용할 때 Servo.write() 함수나 Servo.writeMicroseconds() 함수를 사용해서 신호를 출력하면 Servo.detach() 함수가 호출될 때까지 계속해서 출력된다는 것을 기억할 것.

 



아두이노 라이브러리는 참 잘 만들었어만든 사람 만나면 궁디 팡팡 해주고 싶다.

 


지난 시간에 설명한대로서보 모터는 특히 전류를 많이 필요로 하므로 꼭 외부 전원을 연결해주자서보 모터의 전원 핀에 외부 전원을 바로 연결해도 되고아두이노 보드에 외부 전원을 연결한 후 VIN 핀에서 모터 전원으로 연결해도 된다신호는 당연히 아두이노 핀이랑 연결하면 되고외부 전원의 GND와 아두이노 보드의 GND는 연결되어야 한다.



 

 

모터 설명은 여기까지바바이.

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기

임베디드 보드

번호 제목 글쓴이 날짜 조회수
118 아두이노 ESP32 Analog Inputs (ADC) +4 icon 양재동메이커 02-12 15,949
117 아두이노 TIP : Serial의 Port가 Open 시점 확인 icon 양재동메이커 01-21 12,849
116 아두이노 ESP32 Boot Mode icon 양재동메이커 12-28 12,641
115 아두이노 아두이노 에러 리스트(Arduino Error list) icon 양재동메이커 11-24 17,577
114 아두이노 ESP32 main.cpp +1 icon 양재동메이커 11-19 13,012
113 아두이노 ESP32 EEPROM 와 IR Remote icon 양재동메이커 08-06 12,917
112 아두이노 Learn ESP32 icon 양재동메이커 06-25 12,491
111 라즈베리 파이 라즈베리 파이 (Raspberry Pi) 기초 icon 양재동메이커 06-19 13,923
110 라즈베리 파이 (동영상 강의) 라즈베리 파이 강좌 Link icon 양재동메이커 06-17 13,083
109 STM32 / MBED [MED] Switch debouncing icon HellMaker 12-30 15,027
108 기타 [타이젠] 아두이노의 16x2 LCD Display라이브러리 LiquidCrystal_I2C의 타이젠 포팅 icon 양재동메이커 09-15 14,629
107 기타 [타이젠] GPIO의 디지탈 출력과 입력 인터럽트의 C++ Class 제작 icon 양재동메이커 09-12 14,112
106 마이크로비트 서보 모터 icon HellMaker 09-03 13,936
105 마이크로비트 아날로그 온도센서 (마이크로 비트 센서 활용) icon HellMaker 09-01 14,454
104 마이크로비트 터치센서 (마이크로 비트 센서 활용) icon HellMaker 09-01 13,546
103 마이크로비트 디지털 홀 센서 (마이크로 비트 센서 활용) icon HellMaker 08-29 12,715
102 마이크로비트 리니어 홀 센서 (마이크로 비트 센서 활용) icon HellMaker 08-29 12,246
101 마이크로비트 불꽃 감지 센서 (마이크로 비트 센서 활용) icon HellMaker 08-26 12,604
100 마이크로비트 로터리 엔코더 (마이크로 비트 센서 활용) icon HellMaker 08-25 12,739
99 마이크로비트 2컬러 LED(3mm) (센서 활용) icon HellMaker 08-22 12,714