Inflearn brand logo image

인프런 커뮤니티 질문&답변

규철님의 프로필 이미지
규철

작성한 질문수

바닥부터 시작하는 STM32 드론 개발의 모든 것

10-2. 싱글 PID제어 이론 - 구현 (2/2)

PID제어 질문

작성

·

46

0

PID제어에 관해서 애매모호한 부분이 있어서 질문드립니다. 해당 강의에서 D제어는 브레이크를 걸어주는 역할이라서 P, I 제어와는 반대의 부호로 변환하여 CCR 레지스터에 넣어 주었습니다. 근데 구글에서 자료를 찾아보니 다른 자료들이 있어서 질문 드립니다.

image.pngimage.png

위에 그림은 D제어도 더해주지만 아래 그림은 D제어는 빼주고 있습니다. 브레이크를 걸어주는 역할이라면 아래 그림이 맞는 것 같긴하지만, 둘 중 어떤게 맞는 자료인가요??

답변 2

0

ChrisP님의 프로필 이미지
ChrisP
지식공유자

안녕하세요.

PID제어의 블럭도를 보시면 어떤건 D제어가 +로 되어있는게 있고 -로 되어있는게 있는데요, 사실 이 그림에서 부호의 의미는 오차의 부호에 따라 달라지므로 여기서는 단순히 "P 제어기의 결과, I 제어기의 결과, D 제어기의 결과가 합쳐져서 PID 제어기의 결과가 된다" 라고 이해하시면 될 것 같습니다.

그리고 D제어기의 결과는 에러 = (현재-이전) 으로 계산하는지, 에러 = (이전 - 현재) 로 계산하는지에 따라 부호가 결정됩니다. 강의에서는 에러 = (현재-이전) 로 계산합니다.

강의의 설명을 들어보시고 천천히 이해해보세요!

0

안녕하세요, 인프런 AI 인턴입니다.

PID 제어에서 D (Derivative) 제어의 역할에 대해 이해하는 것은 복잡할 수 있지만, 요약하자면 다음과 같습니다.

D 제어는 속도의 변화율에 대한 정보를 제공하여 시스템의 안정성을 높이는 데 기여합니다. 이 부분이 “브레이크를 걸어주는 역할”이라고 표현되기도 합니다. D 제어의 목적은 오버슈트를 줄이고 시스템이 목표 값에 빠르게 도달하면서도 안정적으로 도달하도록 돕는 것입니다.

PID 제어를 구현할 때, P(비례), I(적분), D(미분) 각각의 역할을 이해하고 조정하는 것이 중요합니다. 기본적으로 PID 컨트롤러는 u(t) = Kp * error + Ki * ∫error dt + Kd * d(error)/dt의 형태를 갖습니다.

  • P(비례 제어): 현재 오차에 대한 반응을 제어합니다.
  • I(적분 제어): 시간에 따라 누적된 오차에 반응하여 오차를 줄입니다.
  • D(미분 제어): 오차의 변화율에 반응하여 시스템의 예측된 변화 속도를 조절합니다.

귀하의 그림에서 D 제어를 더하거나 빼는 형식의 차이는 시스템의 요구사항에 따라 구현할 수 있습니다. 기본적으로 D 제어는 오차 변화에 대한 반응이므로, 실제 구현에서는 시스템의 필요한 안정성과 빠른 응답을 위해 실험적으로 조정될 수 있습니다.

따라서, “브레이크” 역할을 하는 D 제어가 반드시 빼주는 역할만 하는 것은 아니며 상황에 따라 다르게 적용될 수 있다는 점을 이해하시면 좋겠습니다.

관련 상세 설명은 다음 게시물들이 도움이 될 수 있습니다:
- 센서 한 개로는 PID 더블 제어가 불가능한가요?
- PID 제어를 위한 1kHz 타이머 생성 및 센서 부호 일치화

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

규철님의 프로필 이미지
규철

작성한 질문수

질문하기