> 업계 통찰 >BLDC
기술 지원

51 마이크로컨트롤러가 서보 모터를 제어할 수 있나요? 예, 방법은 다음과 같습니다

게시됨 2026-04-18

51 마이크로 컨트롤러(8051 기반 MCU라고도 함)는 실제로 표준을 제어할 수 있습니다.서보 기구모터. 이러한 마이크로 컨트롤러에는 전용 하드웨어 PWM 모듈이 없지만 소프트웨어 기반 타이밍 기술을 통해 필요한 제어 신호를 생성할 수 있습니다. 이 기사에서는 원리를 설명하고 실제 배선 및 코드 예제를 제공하며 중요한 전력 고려 사항을 다룹니다. 이를 통해 성공적으로 통합할 수 있습니다.서보 기구51 MCU 프로젝트에 추가하세요.

01어떻게서보 기구제어 작업

일반적인 취미용 서보 모터(예: 9g 마이크로 서보)는 50Hz 펄스폭 변조(PWM) 신호로 명령을 받습니다.

기간: 20ms(50Hz)

펄스 폭 범위:

0.5ms → 0°(또는 한 극단)

1.5ms → 90°(중립)

2.5ms → 180° (반대 극단)

서보는 20ms 주기 반복을 예상하며 높은 펄스의 폭에 따라 샤프트 각도가 결정됩니다.

0251 MCU가 이것을 할 수 있는 이유

대부분의 51 제품군 마이크로컨트롤러는~ 아니다하드웨어 PWM 주변 장치를 포함합니다. 그러나 그들은 다음을 가지고 있습니다:

하나 이상의 16비트 타이머(예: 타이머 0, 타이머 1)

인터럽트 기능

범용 I/O 핀

정확한 지연을 생성하기 위해 타이머 인터럽트를 사용하면 소프트웨어에서 정확한 펄스 폭과 20ms 주기를 완전히 생성할 수 있습니다. 이 방법은 교육용 로봇 공학 및 소규모 자동화 프로젝트에 널리 사용됩니다.

03일반적인 사용 사례 – 간단한 서보 스윕

작은 로봇 팔이나 원격 조종 자동차의 조종 장치를 만든다고 상상해 보세요. 매우 일반적인 초보자 프로젝트는 서보를 앞뒤로 스윕하는 것입니다. 51 MCU는 0.5ms와 2.5ms 펄스를 교대로 생성하여 서보를 0°에서 180°로 반복적으로 이동합니다.

하드웨어 연결(브랜드 이름 없음):

서보 기구VCC→ 외부 5V 전원 공급 장치(서보가 움직일 때 MCU의 레귤레이터에서 절대로 공급되지 않음)

서보 기구접지→ MCU와의 공통점

서보 기구신호→ 모든 I/O 핀(예: P1.0)

> 비판적인: 정지되거나 움직이는 서보는 200~500mA 이상을 소모할 수 있습니다. 51 MCU의 온보드 레귤레이터(종종 5V/100mA)는 이를 공급할 수 없습니다. 항상 서보용으로 별도의 5V/1A(또는 그 이상) 전원을 사용하고 접지를 함께 연결하십시오.

04소프트웨어 구현 - 타이머 기반 PWM

다음은 12MHz 크리스털을 갖춘 표준 51 MCU를 사용한 간결한 예입니다. 이 코드는 16비트 모드에서 타이머 0을 사용하여 정확한 지연을 생성합니다. (독점 라이브러리나 브랜드별 확장이 필요하지 않습니다.)

#포함하다sbit 서보_핀 = P1^0; // 신호 핀 unsigned int high_time; // 마이크로초 단위의 펄스 폭 비트 플래그 = 0; 무효 타이머0_init(void) { TMOD &= 0xF0; // T0 모드 비트 지우기 TMOD |= 0x01; // 타이머 0, 모드 1(16비트) TH0 = 0xFC; // 1ms 지연(12MHz 크리스털: 1ms = 0xFC67) TL0 = 0x67; ET0 = 1; // 타이머 0 인터럽트 활성화 EA = 1; // 전역 인터럽트 활성화 TR0 = 1; // 타이머 시작 } void 타이머0_isr(void) 인터럽트 1 { TR0 = 0; // 안전한 재로드를 위해 타이머를 중지합니다. if (!flag) { // 높은 펄스 위상 Servo_pin = 1; // high_time 마이크로초에 대한 로드 타이머 // 12MHz -> 머신 사이클당 1μs? 아니오: 12MHz 크리스탈은 사이클당 1μs를 제공합니까? Actually 12MHz / 12 = 1MHz instruction cycle = 1µs. // 그래서 우리는 high_time µs를 계산하는 값을 로드합니다. 부호 없는 int reload = 65536 - high_time; TH0 = 다시 로드 >> 8; TL0 = 다시 로드 & 0xFF; 플래그 = 1; } else { // 낮은 위상(나머지 20ms 기간) Servo_pin = 0; 부호 없는 int low_time = 20000 - high_time; 부호 없는 int reload = 65536 - low_time; TH0 = 다시 로드 >> 8; TL0 = 다시 로드 & 0xFF; 플래그 = 0; } TR0 = 1; } void set_angle(unsigned char angle) { // 각도: 0 ~ 180 // 각도를 500μs(0°) ~ 2500μs(180°)로 매핑 high_time = 500 + (각도2000/180); } void Delay_ms(unsigned int ms) { unsigned int i, j; (i = 0; 나는

참고: 타이머 재로드 계산에서는 12MHz 크리스털을 가정합니다. 다른 주파수에 맞춰 조정하세요.*

05실제 테스트 및 문제 해결

사례 1 - 서보가 흔들리거나 움직이지 않음

외부 전원 공급 장치가 최소 1A 피크를 제공할 수 있는지 확인하십시오.

서보와 MCU 사이의 공통 접지를 확인하십시오.

오실로스코프나 로직 분석기를 사용하여 펄스 폭(0.5~2.5ms)과 주기(20ms)를 확인하세요.

사례 2 – 코드는 실행되지만 서보는 극단적인 방향으로만 이동합니다.

angle에서 high_time으로의 매핑이 반전될 수 있습니다. 필요한 경우 500과 2500을 교환합니다.

일부 서보는 범위가 더 좁습니다(예: 600~2400μs). 그에 따라 조정하십시오.

사례 3 – 서보가 움직일 때 MCU가 재설정됩니다.

이는 거의 항상 전력 부족으로 인해 발생합니다. 서보의 전원 라인 전체에 대형 커패시터(470μF 이상)를 추가하고 MCU의 VCC 핀에서 서보에 전원을 공급하지 마십시오.

06핵심 결론 반복

예, 51 마이크로컨트롤러는 표준 서보 모터를 안정적으로 제어할 수 있습니다.핵심은 타이머 인터럽트를 사용하여 필요한 50Hz PWM 신호를 완전히 소프트웨어에서 생성하고 서보용 별도의 전원 공급 장치와 결합하는 것입니다. 이 접근 방식은 간단한 청소 시연부터 다중 서보 보행 로봇에 이르기까지 수천 개의 취미생활자 및 교육 프로젝트에서 입증되었습니다.

07실행 가능한 권장사항

1. 단일 서보로 시작외부 5V/2A 전원 공급 장치를 사용하는 브레드보드(예: 5V 조정기가 있는 USB 보조 배터리)

2. 타이밍을 확인하세요서보를 연결하기 전에 저렴한 로직 분석기나 오실로스코프를 사용하십시오.

3. 점차적으로 더 많은 서보를 추가하십시오.– 4~8개 서보의 경우 별도의 PWM 드라이버(예: 16채널 모듈) 사용을 고려하지만 여전히 51 MCU의 I2C 또는 UART에 의해 제어됩니다.

4. 생산 또는 시간이 중요한 프로젝트용, 원하는 각 각도에 대해 타이머 재로드 값을 미리 계산하여 인터럽트 지터를 줄입니다.

5. 항상 서보 접지와 MCU 접지를 연결해 두십시오.– 이것은 가장 흔한 실수입니다.

이러한 지침을 따르면 특수 하드웨어 없이도 서보 제어를 51 기반 프로젝트에 성공적으로 통합할 수 있습니다.

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

미래에 힘을 실어주다

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

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