> 업계 통찰 >커스텀 드라이브
기술 지원

51 마이크로컨트롤러 드라이브 서보 설정 가이드

게시됨 2026-04-29

0151 마이크로컨트롤러가 스티어링 기어를 구동할 수 있나요? 어떻게 설정하나요?

하드웨어 조건이 충족되어야만 드라이브가 구현될 수 있습니다. 51 마이크로 컨트롤러는 펄스 폭 변조 신호인 표준 PWM을 출력하고 조향 각도를 제어할 수 있습니다. 핵심 설정 단계는 20ms 주기와 0.5ms ~ 2.5ms 범위의 하이 레벨 시간을 갖는 PWM 신호를 생성하는 것입니다. 듀티 사이클은 0° ~ 180°의 회전에 해당합니다. 이 기사에서는 완전한 회로 연결 및 코드 구성 체계를 제공합니다.

02스티어링 기어의 작동 원리와 마이크로 컨트롤러의 요구 사항

스티어링 기어의 회전은 제어 신호의 펄스 폭에 따라 결정됩니다. SG90 및 MG995R과 같은 표준 서보에는 다음 요구 사항이 있습니다.

신호 기간: 20ms(50Hz)

높은 수준의 시간과 각도의 관계

0.5ms → 0°

1.0ms → 45°

1.5ms → 90°

2.0ms → 135°

2.5ms → 180°

51 마이크로 컨트롤러의 출력 요구 사항과 관련하여 하나는 모든 I/O 포트가 PWM 신호를 생성할 수 있다는 것이고, 다른 하나는 이 생성 프로세스가 레벨 지속 시간을 정확하게 제어해야 한다는 것입니다.. 수정 발진기 주파수에 대해서는 11.0592MHz 또는 12MHz가 제안됩니다. 이것의 목적은 타이머가 정확한 시간을 알 수 있도록 하는 것입니다.

03하드웨어 연결 방식(독립 전원 공급 장치를 포함해야 함)

서보가 작동 중일 때 전류는 상대적으로 큽니다. 무부하일 때 전류는 100mA~200mA 범위에 있습니다. 정지가 발생하면 전류는 500mA 이상에 도달할 수 있습니다. 51 마이크로 컨트롤러의 I/O 포트에서 직접 전원을 얻거나 티칭 보드의 5V 핀에서 전원을 얻는 것은 절대 금지되어 있습니다. 그렇지 않으면 재설정이 발생하거나 칩이 태워집니다.

표준 연결 방법

1. 신호선: 마이크로컨트롤러의 I/O 포트(예: P1.0)에 연결합니다.

2. VCC인 양극 단자는 LM2596 전압 안정화 모듈 및 4.8V - 6V 배터리 팩과 같은 외부 5V 전원 공급 장치에 연결되어야 합니다.

单片机可以直接驱动舵机吗_单片机怎么驱动舵机_51单片机可以驱动舵机吗怎么设置

3. 음극, 즉 GND는 마이크로 컨트롤러의 GND와 동일한 접지 상태에 있어야 합니다. 즉, 전원 공급 장치의 음극은 개발 보드의 GND에 연결되어야 합니다.

YPMFG에 대한 참고 사례는 전자 애호가가 STC89C52RC를 사용하여 MG995R 서보를 구동했다는 것입니다. 처음에는 개발보드에서 직접 전원을 공급받아 화면이 깜박이는 현상이 발생했습니다. 이후 18650 배터리 2개를 직렬로 연결한 뒤 전원 공급을 위해 5.5V로 줄였다. 그 후 서보는 간섭 없이 원활하게 작동했습니다.

04소프트웨어 설정 방법(두 가지 주류 솔루션)

솔루션 1: 타이머 시뮬레이션 PWM(권장, 모든 51 마이크로컨트롤러에 적합)

핵심 로직은 타이머를 사용하여 100μs 인터럽트를 생성하고, 인터럽트 수를 누적하여 상위 수준 시간을 제어하는 ​​것입니다.

코드 단계(12MHz 수정 발진기를 예로 들어 보겠습니다.):

#포함하다서보 기구= P1^0; // 신호 핀 부호 없는 문자 수 = 0; // 인터럽트 횟수 unsigned char high_time = 15; // 1.5ms는 90°(15×100μs)에 해당합니다. void Timer0_Init() { TMOD = 0x01; // 모드 1, 16비트 타이머 TH0 = 0xFE; // 100μs 초기값 (12MHz: 65536-100=65436→0xFF9C) TL0 = 0x0C; EA = 1; // 전체 인터럽트를 켭니다. ET0 = 1; // 타이머 0 인터럽트 활성화 TR0 = 1; // 타이머 시작 } void Timer0_ISR() 인터럽트 1 { TH0 = 0xFE; // 초기값을 다시 로드합니다. TL0 = 0x0C; 카운트++; if(count++; Servo = 1; // High 레벨은 high_time×100μs 동안 지속됩니다. } else if(count Servo = 0; } else { count = 0; // 사이클 종료, 카운트 재설정 } } void main() { Timer0_Init(); high_time = 10; // 각도 설정: 10→45°, 15→90°, 20→135° while(1); }

옵션 2: 지연 기능 시뮬레이션(테스트용이며 실제 프로젝트에는 권장되지 않음)

_nop_() 또는 지연 루프를 사용하여 펄스를 생성하지만 CPU 사용량이 높고 각도가 정확하지 않습니다. 예:

서보 = 1; Delay_us(1500); // 1.5ms 하이 레벨 서보 = 0; Delay_ms(18.5); // 남은 사이클 시간

단점: 다른 작업을 동시에 처리할 수 없으며 수정 발진기 오류가 큰 영향을 미칩니다.

05자주 묻는 질문과 해결방안(Q/A 형식)

Q1: 51 마이크로컨트롤러가 서보에 직접 연결되어 있는데 응답이 없으면 어떻게 해야 합니까?

A: 공통점이 있는지 확인해 보세요. 서보 전원 공급 장치의 음극과 마이크로 컨트롤러의 GND를 연결해야 합니다. 그렇지 않으면 신호 루프가 발생하지 않습니다.

Q2: 서보가 흔들리고 각도를 수정할 수 없는 문제를 해결하는 방법은 무엇입니까?

타이머의 정확도를 높이고, 12MHz 수정 발진기를 사용하고, 100μs마다 초기값을 다시 설치해야 인터럽트 주파수가 안정적으로 유지됩니다.

Q3: 하나의 I/O 포트를 사용하여 동시에 여러 서보를 제어할 수 있습니까?

单片机可以直接驱动舵机吗_51单片机可以驱动舵机吗怎么设置_单片机怎么驱动舵机

A는 그렇지 않다고 말했다. 각 서보에는 별도의 신호 라인이 필요합니다. 여러 서보가 양극선과 접지선을 공유할 수 있지만 전원 공급 장치에는 충분한 전력이 있어야 합니다.

Q4: 45°로 설정했는데 실제로 30°로 변하는 이유는 무엇인가요?

A: 수정 발진기 주파수에 오류가 있거나 하이 레벨 시간이 정확하지 않습니다. 오실로스코프를 사용하여 PWM 펄스 폭을 측정한 다음 high_time 값을 조정합니다.

Q5: 기사 작성 팁: 스티어링 기어의 수명을 연장하는 방법은 무엇입니까?

A: 지연을 방지하려면 커패시터를 추가하십시오. 리플을 필터링하려면 서보 전원 공급 장치의 양극 단자와 음극 단자 사이에 100μF 전해 커패시터를 병렬로 연결하십시오.

06다양한 스티어링 기어 모델에 대한 펄스 대응표(검증됨)

모델 시리즈 0° 펄스 90° 펄스 180° 펄스 최대 전류
SG90(9g) 0.5ms 1.5ms 2.4ms 250mA
MG995R 0.6ms 1.6ms 2.5ms 800mA
DS3218 0.5ms 1.5ms 2.5ms 1.2A
표준 아날로그 서보 1.0ms 1.5ms 2.0ms 300mA

데이터 출처 : 각 조향기어 공식 데이터 매뉴얼(2023~2025년판)

07디버깅 및 확인 단계

1. 측정된 파형을 얻고 오실로스코프 또는 로직 분석기를 사용하여 PWM 주기가 20ms ± 0.5ms 범위 내에 있는지 확인합니다.

2. 검증 각도: 1.5ms 하이 레벨을 기록하고 서보는 여전히 90° 위치에 있어야 합니다.

3. 부하 테스트: 서보 암을 손으로 살짝 비틀어 전압 변동이 0.3V를 초과해서는 안 됩니다.

4. 여러 각도에서 전환하여 1.0ms 값, 1.5ms 값, 2.0ms 값을 차례로 부여한 다음 회전을 주의 깊게 관찰하여 부드러운 특성이 있는지 확인합니다.

일반적인 문제 해결 표

서보가 회전하지 않습니다. → 공통 접지 및 전원 전압(4.8V-6V)을 확인하십시오.

떨리고 흔들림 → 전원 부족 또는 인터럽트 충돌(관련 없는 인터럽트 끄기)

0°와 180°만 회전할 수 있으므로 상위 수준 시간이 선형적으로 변경되지 않습니다. 이 경우 코드의 count 변수를 확인해야 합니다.

08고급 적용: 동시에 8개의 서보 구동(YPMFG 실제 테스트 솔루션)

51 마이크로컨트롤러를 사용하고 타이머 2개와 어레이 1개를 사용하여 최대 8개의 서보를 구동할 수 있습니다. 주요 방법은 다음과 같습니다.

타이머 0은 2.5밀리초 인터럽트를 트리거하고 8개 I/O 포트의 높은 수준의 시작 순간을 순차적으로 제어합니다.

각 서보는 독립적으로 저장됩니다.high_time정렬

전원 공급 장치는 외부 5V/10A 이상의 스위칭 전원 공급 장치를 사용해야 합니다.

코드 프레임워크

부호 없는 char Servo_high[8] = {15,10,20,5,15,12,18,8}; //각 서보의 펄스값 unsigned char current_servo = 0; //인터럽트에서는 이전 서보가 풀다운되고 현재 서보가 풀업됩니다.

이 솔루션의 CPU 사용량은 약 40%이며, 키 스캔과 같은 간단한 작업도 처리할 수 있습니다.

09핵심 결론 및 조치 권장 사항

51 마이크로컨트롤러를 사용하면 서보를 완벽하게 구동할 수 있습니다. 핵심 성공 요인은 독립된 전원 공급 장치, 정확한 타이밍, 즉 100μs 인터럽트 및 공통 접지 연결입니다. 초보자의 경우 단일 서보, 12MHz 수정 발진기 및 타이머 인터럽트 솔루션으로 시작해야 하며 지연 기능을 직접 사용하는 것을 피해야 합니다.

지금 체크리스트 실행

1. 5V/1A 이상의 정격 전원 공급 장치 또는 4.8V 배터리 팩을 준비하십시오.

2. 타이머 초기화 코드 작성(100μs 인터럽트)

3. 멀티미터를 사용하여 서보의 양극 및 음극 전압을 측정합니다(무부하가 4.5V 이상이어야 함).

4. 먼저 90° 위치(1.5ms 펄스)를 테스트한 다음 다른 각도로 확장합니다.

기사 작성 팁: 서보 작동 중에 마이크로 컨트롤러가 재설정되면 즉시 서보의 전원 공급 장치 끝 부분에 470μF 커패시터를 병렬로 연결하고 전원 코드 길이를 20cm 미만으로 줄이십시오. 이 가이드를 따르면 30분 이내에 정확한 각도 제어를 달성할 수 있습니다.

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

미래에 힘을 실어주다

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

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