게시됨 2026-04-01
제어서보 기구모터는 로봇공학과 전자공학의 기본 기술입니다. 이 가이드에서는 핵심 작동 원리를 설명합니다.서보 기구모터를 사용하고 명확한 단계별 프로그래밍 지침을 제공합니다. 필요한 제어 신호를 생성하고 명령을 내리는 코드를 작성하는 방법을 배웁니다.서보 기구어떤 각도로든 프로젝트가 의도한 대로 정확하게 움직일 수 있도록 보장합니다.
모든 표준 서보 모터는 다음을 사용하여 단일 신호선으로 제어됩니다.펄스 폭 변조(PWM). 서보의 위치는 전압 레벨이 아니라 20밀리초(50Hz)마다 전송되는 펄스 폭에 따라 결정됩니다.
펄스 폭 범위:제어 펄스의 범위는 일반적으로1.0ms ~ 2.0ms.
각도 매핑:이 펄스 폭은 서보의 각도 위치에 직접 매핑됩니다.
에이1.0ms 펄스일반적으로 서보에게 명령을 내립니다.0도.
에이1.5ms 펄스명령하다중앙(90도)위치.
에이2.0ms 펄스명령하다전체 스윕(180도) .
일반적인 시나리오:로봇 팔에서는 그리퍼를 제어하는 서보가 단단히 닫혀야 합니다. 일관된 1.0ms 펄스를 전송함으로써 암은 매 사이클마다 동일한 위치에 안정적으로 닫힙니다. 펄스가 약간이라도 표류하면 그리퍼가 물체를 고정하지 못할 수 있습니다.
코드를 작성하기 전에 서보를 마이크로컨트롤러(Arduino 등)에 연결하세요. 모든 표준 서보는 3선 인터페이스를 사용합니다. 서보의 데이터시트와 비교하여 배선을 확인하십시오. 여기서 오류는 실패의 가장 일반적인 원인입니다.
| 와이어 색상(일반) | 기능 | 연결 |
|---|---|---|
| 브라운 또는 블랙 | 접지(GND) | 시스템의 공통 접지에 연결합니다. |
| 빨간색 | 전원(Vcc, 4.8V~6V) | 외부 5V 전원 공급 장치에 연결합니다.매우 작은 마이크로 서보가 아닌 한 마이크로 컨트롤러의 5V 핀에서 직접 서보에 전원을 공급하지 마십시오. |
| 주황색 또는 노란색 | 신호(PWM) | PWM 지원 디지털 핀(예: 핀 9)에 연결합니다. |
일반적인 시나리오:원격 조종 자동차를 만드는 초보자는 서보를 마이크로컨트롤러의 5V 핀에 직접 연결하는 경우가 많습니다. 테스트 중에는 작동하지만 부하가 걸리면 마이크로컨트롤러가 반복적으로 재설정됩니다. 해결책은 항상 서보에 대해 별도의 적절한 전원 공급 장치를 사용하여 마이크로 컨트롤러와 서보가 공통 접지를 공유하도록 하는 것입니다.
프로그램의 핵심은 20ms마다 정확한 1.0ms ~ 2.0ms 펄스를 생성하는 것입니다. 핀을 전환하기 위해 낮은 수준의 코드를 작성할 수도 있지만, 라이브러리를 사용하는 것은 대부분의 프로젝트에서 가장 안정적이고 효율적인 방법입니다.
이는 초보자와 대부분의 응용 프로그램에 권장되는 방법입니다. 라이브러리는 백그라운드에서 모든 복잡한 타이밍을 처리합니다.
#포함하다서보 myServo; // 서보 객체 생성 void setup() { myServo.attach(9); // 9번 핀에 서보를 연결합니다. } void loop() { myServo.write(0); // 0도 명령 지령 Delay(1000); // 1초 동안 기다립니다. myServo.write(90); // 90도 명령 지령 Delay(1000); // 1초 동안 기다립니다. myServo.write(180); // 180도 명령 지연(1000); // 1초 동안 기다립니다. }
설명:
#포함하다: 라이브러리를 가져옵니다.
myServo.attach(핀): 신호에 사용할 핀을 마이크로컨트롤러에 알려줍니다.
myServo.write(각도): 위치를 명령하는 가장 간단한 방법입니다. 라이브러리는 각도(0-180)를 올바른 펄스 폭(1.0-2.0 ms)으로 자동 변환합니다.
사용myServo.write()편리하지만 각도와 펄스 폭 사이의 관계가 항상 완벽하게 선형인 것은 아닙니다. 카메라 안정화 짐벌과 같이 정확한 위치 지정이 필요한 애플리케이션의 경우 펄스 폭을 마이크로초 단위로 직접 설정할 수 있습니다.
일반적인 시나리오:액션캠용 짐벌은 완벽하게 수평을 유지해야 합니다. 서보 라이브러리의 매핑이 약간 어긋나면 카메라는 일정한 기울기를 갖게 됩니다. 을 사용하여쓰기마이크로초()기능을 사용하면 완벽한 0도 및 180도 위치에 필요한 정확한 펄스 폭을 수동으로 교정할 수 있습니다.
#포함하다서보 myServo; 무효 설정() { myServo.attach(9); } void loop() { // 펄스 폭을 마이크로초 단위로 직접 명령 myServo.writeMicroseconds(1000); // 1.0ms -> 0도 지연(1000); myServo.writeMicroseconds(1500); // 1.5ms -> 90도 지연(1000); myServo.writeMicroseconds(2000); // 2.0ms -> 180도 지연(1000); }
자연스러운 움직임을 위해 서보는 즉시 새로운 위치로 스냅되어서는 안 됩니다. 대신 원활하게 움직여야 합니다. 이는 짧은 지연을 통해 명령된 각도를 점진적으로 변경함으로써 달성됩니다.
일반적인 시나리오:사람을 향해 고개를 돌리는 로봇 머리. 서보가 즉시 새 위치로 이동하면 움직임이 부자연스럽고 기계적으로 보입니다. 부드러운 모션 알고리즘을 사용하면 로봇이 더욱 지능적이고 생생하게 보입니다.
#포함하다서보 myServo; int 위치 = 0; // 현재 위치를 저장할 변수 void setup() { myServo.attach(9); } void loop() { // 0도에서 180도까지, 한 번에 1도씩 스윕 for (pos = 0; pos = 0; pos -= 1) { myServo.write(pos); 지연(15); } }
올바른 코드가 있어도 문제가 발생할 수 있습니다. 다음은 실제 경험을 바탕으로 가장 자주 발생하는 문제와 해결 방법입니다.
| 문제 | 가장 가능성이 높은 원인 | 해결책 |
|---|---|---|
| 서보가 움직이지 않거나 흔들리지 않습니다. | 전원 공급이 부족합니다. | 전용 외부 전원 공급 장치를 사용하십시오. 전원 공급 장치의 접지가 마이크로컨트롤러의 접지에 연결되어 있는지 확인하십시오. |
| 서보가 잘못된 각도로 움직입니다. | 펄스 폭 교정 또는 라이브러리 가정이 잘못되었습니다. | 사용쓰기마이크로초()특정 서보에 대한 최소 및 최대 펄스 값을 수동으로 보정하십시오. |
| 서보가 응답하지 않지만 작동 중이었습니다. | 신호 핀 또는 배선이 손상되었습니다. | 간단한 스윕 스케치로 서보를 테스트하십시오. 작동한다면 문제는 새 코드에 있는 것입니다. 그렇지 않은 경우 배선을 검사하고 다른 신호 핀을 사용해 보십시오. |
연속 회전 서보는 움직이지만쓰기(90)멈추지 않습니다. |
이것은 표준 위치 서보가 아닌 연속 회전 서보입니다. | 연속 회전 서보의 경우 펄스 폭은 속도와 방향을 제어합니다. 1.5ms는 정지, 1.0ms는 한 방향의 최고 속도, 2.0ms는 반대 방향의 최고 속도입니다. |
서보 모터를 안정적으로 제어하려면 항상 세 가지 핵심 원칙을 기억하십시오.
1. 신호가 핵심입니다:서보의 위치는 20ms 프레임 내의 1.0ms ~ 2.0ms 펄스 폭에 의해서만 결정됩니다.
2. 전원은 별도입니다.마이크로컨트롤러는 논리 장치입니다. 서보는 전원 장치입니다. 항상 서보 전용 전원 공급 장치를 사용하십시오.
3. 라이브러리는 다음을 단순화합니다.빠른 설정을 위해 잘 확립된 서보 라이브러리를 사용하고 높은 정밀도가 필요할 때 직접 마이크로초 제어로 전환하십시오.
실행 가능한 다음 단계:
1. 스윕으로 시작하세요:외부 전원 공급 장치를 사용하여 단일 서보를 마이크로 컨트롤러에 연결하고 스윕 코드를 실행하십시오. 이를 통해 하드웨어 설정과 기본 제어가 확인됩니다.
2. 서보를 교정하세요:사용쓰기마이크로초()서보의 0° 및 180° 위치에 대한 정확한 펄스 폭을 찾고 이 값을 기록하는 기능입니다.
3. 증분 빌드:프로젝트에 한 번에 하나의 서보를 추가하십시오. 문제 해결을 단순화하기 위해 다중 서보 조정으로 이동하기 전에 단일 액추에이터를 마스터 제어합니다.
업데이트 시간:2026-04-01