Chapter 8. DAQ and Signal Processing
| 스마트 인프라의 계측 개론 | 건설환경공학과 대학원
데이터 수집 시스템(DAQ, Data Acquisition System)은 센서에서 발생하는 아날로그 신호를 컴퓨터가 처리할 수 있는 디지털 데이터로 변환하고, 저장·전송·분석하는 전 과정을 담당하는 시스템이다.
DAQ 시스템의 기본 구성은 다음과 같다.
| 구성 요소 | 역할 |
|---|---|
| 센서 / 트랜스듀서 | 물리량 → 전기 신호 변환 |
| 신호 컨디셔닝 | 증폭, 필터링, 절연, 브리지 전원 공급 |
| A/D 변환기 (ADC) | 아날로그 → 디지털 신호 변환 |
| DAQ 보드 / 데이터 로거 | 다채널 신호 수집, 저장, 타임스탬프(Timestamp) |
| 컴퓨터 / 클라우드 | 데이터 저장, 분석, 시각화, 경보 |
ADC의 분해능은 비트(bit) 수로 표현되며, 표현 가능한 이산 레벨 수를 결정한다.
센서 신호를 ADC 입력 범위에 맞게 조정하는 과정이다.
아날로그 신호를 디지털로 정확히 복원하려면 신호의 최고 주파수의 최소 2배 이상의 속도로 샘플링해야 한다.
The Golden Rule:
To perfectly reconstruct a continuous signal,
your sampling rate must be strictly greater
than twice the signal's highest frequency.
샘플링 주파수가 나이퀴스트 조건을 만족하지 못할 경우, 고주파 성분이 저주파 성분으로 잘못 표현되는 앨리어싱이 발생한다.
앨리어싱 방지를 위해 ADC 이전에 안티-앨리어싱 필터(Anti-aliasing Filter)를 적용하여 나이퀴스트 주파수 이상의 성분을 제거한다.
| 측정 대상 | 주요 주파수 범위 | 권장 샘플링 주파수 |
|---|---|---|
| 교량 변위 (정적) | DC~1 Hz | 10~50 Hz |
| 교량 진동 (동적) | 0~50 Hz | 200~500 Hz |
| 지진 모니터링 | 0~100 Hz | 200~1000 Hz |
| AE (음향 방출) | 100~500 kHz | 1~2 MHz |
| 초음파 검사 | 1~25 MHz | 50~100 MHz |
김두기, 구조동역학(제6판): 1.4.7 필터, 구미서관, 2025.
| 필터 유형 | 통과 대역 | 적용 예시 |
|---|---|---|
| 저역 통과 (LPF) | 저주파 성분 통과, 고주파 차단 | 정적 변위, 온도, 환경 데이터 |
| 고역 통과 (HPF) | 고주파 성분 통과, 저주파(직류) 차단 | 가속도 계측 (중력 성분 제거) |
| 대역 통과 (BPF) | 특정 주파수 대역만 통과 | AE, 진동 모드 분리 |
| 노치 (Notch) | 특정 주파수만 차단 | 전력선 주파수(60 Hz) 제거 |
FIR (Finite Impulse Response) — 유한 임펄스 응답
IIR (Infinite Impulse Response) — 무한 임펄스 응답
FIR 필터
피드포워드만 (피드백 없음)
IIR 필터
피드포워드 + 피드백
| 특성 | FIR | IIR |
|---|---|---|
| 안정성 | 항상 안정 | 설계에 따라 불안정 가능 |
| 위상 특성 | 선형 위상 (파형 왜곡 없음) | 비선형 위상 (왜곡 가능) |
| 연산량 | 많음 (탭 수 多) | 적음 (낮은 차수로 구현) |
| 주요 사용처 | ECG·EEG, 오디오 이퀄라이저 | 실시간 제어, 음성 코덱 |
import numpy as np
from scipy import signal
# 4차 Butterworth 저역 통과 필터 (차단 주파수: 10 Hz, 샘플링: 1000 Hz)
fs = 1000 # 샘플링 주파수 [Hz]
fc = 10 # 차단 주파수 [Hz]
order = 4
sos = signal.butter(order, fc, btype='low', fs=fs, output='sos')
filtered = signal.sosfiltfilt(sos, raw_data) # 위상 왜곡 없는 양방향 필터링
시간 영역(time domain) 신호를 주파수 영역(frequency domain)으로 변환하여 신호의 주파수 성분을 분석하는 핵심 알고리즘이다.
유한 길이의 데이터를 FFT 할 때 발생하는 스펙트럼 누설(spectral leakage)을 줄이기 위해 윈도우 함수를 적용한다.
| 윈도우 | 특징 | 적용 |
|---|---|---|
| Rectangular | 처리 없음, 누설 최대 | 과도 신호 |
| Hanning | 누설 적음, 주파수 분해능 중간 | 범용 진동 분석 |
| Hamming | 사이드로브 감쇠 우수 | 음성, 통신 신호 |
| Flattop | 진폭 정확도 최고 | 교정, 레벨 측정 |
그래픽 기반 프로그래밍 언어로, 실시간 데이터 수집·제어·분석에 최적화되어 있다. 주요 특징은 다음과 같다.
import nidaqmx
import numpy as np
# NI DAQmx Python API로 아날로그 입력 수집
with nidaqmx.Task() as task:
task.ai_channels.add_ai_voltage_chan("Dev1/ai0")
task.timing.cfg_samp_clk_timing(
rate=1000, # 샘플링 주파수 1 kHz
sample_mode=nidaqmx.constants.AcquisitionType.FINITE,
samps_per_chan=5000 # 5초 분량
)
data = task.read(number_of_samples_per_channel=5000)
data_array = np.array(data)
print(f"평균값: {np.mean(data_array):.4f} V")
여러 센서를 동시에 수집할 때, 모든 채널은 동일한 클럭 소스와 트리거 신호를 사용하여 동기화(synchronization)해야 한다. 동기화 오차는 위상 계산과 크로스 스펙트럼 분석에 직접 영향을 미친다.