- 배터리 용량 테스터가 필요한 이유는 무엇입니까?
- 필요한 구성 요소
- Arduino 배터리 용량 테스터 회로도
- 배터리 용량을 측정하는 Arduino 프로그램
- 정확도 향상
- 회로 구축 및 테스트
기술의 도래와 함께 우리의 전자 기기 및 가전 제품은 더 기능적이고 복잡한 응용 프로그램으로 점점 더 작아지고 있습니다. 이러한 복잡성이 증가함에 따라 회로의 전력 요구 사항도 증가했으며 장치를 가능한 한 작고 휴대 할 수 있도록 만들기 위해 오랜 시간 동안 동시에 고전류를 제공 할 수있는 배터리가 필요합니다. 기기를 휴대 할 수 있도록 무게를 훨씬 덜가하십시오. 배터리에 대해 더 알고 싶다면 배터리의 기본 용어에 대한이 기사를 읽을 수도 있습니다.
사용할 수있는 다양한 유형의 배터리 중에서 납축 배터리, Ni-Cd 배터리 및 Ni-MH 배터리는 무게가 더 나가거나 애플리케이션에 필요한 전류를 제공 할 수 없기 때문에 적합하지 않습니다. 이로 인해 리튬 이온 배터리가 남습니다. 높은 전류를 제공하면서 무게를 낮게 유지하고 크기를 작게 유지할 수 있습니다. 이전에는 18650 배터리 충전기 및 부스터 모듈과 IoT 기반 배터리 모니터링 시스템도 구축했으며 관심이있는 경우 확인할 수 있습니다.
배터리 용량 테스터가 필요한 이유는 무엇입니까?
시장에는 너무나도 좋은 매우 저렴한 가격으로 기괴한 사양을 주장하는 리튬 이온 배터리의 저렴한 넉 오프 버전을 판매하는 많은 배터리 공급 업체가 있습니다. 이러한 셀을 구입할 때 전혀 작동하지 않거나 작동하는 경우 충전 용량 또는 전류 흐름이 너무 낮아 애플리케이션에서 전혀 작동하지 않습니다. 그렇다면 셀이 이러한 저렴한 모조품 중 하나가 아닌 경우 리튬 배터리를 테스트하는 방법 은 무엇입니까? 방법 중 하나는 무부하 및 무부하 상태에서 개방 회로 전압을 측정하는 것이지만 전혀 신뢰할 수 없습니다.
그래서 우리는 용량 을 계산하기 위해 저항을 통해 흐르는 전류를 측정하면서 저항을 통해 완전히 충전 된 18650 셀을 방전 할 리튬 이온 18650 셀용 18650 배터리 용량 테스터 를 구축 할 것입니다. 셀 전압이 지정된 한계 내에있는 동안 청구 된 배터리 용량을 얻지 못하면 해당 셀에 결함이있는 것이므로 셀의 충전 상태가 부하 상태에서 매우 빠른 속도로 고갈되어 배터리 팩에 사용되는 경우 로컬 전류 루프로 인해 발열 및 화재가 발생할 수 있습니다. 그럼 바로 시작해 봅시다.
필요한 구성 요소
- Arduino Nano
- 16 × 2 캐릭터 LCD
- LM741 OPAMP IC
- 2.2Ω, 5Watt 저항기
- 7805 포지티브 전압 레귤레이터 IC
- 12V 전원 공급 장치
- 10kΩ 트리머 전위차계
- 0.47uF 커패시터
- 33kΩ 저항
- DC 전원 배럴 잭 커넥터
- PCB 나사 식 터미널
- IRF540N N 채널 MOSFET IC
- Perfboard
- 납땜 키트
- 히트 싱크
Arduino 배터리 용량 테스터 회로도
18650 배터리 용량 테스터 의 전체 회로도 가 아래에 나와 있습니다. 회로에 대한 설명은 다음과 같습니다.
계산 및 표시 장치:
이 회로는 두 부분으로 더 나뉩니다. 첫 번째는 Arduino Nano 및 16x2 영숫자 LCD 화면을위한 낮은 5V 전원과 실시간으로 전류 및 전압 측정 결과를 표시하는 연결입니다. 회로는 SMPS를 사용하는 12V 전원 공급 장치에 의해 전원이 공급되거나 12V 배터리를 사용할 수 있으며 Arduino 및 LCD 화면에 전원을 공급하는 데 최대 전류는 약 60-70mA입니다.
전압을 5V로 낮추기 위해 최대 35V까지 사용할 수 있고 최소 7.5V 입력 전원 공급 장치가 필요한 선형 전압 조정기 인 a를 사용하여 조정 된 5V 공급을 제공하고 초과 전압은 열로 발산되므로 입력이 전압 LM7805 전압 조정기 IC 가 12V 이상인 경우 손상되지 않도록 방열판을 추가하는 것이 좋습니다. LCD는 7805에서 5V 전원을 공급받으며 Arduino에 연결되어 4 비트 모드로 작동합니다. 또한 LCD 디스플레이의 대비를 제어하기 위해 10k Ω 와이퍼 전위차계 를 추가했습니다.
정부 하 전류 회로:
두 번째는 PWM 기반의 정전류 부하 회로 로, 저항을 통해 흐르는 부하 전류를 우리가 제어 할 수 있고 일정하게 만들어 셀 전압이 내려갈 때 시간에 따른 전류 변화로 인한 오류 크리핑이 없습니다. LM741 OPAMP IC 와 IRF540N N 채널 MOSFET으로 구성되어 있으며 , 당사가 설정 한 전압 레벨에 따라 MOSFET을 ON / OFF하여 MOSFET을 통해 흐르는 전류를 제어합니다.
연산 증폭기는 비교기 모드 에서 작동 합니다.그래서이 모드에서. 연산 증폭기의 비 반전 핀의 전압이 반전 핀보다 높을 때마다 연산 증폭기의 출력이 높아집니다. 마찬가지로, 연산 증폭기의 반전 핀의 전압이 비 반전 핀보다 높으면 연산 증폭기의 출력이 풀다운됩니다. 주어진 회로에서 비 반전 핀 전압 레벨은 Arduino NANO의 D9 PWM 핀에 의해 제어됩니다.이 핀은 500Hz 주파수에서 스위칭 한 다음 저항 값이 33kΩ 인 저역 통과 RC 회로 필터를 통과하고 정전 용량이 0.47 인 커패시터를 통과합니다. uF, 비 반전 핀에서 거의 일정한 DC 신호를 제공합니다. 반전 핀은 저항과 공통 GND의 전압을 읽는 부하 저항에 연결됩니다. OPAMP의 출력 핀은 MOSFET의 게이트 단자에 연결되어 ON 또는 OFF로 전환됩니다.OPAMP는 연결된 MOSFET을 전환하여 두 단자의 전압을 동일하게 만들려고 시도하므로 저항을 통해 흐르는 전류는 NANO의 D9 핀에서 설정 한 PWM 값에 비례합니다. 이 프로젝트에서 최대 전류는 회로를 1.3A로 제한했는데, 이는 내가 가진 셀이 최대 전류 정격으로 10A이기 때문에 합리적입니다.
전압 측정:
일반적으로 완전히 충전 된 리튬 이온 셀의 최대 전압은 4.1V ~ 4.3V로, 내부 저항이 10kΩ 이상인 Arduino Nano의 아날로그 입력 핀의 5V 전압 제한보다 적습니다. 셀을 통해 흐르는 전류에 대해 걱정하지 않고 아날로그 입력 핀에 연결합니다. 따라서이 프로젝트에서는 셀이 올바른 전압 작동 범위에 있는지, 완전히 방전되었는지 여부를 확인할 수 있도록 셀의 전압을 측정해야합니다.
회로의 복잡성이 증가하고 부하 경로의 저항이 증가하면 셀 방전율이 감소하므로 전류 션트를 사용할 수 없기 때문에 저항을 통해 흐르는 전류도 측정해야합니다. 더 작은 션트 저항을 사용하면 Arduino에서 읽을 수있는 전압 판독 값을 만들기 위해 추가 증폭기 회로가 필요합니다.
따라서 부하 저항의 전압을 직접 읽은 다음 옴의 법칙 을 사용 하여 부하 저항 값으로 얻은 전압을 나누어 전류가 흐르도록합니다. 저항의 음극 단자는 GND에 직접 연결되므로 저항에서 읽는 전압이 저항의 전압 강하라고 안전하게 가정 할 수 있습니다.
배터리 용량을 측정하는 Arduino 프로그램
이제 하드웨어 회로를 완성한 후 Arduino 프로그래밍으로 이동합니다. 이제 PC에 Arduino IDE가 설치되어 있지 않다면 여기서 무엇을 하시겠습니까! 공식 Arduino 웹 사이트로 이동하여 Arduino IDE를 다운로드하여 설치하거나 다른 편집기에서도 코딩 할 수 있지만 지금은 Arduino IDE를 고수합니다. 이제 Arduino Nano를 사용하고 있으므로 TOOLS> BOARDS로 이동 하고 ARDUINO NANO를 선택하여 Arduino Nano 보드를 선택했는지 확인하십시오. 이제 도구> 프로세서 로 이동하여 나노가 가지고있는 올바른 프로세서를 선택하십시오.그리고 거기에있는 동안 Arduino가 PC에서 연결된 포트를 선택하십시오. Arduino를 사용하여 연결된 16x2 영숫자 LCD를 구동하고 이전 섹션에서 설명한대로 셀의 전압과 부하 저항을 통해 흐르는 전류를 측정하기 위해 헤더 파일을 16x2를 구동하도록 선언하여 코드를 시작합니다. 영숫자 LCD 화면. 이 섹션을 건너 뛰어 페이지 끝 부분에서 완전히 조리되고 제공되는 코드를 얻을 수 있지만 코드를 작은 섹션으로 나누고 설명을 시도하는 동안 참고하십시오.
헤더 파일이 정의되었으므로 변수 선언으로 넘어 가서 코드에서 전압과 전류를 계산할 것입니다. 또한 LCD를 구동하는 데 사용하는 핀과 PWM 출력을 제공하는 데 사용할 핀을 정의하고이 섹션에서도 셀과 저항에서 나오는 아날로그 전압을 읽어야합니다.
#포함
이제 설정 부분으로 이동하면 Arduino를 PC에 항상 연결하고 Serial Monitor를 사용하여 진행 상황을 모니터링하고 여기에서 LCD 화면을 초기화하십시오. 또한 3 초 동안 화면에 "배터리 용량 테스터 회로"환영 메시지가 표시됩니다.
void setup () {Serial.begin (9600); lcd.begin (16, 2); lcd.setCursor (0, 0); // 첫 번째 열과 첫 번째 행에 커서를 놓습니다. lcd.print ("배터리 용량"); lcd.setCursor (0,1); lcd.print ("테스터 회로"); 지연 (3000); lcd.clear (); }
이제 메인 루프에서 사용할 AnalogWrite 함수 로 Arduino PWM 핀을 출력으로 선언 할 필요가 없습니다. 코드에서 해당 핀에 기록 할 PWM 값을 정의해야합니다. 애플리케이션에 필요한 방전 전류에 따라 PWM 값을 신중하게 선택하십시오. 너무 많은 PWM 값은 리튬 이온 셀에서 높은 전압 강하와 함께 높은 전류를 초래하고 너무 낮은 PWM 값은 셀의 높은 방전 시간을 초래합니다. 메인 루프 기능에서 Arduino는 보드에 10 비트 ADC가 있으므로 A0 및 A1 핀의 전압을 읽을 것이므로 0-1023 범위의 디지털 출력 값을 얻어야합니다. 5.0 / 1023.0 을 곱하여 0-5V 범위. 보정 된 전압계 또는 멀티 미터를 사용하여 Arduino Nano의 5V 및 GND 핀 사이의 전압을 올바르게 측정해야합니다. 대부분의 경우 조정 된 전압이 정확히 5.0V가 아니며이 기준 전압의 작은 차이도 오류 크리핑을 초래할 수 있습니다. 전압 판독 값에서 올바른 전압을 측정하고 위에 주어진 배율에서 5.0을 대체하십시오.
이제 코드의 논리를 설명하기 위해 셀의 전압을 지속적으로 측정하고 셀 전압이 코드에서 지정한 상한선을 초과하면 LCD에 오류 메시지가 표시되어 셀이 과충전되거나 연결에 문제가 있고 MOSFET 게이트 핀에 대한 전원이 중단되어 부하 저항을 통해 전류가 흐르지 않도록합니다. 총 충전 용량을 계산할 수 있도록 용량 테스터 보드에 연결하기 전에 먼저 셀을 완전히 충전하는 것이 중요합니다.
analogWrite (MOSFET_Pin, PWM_VALUE); // 아날로그 핀 0의 입력을 읽습니다. int sensorValue_voltage_Cell = analogRead (A0); // 아날로그 판독 값 (0-1023)을 전압 (0-5V)으로 변환합니다. float voltage = sensorValue_voltage_Cell * (5.08 / 1023.0); Serial.print ("전압:"); Serial.println (전압); // 여기서 전압은 직렬 모니터에 인쇄됩니다. lcd.setCursor (0, 0); // 첫 번째 열과 첫 번째 행에 커서를 놓습니다. lcd.print ("전압:"); // 화면에 읽은 전압을 출력합니다. lcd.print (voltage); 지연 (100); int sensorValue_Shunt_Resistor = analogRead (A1); 부동 전압 1 = sensorValue_Shunt_Resistor * (5.08 / 1023.0); 플로트 전류 = 전압 1 / 저항; Serial.print ("현재:"); Serial.println (현재); lcd.setCursor (0, 1);// 첫 번째 열과 두 번째 행에 커서를 놓습니다 (카운팅은 0부터 시작!). lcd.print ("현재:"); lcd.print (현재);
이제 셀 전압이 우리가 지정한 상한 및 하한 전압 한계 내에 있으면 Nano는 위에 지정된 방법으로 전류 값을 읽고 측정 중에 경과 된 시간을 곱한 다음 이전에 정의한 용량 변수에 저장합니다. mAh 단위. 이 시간 동안 실시간 전류 및 전압 값이 부착 된 LCD 화면에 표시되며 원하는 경우 직렬 모니터에서도 볼 수 있습니다. 셀을 방전하는 과정은 셀의 전압이 프로그램에서 지정한 하한값 아래에 도달 할 때까지 계속되며 셀의 총 용량이 LCD 화면에 표시되고 MOSFET 게이트를 당겨 저항을 통한 전류 흐름이 중지됩니다. 낮은 핀.
else if (voltage> BAT_LOW && voltage <BAT_HIGH) {// 배터리 전압이 안전 한계 내에 있는지 확인합니다. millisPassed = millis ()-previousMillis; mA = 전류 * 1000.0; 용량 = 용량 + (mA * (millisPassed / 3600000.0)); // 1 시간 = 3600000ms (mAh 단위로 변환) previousMillis = millis (); 지연 (1000); lcd.clear (); }
정확도 향상
반드시 전압과 전류를 읽을 수있는 좋은 방법이지만 완벽하지는 않습니다. 실제 전압과 측정 된 ADC 전압 간의 관계는 선형이 아니므로 전압 및 전류 측정에 약간의 오류가 발생합니다.
결과의 정확도를 높이려면 다양한 알려진 전압 소스를 적용하여 얻은 ADC 값을 그래프에 플로팅 한 다음 원하는 방법을 사용하여 승수 방정식을 결정해야합니다. 이렇게하면 정확도가 향상되고 실제 결과에 매우 근접하게됩니다.
또한 우리가 사용한 MOSFET은 로직 레벨 MOSFET이 아니기 때문에 전류 채널을 완전히 켜려면 7V 이상이 필요하며 5V를 직접 적용하면 전류 판독 값이 정확하지 않습니다. 그러나 로직 레벨 IRL520N N- 채널 MOSFET을 사용하여 12V 전원의 사용을 제거하고 Arduino에있는 5V 로직 레벨로 직접 작업 할 수 있습니다.
회로 구축 및 테스트
이제 브레드 보드에서 회로의 여러 섹션을 설계하고 테스트 한 후 모든 섹션이 의도 한대로 작동하는지 확인한 후 Perfboard를 사용하여 회로를 테스트하는 훨씬 전문적이고 신뢰할 수있는 방법이므로 모든 구성 요소를 함께 납땜합니다.. 원하는 경우 AutoCAD Eagle, EasyEDA, Proteus ARES 또는 원하는 다른 소프트웨어에서 자신 만의 PCB를 디자인 할 수 있습니다. Arduino Nano, 16x2 영숫자 LCD 및 LM741 OPAMP는 Female Bergstik에 장착되어 나중에 재사용 할 수 있습니다.
정부 하 전류 회로 용 DC 배럴 잭 커넥터를 통해 12V 전원을 공급 한 다음 LM7805의 도움으로 Nano 및 LCD 화면 용 5V가 제공됩니다. 이제 회로에 전원을 공급하고 트리머 포트를 조정하여 LCD 화면의 대비 수준을 설정하면 LCD 화면에 환영 메시지가 표시되고 셀의 전압 수준이 작동 범위에 있으면 전류가 표시됩니다. -배터리의 전압 및 전류가 표시됩니다.
이것은 사용중인 셀의 용량을 계산하는 매우 기본적인 테스트이며 데이터를 가져 와서 Excel 파일에 저장하여 그래픽 방식으로 포스트 데이터 처리 및 시각화를 수행함으로써 개선 할 수 있습니다. 오늘날의 데이터 중심 세계에서이 셀 방전 곡선은 NI LabVIEW, MATLAB Simulink 등과 같은 소프트웨어를 사용하여 실제 테스트 없이도 부하 상태에서 배터리의 응답을 시뮬레이션하고 확인하기 위해 배터리의 정확한 예측 모델을 구축하는 데 사용할 수 있습니다.. 그리고 훨씬 더 많은 응용 프로그램이 여러분을 기다리고 있습니다. 이 프로젝트의 전체 작업은 아래 비디오에서 찾을 수 있습니다. 이 프로젝트에 대한 질문이 있으시면 아래 댓글 섹션에 적거나 포럼을 사용하십시오. 가서 재미있게 즐기십시오. 원하는 경우 여기에서 더 진행하는 방법에 대한 아래 의견 섹션에서 안내 할 수 있습니다. 그때까지 Adios !!!