18650과 같은 리튬이온이나 폴리머 배터리팩등의 상태, 용량등을 체크할 수 있는 방전기 제작을 위한 페이지입니다. 아두이노 프로미니/나노를 기반으로 제작했으며 사용된 소스코드인 스케치파일을 공유하고 조작이나 화면 설명을 추가합니다.
회로도
초기 버전입니다.
수정안 #1
UA741CP 버전
정밀도와 회로 보호를 위해 수정된 안입니다.
도움을 주신 이홈메이드클럽의 "초보의 비애"님 그리고 "slotgodoril"님 감사드립니다!!!!
수정된 내용은 ADS1115 보호차원에서 A1,A2핀에 10K 저항을 달았으며
배터리 기준 GND를 ADS에 릴레이 형식이 아닌 직접 점퍼를 날려 연결해주었습니다.
측정할 배터리의 기준 그라운드를 ADC1115의 그라운드와 맞춰주지 않으면 배터리를 연결하지 않았는데도 헛전압(?)이 발생할 수 있습니다.
수정안 #2
LM358P(N) 버전
수원에 계시는 달다님과 무선조정님의 PCB를 참고하여 보호 소자를 수정한 회로도입니다.
결과치는 크게 차이가 없고 방전시 모스펫 소손으로 션트 파괴가 될 때 아두이노를 비롯 각 소자를 보호하기 위한 장치입니다.
1.
비교 테스트를 위해 LM358P(N) 을 사용했습니다.
UA741CP와 크게 차이 없습니다.
2.
보다 안정적인 전압 공급을 위해 LM7805 앞뒤단에 작은 커패시티를 추가했습니다.
3.
모스펫 S, D사이에 스너버 회로를 추가했습니다.
(션트 전압이 낮은 관계로 서지로인한 소손은 드물다고 판단해서추가했다가 제거함)
4.
방전용 모스펫은 IRFP250M 이상을 추천합니다.
IRFP260M 혹은 그 이상의 전류를 커버할 수 있는 펫을 사용하는 것을 추첩합니다.
다만 펫을 선택할 때 Rds값이 높은 것이 방전용으로 좋습니다.
5.
방전 전류 플러스 전선 중간에 25~30A의 퓨즈를 달아주는 것이 좋습니다.
모스펫이 소손되면 도통상태가 되어 배터리 쇼트로 폭발로 이어질 수 있습니다.
PWM FAN 적용
FAN1에 선택적으로 적용가능하며 배선도는 다음과 같습니다.
PWM 적용방법은 이홈메이드 클럽의 "무선조정"님께서 의견주시고 공유해주셨습니다.
감사합니다.
참고로 NPN TR(BJT)는 칩마다 핀 넘버가 다 다른 듯 싶습니다.
데이타 시트를 참고해서 B,C,E 위치를 확인하셔야 합니다.
N채널 파워 모스펫 IRP250M 2개 이상... 대전력용은 4개 이상 추천
40W 이상 0.1Ω~022Ω 션트저항 1개아두이노프로 미니 또는 나노 1개
LCD2004 I2C버전 또는 LCD1602 I2C(추천) 1개ADS1115 1개
DAC MCP4725 1개
OAMP(UA741CP) LM358P 1개
정전압 7805CT 1개
25V 220uF 2개
NTC 10K 1개
로터리 엔코더(Rotary Encoder) 1개
수동 혹은 능동 Buzzer 1개
저항 : 1KΩ 5개, 10KΩ 4개, 100KΩ 1개
104 (0.1uF) 세라믹커패시터 1개
Green LED 1개
Red LED 1개
팬 컨트롤용 N채널 모스펫 2개
혹은 NPN 트랜지스터 한개와 4.7K옴 저항 1개대형 방열판 1개이상
CPU팬 1개 (폐 컴퓨터에서 적출)
케이스 1개 (구입)
정전압레귤레이터와 N채널 모스펫 용 미니 방열판 1~2개 (옵션, 폐기판에서 적출)
DC잭 1개
바나나잭 2개(Red, Black)
만능기판 1개
12V 아답터 모듈 (크기상 1A~2A가 적당, 적출품)
220V 파워 소켓 (아답터 혹은 PC파워에서 적출품)
그 밖에 만능기판 지지대와 나사, 전선 등등...
이 회로도의 원리와 이해는 원작자님 slotgodori님의 글을 기본으로 업그레이드 되었습니다.
참고하세요.
간단(?)하게 원리를 설명하면,,
파워 모스펫 IRFP250N이 방전을 담당하고 비교기인 OAMP(UA741CP)가 설정된 전류만 흐르도록 컨트롤 하는 역할을 담당합니다.방전 전류는 가변저항 대신 DAC 모듈인 MCP4725을 이용 프로그래밍을 통해 설정하는데 쉽게 말하면 노브를 돌리면 저항이 가변하여 반응하는 아날로그 방식이 아니라 숫자(Digital)를 설정하면 그 숫자에 맵핑된 전압이 출력되는 방식입니다.
정교한 컨트롤을 위하여 ADS1115를 사용하며, 배터리와 션트(Shunt) 그리고 MCP4725의 출력 전압을 15비트의 분해능으로 데이타로 검출합니다.
그 밖의 소자들은 이러한 동작이 매끄럽게 진행될 수 있거나 소자의 소손을 방지 혹은 가시-가청 정보를 위한 부품들입니다.
정전류는 비교기를 이용하여 구현됩니다.
V=IR 공식에서 R은 션트 저항값과 전류 I값을 곱한 전압을 OAMP에 입력(IN+)합니다.처음 비교기 IN+에 전압이 공급되면 션트 전압(IN-)보다 크니 OUT 출력, 결과 IRFP250N의 게이트가 열려 방전이 시작됩니다.
시간이 지나면 션트전압이 상승해 IN-에서 IN+보다 커지면 OUT 출력을 끊어버립니다. 그러면 모스펫 게이트가 닫혀 방전 중단, 방전이 중단되면 전압이 다시 떨어지고 다시 게이트가 오픈, 이러한 싸이클을 매우 빠른 시간에 반복하게 되는데,, 결과 설정한 전류로 지속적인 방전이 이루어지게 됩니다.
이러한 동작을 기본으로 정확한 데이타의 산출과 조작은 프로그래밍의 몫입니다.
참고로 0.1옴과 0.2옴의 션트 저항을 사용하여 검증했습니다.
0.2옴 이상 사용시 전압 분해능이 커져 전류 조절에 좀 더 정교한 컨트롤이 가능하지만, 션트의 전력소비가 그 만큼 증가하는 점도 고려해야합니다. 반대로 0.1옴 이하의 저항은 같은 이유로 정전류를 컨트롤이 어렵습니다.
이후 조작이나 설명은 평서체로 되어 있으니 참고 바랍니다!!
조작방법
엔코더 조작 설명
1.일반(NORMAL) 대기 모드
- 2~3번 연속 오른쪽으로 돌리면 환경설정 모드로 진입
- 3초~10초 사이 누르면 방전 시작
- 대기 상태에서 클릭시 배터리 스캔을 재시작
2. 환경설정(CONFIG) 모드 :
- 한 번 누를 때마다 설정항목 순환
- 3초 정도 누르면 설정값을 저장하고 일반모드로 빠져나옴
- 10초 이상 눌렀다 떼면 모든 설정값이 초기화
3. 방전(DCG) 모드 :
- 한 번 누를 때마다 멈춤(H)/시작(D)이 전환됨
- 엔코더를 오른쪽으로 회전시 SHUNT와 DAC 전압을 모니터링 할 수 있는 디버그 화면으로 전환됨 (★★★)
- 엔코더를 왼쪽으로 3회 이상 회전시 방전 전류/전력 수정모드로 진입. 수정 후 엔코더 클릭시 방전모드로 빠져나옴
- 3초 이상 누르면 강제 종료, LCD 방전 시간 뒤에 'F' 표시가 나오고 이 때 한 번 더 클릭하면 대기화면으로 나옴
> 종류 이후에도 3초 이상 누르면 강제 재시작 됨
설정 항목
1. 방전 설정
대기모드에서 엔코더를 오른쪽으로 2~3회 턴을 하면 설정모드로 진입
End-Mode :
CC : 정전류 방전으로 Cut-Off 전압에 이르면 바로 종료됨 CV : 정전류로 방전하다 Cut-Off 전압 근처에서 Dac Power를 조정하여 좀 더 방전을 시도함
CP : 정전력으로 방전함 ( 전압이 낮아지면 전류가 상승 ) V3.5 이상
KILL : Cut-Off전압을 무시하고 0V까지 방전시킴 - 배터리 폐기시 사용
Cut-Off : 배터리의 방전 종료 전압 설정(보통 리튬이온의 종지전압인 2.7V 를 설정)
Cut-mAh : 방전량을 체크하야 설정값에 이르면 종료 (iMax b6의 Storage 모드와 비슷한 기능)
Current : CC/KILL 모드에서 방전 전류량을 설정. (0.1~ 20A까지 프로그램되어 있음)
Watt : CP 모드에서 방전 전력 (V3.5)
2. V Distribution-Ratio
처음 방전기를 자작하면 가장 먼저 해주어야 할 작업이다.
아두이노 동작 전압인 5V로 낮추기 위해 전압분배를 사용한다. 회로도의 R1, R2의 저항값에 따라 분배비가 결정되고 이를 토대로 아두이노에서 전압을 측정하게 된다.
회로도 기준 R1은 10KΩ, R2는 100KΩ를 사용시, Batt-REG값은 (100+10) / 10 = 11 이 Batt-REG 값의 기준점이 된다.
그런데 모든 저항은 - 신뢰도의 차이는 있지만 - 오차가 있기때문에 이 화면에서 그 오차를 보상해 정확한 전압 검출이 가능하다.
참고로 사진은 100K 저항이 없어 R2 저항을 125K를 사용해서 13.005의 값이 나왔다.
실제로 배터리가 연결되면 아래에 실제 전압이 표시되므로 따로 테스터기로 측정된 값과 같은 값으로 맞춰주어야 한다.
3. Drop V-Rate & Mod A-Rate
실제 방전시 전압과 전류량을 조정하는 기능으로 조정을 위해서는 신뢰할만한 테스터기가 추가로 필요하다.
실제로 배터리를 연결해서 진행하는 작업이다.
이 모드로 진입시 설정된 방전전류값으로 실제 방전이 이루어지니 주의를 요한다!!
Drop V-Rate
이 값을 조정하여 하단 왼쪽 전압값과 테스터기로 측정한 값을 일치시킨다.
Mod A-Rate
션트 전압에 이 값을 보상해서 보다 정확한 전류량을 측정할 수 있다.
이 작업까지 마치면 실제 방전시 테스터기와 대략 일치함을 볼 수 있다.
3. Etc Setup
Fan Ctrl: 팬 구동 온도를 설정한다.
방열판의 성능이 좋다면 35~40도 정도에서 1A 정도의 방전시 팬 구동이 없어 조용한 작업이 가능하다.
이와는 상관없이 방전 모스펫 온도가 250도가 되면 BEEP음이 계속 울리고 온도가 -WARN- 표시와 함께 번갈아 깜빡이도록 코딩되어 있다.
Auto-Stop: 설정한 시간 이후 자동으로 종료하는 기능이다.
Auto-Hold: 설정한 시간 이후 자동으로 멈춘다. 이후 사용자가 엔코더를 누르면 재시작 혹은 종료할 수 있다.
Lcd Light: LCD의 백라이트를 컨트롤 하는 기능이다. LCD_BACKLIGHT_ON_TIME Default로 5분 이후 꺼지도록 되어 있고 엔코더를 움직이면 다시 켜진다.
Beep : 시스템 비프음 ON/OFF
- Ver 3.4 이상 -
Auto InR : 배터리 삽입시 자동으로 내부저항 측정한다. (No시 엔코더를 클릭할 때만 측정, 회로보호 목적)
Skip Adj : 방전시작시 CC모드에서 정전류를 수치를 맞추고 시작할지의 여부
Time Tune : 아두이노 타임인터럽트 오차를 보정할지 여부 (시험목적)
mAs Tune : 방전량 튜닝, 시간까지 보상함
Dcg Max Pwr : 방전기의 최대 전력을 설정한다. 최대값은 스케치에서 하드코딩되어 있고 그 범위내에서 조정이 가능하다.
방전 화면
배터리를 연결하면 Scan Battery가 동작하고 InR(내부저항)을 측정한다.
이후 엔코더를 한 번 눌러 수동으로 내부저항 측정을 할 수 있다.
InR : 배터리 내부저항값
V: 측정된 배터리 전압
A: 배터리 내부저항 측정시 흐르는 전류값
Dac : Dac에서 송출하는 전압 (디버깅용)
Snt : 션트 뒷단에서 측정된 전압 (디버깅용)
엔코더를 3초 정도 눌렀다 떼면 방전모드로 진입한다.
이때 설정된 방전전류값과 실측한 값을 맞추는 단계를 거치게 되는데 "Adjusting..."이 깜빡이고 Amp 값이 조정되는 것을 볼 수 있다.
Adjusting이 완료되면 자동으로 방전이 시작된다.
상단에 설정된 전류값이 보이고
1A : 설정된 전류값
> 소수점 단위는 .9 와 같이 0이 생략되어 표기 된다.
00:00:30D : 방전 시간과 상태 플래그
> 상태플래그는 "D, H, F"가 있으며 각각 방전(Discharging), 멈춤(Hold), 종료(Finish)를 나타낸다.
28.7℃ : 방전 모스펫 온도
0.0Wh : 누적 방전 전력량
2mAh : 방전 용량
V : 배터리 전압
A : 방전 전류값
Cut : Cut-Off 전압
Mod : 방전 모드 (CV, CC, KILL)
다이얼을 한번 돌릴 때마다 Dac/Snt 값을 볼 수 있는 화면으로 바뀐다.
H(old) 화면과 F(inish) 화면이다.
엔코더를 한 번 누를 때마다 멈춤과 시작을 전환되며, 길게 누르면 종료, 종료상태에서 한 번 더 누르면 대기모드로 빠져 나온다.
EBD-A20H vs 자작 방전기
스케치 다운로드
- Download Arduino Sketch File -
모든 프로젝트의 소스 공유를 중단 합니다.!!
추가하고 싶은 기능이 있으면 언제든지 댓글로 의견 남겨주시면 반영하겠습니다.다만, 아두이노프로 미니의 SRAM이 무척 작습니다. 최대한 메모리 튜닝을 거쳐 이것저것 기능을 넣어보겠지만 상황에 따라 힘들 수도 있습니다.
Version 3.9 (2021-01-12!!)
-. LCD1602 메뉴 정리
-. LCD2004 메뉴 정리
-. V3.8에서 내부저항 테스트 전류값 설정값으로 적용된 것 되돌림
.
.
.
Version 3.8 (2021-01-07!!)
> 조작성과 사소한 문제점들을 정리한 버전으로 마이너 업데이트는 이 버전이 마지막이 아닐까 싶습니다.
-. LCD1602 버전 정리
-. 방전 시작 후 첫번째 전압 체크시 Drop 전류 보상이 없어 저전압 배터리의 경우 종료될 수 있는 문제 수정
-. 방전중 전류조정모드에서 엔코더를 길레 눌렀을 경우 방전 종료되는 문제
-. 방전중 전류조정모드 진입시 좀 더 쉽게 함(4Step ccw)
-. 설정 초기화 시간을 지금 보다 두 배로 길게(간혹 환경설정후 저장시 초기화되는 걸 막기 위함)
Version 3.7 (2021-01-02)
-. CP 모드 설정값이 저장 안되는 문제점 수정
-. CP 모드에서 방전중 전력값 수정시 수렴 속도 조정
-. KILL 모드 저전압 배터리 시작안되는 버그 수정
-. 방전중 전류조절 모드 진입시 다이얼 카운트를 반으로 줄임
Version 3.6 (2020-12-29!!)
-. FET보호회로 대응, D11과 D10번 연동
-. 스케치파일 101% 초과로 인하여 TimeTune과 Beep/LCD Ctrl을 없앰 (LCD2004 Only)
LCD2004는 스케치파일 크기로 인하여 3가지 옵션 BEEP/LCD/TIME TUNE 을 비활성화 했습니다. LCD1602는 모든 기능을 사용할 수 있습니다.
Version 3.5 (2020-12-26!!)
-. D10/D11번 출력 FET 보호회로 대응코두 추가
-. CV모드 대신 CP(Constant Power) 모드 채용
-. 100V 이상에서 전압 표시 깨지는 현상
-. CP 모드 화면 조정(2020-12-26)
Version 3.4 (2020-10-26)
-. FAN1에 PWM 팬을 적용하고 온도에 따라 속도적응
//#define FAN_CTRL_1_PWM 1 /* ★★★★, V3.4, PWM Fan을 사용할 경우 활성화 */
//#define FAN_CTRL_2 1 /* ★★★★, V3.4, Fan2를 사용할 경우 활성화 */
PWM핀을 사용하려면 FAN_CTRL_1_PWM의 주석"//"을 제거하면 됨
## Time Tune 항목을 YES로 설정하고 사용하세요. 다음 릴리즈에서 해당 메뉴 삭제예정입니다.!!
Version 3.3 (2020-10-24)
-. 방전량 최대치 설정 기능 및 체크 기능, Default 150W Max500W
-. Skip ADJ 모드에서 방전 속도 조절
-. 대기모드에서 현재 설정 전류 표기
-. Drop A값 조정시 오른쪽으로 턴시 증가하도록 수정시
-. 스케치 사이즈가 프로그램 공간을 초과해서 일부 코드 튜닝
-. FAN2 Define으로 활성화할 수 있도록 함 (Default Disable)
-. 따로 파일을 선택해서 추가해야 했던 Rotary.h 라이브러리를 코드에 포함
LCD1602 버전 조작화면
LCD2004버전 조작화면
Version 3.2 (2020-10-18) - TEST Version
-. 50V 이상의 팩을 테스트하기 위해 전압분배비 R1값 Define 처리
-. 배터리 연결시 내부저항 계산을 옵션으로 처리함 (환경설정)
-. 방전시작시 ADJ 단계를 Skip 할 수 있도록 함 -> 설정 전류까지 천천히 상승함
-. 방전시 디버그 모드에서 Dac 전압대신 Watt 표시
-. 내부저항 체크시 방전전류를 1.5A로 계산
-. Time Tune 설정항목에서 아두이노 타임 적용을 선택할 수 있도록 함
Version 3.1 (2020-10-14)
-. 방전시 홀딩후 재시작 오류 수정
-. 전압분배비에 따라 유연하게 적용할 수 있도록 BattReg 값 범위값 늘림
Version 3.0 (2020-09-19)
-. mAs 조정 단위 수정 및 방전시간에 반영
-. 아두이노 클락 시간 초당 0.024ms over 치 반영
-. 방전전류가 같으면 Adjust시 이전 측정치로 시작하도록 함
-. mills() 를 loop()에서 실행한 값으로 통일함 (Fine Tune)
-. Mod A_Rate값을 션트 저항 값에 직접 반영 -> 조정 범위 필요(초기화 필요)
-. 방전 종료시 시리일 로깅 추가
-. 기타 불필요 코드 수정
Version 2.9 (2020-08-31)
-. Cutt Off 전압 설정 단위 수정 (4.2V 이상 0.2V 단위에서 0.1V 단위로 수정할 수 있도록 함, 이전 버전에서 3S 7.5V 설정이 안됨)
Version 2.8 (2020-08-30)
-. 설정화면 진입시 방전전류를 가장 먼저 설정할 수 있도록 수정
-. Adjust flag 오류로 두 번째 방전 실패 현상 수정
Version 2.7 (2020-08-28)
-. LCD2004/LCD1602로 각자 분리된 파일을 하나로 통합
LCD2004로 사용할 경우
#define DISPLAY_LCD2004 1
//#define DISPLAY_LCD1602 1
LCD1602로 사용할 경우
//#define DISPLAY_LCD2004 1
#define DISPLAY_LCD1602 1
-. LCD1602 모드에서 전류 조정시 Mod A-Rate값이 10.000이상일 경우 Display 깨지는 현상 수정
Version 2.6 (2020-08-22)
-. 방전 전류값 100mA 단위로 수정(이홈메이드클럽 넘버원님 의견)
-. 방전 플래그 D를 없애고 초를 00:00의 ':'을 깜빡이도록 함
-. 90에 Auto Hold 이후 온도가 70도까지 떨어지면 Auto Restart!!
-. Serial Logging Enable..(sram 사용률 74%, LCD2004 버전)
LCD 2004 버전
-- 삭제 --
LCD 1602 버전
-- 삭제 --
Version 2.5 (2020-08-17)
-. LCD11602 적용
-. KILL 모드일 경우 Cut-Off mAH 동작하지 않도록 함
-. Serial Logging 활성 (1602사용으로 메모리 감소효과)
-. 외부전원 사용시 부팅 이후 전원 플러그 모양의 캐릭터 깨지는 문제점 수정
Version 2.4 (2020-08-17)
-. Adjust 단계를 좀 더 세분화하고 실제 방전시는 출렁임 방지를 위해 0.5V 이상일 경우 조정하도록 함
-. Tune mA/Sec 기능 추가, 초단위 측정치에 튜닝값을 가감할 수 있도록 함( Default 0.0, -0.1~1.0 )
레퍼런스 방전기가 있을 경우 수치를 맞출 수 있도록 하는 기능
-. Adjust와 방전중 전류값 수정시 조정단계 및 수치 조정
-. Serial Logging Disable ( Enable할 경우 sram 사용율이 66% -> 76% )
-. 방전시 loop문에서 scanVoltages 방지 (중복)
[참고]
0.22옴 션트와 무선조종님 PCB 사용하여 만든 자작 3호기에서 방전시간이 조금 더 나옵니다.
원인을 찾기 전까지 Tune mA/Sec 기능으로 보정할 수 있도록 했습니다.
1시간 방전시 200mAh가 더 나왔다고 하면, 초단위 200/3600=0.05 가 되고 설정에서 -.0.05를 적용해주면 됩니다. 레퍼런스 방전기가 있다면 이 기능을 사용하여 비교하여 비슷하게 맞출 수 있습니다.
Version 2.3 (2020-08-16)
-. 기본 션트 저항 0.22로 조정, 가장 먼저 수정하세요.
-. 온도 경고 Holing 값을 90도 조정 (모스펫 소손을 방지하기 위해)
-. 초기화시 백라이트 항상 켜짐으로 수정
Version 2.2 (2020-08-15)
-. 션트 0.2옴 이상 적용 검증 버전
Version 2.1 (2020-08-02) - FAN2 Version
-. FAN2가 적용된 버전입니다.
기존 회로와 호환되며 모스펫 온도 50도가 넘어가면 6번핀을 통하여 FAN2가 컨트롤 됩니다.
N채널 모스펫 하나가 더 필요하며, 아래 버전과 호환되는 옵션입니다.
Version 2.0 (2020-07-23) - Major Update!!
-. mAh 버그 수정 및 arduino millis() 인터럽트 주기인 1.024ms를 elapsedTime에 반영
-. KILL 모드 보완
-. 다이얼을 돌려 환경설정 진입 동작 후 END모드 설정값이 증가하는 증상 보완
-. 모스펫 온도 경보 온도 100도로 조정하고 해당 온도에 이르면 Holding!!
RFP250N은 동작 온도 -55~175도이며 125도를 기준으로 20A 밑으로 떨어져 20A 방전시 모스펫이 소손될 수 있습니다.
-. 코드 정리
Version 1.9 (2020-07-22)
-. 내부저항 계산 수정 (회로 GND 수정후 Drop V가 정확해짐)
-. CV 모드로 방전시 너무 느린 시간을 보완
-. LCD 백라이트 켜져 있는 시간을 5분에서 10분으로 조정
-. 방전 종료시 Sound Disable 설정이면 엔코더 클릭시 바로 Normal 모드로 전환
-. 방전 전류값을 Define 처리(DCG_MAX_CURRENT) 해서 한 번에 바꿀 수 있도록 함
-. 사용한 Shunt 의 저항값 설정에 따라 수치값 자동 조정 (테스트 X)
-- 이미지 삭제 --
>> mAh 계산식에 실제 방전시간을 체크한 타임이 아닌 1000(1초)으로 fix되어 결과가 150mAh 정도 작게 나오는 문제점이 있어 배포 이미지를 잠시 삭제 합니다. (23일 저녁에 2.0 릴리즈 예정)
Version 1.8 (2020-07-21)
# Drop률을 낮추기 위해 회로를 수정해가며 디버깅하다보니 업데이트가 잦습니다.
# V2.0을 최종 버전으로 생각하고 있습니다.
-. 내부저항 계산 알고리즘 개선 - 0.3A로 방전하고 Drop률을 배제함!! (TODO : 합산예정)
-. 0.1옴 이외의 션트저항 적용을 위한 선작업
-. 환경설정에서 V_Drop Rate 설정시 전압 표시 오류 ( V Drop Rate이 반영안되어 표시되는 문제 수정!! )
Version 1.7 (2020-07-19)
-. 수동부저 지원
수동부저의 tone()함수가 인터럽트 서비스 루틴과 충돌하여 동작하지 않는 현상을 우회 지원
-. 1.6의 사이드 이펙트로 전압칼리브레이션 때 Gate를 닫지 않도록 함
Version 1.6 (2020-07-14)
-. 환경설정에서 소리를 설정할 수 있도록 함 ( 회사에서 몰래 방전할 경우??? ^^;; )
-. V1.5에서 대기모드에서 버튼클릭시 내부저항 체크 안되는 문제 수정
Version 1.5 (2020-07-13)
-. 내부저항 체크 로직에서 BEEP음이 간헐적으로 울리는 현상 수정
-. BEEP음 로직 수정
-. 방전모드에서 일반모드로 전환될때 배터리 스캔하지 않도록 함(매뉴얼로 할 수 있음)
-. 엔코더 무효클릭 보강
Version 1.4 (2020-07-12)
-. 내부저항 버그 수정
-. 경고 온도 수정 : 250 --> 150
-. 방전 중 방전 전류값 조정할 수 있도록 수정
-. 시리얼 로깅 항목 간소화 --> Time, Voltage, Current, mAh, Wh
로깅 제목정보를 부팅시에서 방전 시작전으로 옮기고 콘솔로그 출력 타임 조절 - 20초 마다 1번씩
-. 백라이트가 꺼진 후 다이얼을 돌렸을 때 백라이트만 켜도록 함
-. 문자열대신 심볼 적용 (배터리 ON/OFF)
-. 방전종료후 엔코더 클릭시 비프음이 꺼지고,
이 상태에서 한번 클릭시 노멀모드로 전환, 길게 누르면 다시 방전시작합니다.
콘솔출력 이용법
전체를 복사해서 메모장에 넣고 확장자를 csv로 저장!!
더블클릭하면 엑셀로 열림
Version 1.3 (2020-07-07)
1. LCD 백라이트 5분 후 처음 한 번 꺼졌다가 다시 켜지는 증상 수정
2. 방전시 LCD 깨지는 증상 수정
3. 메모리 사용량 74->71%
-- 삭제 --
Version 1.2 (2020-07-06) : 최초배포
1. sram 사이즈 튜닝
2. CSV 형태로 방전 데이타를 콘솔로 전송함 --> 이 데이타로 엑셀에서 챠트를 그릴 수 있습니다.
3. 방전 종료 조건에 mAh Cut 추가 (이홈메이드클럽의 무선조종님 의견)
4. 방전전류(cURRENT) 0.x 대 저장이 안되는 문제 수정
5. 대기 모드에서 엔코더를 한 번 누르면 배터리 스캔을 다시 시작
6. Auto Stop 기능을 Auto Hold 기능으로 변경
-- 삭제 --
VERSION 1.1
1. 화면 구성과 조작 방법 개선
VERSION 1.0 (2020-07-03)
1. 최초 작성 후 테스트 OK
라이브러리
#include <EEPROM.h> // 방전전류보정용 값 저장을위한 라이브러리
#include <Wire.h>
#include <Adafruit_ADS1015.h> // 전압측정용 ads1115용 라이브러리
#include <LiquidCrystal_I2C.h> // i2c clcd 를 사용하기위한 라이브러리
#include <Adafruit_MCP4725.h> // 정전류제어를위한 GATE 제어용 DAC 라이브러리
#include <PinChangeInterrupt.h>
#include <Rotary.h>
설치는 아래 "아두이노를 하나도 모르는 사람들을 위한 글" 참고하시고 라이브러리 매니저에서 #incldue 의 이름을 검색해서 설치하시면 됩니다.
Rotary.h는 소스코드에 반영하여 따로 추가하실 필요없습니다.
혹시 몰라 첨부합니다.
주의사항
1. 모스펫 방열에 매우!! 신경써야 합니다.
특히 10A 이상 방전테스트시에는 방열판과 팬등의 성능이 떨어지면 모스펫이 소손될 수 있습니다.
200W 이상의 방전기를 제작하기 위해서는 퓨즈 및 릴레이를 통한 보호회로 추가를 권장합니다.
2. 내부저항 측정값은 매우 많은 변수가 있어 정확한 값을 산출하기 어렵습니다.
가늠의 용도로 사용하시고 내부저항값과 용량체크를 병행해서 판단해야 합니다.
4. 스케치 파일은 자유롭게 사용이 가능하나, 동의 없이 판매 목적으로 사용될 경우 클레임을 걸 수 있습니다.
아두이노를 처음 접하는 사람들을 위한 글
Pro Mini를 이용하여 Nano 보드에 부트로더 올리는 법
관련글