배터리에는 특정 전압 제한이 있으며 충전 또는 방전 중에 전압이 규정 된 제한을 초과하면 배터리 수명이 영향을 받거나 줄어 듭니다. 배터리 구동 프로젝트를 사용할 때마다 충전 또는 교체가 필요한지 여부에 관계없이 배터리 전압 수준을 확인해야하는 경우가 있습니다. 이 회로는 배터리 전압을 모니터링하는 데 도움이됩니다. 이 Arduino 배터리 전압 표시기 는 배터리 전압 에 따라 10 세그먼트 LED 막대 그래프 에 LED가 켜지면서 배터리 상태를 나타냅니다. 또한 Arduino에 연결된 LCD에 배터리 전압이 표시됩니다.
필요한 재료
- Arduino UNO
- 10 세그먼트 LED 막대 그래프
- LCD (16 * 2)
- 전위차계 -10k
- 저항기 (100ohm-10; 330ohm)
- 배터리 (테스트 예정)
- 전선 연결
- Arduino 용 12v 어댑터
회로도
LED 막대 그래프
LED 막대 그래프는 낮은 전력 소비로 산업 표준 크기로 제공됩니다. 막대는 광도에 따라 분류됩니다. 제품 자체는 RoHS 준수 버전을 유지합니다. 순방향 전압은 최대 2.6v입니다. 세그먼트 당 전력 손실은 65mW입니다. LED 막대 그래프의 작동 온도는 -40 ℃ ~ 80 ℃입니다. 오디오 장비, 계기판 및 디지털 판독 디스플레이와 같은 LED 막대 그래프에 대한 많은 응용 프로그램이 있습니다.
핀 다이어그램
핀 구성
배터리 전압 모니터링을위한 Arduino 프로그램:
전체 아두 이노 코드와 데모 비디오는 이 문서의 끝 부분에 제공됩니다. 여기서 우리는 코드의 중요한 부분을 설명했습니다.
여기에서는 LCD 라이브러리를 정의 하고 Arduino와 함께 사용할 LCD의 핀을 지정 합니다. 아날로그 입력은 배터리 전압을 확인하기 위해 핀 A4에서 가져옵니다. 소수점 이하 두 자리까지 전압을 얻기 위해 값을 Float로 설정했습니다.
#포함
int ledPins = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; // LED가 부착 된 핀 번호의 배열 int pinCount = 10; // 핀 수 (예: 배열의 길이)
LCD 및 아날로그 핀 (A0, A1, A2, A3)을 OUTPUT 핀으로 설정합니다.
void setup () {Serial.begin (9600); // 직렬 포트를 열고 데이터 속도를 9600bps로 설정 lcd.begin (16, 2); //// LCD의 열과 행 수를 설정합니다. pinMode (A0, OUTPUT); pinMode (A1, OUTPUT); pinMode (A2, OUTPUT); pinMode (A3, OUTPUT); pinMode (A4, INPUT); lcd.print ("전압 레벨"); }
여기에서는 LED 막대 그래프를 사용하여 간단하게 사용할 수있는 기능을 만들고, LED를 하나씩 프로그래밍하여 빛을 발할 수도 있지만 코드가 길어집니다.
void LED_function (int stage) {for (int j = 2; j <= 11; j ++) {digitalWrite (j, LOW); } for (int i = 1, l = 2; i <= stage; i ++, l ++) {digitalWrite (l, HIGH); // delay (30); }}이 부분에서는 아날로그 핀을 사용하여 전압 값을 읽었습니다. 그런 다음 아날로그에서 디지털로의 변환 공식을 사용하여 아날로그 값을 디지털 전압 값으로 변환하고이를 LCD에 추가로 표시합니다.
// 전압 변환 공식 analogValue = analogRead (A4); Serial.println (analogValue); 지연 (1000); 입력 _ 전압 = (analogValue * 5.0) / 1024.0; lcd.setCursor (0, 1); lcd.print ("전압 ="); lcd.print (입력 _ 전압); Serial.println (입력 _ 전압); 지연 (100);
입력 전압 값에 따라 LED 막대 그래프 LED를 제어하기위한 몇 가지 조건을 지정했습니다. 코드에서 아래에서 확인할 수있는 조건:
if (input_voltage <0.50 && input_voltage> = 0.00) {digitalWrite (2, HIGH); 지연 (30); digitalWrite (2, LOW); 지연 (30); // 전압이 0이거나 낮을 때 첫 번째 LED가 깜박임으로 표시됩니다.} else if (input_voltage <1.00 && input_voltage> = 0.50) {LED_function (2); } else if (input_voltage <1.50 && input_voltage> = 1.00) {LED_function (3); } else if (input_voltage <2.00 && input_voltage> = 1.50) {LED_function (4); } else if (input_voltage <2.50 && input_voltage> = 2.00) {LED_function (5); } else if (input_voltage <3.00 && input_voltage> = 2.50) {LED_function (6); } else if (input_voltage <3.50 && input_voltage> = 3.00) {LED_function (7); } else if (input_voltage <4.00 && input_voltage> = 3.50) {LED_function (8);} else if (input_voltage <4.50 && input_voltage> = 4.00) {LED_function (9); } else if (input_voltage <5.00 && input_voltage> = 4.50) {LED_function (10); }}
배터리 전압 표시기 작동
배터리 전압 표시기는 Arduino 아날로그 핀에서 값을 읽고 ADC (Analog to Digital Conversion) 공식을 사용하여 디지털 값으로 변환합니다. 의 Arduino 우노 ADC는 10 비트의 해상도 인 (- 2 ^ 10 = 1024의 값 0의 정수 값이므로). 즉, 0 ~ 5V 사이의 입력 전압을 0 ~ 1023 사이의 정수 값으로 매핑합니다. 따라서 입력 anlogValue 를 (5/1024)에 곱하면 입력 전압의 디지털 값을 얻습니다. Arduino에서 ADC 입력을 사용하는 방법을 여기에서 알아보십시오. 그런 다음 디지털 값을 사용하여 LED 막대 그래프를 그에 따라 빛나게합니다.
또한 마이크로 컨트롤러없이이 간단한 배터리 잔량 모니터를 확인하십시오.