배터리 잔량 표시가 갑자기 몇 %씩 튀거나, 완충 후에야 숫자가 제자리를 찾는 경험은 흔합니다. 이것은 대부분 표시 버그가 아니라 SOC가 원래 측정되는 값이 아니기 때문에 생기는 현상입니다. VoltInsight의 BMS란 무엇일까?에서 BMS가 SOC를 “추정”한다고 설명했는데, 이 글은 그 추정이 구체적으로 어떤 방법으로 이뤄지고 어디에서 오차가 쌓이는지를 계산으로 확인합니다.
- SOC는 직접 측정할 수 있는 물리량이 아니다. 전류·전압·온도 측정값으로부터 추정해야 하며, 그래서 추정 방법마다 고유한 오차 구조가 있다(MathWorks).
- 쿨롱 카운팅은 전류를 적분하는 방식이라 전류 센서의 미세한 바이어스가 시간에 비례해 누적된다. 500A 풀스케일 센서의 0.5%FS 바이어스(2.5A)는 200Ah 팩에서 8시간이면 10%p 오차가 된다.
- OCV 조회는 정확하지만 충분한 휴지 시간이 필요하다. 전류가 흐르는 동안 단자전압은 내부저항 때문에 OCV와 다르다.
- 팩 용량 자체가 노화로 줄기 때문에, BMS가 초기 용량을 계속 쓰면 실제 SOC 50%가 45%로 표시되는 식의 오차가 생긴다.
- 실제 BMS는 한 방법만 쓰지 않는다. 모델 기반 추정(확장·무향 칼만 필터)이 예측과 보정을 반복하며 두 방식의 약점을 서로 메운다.
1. SOC는 측정되는 값이 아니다
[확인된 사실] SOC(State of Charge)는 0과 1 사이로 정규화된 값으로, 배터리에 지금 얼마나 충전돼 있는지를 나타냅니다. 문제는 이 값에 대응하는 센서가 없다는 점입니다. MathWorks의 설명에 따르면 SOC는 직접 측정할 수 없고 인가 전류, 단자전압, 표면온도 같은 측정 가능한 값으로부터 유추해야 합니다.
전류를 적분해 구하는 기본식은 다음과 같습니다.
SOC(t₁) = SOC(t₀) + (1 / Ctotal) × ∫ η·i(t)/3600 dt
여기서 i(t)는 전류(방전이 음수), η는 쿨롱 효율, Ctotal은 팩의 총 용량(Ah)입니다. 이 식을 보면 오차가 들어올 수 있는 자리가 이미 세 군데 보입니다. 초기값 SOC(t₀), 적분되는 전류 i(t), 그리고 분모의 Ctotal입니다. 아래에서 셋을 차례로 봅니다.
2. 쿨롱 카운팅 — 단순하지만 오차가 흘러간다
[확인된 사실] MathWorks는 쿨롱 카운팅(전류 적분)과 OCV 조회를 “구현이 쉽고 경우에 따라 충분히 정확한” 전통적 방식으로 분류하면서, 쿨롱 카운팅의 약점으로 초기화 문제와 전류 측정 노이즈의 누적을 명시합니다.
누적이 왜 문제인지는 숫자로 보면 분명합니다. [계산 가정] 200Ah 팩에 풀스케일 500A 전류 센서를 쓴다고 하겠습니다. 센서에 일정한 방향의 바이어스가 있으면 그 오차는 상쇄되지 않고 적분됩니다.
| 센서 정확도 | 바이어스 | 1시간 후 | 4시간 후 | 8시간 후 | 24시간 후 |
|---|---|---|---|---|---|
| 0.5 %FS | 2.5 A | 2.5 Ah (1.2 %p) | 10 Ah (5.0 %p) | 20 Ah (10.0 %p) | 60 Ah (30.0 %p) |
| 0.1 %FS | 0.5 A | 0.5 Ah (0.2 %p) | 2 Ah (1.0 %p) | 4 Ah (2.0 %p) | 12 Ah (6.0 %p) |
여기서 중요한 것은 절대 크기가 아니라 기울기입니다. 랜덤 노이즈는 적분하면 어느 정도 상쇄되지만, 한쪽으로 치우친 바이어스는 시간에 정비례해 커집니다. 그래서 쿨롱 카운팅만으로 운영하는 시스템은 주기적으로 기준점을 다시 잡아주지 않으면 오차가 계속 자랍니다.
3. OCV 조회 — 정확하지만 쉬어야 한다
기준점을 다시 잡는 대표적인 방법이 OCV(개방회로전압) 조회입니다. 셀의 화학 조성마다 SOC와 OCV 사이에 대응 관계가 있어, OCV를 알면 SOC를 역으로 찾을 수 있습니다.
[확인된 사실] 다만 MathWorks는 이 방식이 OCV 측정을 전제로 하고, 그 전에 충분히 긴 휴지 시간이 선행돼야 한다고 지적합니다.
이유는 내부저항입니다. 전류가 흐르는 동안 단자에서 읽히는 전압은 OCV가 아니라 OCV에서 I × R만큼 이동한 값입니다. 내부저항 1mΩ인 팩에 100A가 흐르면 단자전압은 OCV보다 0.1V 낮게(방전 시) 읽힙니다. 200A라면 0.2V입니다. 리튬이온 셀의 OCV-SOC 곡선은 중간 SOC 구간에서 상당히 평탄하기 때문에, 이 정도 오프셋도 SOC 환산에서는 큰 차이를 만듭니다. 내부저항과 전압 강하의 관계는 배터리 내부저항과 DCIR에서 자세히 다뤘습니다.
그래서 OCV 조회는 차를 세워두고 한동안 지난 뒤, 또는 완충 직후처럼 상태가 확정되는 시점에서 가장 잘 동작합니다. 주차 후 시동을 걸었을 때 잔량 표시가 조정되는 경험은 이 재보정과 관련이 있습니다.
4. 분모가 변한다 — SOH가 SOC를 흔드는 이유
앞의 식에서 아직 다루지 않은 항이 Ctotal입니다. [확인된 사실] MathWorks는 총 용량을 “완충 상태에서 완전 방전까지 빼낼 수 있는 전하량”으로 정의하면서, 배터리가 열화되면 이 값이 감소한다고 명시합니다. 즉 SOC 계산식의 분모는 상수가 아닙니다.
[계산 가정] 초기 200Ah였던 팩이 노화로 실제 180Ah가 됐는데 BMS가 여전히 200Ah를 기준으로 계산한다고 하겠습니다. 남은 전하가 90Ah일 때,
- 실제 SOC = 90 ÷ 180 = 50%
- 표시 SOC = 90 ÷ 200 = 45%
센서가 완벽하고 적분이 정확해도 5%p 오차가 생깁니다. 게다가 이 오차는 노화가 진행될수록 커집니다. 그래서 실제 BMS는 SOH(State of Health) 추정을 함께 돌려 분모를 갱신하는데, SOH 추정 자체가 또 다른 추정이라는 점이 이 문제를 어렵게 만듭니다.
[확인된 사실] 단자에서 보이는 값만으로 배터리 내부에서 무슨 일이 일어났는지 판정하기 어렵다는 점은 아르곤 국립연구소의 설명에서도 확인됩니다. 저항 상승이 관찰되더라도 그것이 저항층 성장 때문인지 전극 박리 때문인지는 시험 결과만으로 구분되지 않으며, 해체 후 분석이 필요하다고 설명합니다. BMS는 바로 그 “단자에서 보이는 값”만 가지고 내부 상태를 추정해야 하는 입장입니다.
5. 모델 기반 추정 — 두 방법을 서로 보정한다
[확인된 사실] MathWorks에 따르면 실제 BMS 구현에서는 확장 칼만 필터(EKF)와 무향 칼만 필터(UKF) 방식이 합리적인 연산량으로 정확한 결과를 낸다고 알려져 있습니다. 이런 관측기는 비선형 배터리 모델을 포함하고, BMS가 측정한 전류와 전압을 입력으로 받아 예측과 보정 두 단계를 반복하면서 SOC를 포함한 내부 상태를 계산합니다.
구조를 단순하게 말하면 이렇습니다. 예측 단계에서는 전류 적분으로 다음 SOC를 내다보고(쿨롱 카운팅의 장점), 보정 단계에서는 모델이 예상한 전압과 실제 측정 전압의 차이만큼 추정값을 끌어당깁니다(전압 정보의 장점). 쿨롱 카운팅은 단기적으로 매끄럽지만 장기적으로 흘러가고, 전압 기반 추정은 순간적으로 흔들리지만 장기적으로는 제자리를 잡습니다. 두 성질이 서로의 약점을 덮습니다.
같은 자료는 단말 저항까지 함께 추정하는 적응형 칼만 필터 구성도 소개합니다. 앞 절에서 본 “분모가 변한다” 문제에 대응하기 위해 용량을 변수로 두는 구성도 함께 제공됩니다.
6. 세 방법 비교
| 방법 | 입력 | 강점 | 약점 | 기준점 재설정 |
|---|---|---|---|---|
| 쿨롱 카운팅 | 전류 | 구현이 단순하고 단기적으로 매끄러움 | 초기값 의존, 전류 센서 바이어스가 누적, 용량 변화에 취약 | 필요 (완충·휴지) |
| OCV 조회 | 전압(+온도) | 절대 기준을 제공, 누적 오차 없음 | 충분한 휴지 필요, 평탄 구간에서 분해능 저하 | 자체가 기준점 |
| 모델 기반(EKF·UKF) | 전류 + 전압(+온도) | 둘의 약점을 상호 보정, 실시간 동작 | 배터리 모델과 파라미터 품질에 의존, 연산량 증가 | 내부적으로 지속 보정 |
7. 실무에서 확인할 것
- 전류 센서의 정확도는 “풀스케일 대비”로 명시돼 있는지 확인한다. 0.5%라는 숫자가 측정값 대비인지 풀스케일 대비인지에 따라 저전류 구간의 실제 오차가 크게 달라집니다.
- 기준점을 다시 잡을 기회가 실제로 생기는 운용인지 본다. 완충까지 가지 않고 얕은 구간만 오가는 운용(예: 피크 대응 ESS)은 OCV 재보정 기회가 드물어 쿨롱 카운팅 드리프트가 쌓이기 쉽습니다.
- SOH 갱신 주기를 확인한다. 용량을 갱신하지 않는 BMS는 노화가 진행될수록 SOC 표시가 체계적으로 치우칩니다.
- SOC 정확도 사양의 조건을 확인한다. “±3%”가 어떤 온도, 어떤 C-rate, 어떤 SOC 구간에서의 값인지 없이는 비교가 되지 않습니다.
- 표시 SOC와 셀의 실제 사용 범위는 다르다. 많은 시스템이 보호를 위해 셀 전압 범위의 일부만 0~100%로 매핑합니다.
자주 묻는 질문
Q1. 완충하면 SOC가 정확해지나요?
완충은 기준점을 다시 잡을 수 있는 대표적인 시점입니다. 충전 종료 조건에 도달하면 SOC를 100%로 확정할 수 있으므로 그때까지 누적된 적분 오차가 초기화됩니다. 다만 그것이 팩 용량(SOH) 자체를 갱신한다는 뜻은 아닙니다.
Q2. 표의 오차 값은 실제 제품 데이터인가요?
아닙니다. 전류 센서 바이어스 × 경과시간 ÷ 팩 용량으로 계산한 모델 값입니다. 오차가 시간에 정비례해 누적된다는 구조는 문헌에 근거하지만, 특정 BMS의 실측 정확도로 인용해서는 안 됩니다.
Q3. 잔량 표시가 갑자기 뛰는 것은 고장인가요?
대부분은 재보정입니다. 휴지나 완충으로 절대 기준이 확보되면 그동안 누적된 추정 오차만큼 표시값이 한 번에 조정될 수 있습니다. 다만 반복적으로 큰 폭으로 튄다면 센서나 SOH 추정 쪽을 점검할 필요가 있습니다.
Q4. SOC와 SOH는 무엇이 다른가요?
SOC는 “지금 얼마나 차 있는가”, SOH는 “그릇 자체가 얼마나 줄었는가”입니다. 둘의 구분은 BMS란 무엇일까?에 정리했습니다.
관련 글
- BMS란 무엇일까? 배터리 관리 시스템의 역할과 SOC·SOH — 이 글의 출발점이 되는 BMS의 전체 기능
- 배터리 내부저항이란? DCIR이 높아지면 어떤 문제가 생길까? — OCV와 단자전압이 갈라지는 이유
- DCIR과 EIS의 차이 — 내부 상태를 측정으로 파고드는 방법
- 전기차 배터리 수명은 실제 몇 년일까? — SOH가 실제로 어떻게 변하는가
팩 용량과 C-rate를 직접 환산해봐야 한다면 배터리 C-rate 계산기를, 셀 구성에서 팩 용량을 구해야 한다면 배터리 직렬·병렬 계산기를 사용할 수 있습니다.
출처
출처 최종 확인: 2026-09-20
- What Is Battery State of Charge? (MathWorks) — SOC 정의와 적분식, SOC가 직접 측정되지 않는다는 점, 쿨롱 카운팅·OCV 조회·칼만 필터 계열의 특성과 한계, 노화에 따른 총 용량 감소
- Post-Test Facility (Argonne National Laboratory) — 저항 상승이 관찰되어도 그 원인이 저항층 성장인지 전극 박리인지는 시험 결과만으로 구분되지 않으며 해체 후 분석이 필요하다는 점

답글 남기기