STM32로 서보 모터를 제어하는 ​​방법: 엔지니어를 위한 실용 가이드_맞춤형 드라이브_Industry Insights_Kpower
> 업계 통찰 >커스텀 드라이브
기술 지원

STM32로 서보 모터를 제어하는 ​​방법: 엔지니어를 위한 실용 가이드

게시됨 2026-07-04

01빠른 답변

예, 다음을 제어할 수 있습니다.서보 기구STM32 마이크로컨트롤러를 사용하는 모터는 정밀한 50Hz 주파수와 1ms~2ms 사이의 가변 듀티 사이클로 PWM 신호를 생성합니다. 특히 PWM 출력 모드에서 STM32의 타이머 주변 장치는 원활한 작동에 필요한 정확도를 제공합니다.서보 기구포지셔닝. 이 방법은 대부분의 표준 취미에 적합합니다.서보 기구및 많은 산업용 서보 드라이버가 있지만 연결하기 전에 전압 레벨, 전류 제한 및 신호 호환성을 확인해야 합니다. 특히 여러 서보를 동시에 제어할 때 안정적인 작동을 위해서는 올바른 타이머 구성과 GPIO 핀을 선택하는 것이 필수적입니다.

02소개

모션 제어 시스템을 구축 중인데 서보 모터가 예상대로 응답하지 않습니다. 팔이 갑자기 움직이거나, 위치가 흔들리거나, 모터가 단순히 움직이기를 거부합니다. 이러한 증상은 흔히 일반적인 근본 원인, 즉 마이크로 컨트롤러에서 부적절한 PWM 신호 생성을 가리킵니다. STM32를 사용하는 엔지니어의 과제는 단순히 코드를 작성하는 것이 아니라 타이머 하드웨어가 실제로 어떻게 작동하는지, 어떤 구성 값이 중요한지, 겉보기에 올바른 설정이 여전히 실패할 수 있는 이유를 이해하는 것입니다.

많은 개발 프로젝트가 이 단계에서 중단됩니다. 테스트 중에 예측할 수 없는 동작을 하는 서보는 생산 일정을 지연시키고, 디버깅 비용을 증가시키며, 전체 제어 아키텍처에 대한 불확실성을 야기할 수 있습니다. 문제가 서보 자체인 경우는 거의 없습니다. 그것은 거의 항상PWM 신호 생성STM32에서. 안정적인 50Hz 기본 주파수와 정확한 펄스 폭 제어가 없으면 최고의 서보라도 성능이 저하됩니다.

이 기사는 서보 제어를 STM32 기반 시스템에 통합해야 하는 엔지니어, 프로젝트 리더 및 기술 의사 결정자를 위해 작성되었습니다. 하드웨어 구성, 타이머 설정, 일반적인 실수, 실제 작동 중인 프로토타입과 현장 오류를 구분하는 실제 점검 사항을 다룹니다.

03목차

1. 서보 제어에서 PWM 신호 정확도가 중요한 이유

2. 서보 PWM에 적합한 STM32 타이머 선택

3. 50Hz 서보 신호에 대한 단계별 타이머 구성

4. 프리스케일러 및 기간 값 계산

5. 일반적인 구성 오류 및 증상

6. 하나의 타이머로 여러 서보 제어

7. 권장 GPIO 핀 선택

8. 엔지니어들이 STM32 서보 제어에 대해 자주 묻는 질문

9. 애플리케이션에 적합한 서보 및 STM32 쌍 선택

04서보 제어에 PWM 신호 정확도가 중요한 이유

표준 서보 모터는 하이 펄스의 지속 시간을 측정하여 PWM 신호를 해석합니다. 1ms의 펄스 폭은 일반적으로 서보에 0도로 이동하도록 명령하고 2ms는 180도로 이동하도록 명령합니다. 신호는 50Hz의 고정 주파수에서 반복되어야 하며 이는 20밀리초마다 새로운 펄스를 의미합니다.

STM32의 타이머가 표류하는 주파수를 생성하거나 펄스 폭이 100마이크로초라도 변하는 경우 서보 위치를 예측할 수 없게 됩니다. 정밀 응용 분야에서는 이 오류가 더욱 복잡해집니다. 펄스 폭의 50μs 지터는 몇 도의 위치 오류로 해석될 수 있으며, 이는 로봇 팔, 카메라 짐벌 또는 산업용 포지셔닝 시스템에 허용되지 않습니다.

STM32 타이머 하드웨어는 올바르게 구성되면 마이크로초 수준의 정밀도를 제공합니다. 그러나 기본 클록 설정, 프리스케일러 값 및 자동 다시 로드 레지스터는 특정 시스템 클록 주파수에 대해 계산되어야 합니다. 여기서 불일치는 초기 테스트 중 서보 오작동의 가장 일반적인 원인입니다.

05서보 PWM에 적합한 STM32 타이머 선택

STM32의 모든 타이머가 서보 제어와 동일한 것은 아닙니다. TIM2, TIM3, TIM4, TIM5와 같은 범용 타이머는 각각 별도의 PWM 신호를 생성할 수 있는 독립 채널을 제공하므로 선호됩니다. TIM1 및 TIM8과 같은 고급 타이머도 작동할 수 있지만 더 복잡한 모터 제어 작업을 위해 예약되는 경우가 많습니다.

타이머를 선택할 때 다음을 고려하십시오.

채널 수: 각 채널은 하나의 서보를 구동할 수 있습니다. 6개의 서보가 필요한 경우 최소 4개의 채널이 있는 타이머를 선택하고 나머지 2개에는 두 번째 타이머를 사용하십시오.

타이머 해상도: 표준 서보에는 16비트 타이머이면 충분합니다. 32비트 타이머는 불필요하며 구성이 복잡해집니다.

stm32操控舵机_stm32操控舵机_stm32操控舵机

클록 소스: 타이머가 작동 중에 안정적으로 유지되는 시계에 연결되어 있는지 확인하십시오. 내부 HSI 또는 HSE 오실레이터를 사용하는 것이 일반적이지만 주파수를 확인하십시오.

일반적으로 실용적인 선택은 채널 1부터 채널 4까지 PWM 모드로 구성된 STM32F103 또는 STM32F4 시리즈의 TIM3입니다. 이 설정은 리소스 사용량을 최소화하면서 4개의 서보 출력을 제공합니다.

0650Hz 서보 신호에 대한 단계별 타이머 구성

목표는 20ms 주기와 1ms~2ms 사이의 가변 듀티 사이클을 갖는 PWM 신호를 생성하는 것입니다. 다음은 72MHz 시스템 클록을 가정한 의사코드의 구성 순서입니다.

1. 타이머 시계 활성화

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

2. 프리스케일러 설정

71의 프리스케일러는 72MHz 클록을 1MHz로 나누어 1μs마다 타이머 틱을 제공합니다.

TIM_TimeBaseInitStructure.TIM_Prescaler = 71;

3. 자동 새로고침 기간 설정

19999년 기간은 20ms 주기(20000틱 × 1μs)가 됩니다.

TIM_TimeBaseInitStructure.TIM_Period = 19999;

4. PWM 모드 구성

채널 1의 펄스 폭을 설정합니다. 값 1500은 서보의 중심을 맞추는 1.5ms 펄스에 해당합니다.

TIM_OCInitStructure.TIM_Pulse = 1500;

5. PWM 출력 활성화

TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);

TIM_ARRPreloadConfig(TIM3, ENABLE);

TIM_Cmd(TIM3, 활성화);

6. GPIO 핀을 대체 기능으로 설정

타이머 출력을 물리적 핀에 연결하려면 핀을 AF 푸시풀 출력으로 구성하세요.

이 구성 후에는 CCRx 레지스터를 업데이트하여 펄스 폭을 변경합니다.

TIM_SetCompare1(TIM3, 1000);// 0도에 대해 1ms 펄스

07프리스케일러 및 기간 값 계산

공식은 간단하지만 시스템 시계에 올바르게 적용되어야 합니다.

stm32操控舵机_stm32操控舵机_stm32操控舵机

타이머 주파수= 시스템 클럭 / (프리스케일러 + 1)

PWM 주기= (자동 재로드 값 + 1) / 타이머 빈도

72MHz 클록 및 원하는 타이머 주파수 1MHz의 경우:

프리스케일러 = 72,000,000 / 1,000,000 - 1 = 71

1MHz에서 20ms 기간 동안:

자동 새로고침 값 = 20,000 - 1 = 19,999

일부 STM32F4 장치에서와 같이 시스템 클럭이 168MHz인 경우 프리스케일러는 167이 되고 자동 다시 로드 값은 19,999로 유지됩니다. 프리스케일러의 한 자리 오류로 인해 주파수가 크게 이동하므로 개발 환경에서 항상 이 숫자를 확인하십시오.

08일반적인 구성 오류 및 증상

많은 엔지니어가 초기 테스트 중에 다음과 같은 문제에 직면합니다.

징후가능한 원인확인해야 할 사항
서보가 움직이지 않습니다PWM 신호가 없거나 잘못된 핀GPIO 대체 기능 및 타이머 채널 활성화 확인
서보가 진동하거나 불안함펄스 폭이 불안정함프리스케일러 및 기간 계산을 확인하세요. 타이머 시계가 안정적인지 확인하세요.
서보는 한쪽 끝으로만 움직입니다.펄스 범위가 너무 좁거나 넓음1000~2000μs 사이의 펄스 값 확인
서보가 천천히 움직인다50Hz 미만의 주파수올바른 기간에 대한 자동 새로고침 값을 다시 계산합니다.
여러 서보가 간섭합니다.공유 타이머 채널이 독립적이지 않음각 채널이 별도의 CCR 레지스터를 사용하는지 확인

몇 초 후에 서보가 비정상적으로 작동하는 경우 문제는 클럭 소스 변경이나 타이머 인터럽트가 PWM 출력을 무시하는 것일 수 있습니다. 디버깅하는 동안 타이머 채널에서 불필요한 인터럽트를 비활성화합니다.

09하나의 타이머로 여러 서보 제어

하나의 STM32 타이머는 4개의 독립 채널을 사용하여 최대 4개의 서보를 구동할 수 있습니다. 각 채널에는 자체 비교 레지스터가 있어 동일한 기본 주파수를 공유하면서 개별 펄스 폭을 제어할 수 있습니다.

6개 또는 8개의 서보를 제어하려면 두 개의 타이머를 사용하십시오. 예를 들어 채널 1~4의 경우 TIM3, 채널 1~4의 경우 TIM4입니다. 모든 서보에서 일관된 타이밍을 유지하려면 두 타이머가 동일한 프리스케일러와 기간을 공유하는지 확인하세요.

일반적인 실수는 신호 와이어를 동일한 핀에 연결하여 여러 서보를 동일한 채널에 할당하는 것입니다. 이것은 작동하지 않습니다. 각 서보에는 전용 타이머 출력 핀이 필요합니다. 라우팅 충돌을 방지하려면 PCB 설계 단계 초기에 핀 할당을 계획하십시오.

10권장 GPIO 핀 선택

STM32 데이터시트에는 어떤 GPIO 핀이 어떤 타이머 채널에 연결되는지 지정되어 있습니다. STM32F103의 TIM3의 경우:

채널 1:PA6

채널 2:PA7

채널 3: PB0

채널 4: PB1

이러한 핀은 대체 기능 푸시풀 출력으로 구성되어야 합니다. 표준 GPIO 출력 모드는 PWM 파형을 생성하지 않으므로 사용하지 마십시오.

핀을 선택할 때 전압 레벨을 고려하십시오. STM32 GPIO는 3.3V 로직을 출력합니다. 대부분의 표준 서보는 이 신호를 수용하지만 일부 산업용 서보 드라이버에는 5V 로직이 필요합니다. 이 경우에는레벨 시프터또는 전용 서보 드라이버 IC. 5V 허용 오차에 대한 데이터시트를 확인하지 않고 5V 서보 신호를 STM32 핀에 직접 연결하지 마십시오.

11엔지니어가 STM32 서보 제어에 대해 자주 묻는 질문

Q: 서보 제어를 위해 STM32 타이머를 사용할 수 있습니까?

예, 하지만 TIM2부터 TIM5까지의 범용 타이머가 구성하기 가장 쉽습니다. TIM6 및 TIM7과 같은 기본 타이머에는 PWM 출력 채널이 없습니다.

Q: 필요한 최소 시스템 클럭은 얼마입니까?

표준 서보에는 16MHz 클럭이면 충분합니다. 72MHz와 같은 더 높은 클럭 속도는 펄스 폭에 대한 더 미세한 분해능을 제공합니다.

Q: STM32 하나로 제어할 수 있는 서보 수는 몇 개입니까?

타이머 채널 수에 따라 다릅니다. 일반적인 STM32F103에는 타이머당 최대 4개의 채널이 있으며 여러 타이머를 사용할 수 있습니다. 4개의 타이머를 사용하면 최대 16개의 서보가 가능합니다.

Q: 서보에 외부 전원 공급 장치가 필요합니까?

예. STM32 보드에서 직접 서보에 전원을 공급하지 마십시오. 모든 서보의 총 전류 소비량에 맞는 별도의 5V 또는 6V 전원 공급 장치를 사용하십시오.

Q: 펄스 폭이 2ms를 초과하면 어떻게 됩니까?

일부 서보는 기계적 한계를 넘어 이동하려고 시도하여 손상을 일으킬 수 있습니다. 항상 서보의 지정된 범위 사이에서 펄스 값을 고정하십시오.

Q: 하드웨어 PWM 대신 인터럽트 기반 타이밍을 사용할 수 있습니까?

기술적으로는 그렇습니다. 그러나 권장되지는 않습니다. 소프트웨어 PWM은 CPU 사이클을 소비하고 지터를 발생시킵니다. 하드웨어 PWM은 항상 더 안정적입니다.

Q: 내 서보가 Arduino에서는 작동하지만 STM32에서는 작동하지 않는 이유는 무엇입니까?

Arduino 라이브러리는 타이머 구성을 숨깁니다. STM32에서는 프리스케일러와 기간을 수동으로 설정해야 합니다. 가장 일반적인 이유는 잘못된 프리스케일러 값입니다.

Q: PWM 신호가 올바른지 어떻게 테스트합니까?

오실로스코프를 사용하여 GPIO 핀의 신호를 측정합니다. 주파수(50Hz)와 펄스 폭(1~2ms)을 확인합니다. 로직 분석기로도 충분합니다.

Q: DMA를 사용하여 서보를 제어할 수 있습니까?

예, 하지만 복잡성이 추가됩니다. DMA는 CPU 개입 없이 CCR 레지스터를 업데이트할 수 있어 다중 서보 동기화 이동에 유용합니다.

Q: 서보가 여전히 작동하지 않으면 어떻게 해야 합니까?

부하가 걸리는 전원 전압을 확인하십시오. 4.8V 미만으로 떨어지면 간헐적인 동작이 발생할 수 있습니다. 또한 신호 접지가 서보 접지에 연결되어 있는지 확인하십시오.

12귀하의 애플리케이션에 적합한 서보 및 STM32 쌍 선택

서보 선택은 애플리케이션의 토크, 속도 및 정밀도 요구 사항에 따라 달라집니다. 소형 플라스틱 기어 서보는 경량 프로토타입에 적합하지만 산업 또는 연속 작업 응용 분야에서는 피드백 기능이 있는 메탈 기어 서보를 고려하십시오.

선택한 STM32에는 서보 카운트에 충분한 타이머 채널이 있어야 합니다. 4개의 서보가 있는 프로젝트의 경우 STM32F103C8T6이면 충분합니다. 16개 서보의 경우 타이머와 핀이 더 많은 STM32F407 또는 STM32F429로 이동하세요.

디자인을 마무리하기 전,서보 토크 요구 사항기계적 부하에 대비합니다. 부하가 걸린 상태에서 서보가 멈추면 STM32는 이를 고칠 수 없습니다. 마찬가지로, 만약전원 공급 장치피크 전류를 전달할 수 없으면 서보가 위치를 잃게 됩니다.

옵션을 비교하는 구매자의 경우 공급업체에 서보의 작동 전압 범위, 정지 전류 및 권장 PWM 사양을 문의하세요. 또한 특정 모델에 대한 STM32의 타이머 기능을 확인하십시오. 에이맞춤형 서보 솔루션같은 제조사에서kpower서보 기구애플리케이션별 튜닝을 제공할 수 있지만 대량 생산을 시작하기 전에 항상 STM32를 사용하여 신호 인터페이스를 검증하세요.

앞으로 나아갈 준비가 되면 이메일을 보내세요.서보 사양그리고토크 요구 사항귀하의 공급 업체에. 호환성을 확인하려면 PWM 구성에 대한 엔지니어링 검토를 요청하세요. 이 단계만으로도 몇 주간의 디버깅 시간을 단축하고 모션 제어 시스템이 설계된 대로 작동하도록 보장할 수 있습니다.

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

미래에 힘을 실어주다

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

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