> 업계 통찰 >기어 모터
기술 지원

적외선 리모컨을 사용한 STM32 서보 제어: 단계별 가이드

게시됨 2026-04-09

이 가이드는 완벽하고 실용적인 제어 방법을 제공합니다.서보 기구STM32 마이크로컨트롤러와 표준 적외선(IR) 리모콘을 사용하여 모터 각도를 조정합니다. 정확한 배선, IR 신호 디코딩, PWM 생성에 대해 배우게 됩니다.서보 기구, 바로 사용할 수 있는 코드 예제. 브랜드별 구성 요소는 필요하지 않습니다. 지침은 일반적인 IR 수신기(예: 1838B) 및 모든 표준 5V에서 작동합니다.서보 기구. 일반적인 사용 사례는 카메라 팬틸트나 로봇 팔의 관절을 원격으로 조정하는 것입니다.

01핵심 개념 – 작동 방식

이 시스템은 두 가지 기본 원칙에 따라 작동합니다.

IR 리모콘변조된 38kHz 신호를 방출합니다. IR 수신기는 이를 복조하고 직렬 펄스 시퀀스를 출력합니다(NEC 프로토콜이 가장 일반적임).

서보 모터위치는 20ms 주기의 PWM 신호로 설정됩니다. 펄스 폭은 0.5ms(0°)에서 2.5ms(180°)까지 다양합니다.

STM32는 IR 키 코드를 디코딩하고 이를 목표 서보 각도에 매핑한 다음 이에 따라 PWM 듀티 사이클을 업데이트합니다.

02필수 구성 요소(일반, 브랜드 이름 없음)

요소 사양
STM32 개발 보드 모든 STM32F1/F4 시리즈(예: STM32F103C8T6)
IR 수신기 모듈 38kHz 캐리어, 3핀(VCC, GND, OUT)
표준 서보 모터 4.8V~6.0V, 0°~180° 회전
IR 리모콘 모든 NEC 프로토콜 리모컨(예: 일반 TV/DVD 리모컨)
전원공급장치 5V/2A(서보 및 STM32용)
브레드보드 및 점퍼선 연결용

03회로 연결(배선 확인)

아래 설명대로 정확하게 연결하세요. 잘못된 배선은 부품을 손상시킵니다.

STM32 핀 연결됨
5V(또는 외부 5V) IR 수신기 VCC 및 서보 VCC(빨간색 와이어)
접지 IR 수신기 GND 및 서보 GND(갈색/검은색 선)
PB0(또는 타이머 채널이 있는 모든 GPIO) 서보 신호(주황색/노란색 선)
PB1(또는 외부 인터럽트 핀) IR 수신기 출력

중요한: 서보가 500mA를 초과하는 경우 STM32에 공통 접지가 있는 별도의 5V 공급 장치를 사용하십시오.

04IR 디코딩 – 원격 코드 캡처

NEC 프로토콜은 소비자 IR 리모컨의 90% 이상에서 사용됩니다. 각 키를 누를 때마다 9ms 리더 버스트, 4.5ms 공간, 32비트(주소 + 명령) 및 정지 비트가 전송됩니다.

리모컨의 코드를 캡처하는 단계별 방법:

1. IR 수신기의 OUT을 하강 에지에서 외부 인터럽트로 구성된 GPIO(예: PB1)에 연결합니다.

2. 캡처 모드에서 타이머를 사용하여 펄스 폭을 측정합니다.

3. 일반적인 로직 0은 0.56ms 하이 + 0.56ms 로우입니다. 로직 1은 0.56ms 하이 + 1.69ms 로우입니다.

다음 확인된 코드 조각을 사용하세요(HAL 라이브러리, 그러나 논리는 모든 설정에 적용됨).

// IR 신호에 대한 인터럽트 핸들러 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin == IR_IN_Pin) { uint32_t Duration = getPulseWidth(); // 우리 안에서 측정 // NEC 논리 디코딩 - 32비트 코드 저장 } }

키(예: 숫자 "1" 또는 "UP")를 누른 후 디코딩된 명령 값을 읽습니다. 사용하려는 키의 코드를 적어 두세요.

05서보 제어 - 올바른 PWM 생성

서보는 50Hz 신호(20ms 주기)를 예상합니다. PWM 모드에서는 TIM2 또는 TIM3을 사용하십시오.

0°(0.5ms 펄스) 및 180°(2.5ms 펄스) 계산:

타이머 클록 = 72MHz, 프리스케일러 = 7200-1 → 10kHz 카운터 클록.

주기(ARR) = 200 → 20ms 주기(2000.1ms = 20ms).

0.5ms에 대한 듀티 사이클 = 5 → (0.5ms / 0.1ms = 5)

2.5ms에 대한 듀티 사이클 = 25 → (2.5ms / 0.1ms = 25)

구성 단계:

1. 타이머 시계 및 GPIO 대체 기능을 활성화합니다.

2. TIMx->PSC = 7199, TIMx->ARR = 200으로 설정합니다.

3. 채널 CCR 값을 5~25 사이로 설정합니다.

4. PWM 출력을 시작합니다.

각도를 설정하는 예제 함수:

void setServoAngle(uint8_t angle) { // 각도: 0 ~ 180 uint16_t pulse = 5 + (angle 20 / 180); // 선형 맵: 5(0°) ~ 25(180°) __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, pulse); }

06완전한 통합 - IR 코드를 서보 각도에 매핑

일반적인 실제 사례: 4개의 버튼(왼쪽, 오른쪽, 중앙, 정지)으로 카메라 팬 플랫폼을 제어합니다. 다음을 캡처했다고 가정합니다.

"왼쪽" 키 코드 = 0x10

"오른쪽" 키 코드 = 0x11

"중앙" 키 코드 = 0x12

메인 루프를 구현합니다:

uint32_t lastIRCode = 0; while (1) { if (newIRCodeAvailable) { lastIRCode = decodedIRCode; newIRCodeAvailable = 0; 스위치(lastIRCode) { 케이스 0x10: setServoAngle(0); 부서지다; // 왼쪽 – 0° 케이스 0x11: setServoAngle(180); 부서지다; // 오른쪽 – 180° 케이스 0x12: setServoAngle(90); 부서지다; // 중앙 – 90° 기본값: break; } } }

원활한 증분 제어를 위해 "UP" 또는 "DOWN"을 누를 때마다 각도를 5°씩 늘리거나 줄일 수 있습니다.

07문제 해결 – 일반적인 문제 및 수정 사항

문제 가장 가능성이 높은 원인 검증된 솔루션
서보가 흔들리거나 움직이지 않습니다 전력 부족 서보용 외부 5V 공급 장치 사용, GND 공유
IR 응답 없음 잘못된 수신기 배선 또는 원격 프로토콜 VCC=5V, GND가 연결되었는지 확인합니다. 오실로스코프 또는 OUT 핀의 LED로 테스트
서보는 극한 방향으로만 회전합니다. PWM 주기가 잘못되었습니다. 오실로스코프로 측정합니다. 20ms(50Hz) 주기를 보장합니다.
간헐적인 디코딩 주변광에 의해 포화된 IR 수신기 수신기를 가리십시오. OUT 핀에 10kΩ 풀업 추가

08실행 가능한 결론 및 권장 사항

핵심 테이크아웃: STM32에서 IR 리모컨으로 서보를 제어하려면 (1) 외부 인터럽트 및 타이머를 사용하여 NEC IR 프로토콜을 올바르게 디코딩하고, (2) 조정 가능한 듀티 사이클(0.5~2.5ms)로 50Hz PWM 신호를 생성하고, (3) 캡처된 키 코드를 원하는 각도에 매핑하기만 하면 됩니다.

프로젝트에 대한 즉각적인 조치 단계:

1. 섹션 3에 표시된 대로 회로를 배선합니다.

2. 간단한 IR 디코더 스케치를 업로드하여(섹션 4의 로직 사용) 리모컨의 고유 키 코드를 캡처합니다.

3. 섹션 5의 PWM 코드를 사용하여 고정 각도로 서보 이동을 테스트합니다.

4. 두 기능을 병합하고 캡처한 코드를 특정 각도에 할당합니다.

5. 명령 범람을 방지하려면 각 이동 후에 약간의 지연(50ms)을 추가하십시오.

이 가이드를 정확하게 따르면 30분 이내에 안정적인 적외선 제어 서보 시스템을 갖게 될 것입니다. 고급 기능(예: 위치 저장, 속도 램핑)의 경우 동일한 매핑 원리를 확장합니다. 이 접근 방식은 모든 STM32 시리즈 및 모든 NEC 호환 리모컨에서 작동합니다.

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

미래에 힘을 실어주다

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

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