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 시나리오별 튜닝 가이드
| 시나리오 | Kp | Ki | Kd | 관성 | 비고 |
|---|---|---|---|---|---|
| 모터 속도 제어 | 2.0 | 0.5 | 0.1 | 0.6 | 표준 응답 |
| 온도 제어 | 1.2 | 0.3 | 0.8 | 0.85 | 고관성, D 강조 |
| 관절 각도 제어 | 3.0 | 0.2 | 1.2 | 0.5 | 빠른 응답, D 강조 |
| 불안정 (진동) | 4.5 | 1.5 | 0.01 | 0.6 | Windup 발생 참고용 |
4.3 MQTT + PID 실시간 원격 튜닝
4.4 고급 제어 확장 로드맵
4.5 시뮬레이터 ↔ 실제 펌웨어 대응
부록. 핵심 공식 요약
│ PID 이산 구현 (Pseudo-Code)
Python
| 파라미터 | 증가 효과 | 감소 효과 |
|---|---|---|
| Kp | 응답 빠름, 오버슈트↑, 진동 위험 | 응답 느림, 정상상태 오차↑ |
| Ki | 정상상태 오차 제거, Windup 위험 | 오차 잔존, 응답 안정 |
| Kd | 오버슈트↓, 노이즈 민감 | 오버슈트↑, 노이즈 강인 |