본문 바로가기
아두이노

아두이노 서보모터 활용

by SwMaker_Jun 2024. 3. 18.
728x90
반응형

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);
}

 

#include <Servo.h>  
Servo servo_1;      

void setup() {
  servo_1.attach(3); 
}

void loop() {
  servo_1.write(90); 
  delay(1000);
  servo_1.write(0);  
  delay(1000);
}

 

 

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); 
  }
}

0에서 180 사이를 천천히 움직이는 코드 예시

6. 서보모터 두개 이상 연결할 경우

      두 개의 서보모터를 아두이노에 연결하고 제어하기 위해서는 각 서보모터를 개별적으로 제어할 수 있도록

      두 개의 서보 객체를 선언해야 합니다.

     

      또한, 각 서보모터를 다른 디지털 핀에 연결하여 각각 독립적으로 제어할 수 있도록 설정해야 합니다.

      이를 통해 두 서보모터의 각도를 독립적으로 조정할 수 있습니다.

 

 

★ 여러개의 서보모터 활용시 전력 공급의 중요성

      -  전류 소모량 :  서보모터는 작동 시 상당량의 전류를 소모할 수 있습니다.  특히, 부하가 크거나 빠르게 움직일 때

                                전류 소모량이 증가합니다.

                                아두이노 보드 자체에서 제공하는 5V 전원 핀은 제한된 전류만을 제공하기 때문에 여러 개의

                                서보모터를 동시에 구동할 경우 아두이노 보드로부터 충분한 전력을 공급받지 못할 수 있습니다.   

 

      - 별도의 전원 공급 :  여러 서보모터를 사용할 경우, 아두이노 보드 대신 별도의 전원 공급 장치를 사용하는 것이

                                        좋습니다.

                                        이렇게 하면 서보모터가 필요로 하는 충분한 전류를 제공할 수 있습니다.

                                        별도의 전원 공급 장치를 사용할 때는 공급 전압이 서보모터의 작동 전압과 일치하는지

                                        확인해야 하며, 모터의 전류 소모량에 따라 적절한 전원 공급 장치를 선택해야 합니다.

 

     - 공통 접지(그라운드) 연결 : 아두이노와 별도의 전원 공급 장치를 사용할 경우, 두 시스템의 그라운드(GND)를

                                                   연결하여 공통의 접지 참조점을 만들어야 합니다.

                                                   이는 신호 라인의 노이즈를 줄이고 안정적인 작동을 보장하는 데 중요합니다.

 

728x90
반응형