프로젝트

나도 메이커! 메이커스 여러분들의 작품/프로젝트를 공유하는 공간입니다.

AA 배터리 테스터기 만들기

2018-12-27 10:34:10

개요

 

건전지를 사용하다 보면 잔량이 얼마나 남았는지 몰라서 고생하신적이 있을겁니다.

이러한 문제를 해결하기 위해 충전지나 건전지 잔량을 측정하는 기구등이 있습니다.

이번 예제에서는 간단한 연결을 통해 배터리의 상태를 확인해 보고 이를 이용해서 3색 LED의 불을 제어해 보도록 하겠습니다.

아두이노를 이용하여 아날로그 핀에 들어오는 전압값을 확인하여 배터리의 잔량을 확인하는 방식입니다.

 

 

 

부품 목록

NO 부품명 수량 상세설명
1 오렌지 보드 1 아두이노 우노 호환보드
2 3색 LED 1  
3 제너 다이오드 1 Zener Diode
4 2.2KΩ저항 1  
5 330Ω저항 3  
6 브레드보드 1  
7 점퍼케이블 7  
8 AA건전지 1  

 

부품명 오렌지 보드 3색 LED 제너 다이오드 2.2KΩ저항
파트

 

부품명 330Ω 저항 브레드보드 점퍼케이블 AA건전지
파트

 

 

 

하드웨어 Making

 

회로도

 

브레드보드 레이아웃

 

소프트웨어 Coding


 

#define newLED 2  // 녹색 LED는 2번핀에 꽂습니다.
#define okLED 4   // 파란색 LED는 4번핀에 꽂습니다.
#define oldLED 6  // 빨간색 LED는 6번핀에 꽂습니다.

int analogValue = 0;
float voltage = 0;
int ledDelay = 2000;

void setup(){
  Serial.begin(9600);
  pinMode(newLED, OUTPUT);
  pinMode(okLED, OUTPUT);
  pinMode(oldLED, OUTPUT);
  // LED의 핀모드를 OUTPUT으로 설정해줍니다.
}

void loop(){
  analogValue = analogRead(0);
  voltage = (((float)analogValue) / 1024.0 ) * 5.0;
  Serial.println(voltage);
  // analog 0번핀에 들어오는 값을 측정하여 이 값을 전압값으로 바꿔줍니다.
  
  if(voltage >= 1.6){ // 전압값이 1.6이상일 경우 새 건전지
    digitalWrite(newLED, HIGH);
    delay(ledDelay);
    digitalWrite(newLED, LOW); // 녹색 LED를 2초간 켜줍니다.
  }
  else if(voltage < 1.6 && voltage > 1.4){ // 1.6미만 1.4초과일 경우 사용가능한 건전지
    digitalWrite(okLED, HIGH);
    delay(ledDelay);
    digitalWrite(okLED, LOW); // 파란색 LED를 2초간 켜줍니다.
  }
  else if(voltage <= 1.4){ // 1.4이하일 경우 다 쓴 건전지
    digitalWrite(oldLED, HIGH);
    delay(ledDelay);
    digitalWrite(oldLED, LOW); // 빨간색 LED를 2초간 켜줍니다.
  }
} 

 

 

소프트웨어 설명

  analogValue = analogRead(0);
  voltage = (((float)analogValue) / 1024.0 ) * 5.0;
  Serial.println(voltage);
  // analog 0번핀에 들어오는 값을 측정하여 이 값을 전압값으로 바꿔줍니다.

 

아날로그 0번핀에 들어오는 값을 측정하여 이 값을 전압값으로 바꿔주는 부분입니다. 아날로그 값에다가 1024를 나눠주고 여기에 5를 곱해주면 해당 아날로그 핀에 들어오는 전압값이 됩니다.

 

 

  if(voltage >= 1.6){ // 전압값이 1.6이상일 경우 새 건전지
    digitalWrite(newLED, HIGH);
    delay(ledDelay);
    digitalWrite(newLED, LOW); // 녹색 LED를 2초간 켜줍니다.
  }
  else if(voltage < 1.6 && voltage > 1.4){ // 1.6미만 1.4초과일 경우 사용가능한 건전지
    digitalWrite(okLED, HIGH);
    delay(ledDelay);
    digitalWrite(okLED, LOW); // 파란색 LED를 2초간 켜줍니다.
  }
  else if(voltage <= 1.4){ // 1.4이하일 경우 다 쓴 건전지
    digitalWrite(oldLED, HIGH);
    delay(ledDelay);
    digitalWrite(oldLED, LOW); // 빨간색 LED를 2초간 켜줍니다.
  }

 

위에서 측정한 전압값을 이용하여 LED의 불을 켜줍니다. 전압값이 1.6V이상이면 새건전지로 녹색불, 1.6V미만 1.4V초과면 사용가능한 건전지로 파란불, 1.4V이하면 다쓴 건전지로 빨간불을 켜줍니다.

(기준은 건전지에 따라서 달라집니다. 충전지일 경우는 기본 전압이 낮을 수 있습니다. 또한 AA건전지(1.5V) 외에 다른 건전지를 사용하실 경우 그 건전지에 맞게 전압값을 수정해 주시면 됩니다.)

밑의 사진은 DC Power Supply를 통해 전압을 공급했을 때 제대로 측정값이 나오는지 확인해본 사진입니다.(0.0x단위 오차가 있긴하지만 비교적 정확하게 나왔습니다.)

 

kocoafab

배터리, 다이오드, 아두이노, 오렌지보드