내가 한 부분 위주로 결과만 정리함
불평형 선풍기 결함 신호 해석
해당 문제의 경우 진동 신호 데이터와 실제 선풍기 이외에 어떤 추가 데이터도 제공되지 않았음. 근데 회전체라는 게 회전 수를 알아야 그걸 기준점으로 신호를 해석하는 거잖아요. 그래서 나름대로 선풍기의 스펙을 알아내고자 시도했으나 RPM은 구체적으로 알아낼 수 없었고, 아래의 정보 정도로 요약됨.
- 모델명: 홍진테크 인더스 IN-M3012
- 금속 재질로 구성됨, 4엽, 바람 세기 3단 구성.
- RPM 정보 확인 불가, 정격 전력 AC 220V 60Hz
- 모터 상단 수직에 가속도 센서 부착
- 날개에 구멍 뚫기 및 볼트 부착으로 질량 불평형 형성됨
- 단수 별 불평형 전후 진동 스펙트럼 비교 → 당연히 진폭이 크게 상승하고 주파수 그래프가 지저분해짐
![]()
![]()
![]()
- 단수 별 1X 요약
- 정상 상태
- 1단: 1X 주파수 16Hz
- 2단: 1X 주파수 18Hz
- 3단: 1X 주파수 21Hz
- 불평형 상태
- 1단: 1X 주파수 15Hz
- 2단: 1X 주파수 17Hz
- 3단: 1X 주파수 20Hz
- 정상 상태
- 1X를 해당 값으로 설정한 이유
- 타코미터 측정 실패: 마커 없음, 선풍기 및 손 떨림
- 일반적으로 가정용 선풍기의 RPM은 공개되지 않아 주파수 데이터와 일반적인 성능을 기반으로 결정: 보통 1100~1300RPM 수준의 모터 사용
- 1200RPM = 20Hz 내외의 값을 최대 속도로 가정
- 정상 상태의 각 단에서 가장 큰 피크를 보였던 주파수 확인: 16Hz, 18Hz, 21Hz → 각각 1, 2, 3단에 해당
- 비정상 상태의 각 단에서 기존 1X와 유사하고 가장 큰 피크를 보이는 주파수: 15Hz, 17Hz, 20Hz
- 밸런싱 결함으로 각 단에서 1Hz씩 속도 감소 ← 이게 무슨 말이냐면, 선풍기에 뚫은 구멍과 새로 꽂은 볼트의 직경은 유사하지만, 구멍은 얄팍한 반면 볼트는 두꺼워서 잃은 질량보다 얻은 질량이 더 많아졌고, 이 점이 모터의 속도를 아주 약간 감소시키는 데에 일조하지 않았을까 짐작함
- 정상 상태 단수 별 속도 스펙트럼
- 어느 정도 진동 존재하나 1X와 4X(BPF) 및 기타 배수 성분 확인됨 (보라색 마커)
- 정상 진동 원인: 선풍기 제조 시 생긴 공차(정상 범위 이내)로 인한 미세 마모 및 유격, 날개가 공기를 밀어내며 생긴 마찰 및 와류, 공차로 인한 불완전한 밸런싱 등
- 가정용 선풍기 정도에 아주 엄격한 공차를 요구하는 것은 과함. 내부 부품들이야 잘 만들어야겠지만 외부 철망 정도는 대충 붙어있기만 하면 됨. → 여기서 허용 공차가 발생하고, 뭐 오래 썼으면 어느 정도 마모도 있을 거고 유격도 있겠지.
- 바람을 일으키는 게 그 목적인 장비이기 때문에 공기 저항의 영향을 꽤 받을 것. 공기와의 마찰이나 와류 등이 몸체 흔들림에 영향을 줄 것이다
- 1번의 이유로 밸런싱은 당연히 완전하지 않을 것. 왜냐면 그정도로 요구되는 장비가 아니니까.
- 정상 진동 원인: 선풍기 제조 시 생긴 공차(정상 범위 이내)로 인한 미세 마모 및 유격, 날개가 공기를 밀어내며 생긴 마찰 및 와류, 공차로 인한 불완전한 밸런싱 등
- 1X와 무관한 성분(노란색 마커) 확인되었으나, 120Hz대의 성분은 60Hz로 입력되는 전력 사양 때문 ← 센서나 선풍기에 입력되는 전류가 센서 측정값에 같이 나타날 수 있다고 한다.
![]()
- 어느 정도 진동 존재하나 1X와 4X(BPF) 및 기타 배수 성분 확인됨 (보라색 마커)
- 정상/불평형 비교
Raw 데이터 신호 처리 알고리즘 작성
물론 cursor가 썼다.. 내가 한 것은 제미니와 커서에게 상황을 이해시키고 적절한 코드를 쓰도록 지시하기
- 알고리즘 개요
- 데이터 로드
- 시간 축 설정
- FFT 처리 (주파수 도메인 변환)
- 그래프 그리기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
import pandas as pd import numpy as np import matplotlib.pyplot as plt from scipy.fft import fft, fftfreq # 한글 폰트 설정 FONT_FAMILY = "Malgun Gothic" # Windows 한글 폰트 FONT_SIZE = 13 TITLE_FONT_SIZE = 15 # ========== 설정 파라미터 ========== file_path = r"Extruder Gear Bearing결함.csv" to_save = "img/" fsize = (60, 10) data_col_idx = 1 # 두 번째 컬럼(Series0)이 진동 데이터 time_col_idx = 0 # 첫 번째 컬럼(X)이 시간 데이터 has_header = True # 헤더가 있음 (X, Series0) fs_input = None # 시간 열이 없을 경우 수동으로 입력할 샘플링 레이트(Hz) # ========== 1. 데이터 로드 ========== df = pd.read_csv(file_path, header=None if not has_header else 0) data_col_name = df.columns[data_col_idx] if has_header else f"Column {data_col_idx}" y = df.iloc[:, data_col_idx].values # ========== 2. 시간 축 설정 ========== t = df.iloc[:, time_col_idx].values dt = np.mean(np.diff(t)) fs = 1 / dt print(f"분석 정보: 데이터 길이={len(y)}, 추정/입력 Fs={fs:.2f} Hz") # ========== 3. FFT 처리 (원본 데이터) ========== N = len(y) yf = fft(y) xf = fftfreq(N, dt)[:N//2] # 진폭 스펙트럼: DC 성분은 1/N, 나머지는 2/N fft_magnitude = np.abs(yf[0:N//2]) fft_magnitude[0] = fft_magnitude[0] / N # DC 성분 fft_magnitude[1:] = 2.0 / N * fft_magnitude[1:] # 나머지 # ========== 6. 그래프 그리기 ========== # (1) 시간 도메인 원본 데이터 plt.figure(figsize=fsize) plt.plot(t, y, label='Raw Data (Time Domain)', color='blue') plt.title(f'Time Domain: {data_col_name}') plt.xlabel('Time (s)') plt.ylabel('Amplitude') plt.grid(True) plt.legend() plt.tight_layout() plt.savefig(to_save + 'time_domain_original.png') plt.savefig(to_save + 'time_domain_original.svg') plt.show() # (2) FFT (주파수 도메인) - 원본 데이터 plt.figure(figsize=fsize) plt.plot(xf, fft_magnitude, label='FFT Magnitude', color='red') plt.title('Frequency Domain (FFT) - Original Data') plt.xlabel('Frequency (Hz)') plt.ylabel('Magnitude') plt.grid(True) plt.legend() plt.tight_layout() plt.savefig(to_save + 'frequency_domain_original.png') plt.savefig(to_save + 'frequency_domain_original.svg') plt.show()
- 분석 대상 데이터
- 압축기 감속기 기어/베어링 손상 사례
- 기타 설비 사양 공개되지 않음
- 알고리즘 처리 결과
- 사실 1단 기어 주파수와 2단 기어 주파수 피크 표시는 짐작하여 표시한 것임. 왜냐? 기어 이빨 갯수도 몰랐으니까. 강사님의 도움을 많이 받았음.
- 저주파 쪽에 있는 성분이야 GMF라고 짐작하지만 고주파 쪽에 있는 저 파동은 사실 뭔지 잘 모름. 그래서 발표에서도 은근슬쩍 말 안했다. 나중에 물어볼걸 그랬나 싶음.







