전기차 계기판의 배터리 잔량이 어느 날 갑자기 몇 퍼센트씩 튀는 것을 보고 나는 센서가 고장 났나 걱정했다. 분명 79%였는데 잠깐 사이 82%로 올라 있기도 했다. 연료게이지는 이렇게 튀지 않는데 배터리 잔량은 왜 들쭉날쭉할까 의아했다. 알고 보니 배터리 잔량은 연료처럼 직접 측정하는 값이 아니라, 여러 데이터를 종합해 추정하는 값이었다. 그래서 추정에 오차가 생기면 표시가 튀는 것이었다. 이 글에서는 배터리 SOC가 실제 전압과 어떤 관계인지, 잔량이 어떻게 계산되는지 다룬다.
잔량은 연료처럼 직접 측정된다는 오해
배터리 잔량이 연료탱크 게이지처럼 남은 양을 직접 재는 값이라고 생각하기 쉽다. 나도 잔량 표시를 정확한 측정값으로 믿었다. 그러나 배터리 잔량, 즉 SOC는 직접 측정할 수 있는 양이 아니다. 배터리 안에 얼마가 남았는지 들여다볼 방법이 없어, 여러 간접 데이터로 추정해야 한다. 핵심은 SOC가 측정값이 아니라 계산으로 얻는 추정값이라는 점이다. 추정인 이상 오차가 있고, 그 오차가 잔량 표시가 튀는 현상으로 나타난다.
SOC란 무엇인가
SOC(State of Charge)는 배터리에 남은 충전량을 전체 용량 대비 백분율로 나타낸 값이다. SOC는 배터리에 남은 충전량을 전체 용량의 백분율로 표현하며, 전기차에서는 주행거리 추정과 과충전, 과방전 방지 같은 안전 기능에 핵심 정보를 제공한다. arxiv
SOC 추정이 어려운 이유는 배터리의 특성에 있다. 배터리는 비선형 거동을 보이고 온도, 노화, 방전 속도 같은 작동 조건에 영향을 받아 SOC 추정이 까다롭다. 같은 잔량이라도 온도나 부하에 따라 배터리가 보이는 값이 달라지므로, 단순히 한 가지 값만 봐서는 정확한 잔량을 알 수 없다. 그래서 BMS는 여러 방법을 조합해 SOC를 계산한다. arxiv
전압으로 잔량을 읽는 방법과 한계
SOC를 추정하는 첫 번째 방법은 전압을 이용하는 것이다. 전압 기반 SOC 추정은 배터리의 개방회로전압(OCV)을 측정해 잔량을 추정하는 방식으로, OCV와 SOC의 관계를 나타낸 전압-SOC 곡선에 의존한다. 완전 충전 시 전압이 완전 방전 시보다 높다는 사실에 기반해, 특정 시점의 전압을 만충 전압과 비교하는 원리다. Eurekauspto
문제는 이 방법에 한계가 있다는 점이다. 첫째, 정확한 OCV를 얻으려면 배터리가 충분히 쉬어 평형에 도달해야 한다. OCV 방법은 배터리가 충분히 쉰 뒤의 단자 전압을 알려진 OCV-SOC 곡선에 대응시켜 SOC를 추정하며, 이는 배터리가 평형 상태일 때 성립하는 준정적 관계를 전제한다. 주행이나 충전 중에는 전압이 부하에 따라 출렁여 정확한 잔량을 읽기 어렵다. 둘째, 배터리 종류에 따라 전압 곡선이 평평해 이 방법이 잘 듣지 않는다. 리튬인산철(LFP) 배터리처럼 충전 상태와 무관하게 전압이 거의 일정한 배터리는 개방회로전압 측정으로 신뢰할 만한 SOC를 얻을 수 없다. 반대로 니켈코발트망간(NCM) 배터리처럼 전압-충전 곡선이 경사진 배터리는 개방회로전압으로 SOC를 추정하기에 더 적합하다. 이 평탄 곡선 문제는 LFP 충전을 다룬 글에서도 짚었다. ActionPower + 2
전압법과 쿨롱 카운팅 비교
SOC 추정의 두 핵심 방법을 정리하면 다음과 같다. 각각 장단점이 뚜렷하다.
| 항목 | 전압법(OCV) | 쿨롱 카운팅 |
|---|---|---|
| 원리 | 전압을 SOC 곡선에 대응 | 전류를 시간으로 적산 |
| 측정 시점 | 충분히 쉰 뒤 | 실시간 가능 |
| 강점 | 단순, 기준점 제공 | 주행 중에도 추적 |
| 약점 | 부하 중 부정확, LFP 취약 | 오차 누적(드리프트) |
| 단독 사용 | 부적합 | 부적합 |
표에서 보듯 두 번째 방법인 쿨롱 카운팅은 실시간 추적이 가능하다. 쿨롱 카운팅은 충전과 방전 전류를 시간에 따라 적분해 배터리에 들어가고 나간 에너지를 추적하는, 가장 직관적인 SOC 추정 방식이다. 하지만 약점이 있다. 전류를 측정해 시간으로 적분하는 이 방식은 완벽한 측정이 불가능하기에 장기적인 드리프트와 기준점 부재 문제를 겪는다. 작은 측정 오차가 시간이 지나며 쌓여 실제 잔량과 어긋나는 것이다. ActionPowerWikipedia
두 방법을 합쳐 보정하는 원리
어느 방법도 단독으로는 부족하기에, BMS는 두 방법을 결합해 약점을 메운다. 쿨롱 카운팅으로 실시간 잔량을 추적하되, 누적된 오차는 전압법으로 주기적으로 바로잡는 방식이다. 쿨롱 카운팅에서 생기는 적산 누적 오차나 초기 SOC 추정 오차를 보정하기 위해, 쿨롱 카운팅과 등가회로 모델 기반 방식을 결합한 방법이 쓰인다. uspto
내 계기판의 잔량이 갑자기 튄 것은 바로 이 보정이 일어난 순간이었다. 쿨롱 카운팅으로 추적하던 값이 실제와 조금 어긋나 있다가, 배터리가 충분히 쉬어 전압으로 정확한 기준점을 다시 잡는 순간 표시값이 한 번에 수정된 것이다. 즉 잔량이 튀는 것은 고장이 아니라 추정값이 보정되는 정상 동작이다. 특히 만충 시점은 가장 확실한 기준점이라, 주기적 만충이 잔량 정확도를 높이는 이유가 여기에 있다. 만충과 셀 밸런싱, 잔량 보정의 관계는 셀 밸런싱을 다룬 글에서 짚었다.
증상으로 보는 진단과 처방
SOC 표시가 이상해 보일 때 원인을 짚어보면 다음과 같다.
| 증상 | 추정 원인 | 처방 |
|---|---|---|
| 잔량이 갑자기 몇 % 튐 | 추정값 보정 발생 | 정상, 만충으로 기준점 확보 |
| LFP인데 잔량 부정확 | 평탄 전압 곡선 | 주기적 완속 만충 |
| 오래 80% 부근만 사용 | 기준점 부재, 드리프트 | 가끔 0~100% 폭넓게 사용 |
| 주행 중 잔량 출렁임 | 부하로 전압 변동 | 정상, 쉰 뒤 값 참고 |
| 표시 거리와 실제 큰 차이 | 용량 변화 미반영 | 만충 방전으로 재학습 |
이 표에서 가장 흔한 오해는 맨 위 항목이다. 잔량이 튀는 것을 센서 고장으로 여기기 쉽지만, 대부분은 추정값이 정확한 기준점으로 보정되는 정상 과정이다. 나는 이 점을 안 뒤로 잔량이 튀어도 불안해하지 않는다. 오히려 가끔 만충해 기준점을 잡아주면 표시가 더 정확해진다.
실전 잔량 관리법
SOC 표시를 정확하게 유지하려면 주기적으로 기준점을 잡아주는 것이 핵심이다. 가장 확실한 기준점은 만충이므로, 가끔 완속 충전으로 100%까지 충전하면 BMS가 잔량을 다시 보정한다. 특히 전압 곡선이 평평한 LFP 배터리는 전압으로 잔량을 읽기 어려워, 주기적 만충 보정이 더 중요하다.
늘 좁은 구간만 쓰는 것도 잔량 추정을 어렵게 한다. 배터리 용량은 넓은 충방전 범위에서 작동할 때 더 정확하게 추정되므로, 가끔은 잔량을 폭넓게 써주는 편이 추정 정확도에 도움이 된다. 다만 이것이 매번 0%까지 방전하라는 뜻은 아니며, 과방전은 배터리에 해로우므로 균형이 필요하다. 표시 거리가 실제와 크게 어긋난다면, 한 번 충분히 충전했다 사용해 BMS가 현재 용량을 다시 학습하게 한다. 나는 잔량 표시를 절대적 수치로 믿기보다, 추정값임을 감안해 여유를 두고 운행한다. SOC는 정밀한 측정값이 아니라 똑똑한 추정값이라는 점을 알면, 표시를 더 현명하게 활용할 수 있다. uspto
자주 묻는 질문(FAQ)
Q. 배터리 잔량이 갑자기 튀는데 고장인가?
대부분 고장이 아니다. 잔량(SOC)은 직접 측정하는 값이 아니라 전류 적산과 전압으로 추정하는 값이라, 누적된 오차가 정확한 기준점에서 한 번에 보정될 때 표시가 튄다. 특히 배터리가 충분히 쉰 뒤나 만충 시점에 보정이 일어나며, 이는 정상 동작이다.
Q. LFP 배터리는 왜 잔량 표시가 부정확한가?
LFP는 충전 상태가 바뀌어도 전압이 거의 일정한 평탄한 곡선을 가져, 전압으로 잔량을 읽는 방식이 잘 듣지 않는다. 그래서 전압만으로는 정확한 SOC를 얻기 어렵다. 주기적으로 완속 충전으로 만충해 기준점을 잡아주면 잔량 표시 정확도가 올라간다.
Q. 잔량을 정확하게 유지하려면 어떻게 해야 하나?
가끔 완속 충전으로 100%까지 충전해 BMS가 기준점을 다시 잡게 하는 것이 효과적이다. 늘 좁은 구간만 쓰기보다 가끔 잔량을 폭넓게 사용하는 것도 추정에 도움이 된다. 다만 과방전은 배터리에 해로우므로 매번 0%까지 쓰는 것은 피하는 편이 좋다.
마무리
배터리 SOC는 연료게이지처럼 직접 측정하는 값이 아니라, 전압과 전류 데이터를 종합해 얻는 추정값이다. 전압법은 쉰 상태에서 기준점을 주지만 부하 중이나 LFP에서 약하고, 쿨롱 카운팅은 실시간 추적이 되지만 오차가 누적된다. BMS는 둘을 결합해 보정하며, 잔량이 튀는 것은 이 보정이 일어나는 정상 과정이다. SOC가 추정값임을 이해하고 가끔 만충으로 기준점을 잡아주면, 잔량 표시를 더 정확하고 현명하게 쓸 수 있다.