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

STM32 제어 서보: PWM 신호 및 정확도 조정 가이드

게시됨 2026-05-08

늦은 밤. 연구실 조명은 아직 켜져 있습니다.

나는 STM32 개발 보드를 손에 꼭 쥐고 움직이지 않는 서보를 열심히 바라보았습니다. 코드 컴파일도 통과하고 다운로드도 성공했는데 왜 움직임이 없던 걸까요?

마치 나를 비웃는 듯 디버거가 화면에서 깜빡거렸다.

데이터시트를 반복해서 살펴보았지만 중요한 역할을 하는 구성 라인을 찾을 수 없었던 적이 있습니까?

4년 전 그날 밤, 저는 처음으로 STM32를 사용하여 서보를 제어했습니다. PWM은 듀티 사이클을 변경하는 것만큼 쉽다고 생각합니다. 그 결과 서보가 떨리더니 완전히 조용해졌습니다.

나중에 나는 가장 중요한 단계인 시계 활성화를 잊어버렸다는 것을 깨달았습니다.

작성 팁: 처음부터 드라이버 작성

01서보는 왜 당신의 말을 듣지 않습니까?

서보는 순종적인 아이입니다. 단 하나의 언어(PWM)만 필요합니다.

주기는 20밀리초이고, 상위 레벨 시간은 0.5밀리초에서 2.5밀리초 사이로 표준 서보와 관련이 있습니다.

선택할 수 있는 STM32 타이머 모드는 매우 다양합니다. PWM1과 PWM2의 차이점은 무엇입니까? 위쪽으로 세고 아래쪽으로 세는 동안 서보는 이러한 상황에 정말로 신경을 쓰나요?

프로젝트에서 테스트한 서로 다른 가격대의 세 가지 서보가 있습니다. 보급형 서보 중 하나는 0.5ms의 좋은 응답 성능을 가지고 있습니다. 그러나 또 다른 산업용 등급 서보에는 데드 타임을 1us까지 정확하게 만들어야 한다는 요구 사항이 있습니다.

다음과 같은 경우가 있습니다. 작년에 저는 친구가 5축 로봇 팔을 디버깅하는 것을 도왔습니다. 사용되는 것은 일반적인 중간 토크 서보입니다.코드 상태는 완벽한 것 같습니다. 듀티 사이클이 5%에서 10%로 조정되면 서보는 두 개의 극단적인 위치에서 점프합니다.

프리스케일러 및 자동 다시 로드 값 계산.

72MHz 상태의 STM32의 경우 50Hz의 PWM 주파수를 얻으려면 주파수 분할 계수가 임의로 결정되지 않습니다. 각 서보에는 서로 다른 감도, 서로 다른 데드존, 심지어 서로 다른 전원 공급 장치 전압이 있어 "청각"이 변경됩니다.

02떨림에서 안정감으로

너무 많은 사람들이 서보를 3.3V PWM 핀에 직접 연결하는 것을 보았습니다.

그런 다음 "STM32 드라이버 성능이 너무 약합니다."라고 불평했습니다.

아니요, 격리하는 것을 잊었습니다.

작성 프롬프트: 데이터시트의 더 깊은 의미를 이해하세요.

디버깅은 3시간 동안 지속되었습니다. 나는 오실로스코프를 사용하여 전선을 하나씩 조사했습니다. 조사 중에 서보가 회전하면 전류가 1.2A까지 급등하는 것을 발견했습니다. 그러다가 개발 보드의 3.3V 전압 조정기가 이러한 전류를 견딜 수 없다는 것을 깨달았습니다.

해결책은 간단합니다. 외부 전원 공급 장치, 공통 접지입니다.

控制舵机代码_控制舵机转动程序_stm32 控制舵机

그 이후로 나의 모든 스티어링 기어 프로젝트는 세 가지 철칙을 따랐습니다.

서보용 별도 전원 공급 장치(4.8V-6V)

제어 신호 스트링 1kΩ 저항

전원 접지선은 STM32 접지선에 안정적으로 연결됩니다.

이 세 가지 항목은 디버깅 시간을 모두 투자할 가치가 있습니다.

하지만 전원 공급만으로는 충분하지 않습니다. 정밀도는 서보 제어의 핵심입니다.

일반적인 지연과 유사한 기능은 어떻습니까? 잊어버리세요, 단호하게 포기하세요. 타이머로 인한 인터럽트는 어떻습니까? 괜찮고 사용가능합니다.진정한 전문가라고 할 수 있는 작동 방법은 STM32의 고급 타이머를 사용하여 보완적인 PWM을 출력하고 제동 기능을 켜는 것입니다.

왜? 서보가 멈춰도 서보가 타버리는 것을 원하지 않기 때문입니다.

03문서에는 정밀도가 숨겨져 있습니다.

STM32 참조 매뉴얼을 엽니다. 14장은 타이머에 속하고, 15장은 타이머에 속하며, 16장은 타이머에 속하고, 17장은 타이머에 속합니다.

초보자는 레지스터 목록을 보면 어지러워집니다. 저도요.

그러나 가장 중요한 속성을 가진 페이지가 있습니다: 출력 비교 모드의 구성 테이블입니다. 어떤 레지스터가 듀티 사이클을 제어하는지, 어떤 레지스터가 극성을 제어하는지, 어떤 레지스터가 데드존을 제어하는지 알려줄 수 있습니다.

글쓰기 프롬프트: 데드타임의 중요성

다음 프로젝트에는 0.5도의 서보 각도 정확도가 필요합니다. 시중에 나와 있는 대부분의 서보는 일반적으로 1us의 해상도만 지원합니다.; 20ms 기간에서 1us는 정확히 0.18도에 해당합니다. 이론적 분석에 따르면 이 정확도로 충분합니다.

그러나 실제 테스트 결과 값싼 서보의 반환 차이는 2us에 불과한 것으로 나타났습니다.

무엇을 해야 할까요?

소프트웨어 보상.

코드에서는 해당 관계에 따라 이론적 듀티 사이클과 실제 각도를 연관시키는 매핑 테이블을 구축했습니다. 이를 교정하기 위해 선형 보간법을 사용했는데, 최종 정확도는 0.3도에 이르렀습니다.

이 사례는 하드웨어에 한계가 있지만 알고리즘이 이를 해결할 수 있음을 알려줍니다.

Q/A

Q: 서보가 전혀 움직이지 않습니다. 어떻게 해야 합니까?

A: 먼저 전원 전압과 공통 접지를 확인하십시오. 오실로스코프를 사용하여 PWM 신호가 있는지 확인하십시오.

Q: 서보가 심하게 진동합니다. 이유가 무엇인가요?

控制舵机代码_控制舵机转动程序_stm32 控制舵机

주기는 20ms이고 신호에 결함은 없지만 PWM 주파수가 일치하지 않거나 듀티 사이클이 안정적이지 않아 확인이 필요합니다.

Q: STM32의 PWM 해상도가 충분하지 않으면 어떻게 해야 합니까?

A: 타이머 클럭을 줄이거나 16비트 모드를 사용하고 외부 PCA9685 모듈을 연결할 수도 있습니다.

Q: 여러 개의 서보가 동시에 움직이도록 제어하는 ​​방법은 무엇입니까?

A: 인터럽트 충돌을 피하기 위해 동일한 타이머의 여러 채널을 사용하여 PWM을 출력합니다.

04코드 밖의 사각지대

많은 사람들이 코드 작성을 마치고 하루 만에 끝냅니다.

그러나 스티어링 기어는 기계 장치입니다. 그것은 그 자체의 성격을 가지고 있습니다.

글쓰기 프롬프트: 신체적 한계와 안전 보호

과거에는 서보가 90도 회전하여 데드볼트를 밀어내는 자동 도어 잠금장치를 설계한 적이 있습니다. 당시 해당 프로그램은 수백 번에 걸쳐 테스트를 거쳤고, 각 테스트 결과는 정상으로 나타났다. 그러나 설치 후 3일 만에 자물쇠가 걸렸습니다.

계속해서 서보가 차단되면 내부 드라이버 칩의 온도가 120도까지 올라간다.

교훈은 무엇입니까?

모든 스티어링 기어 프로젝트에는 시간 초과 보호 및 전류 감지 기능이 추가되어야 합니다. STM32 ADC는 스티어링 기어 전류를 실시간으로 모니터링할 수 있습니다. 전류가 임계값을 초과하고 0.5초 동안 지속되면 PWM 출력이 즉시 차단됩니다.

이것은 과도한 엔지니어링이 아닙니다. 이것이 프로와 아마추어의 분수령이다.

사각지대도 있습니다: 서보의 초기 위치입니다.

전원이 꺼졌을 때 로봇 팔이 위험한 위치에 있는 경우 STM32는 전원이 켜지는 순간 기본 레벨을 출력합니다. 이 수준이 최대 듀티 사이클이 되면 서보는 한계에 부딪히게 됩니다.

첫째, 해결책은 GPIO가 초기화되기 전에 타이머 출력 핀을 고임피던스 상태로 구성하는 것입니다.둘째, 해결책은 하드웨어 활성화 신호를 추가하고 서보 전원을 켜기 전에 시스템이 안정될 때까지 기다리는 것입니다.

데이터시트에서는 이러한 세부 정보를 알려주지 않습니다.

05코드에서 작업까지

손 안에 있는 STM32 개발 보드는 단순히 LED를 켜는 것 이상의 기능을 수행할 수 있습니다.

이를 통해 서보는 원을 그리고, 쓰고, 물건을 잡고, 밸브를 조정할 수 있습니다.

하지만 전제는 각 매개변수의 출처를 이해하는 데 시간을 할애할 의지가 있다는 것입니다.

프롬프트 작성: 폐쇄 루프 피드백이 궁극적인 솔루션입니다.

정말로 높은 정확도를 추구한다면 개루프 제어를 포기하십시오.

저는 생체공학 로봇 프로젝트에 전념하여 각 관절에 전위차계 피드백을 추가했습니다. STM32는 ADC 값을 읽고 이를 목표 각도와 비교한 다음 PID 알고리즘을 사용하여 PWM을 조정하는 역할을 담당했습니다. 이런 방식으로 하중이 어떻게 변하더라도 위치는 항상 정확합니다.

개루프 제어는 눈을 가린 채 걷는 것과 같습니다. 폐쇄 루프 제어는 눈을 뜨고 걷는 것과 같습니다.

당신은 어느 것을 선택합니까?

지금 이 순간, 한밤중에 연구실을 돌아보세요. 조타 장치가 회전하지 않는 이유는 코드에 오류가 있어서가 아니라 아직 완전히 익히지 못한 지식의 사각지대가 있었기 때문입니다.

모든 실패는 학습 경험입니다.

06조치를 취하다

STM32를 사용하여 실제로 서보를 제어하려면 다음 단계를 기억하세요.

펄스 폭 변조 기간과 펄스 폭 범위를 확인하려면 서보 데이터 시트를 주의 깊게 읽으십시오.

오실로스코프를 사용하여 STM32의 파형 출력을 확인하고 계산을 신뢰하지 마십시오.

독립 전원 공급 장치, 공통 접지 및 보호 저항기.

각도 매핑 및 시간 초과 보호 기능이 소프트웨어에 추가되었습니다.

정전 및 재시동, 회전자 막힘, 신호 간섭 등 극한 조건을 테스트합니다.

글쓰기 프롬프트: 핵심 아이디어를 반복하고 그에 따라 행동하세요.

핵심은 단 하나뿐입니다. 정확성은 문서에 숨겨져 있고 안정성은 테스트에서 나옵니다.

지금 코드를 확인하여 프리스케일러 값이 올바르게 계산되었는지, 접지되었는지, 전원을 켜는 순간 핀 상태가 안전한지 확인하세요.

다시 프로그래밍하세요.

스티어링 기어가 돌아가는 소리를 들어보세요.

더 이상 떨리지 않습니다.

그것은 당신을 위해 일하고 있습니다.

늦은 밤에도 연구실에는 불이 켜져 있습니다.

그런데 이번에는 웃고 계시군요.

업데이트 시간:2026-05-08

미래에 힘을 실어주다

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

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