18650 리튬이온 전용 배터리 체커 만들기
내부저항 테스트 + 커패시티, 용량테스터(방전기)
회로도 및 아두이노 스케치 파일 공유





일전에 아두이노를 이용하여 18650 배터리의 내부저항을 측정하는 회로도와 스케치파일을 공개했는데,,
그 회로도를 조금 업그레이드 해서 방전기능을 추가했습니다.

- 아래 관련글 참고 -


내부저항은  배터리의 노후화를 가늠하는 목적이고,,
실제 방전시험을 을 통해서 배터리의 용량과 지속성과 같은 배터리의 상태를 테스트할 수 있습니다.

이를테면 겉으로는 멀쩡해 보이는 배터리가 실제 부하를 물리면 전압이 급격하게 떨어져 종지전압 밑으로 가버리고,,
부하가 없으면 또 급격하게 오르는 것과 같은 배터리들은 방전 테스트를 통해서 쉽게 구분이 가능
합니다.


업그레이드를 위해 리셋(푸시)스위치를 달아주어야 방전기로 업그레이드가 가능합니다.

다만, 기존에 사용된 10W/10Ω의 시멘트 저항은 방전 전류가 낮아,,
보다 빠른 방전을 위해 낮은 5W/3Ω으로 교체했더니 실측 결과 2배 이상 빨라졌습니다.

즉 부하저항의 저항치를 낮추면 방전전류가 높아져 그 만큼 방전 속도가 빨라집니다.
따라서 2Ω 이하의 저항을 선택시에는 그에 따른 부하저항의 방열과 케이블 허용전류 등등 꼼꼼하게 체크해주어야 합니다.


다만 전용 방전기가 아닌만큼 정전류는 아니라 전압이 낮아지면서 방전 전류도 조금씩 낮아집니다.
3.8Ω 저항을 사용시 2,600mAh기준 2시간 30분에서 넉넉히 3시간 정도 생각하시면 될 것 같습니다.
- 새 배터리가 없어 정확한 추정이 어렵습니다. ㅎ -


.
.
.



부하저항(시멘트저항) 테스트

I = V/R 공식을 기본으로 이런저런 시험을 해봅니다.
여튼 10Ω의 경우 0.25A로 방전됩니다.

시멘트 저항 3개를 병렬로 연결하고, 파써에 물리니 4V에서 1.5A 정도가 소모됨을 확인했습니다.
(파써도 자작이라... 이것도 대충입니다. ^^;;)
이대로 써도 되겠지만, 하우징에 너무 작습니다. ㅠ




어쩔 수 없이 폐기판에서 적출후 보관해둔 것들 중 적당한 것을 골라서 적용했습니다.
10Ω 이상의 저항은 방전기로서의 역할을 하기가 어렵습니다.



적출품 중에 5W 3Ω (실측 3.8Ω)을 사용했습니다.
따라서 아래 공유한 스케치파일에서 이 값을 사용할 저항값으로 교체해주어야 합니다.

작은 케이스에서는 3~5옴 정도가 적당한 듯 합니다.
앞서 얘기했듯이 저항이 더 낮아지면 전류가 높아지니 그에 대한 대책을 세워야합니다.
- 케이블을 두껍게 한고, 시멘트 저항의 방열도 신경써주어야 합니다. -







방열 보강


알루미늄 판 하나를 붙여두었는데도 방전모드로 동작시 온도를 측정해보니 80도에 이릅니다.
추가 방열이 필요해 보입니다.



붙일 수 있는 방열판은 다 가져다 붙였습니다.


폐 아답터에서 나온 방열판도 옆으로 붙여주고 내열실리콘으로 마감했습니다.




케이스가 작아서 살짝 위태위태합니다..
조만간 좀 더 큰 케이스로 리뉴얼이 필요해보입니다.

+
케이스가 커지면 아두이노 전원을 내장해서 포터블로 만들 수 있고,
NTC와 미니팬을 장착할 수도 있을 것 같습니다.





회로도는 다음과 같습니다.


D13번 핀은 내부 LED 전용인데 부하가 걸리는 시점을 시각적으로 알 수 있게 하기 위해 220옴 저항 하나 달아서 밖으로 뺐습니다.
D7번 핀에 리셋 스위치를 연결했는데 기존 내부저항테스트와 방전기를 리셋(푸시) 스위치로 컨트롤 할 목적입니다.










컨트롤 방법

스위치를 짧게 한 번 누름 : 잠깐 멈춤 (STOP)
4~10초 사이로 길게 누름 : 내부저항 테스트와 방전모드를 전환할 수 있습니다.
10초 이상 누를 경우 초기화 기능을 넣었는데 모드 전환시 리셋 되어 현재로선 의미없는 기능입니다.

자세한 사항은 아래 동영상 참고





테스트 동영상


1채널 테스트 영상




2채널 테스트 버전(시험중)



Arduino Sketch Source


Version : 20191012_02

battery_checker_v20191012_02.ino

1. 배터리를 갑자기 뺄 때 내부저항값이 마이너스의 쓰레기값을 출력되는 것을 보완
2. LED 객체를 없애고 파라메터로 입력 받도록 함



Version : 20191012_01

battery_checker_v20191012_01.ino

1. 방전 종료 카운트가 너무 커서 종료 알림이 늦게 오는 문제 수정
2. 측정 전압과 실측값 사이의 오차를 VOLTATE_OFFSET 정의해서 보정하도록 함 (개인적으로 -0.03V)
3. 내부저항 테스트 모드시 자동 테스트 회수를 5회로 조정 (RESIST_TEST_COUNT)


Version : 20191011_01

-- 삭제 --

1. 방전 종료 전압이 250회 연속해서 Detect된 경우에 beep음과 "(F)" 플래그를 띄우도록 함
> 이 경우에도 2.7V이상일 때만 방전을 시도함


Version : 20191010_01

-- 삭제 --

1. 방전률을 소수점 두 자리로 표시, 기호변경 C->A
2. 방전 속도 튜닝 - 전압 수집 회수를 70회에서 50회로 줄이고 중간에 Delay를 없앰
3. 방전모드에서 STOP 상태로 배터리를 탈거하면 업데이트 안되는 문제점 해결




Version: 20191009_01 [최초배포]

-- 삭제 --

1. Major Changed : 내부저항테스터기 소스를 기반으로 재 작성함. 초기버전
2. 싱글 프로세싱의 제약으로 두 가지 기능을 자연스럽게 결합하기 위해 스케줄러 기능을 추가했습니다.
3. 모든 소스를 C++의 객체지향 형식으로 재구현했습니다.



TODO List

1. 역전압까지 보호회로 추가 (by P-CH MOSFET)
2. 배터리 전원과 메인 아두이노 전원을 하나의 2S3P 토글 스위치로 함께 컨트롤
3. NTC 온도센서와 미니 팬추가해서 부하저항이
60도 이상이면 팬구동



u8glib 라이브러리 추가


툴 메뉴 > 라이브러리 관리

클릭




u8glib 로 검색후 설치






상단 왼쪽의 시간은 부하가 연결된 전체 시간이고,
상단 오른쪽의 전압은 현재 배터리 전압을 나타냅니다.
하단의 0.8A는 현재 방전 전류이고 오른쪽 .6.5mAh는 전체 방전량으로 배터리의 용량입니다.



이 회로는 전압전류를 측정에 정밀센서를 사용하지 않고,
아두이노 내부 프로세싱에 의한 계산된 데이타로 신뢰도가 낮습니다.
따라서 측정된 내부저항값과 용량값은 가늠(?)의 용도로만 사용해야 합니다.



+
방열의 문제로 사진에 보이는 샘플보다는 좀 더 큰 케이스를 선택하시길 추천합니다.



+
여기에 소개된 플로 제작된 테스터기는 초기부터 시행착오를 커치면서 조금 지저분합니다.
크고 적당한 케이스를 구해서 다시 깔끔하게 리뉴얼을 생각중입니다.



↓↓↓



2채널 업그레이드


[DIY] 아두이노 배터리 체커 (내부저항 측정 및 방전기능) 2채널로 업그레이드 및 스케치파일 공유






관련글



[아두이노] 리튬이온 배터리 내부저항 테스터기 만들기 #01 - VCC값을 반영한 아두이노 스케치파일




배터리 양부판단 지그, 18650 배터리 아두이노 내부저항 테스터기 만들기 - 완성편