IndustrialUpdated 2025-04-01

PID 제어 알고리즘 상세 가이드

목표값(Setpoint)과 현재값(Process Variable 사이의 오차(Error를 3가지 방식으로 분석하여 제어 출력을 계산하는 피드백 제어 알고리즘

ESP32-S3PlatformIOFreeRTOS

1. 개념 (Concept)

1.1 PID란?

Proportional · Integral · Derivative — 자동 제어의 핵심

PID 제어기는 **목표값(Setpoint)**과 현재값(Process Variable) 사이의 **오차(Error)**를 3가지 방식으로 분석하여 제어 출력을 계산하는 피드백 제어 알고리즘이다.

오차(Error) = 목표값(Setpoint) - 현재값(Process Variable) 제어 출력 = P항 + I항 + D항

1.2 세 가지 제어 항

이름역할특성
P비례 (Proportional)현재 오차에 즉각 반응빠른 응답, 정상상태 오차 잔존
I적분 (Integral)누적 오차 제거정상상태 오차 제거, 과도응답 위험
D미분 (Derivative)오차 변화율 예측오버슈트 감소, 노이즈 민감

1.3 핵심 용어

  • Setpoint (SP): 도달해야 할 목표값 (예: 100 rpm, 28°C)
  • Process Variable (PV): 센서가 측정한 현재값
  • Error (e): SP − PV
  • Control Output (u): 액추에이터로 보내는 제어 신호 (PWM, 전압 등)
  • Overshoot: 목표값을 초과한 최대 편차 (%)
  • Settling Time: 오차가 허용 범위 내로 수렴하는 시간
  • Steady-State Error: 수렴 후 남은 잔류 오차

2. 상세 내용 (Details)

2.1 수학적 공식

연속 시간 (Continuous Time):

u(t) = Kp·e(t) + Ki·∫e(t)dt + Kd·de(t)/dt

이산 시간 (Discrete Time) — MCU 구현용:

e[n] = SP - PV[n] integral[n] = integral[n-1] + e[n] · Δt derivative = (e[n] - e[n-1]) / Δt u[n] = Kp·e[n] + Ki·integral[n] + Kd·derivative

2.2 각 파라미터의 영향

2.3 응답 특성 비교

2.4 Integral Windup (적분 와인드업)

적분 항이 무한히 누적되면 시스템이 포화 상태에 빠지는 문제.

코드 구현:

typescript

2.5 노이즈 필터링 (Derivative Kick 방지)

미분 항은 노이즈에 민감하므로 측정값에 직접 적용하거나 로우패스 필터를 사용한다.

typescript

3. 구조 설명 (Architecture)

3.1 PID 제어 루프 전체 구조

3.2 이산 PID 상태 머신

3.3 Next.js 컴포넌트 구조

3.4 ESP32 펌웨어 구조 (FreeRTOS)

3.5 파라미터 튜닝 플로우 (Ziegler-Nichols)


4. 응용 (Applications)

4.1 CtrlPlus 생태계 적용 맵

4.2 시나리오별 튜닝 가이드

시나리오KpKiKd관성비고
모터 속도 제어2.00.50.10.6표준 응답
온도 제어1.20.30.80.85고관성, D 강조
관절 각도 제어3.00.21.20.5빠른 응답, D 강조
불안정 (진동)4.51.50.010.6Windup 발생 참고용

4.3 MQTT + PID 실시간 원격 튜닝

4.4 고급 제어 확장 로드맵

4.5 시뮬레이터 ↔ 실제 펌웨어 대응


부록. 핵심 공식 요약

│ PID 이산 구현 (Pseudo-Code)

Python
파라미터증가 효과감소 효과
Kp응답 빠름, 오버슈트↑, 진동 위험응답 느림, 정상상태 오차↑
Ki정상상태 오차 제거, Windup 위험오차 잔존, 응답 안정
Kd오버슈트↓, 노이즈 민감오버슈트↑, 노이즈 강인