1. 서보모터란 ?
서보모터(Servo Motor)는 회전 각도를 정밀하게 제어할 수 있는 모터로, 로봇팔, 자동문, RC(라디오 컨트롤) 장난감 등
다양한 곳에 사용됩니다.
특히 제한된 범위 내에서 위치를 정확하게 제어해야 할 때 많이 활용됩니다.
2. 서보모터의 작동 원리
서보모터는 DC 모터, 제어 회로, 위치 센서로 구성되어 있습니다. 위치 센서는 모터의 현재 위치를 감지하고,
이 정보를 제어 회로에 전달하여 원하는 위치로 모터를 정밀하게 조정할 수 있습니다.
가. DC 모터 : 서보모터의 핵심 구성 요소로, 전기적 에너지를 기계적 에너지로 변환합니다.
나. 제어 회로 : 입력 신호에 따라 모터의 회전 속도와 방향을 제어합니다.
다. 포텐시오미터(위치 센서) : 모터 축과 연결되어 현재 모터의 위치(각도)를 감지합니다.
이 센서를 통해 모터의 현재 위치 정보를 제어 회로로 전송하여 원하는 위치로 정확히 조정할 수 있습니다.
라. 기어박스 : 모터의 회전 속도를 줄이고 토크(회전력)를 증가 시킵니다.
이를 통해 더 정밀한 위치 제어가 가능해집니다.
■ 서보모터의 작동 원리는 비교적 간단합니다. 사용자 또는 컨트롤러가 서보모터에 특정 위치(각도)를 지시하면,
제어 회로는 현재 위치 센서(포텐시오미터)로부터 모터의 현재 위치 정보를 받아,
지시된 위치와의 차이(오차)를 계산합니다. 이 오차 정보를 바탕으로 DC 모터의 회전 방향과 속도를 조정하여,
모터를 원하는 위치로 이동시킵니다. 모터가 목표 위치에 도달하면, 오차가 없어지고 모터는 멈춥니다.
https://www.youtube.com/watch?v=ej8K8fTRllc
https://www.youtube.com/watch?v=g68khnZnJKM
3. 아두이노와 서보모터의 연결
아두이노 라이브러리 중에는 `Servo.h`가 있는데, 이를 통해 손쉽게 서보모터를 제어할 수 있습니다.
- 아두이노 보드
- 서보모터
■ 연결 방법
가. 서보모터의 GND 핀을 아두이노의 GND에 연결합니다.
나. 서보모터의 전원 핀(VCC)을 아두이노의 5V에 연결합니다.
다. 서보모터의 신호 핀을 아두이노의 디지털 핀에 연결합니다. (예시 : 3번 핀에 연결)
4. 서보모터 제어
아두이노 라이브러리 활용 코드.
#include <Servo.h> // Servo 라이브러리 호출
Servo servo_1; // Servo 객체를 생성합니다. 이 객체를 사용하여 서보모터를 제어
void setup() {
servo_1.attach(3); // 서보모터 디지털 3에 연결. 이 핀을 통해 서보모터에 신호 전달
}
void loop() {
servo_1.write(90); // 서보모터를 90도 위치로 회전
delay(1000);
servo_1.write(0); // 서보모터를 0도 위치로 다시 회전
delay(1000);
}
※ 라이브러리, 클래스, 메소드
라이브러리 : <Servo.h>는 서보 모터를 쉽게 제어할 수 있도록 아두이노에서 제공하는 라이브러리입니다.
라이브러리는 특정 기능을 구현하기 위해 미리 작성된 코드의 모음이며, 여러 함수와 클래스를 포함할 수 있습니다.
Servo 클래스 : 이 라이브러리 안에는 Servo라는 클래스가 정의되어 있습니다.
이 Servo 클래스는 서보 모터와 관련된 기능(예: 각도 설정, 핀 연결 등)을 수행할 수 있는 여러 메소드를 가지고 있습니다.
따라서, Servo.h는 서보 모터를 제어하는 데 필요한 모든 코드를 포함하고 있는 라이브러리이고, 이 라이브러리 안에 있는 Servo 클래스는 서보 모터를 실제로 제어할 수 있는 객체를 생성할 수 있게 해줍니다.
ex) .attach(); , .write(); 함수는 servo_1 객체에 대한 메소드 이다.
5. 서보모터 심화
for문을 활용한 각도제어
#include <Servo.h>
Servo servo_1;
void setup() {
servo_1.attach(3);
}
void loop() {
for(int angle = 0; angle <= 180; angle++) {
servo_1.write(angle);
delay(10);
}
for(int angle = 180; angle >= 0; angle--) {
servo_1.write(angle);
delay(10);
}
}
6. 서보모터 두개 이상 연결할 경우
두 개의 서보모터를 아두이노에 연결하고 제어하기 위해서는 각 서보모터를 개별적으로 제어할 수 있도록
두 개의 서보 객체를 선언해야 합니다.
또한, 각 서보모터를 다른 디지털 핀에 연결하여 각각 독립적으로 제어할 수 있도록 설정해야 합니다.
이를 통해 두 서보모터의 각도를 독립적으로 조정할 수 있습니다.
https://swmakerjun.tistory.com/28?category=548813
센서쉴드 활용 추천
★ 여러개의 서보모터 활용시 전력 공급의 중요성
- 전류 소모량 : 서보모터는 작동 시 상당량의 전류를 소모할 수 있습니다. 특히, 부하가 크거나 빠르게 움직일 때
전류 소모량이 증가합니다.
아두이노 보드 자체에서 제공하는 5V 전원 핀은 제한된 전류만을 제공하기 때문에 여러 개의
서보모터를 동시에 구동할 경우 아두이노 보드로부터 충분한 전력을 공급받지 못할 수 있습니다.
- 별도의 전원 공급 : 여러 서보모터를 사용할 경우, 아두이노 보드 대신 별도의 전원 공급 장치를 사용하는 것이
좋습니다.
이렇게 하면 서보모터가 필요로 하는 충분한 전류를 제공할 수 있습니다.
별도의 전원 공급 장치를 사용할 때는 공급 전압이 서보모터의 작동 전압과 일치하는지
확인해야 하며, 모터의 전류 소모량에 따라 적절한 전원 공급 장치를 선택해야 합니다.
- 공통 접지(그라운드) 연결 : 아두이노와 별도의 전원 공급 장치를 사용할 경우, 두 시스템의 그라운드(GND)를
연결하여 공통의 접지 참조점을 만들어야 합니다.
이는 신호 라인의 노이즈를 줄이고 안정적인 작동을 보장하는 데 중요합니다.
'아두이노' 카테고리의 다른 글
아두이노 서보 360 회전 사용하기. (1) | 2024.04.01 |
---|---|
서보모터 함수선언과 제어 (0) | 2024.03.25 |
아두이노 배열(자료구조)로 피에조 스피커 활용하기 (3) | 2024.01.26 |
아두이노로 피에조 스피커를 사용해 소리 내기 (0) | 2021.12.07 |
아두이노 초음파센서 수업 자료 (0) | 2021.12.07 |