본문 바로가기
공학

Low pass(로우 패스) 필터 - 라플라스 도메인, 타임 도메인, C코딩

by Bonila 2024. 5. 20.

Low pass(로우 패스) 필터를 C코드로 구현 해보도록 하겠습니다.

0. Low pass filter(저역통과 필터) 란

- 주파수 도메인에서 고주파 성분을 제거하고자 할때 사용

 

1. 라플라스 도메인에서의 Low pass filter 형태

 

Low pass(로우 패스) 필터

 

 

 

 

 

ω_c (Cut off frequency) : 필터가 작동하는 기준 주파수, -3db가 되는 시점

- Cut off frequency보다 높은 주파수 대역의 입력은 해당 필터를 지나서 절반 이하의 출력을 내보냄

ex) 모터 최대 회전 주파수(f_c)가 100hz 일때 ω_c는?

ω_c = 2π*f_c 

 

이론적으로 최소 ω_c = 200π이 되어야 하지만 실제로는 안전 마진 고려하여 5~10배 사이 적용

 

ω_c가 작을 경우 노이즈 성분이 줄지만 딜레이가 커짐

ω_c가 클경우 딜레이는 적지만 노이즈 성분이 많아짐

2. 타임 도메인에서의 Low pass filter 형태

 

라플라스 도메인, 타임 도메인, C코딩

 

라플라스 도메인에서 입력과 출력을 함께 표시해 보았다.

수식적으로 보면 아래와 같음

라플라스 도메인, 타임 도메인, C코딩

 

s는 타임도메인에서 미분텀이기 때문에 s에 미분 인자 대입

라플라스 도메인, 타임 도메인, C코딩

타임도메인에서 수식을 다시 정리하면 다음과 같다.

 

로우 패스

 

로우 패스

이 수식을 y_k에 대해 정리하면 아래와 같다.

로우 패스

 

3. C 코딩

 

위 타임 도메인에서의 필터 형태를 그대로 코드로 옮기면 됨

 

coeff_a = 1 / (1 + wc * T_s); 

coeff_b = wc * T_s / (1 + wc * T_s); 

 

lpf_y = coeff_a * lpf_y_ex + coeff_b * input_x;

lpf_y_ex = lpf_y ;