BMS를 만들어야 했다. 24셀 LiFePO4 배터리팩용.
셀 전압 측정, 밸런싱, 과충전/과방전 보호. 이걸 직접 다 구현하려면 OP앰프 24개에 먹스에 ADC에… 보드가 도마만 해진다.
검색해보니까 배터리 모니터링 전용 IC가 있더라. TI의 BQ 시리즈, ADI의 AD7280A/LTC68xx 시리즈.
회사에 AD7280A 평가보드가 굴러다니길래 이걸로 시작했다.

AD7280A 스펙
- 6셀 리튬이온 배터리 모니터링
- 12비트 ADC, 정밀도 ±1.5mV
- 셀당 내장 밸런싱 스위치
- SPI 통신
- 데이지체인으로 최대 8개 연결 (48셀)
- 과전압/저전압 알람
6셀씩 모니터링하니까 24셀이면 4개 필요하다.
데이지체인이라는 게 있어서 IC끼리 줄줄이 연결하면 MCU는 맨 앞에 하나만 연결하면 된다. SPI 선 4개로 24셀 다 읽을 수 있다.

왜 AD7280A?
솔직히 선택지가 많진 않았다.
| IC | 셀 수 | 장점 | 단점 |
|---|---|---|---|
| AD7280A | 6 | 저렴, 자료 많음 | 단종 예정 |
| LTC6811 | 12 | 고정밀, isoSPI | 비쌈 |
| BQ76940 | 15 | 원칩 솔루션 | I2C만 |
AD7280A가 개당 8달러 정도로 제일 쌌다. 그리고 평가보드가 이미 있었다.
나중에 알았는데 NRND(단종 예정) 상태였다. 이건 번외편에서 다룬다.
개발 환경
- MCU: STM32F103VET6
- IDE: STM32CubeIDE
- 디버거: ST-Link V2
- 로직 분석기: Saleae Logic (짝퉁)
STM32 고른 이유는 별거 없고, 익숙해서. SPI 2개 있고 CAN도 있어서 BMS 만들기 딱 좋다.
이 시리즈에서 다룰 것
- SPI 통신 삽질
- 레지스터 읽기/쓰기
- CRC 계산 (여기서 3일 날림)
- 셀 전압 측정
- 밸런싱
- 알람/보호
- 실제 배터리 연결
데이터시트가 60페이지인데, 중요한 건 10페이지 정도다. 근데 그 10페이지 찾는 게 일이다.
다음 글에서는 데이지체인 구조랑 주소 체계 얘기.