고급 예제

다양한 도구들을 가지고 마음껏 응용해보세요.

전류와 전압 측정하기

2014-10-24 11:48:24

개요

혹시 휴대용 전압 측정기를 가지고 계신가요?
가끔 작동이 되지 않을 때 각 부분별로 전류가 잘 흘러가는 지를 측정할 때 유용하게 쓰입니다.
 


만약 없으시다면 이번 기회에 한 번 만들어 보면 어떨가요?


위 사진은 INA219 DC 전류 센서 입니다. 전압과, 전류를 1%의 오차범위내로 정확하게 측정한다고 합니다.

본문에서는 INA219 DC 전류 센서를 사용해 
여러 LED와 연결된 회로의 전압과 전류를 측정해 보겠습니다.

 

 


 

 

미리보기 동영상

 

 

부품목록

 

 

 

NO 부품명 수량 상세설명
1 오렌지 보드  1  
2 브레드 보드  
3 여러 LED  측정하고 싶은 LED를 선택하세요.
본문에서는 DFRobot의 seven cycles를 사용했습니다.
4 전류 측정 센서  INA219 High Side DC Current Sensor 
를 사용하였습니다.
5 점퍼 케이블 10   
7 9V 배터리 1 3.3V 이상이면 됩니다.

 

 

부품명 오렌지 보드 브레드 보드 LED 전류 측정 센서 점퍼 케이블
사진 x1 x1 x1  x1 X10

 

 

 

 

부품명 한글 LCD 9V 배터리
사진 X1 X1

 

 

하드웨어 Making

회로도 

 

브레드 보드 레이아웃

1. 센서와 측정 센서 연결방법

INA219 센서에는 V- 와 V+라는 부분이 있습니다.

V+에는 공급되는 전원의 +와 연결합니다.
V-에는 측정할 센서의 +부분과 연결합니다.
측정할 센서의 -부분과 전원의 -를 연결한 후 GND와 연결합니다.

* INA219 센서에는 다른 센서를 연결하는 곳이 2군데 있습니다.
브레드 보드에 연결하기 용이 하지 않다면 센서의 윗부분을 이용하세요.

 

 

 

 

 


2. INA219 센서를 여러개 사용 할 경우 
: 각 센서 마다 특별한 주소가 필요합니다. 최대 4개 까지 가능합니다.
 
보드 번호 주소 주소 바꾸는 방법
0 0x40 아무런 납땜을 하지 않는다.
1 0x41 A0부분 납땜
2 0x42 A1 부분 납땜
3 0x43 A0과 A1 부분 둘 다 납땜

출처 : https://learn.adafruit.com/assets/2458


 
 

소프트웨어 Coding

아래의 스케치를 아두이노에 업로드 하세요.
 

/*
 이 스케치는 ardafruit 및 여러 커뮤니티를 참고하여 작성되였습니다.
 ardafruit : https://learn.adafruit.com/adafruit-ina219-current-sensor-breakout?view=all#overview
*/
#include <Wire.h>
#include <Adafruit_INA219.h>

Adafruit_INA219 ina219;

void setup(void) 
{
  uint32_t currentFrequency;
    
  Serial.begin(115200);
  Serial.println("Hello!");
  
  Serial.println("Measuring voltage and current with INA219 ...");
  ina219.begin();  //초기화
}

void loop(void) 
{
  float shuntvoltage = 0;
  float busvoltage = 0;
  float current_mA = 0;
  float loadvoltage = 0;

  shuntvoltage = ina219.getShuntVoltage_mV(); //Shunt 전압측정
  busvoltage = ina219.getBusVoltage_V(); //Bus 전압측정 
  current_mA = ina219.getCurrent_mA();   //전류 측정
  loadvoltage = busvoltage + (shuntvoltage / 1000); //Load 전압계산
  
  Serial.print("Bus Voltage:   "); Serial.print(busvoltage); Serial.println(" V");   //Bus 전압 출력
  Serial.print("Shunt Voltage: "); Serial.print(shuntvoltage); Serial.println(" mV"); //Shunt 전압 출력
  Serial.print("Load Voltage:  "); Serial.print(loadvoltage); Serial.println(" V");   //Load 전압 출력
  Serial.print("Current:       "); Serial.print(current_mA); Serial.println(" mA");   //전류 출력
  Serial.println("");

  delay(2000);
}

하드웨어 및 소프트웨어 설명

1. 하드웨어 설명

INA219 DC current sensor는 3V/5V의 전압이 공급되어도 + 26VDC까지, 하이 사이드 전류 측정을 처리 할 수 있습니다. 
또한 배터리에 대해 하이 사이드 전압도 측정할 수 있습니다.

2. 소프트웨어 설명

#include <Adafruit_INA219.h>

본 스케치를 사용하기 위해서는 다음의 라이브러리가 필요합니다. 
다음 링크를 통해 다운로드 받으세요.

ina219.begin();  //초기화

초기화 하는 함수입니다.

#include <Wire.h>
#include <Adafruit_INA219.h>

Adafruit_INA219 ina219_A;
Adafruit_INA219 ina219_B(0x41);


void setup(void) 
{
  ina219_A.begin();  // Initialize first board (default address 0x40)
  ina219_B.begin();  // Initialize second board with the address 0x41
}

만약 여러개를 사용할 경우 위와 같이 보드와 주소를 지정하고 사용하시면 됩니다.

shuntvoltage = ina219.getShuntVoltage_mV();   //shunt 전압측정
busvoltage = ina219.getBusVoltage_V();        //bus 전압측정
current_mA = ina219.getCurrent_mA();          //전류 측정
loadvoltage = busvoltage + (shuntvoltage / 1000);

위 라이브러리의 함수를 통해 쉽게 측정된 전압, 전류 값을 가져올 수 있습니다.

BusVoltage는 GND와 V- 사이의 전압입니다.
ina219.getBusVoltage_V()으로 값을 측정하고 가져올 수 있습니다.

ShuntVoltage는 INA219 DC current sensor에 V- 부터 V+ 사이의 전압입니다.

getCurrent()는 위의 shuntVoltage를 옴에 법칙에 대입하여 구해진 전류입니다.
 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

전류 측정 센서, 아두이노, 오렌지보드

이원권 2015-06-17 18:31:55

안녕하세요. 이게 12V600AH 축전지도 측정이 가능하나요???

김동호 2017-01-11 14:09:10

안녕하세요 많은 도움이 되고 있습니다. 한가지..질문이 있어서요..
해당 센서를 4개 연결 시 동시에 값을 읽어 들일수 있는건가요?