> 업계 통찰 >서보 기구
기술 지원

STM32 서보 PID 제어 프로그램은 간단하고 이해하기 쉽습니다. 흔들림 방지 디버깅 튜토리얼

게시됨 2026-03-18

게임을 할 때 이런 상황이 자주 발생합니까?서보 기구s: 짐벌이 대상을 향해 꾸준히 조준되기를 원하지만 계속 흔들리고 있습니다. 아니면 지정된 각도로 회전하고 싶지만 항상 제자리로 회전하지 못합니까? 이는 실제로 제대로 조정되지 않은 일반적인 PID 제어입니다. STM32를 처음 접하는 많은 친구들은 PID가 너무 복잡하다고 생각합니다. 사실, "어떻게 만드는가"를 해결하는 데 도움이 되는 일련의 수학적 방법입니다.서보 기구순종적인". 오늘 우리는 STM32를 사용하여 PID 프로그램을 작성하는 방법에 대해 이야기하겠습니다.서보 기구지침을 정확하게 준수하여 이해하고 사용할 수 있도록 하십시오.

PID 제어란 정확히 무엇입니까?

간단히 말해서, PID는 매우 똑똑한 "교정기"와 같습니다. 움직이는 물체를 손으로 잡고 있다고 상상해 보세요. 당신의 눈은 물체의 위치(피드백 값)를 봅니다. 당신의 두뇌는 물체가 어디에 있고 얼마나 빨리 움직이는지 계산한 다음 손에 조정(출력)을 지시합니다. 이것이 PID가 하는 일입니다. 목표 위치와 현재 실제 위치의 차이를 실시간으로 계산한 후, 그 차이를 수정하기 위해 어느 정도의 힘을 사용해야 하는지 알려줍니다. P는 교정 강도를 결정하는 비율입니다. I는 통합되어 장기간 누적된 오류를 제거하는 데 도움이 됩니다. D는 미분으로 변화하는 추세를 미리 감지하고 오버슈트를 방지할 수 있습니다.

서보가 계속 진동하는 이유는 무엇입니까?

이것이 가장 골치 아픈 문제입니다. 대부분의 경우 P값을 너무 높게 조정했기 때문입니다. 비례 제어는 운전할 때 앞에 있는 자동차를 볼 때 가속 페달을 얼마나 세게 밟는지에 따라 P 값이 결정되는 것과 같습니다. P가 너무 크면 거리가 조금 멀어진 것을 확인하자마자 가속 페달을 밟아 오버슛을 하게 됩니다. 그런 다음 브레이크를 밟습니다. 이렇게 앞뒤로 움직이면 차가 앞뒤로 흔들리게 됩니다. 서보의 경우에도 마찬가지입니다. P가 너무 크면 목표 위치에서 앞뒤로 진동하게 됩니다. 이때 적절하게 P를 줄이거나 차동 제어 D를 도입해야 합니다. D는 "감쇠" 역할을 하고 이 진동을 억제하며 스티어링 기어를 안정적으로 만들 수 있습니다.

STM32용 PID 프로그램 작성이 어렵나요?

어렵지 않습니다. 핵심 코드는 실제로 몇 줄에 불과합니다. 먼저 세 개의 매개변수(Kp, Ki, Kd)와 여러 변수(목표 값, 현재 값, 마지막 오류, 적분항)를 정의해야 합니다. 메인 루프에서는 서보의 현재 위치를 지속적으로 읽고(보통 전위차계에서 피드백되는 ADC 값) 오류를 계산합니다. 비례항 P = 오류Kp. 적분항 I = 누적 적분항 + 오차Ki는 마찰이나 기타 이유로 인해 발생하는 작은 편차를 천천히 보완하는 데 도움이 될 수 있습니다. 미분항 D = (현재 오류 - 마지막 오류) * Kd. 마지막으로 출력 PWM 값 = P + I + D. 계산된 PWM 값을 타이머에 할당하여 서보가 회전하도록 구동합니다. 이로써 가장 기본적인 폐쇄 루프 제어가 완성됩니다.

위치 또는 증분 중 어느 것을 사용해야 합니까?

조향 기어 제어를 위해 우리는 일반적으로 위치 PID를 사용합니다. 위치 PID는 최종적으로 서보에 제공하려는 절대 위치(PWM 듀티 사이클)를 계산합니다. 직관적이고 이해하기 쉽습니다. 문자 그대로 "이제 이 각도로 가야 합니다."라고 알려줍니다. 증분 PID는 이전 출력을 기준으로 현재 출력의 "변화"를 계산합니다. 매번 수행되는 단계 수를 정밀하게 제어해야 하는 스테퍼 모터와 같은 시나리오에 적합합니다. 서보를 제어할 때 우리가 관심을 갖는 것은 서보가 어떻게 가는지가 아니라 멈추는 위치입니다. 따라서 위치 PID는 요구 사항에 더 부합하고 코드 구현이 더 간단하며 적분 포화 문제가 발생하기 쉽지 않습니다.

조정한 매개변수를 어떻게 저장하나요?

오후 내내 열심히 일하셔서 마침내 서보가 안정되게 되셨습니다. 전원이 꺼질 때마다 초기화할 수는 없겠죠? 이를 위해서는 STM32의 내부 플래시 시뮬레이션을 사용하거나 외부 칩을 연결해야 합니다. 프로그램에서 세 가지 조정된 매개변수 Kp, Ki 및 Kd를 구조로 정의할 수 있습니다. 디버깅이 완료되면 버튼을 누르면 저장 기능이 실행되고 이 구조의 데이터가 지정된 플래시 주소에 기록됩니다. 다음에 시스템이 시작되면 초기화 코드의 해당 주소에서 데이터를 읽고 이를 PID의 세 가지 매개변수에 할당합니다. 이런 방식으로 전원이 꺼지면 매개변수가 저장되고 디버깅 결과는 영원히 유지됩니다.

어떻게 하면 서보 응답을 더 빠르고 안정적으로 만들 수 있나요?

이를 위해서는 "통합 분리" 트릭을 사용해야 합니다. 전통적인 PID를 사용하면 서보가 막 회전하기 시작하고 위치 오류가 크면 적분 항 I이 필사적으로 큰 값을 축적하게 됩니다. 서보가 목표에 접근하려고 할 때 이 거대한 적분 값은 심각한 "오버슈트"를 ​​생성하여 서보가 오버슈트하게 만듭니다. 해결책은 임계값을 설정하는 것입니다. 예를 들어 오류가 50도보다 크면 적분 항 I를 지우고 작동하지 않게 합니다. 오류가 50도 미만이고 서보가 거의 제자리에 있을 때만 적분 항 I이 개입하여 마지막 작은 정적 차이를 제거하도록 합니다. 이는 제자리에 있을 때 빠른 시작과 정확성을 모두 보장합니다.

자, 서보의 STM32 제어를 위한 PID 프로그램에 관한 핵심 아이디어와 단계는 아마도 이것이었을 것입니다. 실제로 튜닝을 할 때, 파라미터 튜닝은 인내심이 필요한 과정이고, 코드 자체를 작성하는 것보다 시간이 더 걸릴 수 있습니다. 프로젝트 작업 시 위치 PID 사용을 선호하는지, 아니면 다른 보다 지능적인 제어 알고리즘을 사용해 보셨나요? 댓글 영역에서 귀하의 경험을 공유해 주셔서 감사합니다. 이 글이 도움이 되셨다면 좋아요와 저장, 그리고 서보를 플레이하는 더 많은 친구들에게 전달하는 것도 잊지 마세요!

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

미래에 힘을 실어주다

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

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