Low Pass Filter는 우리말로 저주파 통과 필터라는 뜻이며, 한마디로 정리하자면 주파수가 낮은 대역만 데이터를 취하는 하나의 방법이다.
Low Pass Filter를 쓰는 이유는 이 방법 자체가 주파수가 낮은 대역만 취하기 때문에 주파수가 갑자기 높은(예를 들어 센서의 노이즈가 심한 경우) 상황이 발생하게 된다면 시스템에 문제를 일으킬 수 있다.
1. 이론
xk : 현재 LPF를 거친 값_계산된 값
xk-1 : 이전 LPF를 거친 값
α : 가중치 (0~1사이 값)
LPF를 만드는 방법으로 이전 측정 값과 현재 측정 값에 가중치를 두어 계산한다.
LPF식은 1차 회로에서 출발
라플라스 변환으로 주파수 도메인으로 변경
*Filter 확인법 (LPF)
ω_cut은 차단 각주파수(rad/s)
위 식을 라플라스 역변환해 아래와 같이 씀
이산 신호를 고려한 최종 식
두 식을 비교하면 alpha는
2. 코드 변환
(1) LPF형태
위 차분 방정식을 확장해, 현재 및 이전 입력을 혼합하는 방식의 필터를 구현하면
x : lpf를 거치지 않은 신호
y : lpf를 거친 신호
La_rpm & Lb_rpm : 가중치 신호
(2) 가중치 계수 유도
가중치 계수는 Z 변환을 사용해 유도된다.
*라플라스 공간에서 Z공간으로(Tustin Transform)
z = esT 이므로 s = (1/T)ln(z) 이다.
s의 맥클로린 급수 1차 근사식을 구하기 위해, 변수 z를 치환한다.
라플라스 공간 변수 s를 z공간 변수로 바꿔주는 1차 근사식은
*Z공간에서 라플라스 공간으로
z공간 변수를 라플라스 공간 변수 s로 바꾸는 1차 근사식은
유도 과정
Tustin변환을 사용해 s를 시간 도메인 z로 변환
Y(z) = X(z)·G(z)에 대입
(3) LPF코드
*eQep.c
// LPF
rpm_m_low = La_rpm * rpm_m_low + Lb_rpm * (rpm_m + rpm_m_old);
rpm_m_old = rpm_m;
*LPF_parameter.c
float Fc_rpm = 100, La_rpm = 0, Lb_rpm = 0;
void LPF_Parameter(void)
{
La_rpm = (2 - PI2 * Fc_rpm * OUTERLOOP_SAMPLING_TIME) / (2 + PI2 * Fc_rpm * OUTERLOOP_SAMPLING_TIME);
Lb_rpm = PI2 * Fc_rpm * OUTERLOOP_SAMPLING_TIME / (2 + PI2 * Fc_rpm * OUTERLOOP_SAMPLING_TIME);
}
'Study > Feedback System' 카테고리의 다른 글
Nyquist[나이퀴스트]와 Bode Plot[보드선도] 안정도 판별법 (0) | 2023.03.10 |
---|---|
주파수 응답 특성[Frequency Response] (2) | 2023.03.09 |
PID control (0) | 2022.08.02 |