아두이노로 서보모터를 제어해보자.
서보모터는 주로 각도를 정밀하게 움직일 필요가 있을 때 사용한다.
서보 (Servo)의 어원은 라틴어의 Servue로서 노예라는 의미를 가지고 있으며, 목표치에 대한 위치, 방위, 자세 등의 제어가 자동화되어 있는 장치 이름에 붙여지곤 한다. 이와 같이 서보모터는 모터와 기어박스 그리고 제어회로로 구성되어있어, 특정 위치로 이동하거나, 특정한 수치(속도 등)만큼 가동시킬 때, 모터로 부터의 피드백을 통해 정확하게 제어할 수 있는 구조를 갖추고 있는 모터로 자동화 생산 시스템, 로봇, 장난감, 가전제품 등 광범위하게 쓰이고 있다.
PWM 제어
서보 모터의 제어 방법은 PWM(Pulse Width Modulation:펄스 폭 변조) 방식이다.
내장된 타이머카운터를 이용하여 전압이 인가되는 주기를 조정하고 그에 따라 모터나 다른 액츄에이터들이 작동하게 된다. 90도를 회전시키기 위해서는 1.5ms동안 펄스폭을 변화시키면 된다.
서보모터는 세 종류의 전선이 있는데, 보통 빨간색(또는 주황색)이 VCC(5V), 노란색(또는 흰색)이 신호선, 검은색(또는 갈색)이 GND이다. 각각에 맞게 연결해주면 된다.
회로도
코드
코드 보기#include <Servo.h> //서보 라이브러리 호출 Servo dumpling; // 서보 변수 이름 설정 int pos = 0; // 서보 위치를 저장할 변수를 선언 void setup() { dumpling.attach(9); // 9번 핀에 서보 연결 } void loop() { for(pos = 0; pos < 180; pos += 1) // 0도에서 180도로 1도씩 이동 { dumpling.write(pos); // 'pos'변수의 위치로 서보를 이동 delay(20); // 20ms 대기 } for(pos = 180; pos>=1; pos-=1) // 180도에서 0도로 1도씩 이동 { dumpling.write(pos); // 서보를 반대방향으로 이동 delay(20); // 20ms를 대기 } }
실습 사진
실습 동영상
(참고사이트: https://kocoafab.cc/learn/5 )
Leave a Reply
You must be logged in to post a comment.