모터 돌리면 셀 전압이 흔들린다.
모터 OFF: 3320mV ±2mV
모터 ON: 3320mV ±50mV
±50mV면 알람 오작동 위험.
노이즈 원인
- 전도 노이즈: 전원 라인 타고 들어옴
- 방사 노이즈: 공중으로 날아옴
- 그라운드 루프: GND 전위차
모터 드라이버(인버터)가 수십 kHz로 스위칭하면서 노이즈 뿌린다.
대책 1: 전원 필터
BMS 전원 입력에 LC 필터:
Vin ──[L]──┬── Vcc
│
[C]
│
GND
// 부품 값
L = 10uH
C = 100uF + 0.1uF
공통 모드 초크도 추가하면 더 좋다.
대책 2: SPI 라인 보호
SPI 신호선에 페라이트 비드 + RC 필터:
MCU ──[FB]──[33Ω]──┬── AD7280A
│
[100pF]
│
GND
고주파 노이즈 컷.
대책 3: 아날로그/디지털 분리
PCB에서 AGND와 DGND 분리.
┌─── AGND (아날로그)
│
GND ──┤ 한 점에서만 연결
│
└─── DGND (디지털)
MCU 클럭 노이즈가 ADC에 영향 안 가게.
대책 4: 쉴딩
케이스를 금속으로. 또는 BMS 보드에 쉴드 캔.
커넥터 부분이 취약. 페라이트 코어 끼우면 효과 있다.
대책 5: 소프트웨어 필터
하드웨어로 다 못 잡으면 소프트웨어로.
// 이동 평균
#define FILTER_SIZE 8
uint16_t filter_buf[24][FILTER_SIZE];
int filter_idx = 0;
uint16_t Filter_CellVoltage(int cell, uint16_t raw) {
filter_buf[cell][filter_idx] = raw;
uint32_t sum = 0;
for (int i = 0; i < FILTER_SIZE; i++) {
sum += filter_buf[cell][i];
}
return sum / FILTER_SIZE;
}
노이즈 스파이크 제거:
// 중앙값 필터
uint16_t Filter_Median(uint16_t *buf, int size) {
// 정렬 후 중앙값 반환
// 튀는 값 제거에 효과적
}
테스트 결과
대책 적용 후:
모터 OFF: 3320mV ±2mV
모터 ON: 3320mV ±8mV
±50mV → ±8mV. 충분히 안정.
EMC 체크리스트
[전원]
□ LC 필터
□ 공통 모드 초크
□ 벌크 캡 + 세라믹 캡 병렬
[신호선]
□ 페라이트 비드
□ RC 필터
□ 시리즈 저항
[PCB]
□ AGND/DGND 분리
□ 그라운드 플레인
□ 짧은 배선
[기구]
□ 금속 케이스
□ 커넥터 페라이트
□ 케이블 쉴드
다음은 양산 검사 지그.