아두이노로 나만의 프로젝트를 완성하고 나면 활용까지 해봐야 할 텐데, 대부분의 개발단계에서 사용되는 전원은 PC의 USB인 경우가 많습니다. 그런데 완성된 아두이노 프로젝트를 사용하기 위해서 매번 PC를 켜는 건 배보다 배꼽이 더 커지는 상황이고 야외에서 사용해야 하거나 할 때는 PC를 가지고 다닐 수도 없기 때문에 다른 방법이 필요합니다.
그래서 오늘은 주변 전자기기에서 많이 사용하는 리튬폴리머 배터리와 배터리 충전 모듈에 대한 이야기입니다.
리튬폴리머 배터리
배터리는 종류가 참 많습니다. 충전을 할 수 있는 것도 있고 충전은 안되지만 마트에서 쉽게 살 수 있는 알카라인 건전지도 있고 전압도 손가락 만한 AAA, AA 규격의 건전지는 1.5V이고, 네모난 9V의 건전지도 있습니다. 이런 건전지들 중에서 아두이노에 가장 쉽게 사용할 수 있는 건전지는 바로 9V의 네모난 건전지입니다. 이 건전지 규격인 AAAA라고 하네요.
아두이노 우노는 외부 전원 사용 시 권장 전압이 7~12V이기 때문에 1.5V 전지 여러 개를 사용하는 대신 AAAA 배터리 하나만 연결하면 돼서 편리합니다. 아래 사진과 같이 DC 파워 포트가 있기 때문에 배터리 잭을 사용할 수도 있습니다. 하지만 매번 배터리를 교환하는 타입보다 필요할 때마다 충전해서 사용하는 방식이 좀 더 편리하지 않을까 싶습니다.
그리고 디바이스를 최대한 콤팩트하게 만들고 싶은데 AAAA건전지는 크기도 크고 모양이 한 가지로 정해져 있어서 좀 부담스럽습니다. 반면 리튬폴리머 배터리는 크기가 용량에 따라서 매우 다양하기 때문에 디바이스의 설계에 따라서 그에 맞는 배터리 사이즈를 선택해서 사용할 수 있는 장점이 있습니다. 아래 표는 제가 구매를 했던 판매처에서 가져온 구매 가능한 리튬폴리머 배터리의 옵션들 중 극히 일부분을 보여주고 있습니다. 이처럼 엄청 다양한 니즈를 다 맞춰줄 수 있다는 장점이 있습니다.
하지만 리튬폴리머 배터리를 충전하기 위해서 충/방전 모듈이 필요하고 공칭전압이 3.7V이기 때문에 아두이노에 사용하기 위해서 전압을 올려줄 Step-up 모듈도 필요합니다. 건전지를 사용하는 것보다 부품도 많이 필요하고 복잡해지긴 하지만 핸드폰 충전기로도 충전할 수 있는 디바이스를 만들 수 있다는 점이 매리트인 것 같습니다. 뭔가 완성도가 높아 보이는 효과가 있어요. ^^
리튬폴리머 배터리는 사용시 전압에 대해서 주의가 필요한데요. 일반적으로 3.7V 배터리라고 얘기하지만 배터리의 충전 정도에 따라서 전압이 달라집니다. 그래서 완전히 충전이 되었을 때 4.2V 그리고 완전히 방전이 되었을 때 3.0V로 약 1.2V의 전압 범위를 오르내리게 됩니다. 완전한 선형 비례는 아니지만 배터리의 전압을 측정하면 어느 정도 충전량을 가늠해 볼 수 있습니다.
그리고 주의할 점이 4.2V를 넘는 과충전이나 3.0V이하의 과방전은 배터리에 손상을 주기 때문에 피해야 합니다. 인터넷 자료를 찾아보면 완충 전압은 4.2V로 동일하지만 방전 한계 전압은 자료들마다 약간식 차이가 있습니다. 물론 배터리 제조사별 특징도 있겠지만 위키백과에서는 2.7~3.0V를 하한이라고 설명하고 있습니다. 리튬폴리머 배터리는 이렇게 전압에 매우 민감한 특징을 가지고 있습니다. 그래서 보관 시에도 공칭전압인 3.7V로 보관하는 것이 가장 무리가 없다고 합니다. 공칭전압 이상으로 충전된 상태에서 오랫동안 보관되는 것도 배터리 수명에 악영향을 준다고 합니다. 전압 관리를 위해서 배터리 보호회로를 사용하는데 이어서 설명할 TP4056 모듈이 그런 역할을 해 줍니다.
제가 구매해본 리튬폴리머 배터리와 충/방전 모듈 TP4056 입니다. 배터리는 커넥터 단자로 되어있는데 사진은 편의상 모듈에 납땜해버린 모습입니다.
배터리는 6x25x40mm 크기에 550mAh 용량입니다.
충/방전 및 배터리 보호 모듈
충/방전 모듈은 마이크로 5핀을 사용하는 모델을 쉽게 검색해서 구매할 수 있는데요. 최근에 USB-C가 보급되면서 충방전 모듈도 C타입의 모델이 나왔습니다. 국내에서는 약 1,500원 정도 하는데 알리에서 0.37$에 무료배송으로 구매 가능하네요.
사용법은 간단합니다. 배터리의 +/- 단자를 전력이 공급되어야 하는 부분과 충/방전 모듈에 동시에 연결해주기만 하면 됩니다. 그러면 충/방전 모듈이 알아서 USB 포트로 전원이 공급되면 배터리를 충전시켜주고 USB 연결이 없으면 배터리 전기를 사용하도록 해 줍니다.
TP4056
먼저 충전을 담당하는 TP4056 칩의 데이터 시트를 보면, 리튬폴리머 배터리의 특징에 맞추어서 충전 전압은 4.2V로 컨트롤하도록 되어 있습니다. 그리고 Trickle charge라는 기능이 있는데 아마 배터리를 아주 천천히 충전하는 그런 기능인 것 같습니다. 앞서 약 3V 이하로 과방전 시 배터리에 손상을 줄 수 있다고 했는데 그런 비정상 상태에서 다시 충전을 해야 할 때 조심하는 역할이 아닌가 싶네요. 배터리 전압을 확인해서 2.9V 이하이면 Trickle charge를 하고 그 이상이면 일반 충전을 합니다.
충전 전류는 설정에 따라 다르게 세팅할 수 있는데 아래 회로도상 칩 2번 핀에 연결된 "Rprog" 저항에 따라서 결정이 됩니다. 전 1A충전용 모듈을 구입했는데 저항을 확인해보니 데이터 시트와 동일하게 1.2kΩ저항이 설치된 것을 확인할 수 있습니다.
TP4056 칩은 충전 시 전압과 전류를 조절해서 안정적인 충전이 되도록 하는데요. 아래 그래프는 1000mAh 배터리의 충전 사이클입니다. 시간이 지나고 배터리가 충전이 되면서 전압이 급격하게 올라가다가 충전이 어느 정도 되고 나면 전압 상승 속도가 느려집니다. 그러다가 완충에 가까워지면 충전 전류가 떨어지기 시작합니다. 그래프에서 1시간이 지났을 때 충전 전류가 떨어지기 시작하는데요. 그러다가 전류값이 최대 전류의 10%가 되는 지점에서 전류가 완전히 차단되어 과충전을 방지하는것을 볼 수 있습니다. 여기서 모듈 사용 시 주의할 점이 있는데 부하가 걸려있는 상태에서 충전을 하는 건 피해야 한다고 합니다. 부하가 걸려있으면 충전 전류 모니터링이 원활하지 않아서 완충 시 전류 차단 기능이 정상적으로 동작하지 않을 수도 있다고 합니다.
DW01A
충방전 모듈에서 TP4056이 충전을 담당하고 있다면 DW01A칩은 배터리 보호를 담당하고 있는 것 같습니다. 배터리를 보호하는 방식은 마찬가지로 배터리를 안전하게 사용할 수 있는 전압을 유지하도록 과충전과 과방전 방지하는 것입니다.
DW01A 데이터 시트를 보면 Overcharge Protection Voltage는 4.3V이고 Overdischarge Protection Voltage(Vocp)는 2.4V인 것을 볼 수 있습니다. 앞에서 TP4056이 4.2V의 일정한 전압을 잡아주기 때문에 DW01A칩은 과충전 부분보다는 과방전 부분에 중점적인 역할을 할 것 같습니다.
모듈 전체적인 동작은 직관적입니다. 충전을 하고 있을 때는 붉은색 LED가 표시되고 충전이 완료되면 파란색 LED가 켜집니다. 그리고 충전을 하고 있지 않거나 배터리를 사용하고 있을 때는 아무런 표시가 없습니다. 너무도 간단하게 리튬폴리머 배터리를 사용할 수 있기 때문에 배터리를 이용한 프로젝트를 고민하신다면 사용하기 괜찮은 부품인 것 같습니다. 알아서 충전 모드와 방전 모드로 동작해주고 과방전과 과충전을 방지해서 배터리를 보호하는 역할도 해주기 때문에 요거 하나로 많은 부분이 해결이 됩니다.
하지만 방전 그래프에서 보면 방전 시에 전압값이 Vocp를 넘어서까지 요동치기도 한다는 걸 알 수 있는데 이 부분에 대해서는 좀 더 공부할 필요가 있을 것 같습니다. 지금까지 약 20번 정도 추가적인 안전장치 없이 충방전 사이클을 돌면서 문제는 없었지만 배터리 전압을 모니터링하다가 3V정도에서 대기모드로 들어가도록 하는 루틴이 있어야 하지 않을까 싶습니다.
이상 리튬폴리머 배터리와 배터리 보호회로가 내장된 충방전 모듈에 대해서 알아봤습니다.
끝!
PS. 추가로 읽어볼 만한 자료
https://www.best-microcontroller-projects.com/tp4056.html
'Hardware > MCU(Arduino,ESP8266)' 카테고리의 다른 글
DC Step-up 모듈 MT3608 (0) | 2020.08.17 |
---|---|
PlatformIO.ini 설정 모음 (0) | 2020.08.08 |
VS Code로 아두이노 업로드 - PlatformIO IDE (0) | 2020.07.24 |
PlatformIO IDE - UnicodeDecodeError 해결하기 (0) | 2020.07.23 |
댓글