2015년 2학기 PULSE 4 전자물리실험 09-Servo Motor 제어 - DSU 메카트로닉스 융합공학부 -
1. 실험주제 서보 모터(Servo Motor)와 스텝핑 모터(Stepping Motor)의 작동을 통해 원리를 탐구하고 실제 생활에서의 다양한 쓰임을 조사해 본다. 아두이노를 이용하여 간단하게 작동될 수 있는 서보 모터 시스템을 구성하고 이를 구현해 본다. 2. 실험 관련 기초 이론 2.1 서보 모터(servo motor) 서보 (servo)라는 용어는 “추종하다.” 혹은 “따른다.”의 의미 명령을 따르는 모터 : 서보 모터 공작기계, CCTV 카메라, 캠코더, DVD, 프린터 등에 사용되는 모터처럼 명령에 따라 정확한 위치와 속도를 맞출 수 있는 모터 어떠한 종류의 모터라 하더라도 적당한 알고리즘과 회로를 가지는 구동시스템을 갖다 붙여서 위치와 속도를 원하는 알고리즘에 따를 수 있도록 만들면, 서보 시스템이 이루어지는 것으로 모터와 기계부와 제어구동 S/W가 결합된 제어추종시스템
2.2 서보 모터의 동작 특성 서보 모터는 일반 모터와 달리 회전 반경이 정해져 있다. 종류에 따라 다르지만 일반적으로 약 0~270도 범위의 회전각을 가지며 3개의 단자는 검은색(또는 갈색), 붉은색, 황색(또는 주황색, 흰색)이며 붉은색 선은 (+)전원, 검은색 선은 (-)전원에 연결된다. 붉은색과 갈색선은 서보 모터에 전기를 공급하는 역할을 하며, 노란색 선은 서보 모터의 동작을 제어하는 신호선이다. 서보 모터의 회전 각도는 아래 그림과 같이 PWM (펄스폭변조) 방식으로 제어된다. 서보 모터는 대략 매 20ms마다 펄스를 받게 되는데, 만약 이 펄스가 1ms동안 high이면 각은 0 이며, 1.5ms동안 high이면 중간위치에 위치하게 되고 2ms인 경우는 180도 회전하게 된다.
2.3 스테핑 모터 Stepping Motor 스텝모터는 서보 모터같이 일정 전압을 입력시켜야 회전하는 것이 아니라 펄스로 인해 동작을 하며, Resolution에 따라 다르지만 만약 10도짜리면, 한 펄스에 10도가 회전이 된다. 스텝모터의 장점은 펄스에 의해 회전이 결정되므로 제어가 쉽지만 서보 모터보다 토크가 작아서 강한 회전력을 필요로 하는 곳에는 서보 모터를 사용하는 게 좋다. 모터의 속도가 빠른데 토크가 작으면, 토크가 떨어지고 탈조현상이 일어나게 된다. 여기서 토크는 회전력을 나타내는 말이다. 상당수의 기계들은 회전력을 주고받으므로, 가장 중요한 설계요소라고 할 수 있다. 단위는 kgm 이다. 축 중심에서 수평으로 1m의 거리에 1kg의 추를 놓고 돌려서 올리는 회전력이 1kgm이다.
2.4 스테핑 모터의 동작 특성 직류 브러쉬 모터는 전극의 전압이 적용됨에 따라 연속적으로 회전하는 반면에, 스텝모터는 효과적으로 다수의 톱니모양 전자석이 금속기어를 중심으로 주변에 매치되어 있다. 이때, 전자석은 마이크로컨트롤러 (Microcontoroller) 같은 외부 제어 회로로부터 전류를 받아 작동한다. 모터의 한 축을 돌리기 위해선 일단 한 전자석이 전력을 받게 하여 기어의 톱니를 전자석으로 끌어 당기게 한다. 첫 번째 전자석에 기어의 톱니가 일직선으로 맞춰지면 기어는 서서히 다음 전자석으로 치우쳐지게 된다. 따라서 다음 전자석이 전력을 받게 되면 이전의 전자석은 꺼지게 되며, 기어의 톱니는 다음 전자석에 일직선이 되며, 이런 작용들을 반복시킨다. 이때, 회전의 각각 작용을 '스텝'이라 하며 수많은 스텝들이 전체의 회전을 만들어 낸다. 이를 통해서 모터는 정밀한 각도로 회전할 수 있다.
3. 실험 장비 및 부품 실험장비 디지털 멀티미터 1대 직류전원공급기 (5V) 부품 아두이노 UNO R3 1개 DC 서보 모터 스테핑 모터
- + 4. 실험 절차 (1) 스테핑 모터는 동작 확인을 위해 다음과 같이 연결한 후 LED의 점등 상태를 확인 해 본다.
- + GND DC 5V 입력 GND와 (-) 단자를 연결한다. (2) 서보 모터와 아두이노를 다음과 같이 연결한다.
(5) 예제 프로그램에서 SIK GUIDE CODE를 열고 CIRCUIT_08을 불러온다.
(6) CIRCUIT_08의 동작 특성을 확인해본다. #include <Servo.h> // servo library Servo servo1; // servo control object void setup() { servo1.attach(9); } void loop() { int position; servo1.write(90); // Tell servo to go to 90 degrees delay(1000); // Pause to get it time to move servo1.write(180); // Tell servo to go to 180 degrees servo1.write(0); // Tell servo to go to 0 degrees for(position = 0; position < 180; position += 2) { servo1.write(position); // Move to next position delay(20); // Short pause to allow it to move for(position = 180; position >= 0; position -= 1) { 하드웨어 선언문 서보모터를 90도 회전 시킨다. 서보 모터를 180도 회전 시킨다. 서보 모터를 원래 위치로 되돌린다. 서보 모터를 0도에서 부터 2도씩 180도까지 증가시킨다. 서보모터를 180도에서 1도씩 감소시키며 0도까지 되돌린다.
(7) 서보 모터의 구동 프로그램을 활용하여 다양한 각도를 변화시켜본다. 최대 180도 이내에서 다양한 구동을 구현해 본다. #include <Servo.h> // servo library Servo servo1; // servo control object void setup() { servo1.attach(9); } void loop() int position; servo1.write(180 delay(1000); servo1.write(0); delay(500); 서보 모터를 최대 180도 까지 회전시킨 후 다시 원래 위치로 돌린다. 이때 시간 간격을 변화시켜 0도에 위치하는 시간은 0.5초로 제어한다. 서보 모터에 도선이나 포스트 잇과 같은 주변에서 쉽게 발견할 수 있는 것을 장착하여 출입문 게이트를 구현해본다.
6. 결과 보고서(PPT) 실험제목 목적 실험부품(사진) 실험방법 실험결과 - 스테핑 모터를 돌려서 LED점등 확인 - 서보 모터의 다양한 동작을 구현