> 업계 통찰 >서보 기구
기술 지원

서보 모터용 PWM 신호 제어: 완벽한 프로그래밍 가이드

게시됨 2026-04-02

이 가이드에서는 표준을 제어하는 ​​방법을 설명합니다.서보 기구펄스 폭 변조(PWM) 신호를 사용하는 모터. 설정하는 데 필요한 정확한 PWM 매개변수(주기, 펄스 폭, 듀티 사이클)를 학습합니다.서보 기구0도에서 180도까지 원하는 각도로. 지침은 널리 사용되는 마이크로컨트롤러 플랫폼을 기반으로 하며 일반적인 50Hz 아날로그 및 디지털로 검증되었습니다.서보 기구취미 로봇 공학에 사용됩니다. 단계별 코드 예제와 교정 방법을 따르면 지터나 드리프트 없이 서보를 안정적으로 배치할 수 있습니다.

01서보 제어를 위한 핵심 PWM 매개변수

표준 서보 모터에는 다음과 같은 고정 특성을 갖는 PWM 신호가 필요합니다.

신호주기: 20ms(밀리초), 이는 다음의 주파수와 같습니다.50Hz.

펄스 폭(높은 시간):에 따라 다름1.0ms그리고2.0ms.

듀티 사이클= (펄스 폭 / 20ms) × 100%.

원하는 서보 각도 펄스 폭 듀티 사이클(대략)
0°(최소) 1.0ms 5.0%
90°(중립) 1.5ms 7.5%
180°(최대) 2.0ms 10.0%

참고: 일부 서보는 확장된 범위에 대해 0.5ms~2.5ms를 수용할 수 있지만 표준 1.0~2.0ms는 거의 모든 일반 서보에 작동합니다.

02PWM 출력 프로그래밍 - 단계별

다음 코드 구조는 하드웨어 PWM을 제공하는 모든 플랫폼(예: Arduino, STM32, ESP32, 하드웨어 PWM이 있는 Raspberry Pi)에서 작동합니다. 우리는 일반적인 의사 코드를 사용하므로 이를 특정 마이크로 컨트롤러에 적용할 수 있습니다.

2.1 PWM 주변 장치 설정

PWM 지원 핀을 선택하세요.

PWM 주파수를 다음으로 설정합니다.50Hz(기간 = 20ms).

더 세밀하게 제어하려면 해상도를 최소 8비트(0~255) 또는 16비트로 설정하세요.

2.2 원하는 각도를 듀티 사이클 값으로 변환

8비트 PWM의 경우(0 = 0% 듀티, 255 = 100% 듀티):

1.0ms에 대한 듀티 사이클 = (1.0 / 20.0) × 255 = 12.75 → 반올림13

1.5ms에 대한 듀티 사이클 = (1.5 / 20.0) × 255 = 19.125 → 반올림19

2.0ms에 대한 듀티 사이클 = (2.0 / 20.0) × 255 = 25.5 → 반올림26

모든 각도(0~180°)에 대한 일반 공식:

pulse_width_ms = 1.0 + (각도 / 180.0)(2.0 - 1.0) 듀티_값 = (펄스폭_ms / 20.0)(2^해상도 - 1)

8비트 해상도 및 45°의 예:

舵机pwm控制源码_pwm控制舵机程序_pwm波控制舵机转动程序

pulse_width_ms = 1.0 + (45/180)1.0 = 1.25ms

의무값 = (1.25/20)255 = 15.9375 → 정수16

2.3 PWM 레지스터에 듀티 값 쓰기

// 의사코드 pwm_set_주파수(PWM_PIN, 50); // 50Hz pwm_set_solution(PWM_PIN, 8); // 8비트 정수 각도 = 90; // 목표 각도 int Duty = map(angle, 0, 180, 13, 26); // 미리 계산된 최소/최대 듀티 사용 pwm_write(PWM_PIN, 듀티);

2.4 실제 교정(지터 제거)

두 개의 서보가 정확히 동일하지 않기 때문에 항상 실제 펄스 폭 제한을 측정하십시오.

1. 1.0ms 펄스를 기록하고 서보 위치를 관찰합니다. 물리적 정지점에 도달하지 못한 경우 이동이 멈출 때까지 펄스 폭을 0.05ms 단위로 늘립니다(다음과 같이 기록).내_펄스).

2. 2.0ms 펄스를 기록합니다. 마찬가지로 전체 회전을 제공하는 최대 펄스 폭을 찾습니다(최대_펄스).

3. 이론적인 1.0/2.0 ms 대신 코드에서 측정된 값을 사용하십시오.

일반적인 경우: 일반적인 Tower Pro SG90 마이크로 서보 필요min_pulse = 0.9ms그리고최대 펄스 = 2.1ms실제 0~180° 범위의 경우. 항상 서보 모델별로 보정하십시오.

03완전한 예제 코드(Arduino 스타일, 하드웨어 독립적)

// PWM을 사용한 서보 제어 – 외부 라이브러리가 필요하지 않습니다. // 하드웨어 PWM이 있는 모든 보드(예: Uno, Nano, Mega, ESP32)에서 작동합니다. const int ServoPin = 9; // PWM 핀 const int freq = 50; // 50Hz const int 해상도 = 8; // 8비트(0-255) // 사전 교정된 펄스 제한(마이크로초 단위) const int minPulseUs = 1000; // 1.0ms = 1000μs const int maxPulseUs = 2000; // 2.0 ms = 2000 µs void setup() { // PWM 구성 ledcSetup(0, freq, 해상도); // 채널 0 ledcAttachPin(servoPin, 0); } void setServoAngle(int angle) { // 각도를 0-180으로 제한 angle = constrain(angle, 0, 180); // 각도를 펄스 폭(마이크로초)으로 변환합니다. int pulseUs = minPulseUs + (각도(maxPulseUs - minPulseUs)) / 180; // 펄스 폭을 듀티 사이클(0-255)로 변환 int Duty = (pulseUs255) / 20000; // 20000 µs = 20 ms 주기 ledcWrite(0, Duty); } 무효 루프() { setServoAngle(0); // 0°로 이동 Delay(1000); setServoAngle(90); // 90°로 이동 Delay(1000); setServoAngle(180); // 180°로 이동 Delay(1000); }

04일반적인 PWM 서보 문제 해결

문제 원인일 가능성이 가장 높음 해결책
서보가 움직이지 않습니다 잘못된 PWM 주파수(50Hz 아님) 주파수를 정확히 50Hz로 설정
육포/경련 동작 전원 공급 부족 별도의 5V 공급 장치를 사용하십시오(예: 4×AA 배터리 또는 5V/2A 조정기).
부정확한 각도 이론적인 펄스 제한은 실제 서보와 다릅니다. 교정(2.4단계)을 수행하고 측정된 최소/최대 펄스를 사용합니다.
서보가 윙윙거리지만 회전하지 않습니다. 듀티 사이클 분해능이 너무 낮습니다(PWM 해상도를 10비트 또는 12비트로 높입니다.
0°에서 90° 사이에서만 움직입니다. 신호 주기가 너무 짧거나 펄스 폭 범위가 일치하지 않습니다. 주기 = 20ms이고 1.0~2.0ms 사이에 펄스를 보내는지 확인합니다.

05안정적인 서보 제어를 위한 실행 가능한 권장 사항

1. 항상 각 서보를 개별적으로 교정하십시오.– 동일한 모델의 두 서보라도 ±0.1ms의 차이가 있을 수 있습니다. 0.5ms에서 2.5ms까지 스윕하는 간단한 테스트 스케치를 작성하고 0°와 180°에 대한 정확한 펄스 폭을 기록해 두십시오.

2. 별도의 전원 공급 장치를 사용하십시오.– 마이크로 컨트롤러의 5V 핀에서 직접 서보에 전원을 공급하지 마십시오(전류 스파이크로 인해 보드가 재설정될 수 있음). 5V/2A 조정 공급 장치 또는 4×NiMH 배터리(4.8V)가 안정적으로 작동합니다.

3. 100~470μF 전해 커패시터 추가서보에 가까운 서보의 전원 단자 전체에 걸쳐. 이는 모터의 갑작스러운 시동으로 인한 전압 강하를 흡수합니다.

4. 소프트웨어 지연 방지서보가 움직이는 동안. 프로그램이 다른 작업을 처리할 수 있도록 비차단 타이밍(예: millis() 기반 상태 머신)을 사용하세요.

5. 고정밀 애플리케이션용(예: 로봇 팔), 교정된 지점 사이에 16비트 PWM 타이머와 선형 보간을 사용합니다. 루프를 닫으려면 10비트 아날로그 피드백 전위차계를 추가하는 것도 고려해 보세요.

핵심 테이크아웃: 주파수를 50Hz로 고정하고 각도를 1.0~2.0ms 펄스 폭으로 매핑하면 PWM을 사용하여 서보를 제어하는 ​​것은 간단합니다. 그러나 실제 신뢰성은 적절한 교정, 적절한 전력, 이론적 값이 아닌 측정된 한계 사용에서 비롯됩니다. 섹션 2.4에 설명된 보정 방법을 통합하는 모든 새 서보에 적용하면 프로젝트가 매번 부드럽고 정확한 모션을 얻을 수 있습니다.

업데이트 시간:2026-04-02

미래에 힘을 실어주다

귀하의 제품에 적합한 모터 또는 기어박스를 추천하려면 Kpower 제품 전문가에게 문의하십시오.

케이파워에 메일보내기
문의 제출
WhatsApp 메시지
+86 0769 8399 3238
 
kpower지도