You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 아두 이노 전류 측정 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://chewathai27.com/to team, along with other related topics such as: 아두 이노 전류 측정 AC 전류 측정, ACS712, INA219, 전류 센서 사양, 션트 저항 아두이노, 아두이노 전압센서, 전력 측정기 만들기
그럼 아두이노와 연결해보자. SCL, SDA핀은 각각 A5, A4번에 연결하면 된다. 그리고 Vin+, 핀과 Vin- 핀은 전류를 측정 할 회로에 연결을 해준다. 전류를 측정하는 방법은 다들 알고 있겠지만 회로를 끊은 뒤 그 사이에 연결하여야 전류를 측정 할 수 있다.
[아두이노 중급] 24. 전류측정센서(INA 219) : 네이버 블로그
- Article author: m.blog.naver.com
- Reviews from users: 598 Ratings
- Top rated: 3.8
- Lowest rated: 1
- Summary of article content: Articles about [아두이노 중급] 24. 전류측정센서(INA 219) : 네이버 블로그 Updating …
- Most searched keywords: Whether you are looking for [아두이노 중급] 24. 전류측정센서(INA 219) : 네이버 블로그 Updating
- Table of Contents:
카테고리 이동
~폴나의 공방~
이 블로그
아두이노 중급
카테고리 글
카테고리
이 블로그
아두이노 중급
카테고리 글
[아두이노 중급] 23. 전류측정센서(ACS 712) : 네이버 블로그
- Article author: m.blog.naver.com
- Reviews from users: 4765 Ratings
- Top rated: 3.7
- Lowest rated: 1
- Summary of article content: Articles about [아두이노 중급] 23. 전류측정센서(ACS 712) : 네이버 블로그 그 당시 많은 사람들이 전류 측정 센서와 아두이노를 이용하여 실시간으로 사용되는 전력량을 계산하곤 했다. 뭐 최근에 문의 받은 일은 그런 것은 … …
- Most searched keywords: Whether you are looking for [아두이노 중급] 23. 전류측정센서(ACS 712) : 네이버 블로그 그 당시 많은 사람들이 전류 측정 센서와 아두이노를 이용하여 실시간으로 사용되는 전력량을 계산하곤 했다. 뭐 최근에 문의 받은 일은 그런 것은 …
- Table of Contents:
카테고리 이동
~폴나의 공방~
이 블로그
아두이노 중급
카테고리 글
카테고리
이 블로그
아두이노 중급
카테고리 글
INA219 전류센서모듈과 태양전지판을 사용한 전압/전류 측정 실험 | 싸이피아SCIPIA
- Article author: scipia.co.kr
- Reviews from users: 46995 Ratings
- Top rated: 3.9
- Lowest rated: 1
- Summary of article content: Articles about INA219 전류센서모듈과 태양전지판을 사용한 전압/전류 측정 실험 | 싸이피아SCIPIA 중요한 것은 아두이노 보드와 INA219로 전류를 측정하는 경우 아두이노 보드, 공급전압(0~26), 부하간의 GND는 모두 공통으로 연결되어야 합니다. …
- Most searched keywords: Whether you are looking for INA219 전류센서모듈과 태양전지판을 사용한 전압/전류 측정 실험 | 싸이피아SCIPIA 중요한 것은 아두이노 보드와 INA219로 전류를 측정하는 경우 아두이노 보드, 공급전압(0~26), 부하간의 GND는 모두 공통으로 연결되어야 합니다.
- Table of Contents:
INA219 전류센서모듈과 태양전지판을 사용한 전압전류 측정 실험
1 태양전지판으로 LED를 켜고 INA219 센서의 전압전류를 시리얼모니터로 모니터링하기
2 INA219 센서의 전압전류를 IIC LCD로 모니터링하기
제품구매 정보
Follow Us
아두이노 DC 전류 측정 INA219 전류 센서 사용하기
- Article author: fishpoint.tistory.com
- Reviews from users: 38049 Ratings
- Top rated: 3.7
- Lowest rated: 1
- Summary of article content: Articles about 아두이노 DC 전류 측정 INA219 전류 센서 사용하기 아두이노 DC 전류 측정 INA219 전류 센서 사용하기(INA219 High Se DC Current Sensor Breakout – 26V ±3.2A Max -) INA219B 브레이크아웃 보드와 … …
- Most searched keywords: Whether you are looking for 아두이노 DC 전류 측정 INA219 전류 센서 사용하기 아두이노 DC 전류 측정 INA219 전류 센서 사용하기(INA219 High Se DC Current Sensor Breakout – 26V ±3.2A Max -) INA219B 브레이크아웃 보드와 … 아두이노 DC 전류 측정 INA219 전류 센서 사용하기(INA219 High Side DC Current Sensor Breakout – 26V ±3.2A Max -) INA219B 브레이크아웃 보드와 INA219 FeatherWing은 모든 전력 모니터링 문제를 해결합니다…IoT, 라즈베리파이, 인공지능 개발자 블로그
- Table of Contents:
‘개발자Arduino’ Related Articles
티스토리툴바
아두이노로 AC 전류를 측정해보자 (AC 전류센서 [SEN0211] 사용예제)
- Article author: diyver.tistory.com
- Reviews from users: 8973 Ratings
- Top rated: 3.6
- Lowest rated: 1
- Summary of article content: Articles about 아두이노로 AC 전류를 측정해보자 (AC 전류센서 [SEN0211] 사용예제) 목표> – 우리가 흔히 사용하는 220V AC 전원의 전류를 측정하여 전자기기의 사용 전력을 측정해보자 <준비물> – 아두이노(나노, 우노, 메가), AC전류 … …
- Most searched keywords: Whether you are looking for 아두이노로 AC 전류를 측정해보자 (AC 전류센서 [SEN0211] 사용예제) 목표> – 우리가 흔히 사용하는 220V AC 전원의 전류를 측정하여 전자기기의 사용 전력을 측정해보자 <준비물> – 아두이노(나노, 우노, 메가), AC전류 … <목표> – 우리가 흔히 사용하는 220V AC 전원의 전류를 측정하여 전자기기의 사용 전력을 측정해보자 <준비물> – 아두이노(나노, 우노, 메가), AC전류센서 SEN0211 <회로도> 모듈에서 빨간색 친 부분을 아두이..
- Table of Contents:
태그
관련글
댓글0
공지사항
최근글
인기글
최근댓글
태그
티스토리툴바
[Arduino] 아두이노로 전류값 측정 테스트 :: 일기장처럼 쓰이지만, 블로그인 일기장
- Article author: choiyb2.tistory.com
- Reviews from users: 29910 Ratings
- Top rated: 4.4
- Lowest rated: 1
- Summary of article content: Articles about [Arduino] 아두이노로 전류값 측정 테스트 :: 일기장처럼 쓰이지만, 블로그인 일기장 5V 단자와 GND 단자 그리고 값을 읽어올 A0 단자 VDD는 아두이노의 5V 단자 GND는 아두이노의 GND Vout은 아두이노의 A0 단자에 연결 WCS1600 전류 … …
- Most searched keywords: Whether you are looking for [Arduino] 아두이노로 전류값 측정 테스트 :: 일기장처럼 쓰이지만, 블로그인 일기장 5V 단자와 GND 단자 그리고 값을 읽어올 A0 단자 VDD는 아두이노의 5V 단자 GND는 아두이노의 GND Vout은 아두이노의 A0 단자에 연결 WCS1600 전류 … 5V 단자와 GND 단자 그리고 값을 읽어올 A0 단자 VDD는 아두이노의 5V 단자 GND는 아두이노의 GND Vout은 아두이노의 A0 단자에 연결 WCS1600 전류 센서 관련 링크 아두이노의 5V 전압을 센서의 Vdd에 연결 하였..
- Table of Contents:
관련글 관련글 더보기
인기포스트
ACS712 Àú Àü·ù ÃøÁ¤ ¼¾¼
- Article author: www.jkelec.co.kr
- Reviews from users: 24722 Ratings
- Top rated: 4.2
- Lowest rated: 1
- Summary of article content: Articles about ACS712 Àú Àü·ù ÃøÁ¤ ¼¾¼ l3g4200,l3g4200d,mems,mpu9250,mpu6050,adxl335,adxl345,bmp085,bmp180,hmc5883,hmc5883l,arduino,processing,아두이노,프로세싱,자이로센서,가속도센서,지자기센서. …
- Most searched keywords: Whether you are looking for ACS712 Àú Àü·ù ÃøÁ¤ ¼¾¼ l3g4200,l3g4200d,mems,mpu9250,mpu6050,adxl335,adxl345,bmp085,bmp180,hmc5883,hmc5883l,arduino,processing,아두이노,프로세싱,자이로센서,가속도센서,지자기센서. l3g4200,l3g4200d,mems,mpu9250,mpu6050,adxl335,adxl345,bmp085,bmp180,hmc5883,hmc5883l,arduino,processing,¾ÆµÎÀ̳ë,ÇÁ·Î¼¼½Ì,ÀÚÀ̷μ¾¼,°¡¼Óµµ¼¾¼,ÁöÀڱ⼾¼l3g4200,l3g4200d,mems,mpu9250,mpu6050,adxl335,adxl345,bmp085,bmp180,hmc5883,hmc5883l,arduino,processing,¾ÆµÎÀ̳ë,ÇÁ·Î¼¼½Ì,ÀÚÀ̷μ¾¼,°¡¼Óµµ¼¾¼,ÁöÀڱ⼾¼
- Table of Contents:
See more articles in the same category here: 316+ tips for you.
[아두이노 중급] 24. 전류측정센서(INA 219)
이전 포스트에서 전류 측정 센서 중 하나인 ACS 712를 사용해보았다.
DC AC 모두 측정이 가능한 센서였지만 DC 전류를 측정 할 때는 사용이 조금 어려운 감이 있었다.
그리고 낮은 전류는 전혀 측정이 되지 않는 문제도 있었다.
그래서 이번에는 좀 더 정확한 센서를 사용해보기 위해 고르고 골라서 선택을 하였다.
센서의 이름은 INA 219 센서다.
이 센서는 DC 전류를 측정 할 수 있는 센서로 분해능이 0.08mA로 높고 오차율도 1%라고 되어 있는 센서다.
높은 성능을 나타낼 것으로 기대하고 샀고 실제 사용해보니 만족 할 만한 성과가가 나왔다.
참고로 이 센서는 측정할 전류는 최대 3.2A이고 전압은 0~26V까지 측정이 가능하다.
자, 그럼 센서를 한 번 살펴보자.
이 센서를 사용하는 모듈은 여러 종류가 있겠지만 필자가 사용한 것은 adafruit에서 제작된 모듈을 사용하였다.
센서를 직접 사용 할 사람들은 회로가 그렇게 복잡하지 않으니 쉽게 구성 할 수 있을 것이다.
모듈의 경우는 위의 그림과 같이 나타나 있다.
이때 Vin- Vin+라고 되어 있는 윗 부분에는 연결 할 수 있는 파츠를 따로 넣어서 주거나 납땜을 해서 주는 경우가 있으니 구입에 주의하기 바란다.
참고로 Vin+ Vin-가 위쪽 아래쪽 두 군데 있는데 둘 다 동일 한 것이니 사용하기 편한 곳을 이용하면 된다.
그리고 이 센서는 보이는 것과 같이 I2C 통신을 통하여 동작을 할 수 있다.
그래서 아두이노와의 선 연결이 그렇게 복잡하지 않다.
그럼 아두이노와 연결해보자.
SCL, SDA핀은 각각 A5, A4번에 연결하면 된다.
그리고 Vin+, 핀과 Vin- 핀은 전류를 측정 할 회로에 연결을 해준다.
전류를 측정하는 방법은 다들 알고 있겠지만 회로를 끊은 뒤 그 사이에 연결하여야 전류를 측정 할 수 있다.
위의 그림과 같이 연결하면 LED를 동작시킬 때 사용되는 전류를 측정 할 수 있다.
필자는 위의 회로에서 조금 다르게 배터리 2개 대신 아두이노 우노 보드를 하나 더 사용하여 LED에 전원을 주었다.
연결을 다 했다면 코딩을 해야 한다.
코딩은 고맙게도 adafruit에서 만들어준 라이브러리가 있다.
라이브러리에는 따로 Calibration하는 코드도 들어 있어 정확도가 더 좋다고 한다.
그럼 라이브러리를 받아보자.
아두이노에서 스케치 – 라이브러리 관리로 가보자.
라이브러리 관리를 선택하면 라이브러리 매니저가 나오는데 이때 INA219를 검색하자.
그리고 Adafruit INA219를 설치하자.
라이브러리를 추가했다면 이제 코딩을 해보자.
코드 1
#include
#include Adafruit_INA219 ina219;
void setup(void){ Serial.begin(115200); uint32_t currentFrequency; ina219.begin(); }
void loop(void) { float shuntvoltage = 0; float busvoltage = 0; float current_mA = 0; float loadvoltage = 0; float power_mW = 0;
shuntvoltage = ina219.getShuntVoltage_mV(); busvoltage = ina219.getBusVoltage_V(); current_mA = ina219.getCurrent_mA(); power_mW = ina219.getPower_mW(); loadvoltage = busvoltage + (shuntvoltage / 1000); Serial.print(“Bus Voltage: “); Serial.print(busvoltage); Serial.println(” V”); Serial.print(“Shunt Voltage: “); Serial.print(shuntvoltage); Serial.println(” mV”); Serial.print(“Load Voltage: “); Serial.print(loadvoltage); Serial.println(” V”); Serial.print(“Current: “); Serial.print(current_mA); Serial.println(” mA”); Serial.print(“Power: “); Serial.print(power_mW); Serial.println(” mW”); Serial.println(“”);
delay(2000); }
코드 1은 미리 라이브러리를 둘러 본 사람이면 알겠지만 예제 코드에서 주석을 뺀 코드다.
이 코드를 업로드 하면 전압, 전류, 전력 등을 계산하여 시리얼 모니터를 통해 보여주게 된다.
위의 그림과 같이 나타나는 것을 볼 수 있다.
이때 버스 전압은 V-와 GND 사이의 전압을 말한다.
즉, 회로의 전체 전압을 의미한다.
션트전압은 V-와 V+사이의 전압을 말한다.
션트 저항으로 인해 떨어지는 전압 값인데, 버스 전압이 바로 공급전압에서 이 션트 전압 값을 뺀 값이 된다.
그래서 코드 1에서 로드 전압이 공급 전압이 된다.
코드는 라이브러리에 정의된 함수로 구성되어 있다.
대부분의 함수들은 그 이름만 봐도 무슨 역할을 하는지 알 것이다.
INA219에서 중요한 부분은 바로 가장 앞에 나타나는 부분이다.
Adafruit_INA219 ina219;
이 부분은 복잡하게 말하면 인스턴스 변수가 어쩌고 저쩌고 하게 되지만 우리는 간단하게 우리가 사용할 센서의 이름을 지어준다고 생각하자.
그래서 ‘Adafruit_INA219 Name’ 의 형태가 된다.
이때 Name의 자리에는 넣고 싶은 이름을 넣으면 된다.
그렇게 되면 코드에서 다른 함수들 앞에도 변경된 이름을 적용해야 한다.
아무튼 다시 돌아와서 이 코드가 중요한 이유는 이 센서의 특징에 있다.
이 센서는 I2C 통신으로 동작을 하는 센서다.
그래서 센서에는 고유의 주소가 주어져 있다.
이 주소가 바로 이 코드에 들어가는 곳이다.
주소는 어차피 라이브러리 안에 포함되어 있는거 아닌가 라고 생각할 수 있다.
보통의 센서라면 아마 그럴 것이다.
하지만 이 센서의 경우에는 친절하게도 전류를 여러 곳에서 측정해야 하는 경우도 고려해 두었다.
그래서 우리가 사용 할 수 있는 주소가 4가지나 된다.
센서를 어떻게 설정하냐에 따라 지금 설명하는 코드가 바뀔 수도 있다는 말이다.
우리가 사용하는 센서는 이렇게 생겼다.
여기서 중앙에서 오른쪽을 보면 ‘A0′ A1’ 이라고 적혀 있는 부분이 있다.
이 부분을 이용하여 우리가 원하는 주소 값을 사용 할 수 있다.
위의 그림과 같이 A0이나 A1부분을 납땜하여 사용하면 주소 값을 변경 할 수 있다.
만약 A0 A1을 납땜하지 않고 그냥 사용 할 때는 주소 값이 0x40이 된다.
우리가 코드에 그냥 ‘Adafruit_INA219 ina219’ 라고 쓰면 이때는 자동으로 주소가 0x40으로 적용된다.
그리고 A0을 납땜하여 이어주면 주소값이 0x41,
A1을 납땜하여 이어주면 주소값이 0x42,
A0과 A1을 둘다 납땜하여 이어주면 주소값이 0x43이 된다.
그래서 0x40말고 다른 주소를 사용할 경우에는 코딩을 할 때는 아래와 같이하면 된다.
Adafruit_INA219 ina219(0x41)
위와 같이 다른 주소를 적용할 수 있고 센서를 두 개 사용한다고 하면 각각의 주소값을 적어주면 된다.
Adafruit_INA219 ina219_A
Adafruit_INA219 ina219_B(0x41)
위와 같이 사용하면 센서 하나는 주소가 0x40이고 다른 센서는 주소가 0x41이 되어 두 개를 동시에 사용 할 수 있다.
물론 코딩은 각각 센서별로 해주어야 한다.
이렇게 설정을 하고나서 Setup으로 가면 이제 I2C 통신을 설정해준다.
Name.begin()
begin 함수는 우리가 시리얼 통신에서 사용하는 Serial.begin과 마찬가지로 I2C 통신과 센서를 사용하기 위한 설정을 한다.
그리고 이후에는 loop에 사용된 함수들 처럼 각각 전류, 전압, 전력을 계산하여 불러오는 함수가 있다.
name.getShuntVoltage_mV()
name.getBusVoltage_V()
name.getCurrent_mA()
name.getPower_mW()
이 함수들을 이용해서 전압, 전류, 전력을 불러 올 수 있다.
그리고 측정에서 정밀도를 높이기 위해 사용할 수 있는 몇가지 방법이 존재한다.
기본적으로 따로 설정없이(코드 1과 같이) 라이브러리를 사용하면 최대범위가 32V 2A로 적용하여 값들을 계산한다.
이때 32V 2A라는 범위를 좀 더 좁게 좁혀 정밀하게 계산을 할 수있게 하는 함수가 있다.
ina219.setCalibration_32V_1A();
ina219.setCalibration_16V_400mA();
이 두 함수는 각각 계산 범위를 32V 1A, 16V 400mA로 좁혀 측정의 정밀도를 올릴 수 있게 하는 함수들이다.
자기가 측정하게 되는 최대 전류값을 보고 Calibration 함수를 이용하면 더 정밀도를 올릴 수 있을 것이다.
자, 그러면 이번엔 이 센서가 얼마나 정밀도가 있는지 한 번 살펴보자.
아두이노 보드에 LCD 쉴드를 붙여 실제 멀티미터기랑 비교를 해보았다.
(디버깅을 위해 LCD 쉴드를 사용하면 꽤 편리하다.)
물론 코드 1을 사용했고 코드 1에서 변경한 것은 딜레이가 2000 되어 있던 것을 500으로 줄였다.
비교해보면 어느 정도 비슷한 것을 볼 수 있다.
그럼 좀 더 전류를 낮추어보자.
이번에는 LED로 가는 회로에 병렬로 저항을 하나 더 추가하여 전류를 낮처어 보았다.
이 역시도 어느 정도 정밀하게 나오는 것을 볼 수 있었다.
마지막으로 병렬 회로를 하나 더 만들어 보았다.
보이는 것 처럼 전류가 더 낮아졌지만 측정은 거의 비슷하게 되는 것을 볼 수 있다.
필자가 사용하기에는 이전에 포스팅한 ACS 712보다 가격은 좀 더 비싸지만 차라리 INA 219 센서를 사용하는 것이 정신건강에 더 좋다고 본다.
* 22.02.09
음 LCD에 글 표현하시는 것을 많이 물어보셔서 코드를 추가 합니다.
LCD의 기본 사용법은 아래의 두 링크를 확인하시기 바랍니다.
– 일반 LCD
https://blog.naver.com/darknisia/220791639134
– I2C LCD
https://blog.naver.com/darknisia/221761876607
코드 1에서 LCD 코드만 추가한 것(코드 2)과 I2C LCD를 사용한 버전을 추가합니다.
코드 2 일반 LCD 버전
#include
#include #include LiquidCrystal lcd(6,7,8,9,10,11);
Adafruit_INA219 ina219;
void setup(void){ Serial.begin(115200); uint32_t currentFrequency; ina219.begin(); lcd.begin(16, 2); }
void loop(void){ float shuntvoltage = 0; float busvoltage = 0; float current_mA = 0; float loadvoltage = 0; float power_mW = 0;
shuntvoltage = ina219.getShuntVoltage_mV(); busvoltage = ina219.getBusVoltage_V(); current_mA = ina219.getCurrent_mA(); power_mW = ina219.getPower_mW(); loadvoltage = busvoltage + (shuntvoltage / 1000);
Serial.print(“Bus Voltage: “); Serial.print(busvoltage); Serial.println(” V”); Serial.print(“Shunt Voltage: “); Serial.print(shuntvoltage); Serial.println(” mV”); Serial.print(“Load Voltage: “); Serial.print(loadvoltage); Serial.println(” V”); Serial.print(“Current: “); Serial.print(current_mA); Serial.println(” mA”); Serial.print(“Power: “); Serial.print(power_mW); Serial.println(” mW”); Serial.println(“”);
lcd.clear(); lcd.print(“Now Current”); lcd.setCursor(0,1); lcd.print(current_mA); lcd.print(” mA”); delay(2000);
}
코드 3 I2C LCD 버전
#include
#include #include LiquidCrystal_I2C lcd(0x27,16,2);
Adafruit_INA219 ina219;
void setup(void){ Serial.begin(115200); uint32_t currentFrequency; ina219.begin(); lcd.init(); lcd.backlight(); }
void loop(void){ float shuntvoltage = 0; float busvoltage = 0; float current_mA = 0; float loadvoltage = 0; float power_mW = 0;
shuntvoltage = ina219.getShuntVoltage_mV(); busvoltage = ina219.getBusVoltage_V(); current_mA = ina219.getCurrent_mA(); power_mW = ina219.getPower_mW(); loadvoltage = busvoltage + (shuntvoltage / 1000);
Serial.print(“Bus Voltage: “); Serial.print(busvoltage); Serial.println(” V”); Serial.print(“Shunt Voltage: “); Serial.print(shuntvoltage); Serial.println(” mV”); Serial.print(“Load Voltage: “); Serial.print(loadvoltage); Serial.println(” V”); Serial.print(“Current: “); Serial.print(current_mA); Serial.println(” mA”); Serial.print(“Power: “); Serial.print(power_mW); Serial.println(” mW”); Serial.println(“”);
lcd.clear(); lcd.print(“Now Current”); lcd.setCursor(0,1); lcd.print(current_mA); lcd.print(” mA”); delay(2000);
}
[아두이노 중급] 23. 전류측정센서(ACS 712)
이번 포스트에서는 최근에 문의가 있었던 전류 측정 센서에 관해서 해 볼 것이다.
아마 이것도 한 물 간 이야기 일 수도 있지만 한 때는 또 트랜드가 대기전력에 관한 적이 있었다.
그 당시 많은 사람들이 전류 측정 센서와 아두이노를 이용하여 실시간으로 사용되는 전력량을 계산하곤 했다.
뭐 최근에 문의 받은 일은 그런 것은 아니지만 아무튼 전류 센서를 쓰게 된 김에 그에 대해서 포스트 해보자.
전류 측정 센서는 기본적으로 DC용과 AC용으로 나뉜다.
그리고 최대 A를 기준으로 저전력 측정 센서와 고전력 측정 센서로도 나눌 수 있다.
이러한 전류측정센서에서 우리가 검색을 통해 가장 쉽게 접근 할 수 있는 센서가 ACS 712센서다.
그래서 필자도 이번에 문의를 받아서 테스트를 할 때 ACS 712 센서를 구입하게 되었다.
필자가 원하는 것은 4~20mA를 측정하는 것이었는데 일부 판매 사이트를 보면 ACS 712 센서가 저전류에도 측정이 가능하다고 되어 있었다.
센서를 구입한 이후 테스트를 해보니… 결론은 실망이었다.
그럼 일단 센서를 사용해보자.
센서를 사용하기 위해서는 먼저 데이터시트를 보아야 한다.
ACS 712 센서는 3종류로 나뉘어 진다.
+-5A가 측정가능 한 센서와 +-20, +-30이 측정가능한 센서 이렇게 3종류가 있다.
필자는 +-5A 센서를 이용하였다.
각자 최대 측정 전류에 맞추어서 사면 된다.
가격도 서로서로 크게 차이가 나지 않는다.
이렇게 3종류의 센서는 각각 그 Sensitivity 즉 민감도가 다르다.
아래에는 데이터시트에서 가져온 표다.
데이터시트를 보면 각 종류에 따라 185, 100, 66 mV/A의 민감도를 가진다.
1A당 185, 100, 66mV 씩 변한다는 뜻이다.
이 부분에서 보면 알겠지만 이 센서는 출력되어 나온 전압을 이용하여 전류값을 계산해 내는 센서인 것이다.
이 표를 기억해놓자.
그리고 다음으로 알아야 할 것은 초기값에 대한 것이다.
초기값은 전류가 흐르지 않을 때 어떤 값이 나오는지에 대한 것이다.
이 또한 데이트 시트에 나타나 있다.
위의 표를 보면 다양한 중요한 값들이 나타난다.
일단은 공급 전압은 5V가 되야 한다.
뭐 최소에서 최대까지 4.5V ~ 5.5V까지이지만 앞서 이야기 한 것과 같이 이 센서는 전압을 이용하여 전류를 계산하게 된다.
그래서 센서에 공급되는 전압은 5V로 일정한 것이 좋다.
만약 공급전압이 노이즈를 타서 5V, 5.2V, 4.8V 이런씩으로 계속 변화하면 그만큼 또 측정되는 전류에 영향을 미칠 수밖에 없다.
다음으론 Zero Current 일 때의 전압 값이 나타나 있다.
이 말은 전류가 흐르지 않을 때의 전압 값이라는 것이다.
이값은 초기 값으로 나중에 계산해 줄 때는 이 값을 빼주어야 한다.
그리고 표를 보면 이 값은 ‘Vcc에 0.5를 곱해준 값’이라고 한다.
아까 이야기 한 것처럼 이 센서는 전압을 이용하여 전류를 측정하므로 초기 값 또한 공급 전압에 영향을 받을 수밖에 없다.
그래서 간단히 이렇게 해주어도 되지만 좀 더 정확한 값을 위해서라면 직접 측정하는 것이 좋다.
그러면 측정을 해보자.
측정하는 방법은 간단히 센서를 연결하고 analogRead를 통해 전류가 흐르지 않을 때의 값을 보면 된다.
먼저 센서를 아두이노 보드에 연결해보자.
ACS712 센서 모듈은 위의 그림과 크게 다르지 않게 판매되고 있다.
모듈 내부 구성도 그렇게 어렵지 않게 되어있다.
센서와 안정도를 위한 커패시터와 저항이들이 들어가 있다.
그리고 연결 핀도 간단하다.
GND, VCC가 있고 OUT은 알다시피 전압이 출력되기 때문에 아두이노 보드의 아날로그 핀으로 연결하면 된다.
연결을 했다면 확인을 해보자.
코드 1
int value;
void setup(){ Serial.begin(9600); pinMode(A0, INPUT); }
void loop(){ value = analogRead(A0); Serial.println(value); delay(250); }
코드 1을 업로드하고 시리얼 모니터를 열어보자.
시리얼 모니터를 연다면 위의 그림과 같이 나타날 것이다.
센서에 따라 값의 차이는 있을 것이다.
필자의 센서에서 전류가 흐르지 않을 때의 전압값은 510~513 사이의 값이 나타난다.
이를 전압으로 환산한다면 2.49~2.51V의 값이 나타나는 것을 알 수있다.
굳이 이렇게 하는 이유는 우리가 5V라는 공급전압을 정확히 받기가 힘들기 때문에 최대한 정확도를 높이기 위해서 하는 것이다.
자 그러면 이를 이용해서 한 번식을 세워 보자.
먼저 위에서 보이는 초기값을 anlaogRead로 측정되는 값에 빼줘야지 전압의 변화량을 알 수 있다.
value = analogRead(A0);
amp = value – 511;
자, 일단 계산한 전류를 지정 할 변수를 amp라고 해보자.(암페어에 줄임말….)
위에서 말했던 것처럼 amp를 구해기 위해서 측정된 값에 초기값을 빼줬다.
이때 초기값은 위의 그림에 나오는 값에서 평균을 구한 값이다.
다음으론 측정된 값을 전압값으로 변환시켜 주어야 한다.
value = analogRead(A0);
amp = (value – 511)*5/1024;
전압값으로 변경해주는 식을 추가하였다.
그렇다면 이번엔 센서에 민감도를 적용하여 전류를 구해보자.
센서의 민감도는 아래의 표와 같다.
자신이 구입한 센서에 맞는 민감도를 적용하자.
필자가 구입한 것은 5A용이기 대문에 185mV/A의 민감도를 가진다.
이를 식에 적용해야 하는데 주의 할 점은 민감도의 단위와 우리가 계산한 전압값의 단위가 다르다는 것이다.
그러면 단위를 맞춰서 식에 대입해보자.
value = analogRead(A0);
amp = ((value – 511)*5/1024)/0.185;
측정된 전압값에 0.185를 나누어 주었다.
그럼 이렇게 되면 이제 우리가 원하는 전류를 구할 수 있다.
하지만 여기서 생각해보면 전류의 단위는 ‘A’가 된다.
필자가 측정하기를 원하는 전류의 값은 앞서 이야기 한 것과 같이 4~20mA였다.
그러면 단위를 ‘mA’ 단위로 변경해보자.
뭐 일반적으로 아두이노를 이용하여 뭔가를 한다면 ‘mA’단위로 나타내는 것으로 충분 할 것이다.
value = analogRead(A0);
amp = (((value – 511)*5/1024)/0.185)*1000;
자, 최종적으로 위의 식과 같이 나타낼 수 있다.
그럼 코드에 도입해보자.
코드 2
int value; float amp;
void setup(){ Serial.begin(9600); pinMode(A0, INPUT); }
void loop(){ value = analogRead(A0); amp = (((value-511)*5/0.185)/1024)*1000; Serial.print(amp); Serial.println(” mA”); delay(250); }
코드 2와 같이 나타내면 전류를 측정 할 수 있다.
그러면 전류를 측정하기 위해 LED를 하나 연결 해보자.
LED를 하나 연결해보면 일반적으로 80mA정도 소모되고 있는 것을 멀티미터기를 이용하면 알 수 있다.
그러면 비슷한 값이 나오는지 알아보자.
일단 브레드 보드를 이용하여 LED를 연결하고 ACS 712를 중간에 연결하자.
알다시피 전류를 측정하기 위해서는 회로를 끊고 사이에 전류를 측정하는 것이 있어야 한다.
필자는 측정을 위해 LED의 전원은 다른 아두이노 보드의 5V와 GND를 이용해서 연결하였다.
자, 이렇게 하고 코드 2를 업로드 한 뒤 시리얼 모니터를 보면 어떨까.
위의 그림과 같이 나온다.
…………..
제대로 측정이 되고 있는 것처럼 보이….나?
자, 그러면 LED를 빼고 해보자.
두 개의 차이가 무엇일까.
참고로 두개가 같은 그림이 아니다.
진짜로 연결하고 빼고를 했을 때의 값이다.
결론을 말하자면…. 이 센서는 저 전류를 측정 할 수 없는 센서다.
이미 잡음을 상당히 많이 타고 있다.
이것이 앞서 우리가 본 510~513 사이 값을 자꾸 반복하여 보여주는 것의 나비효과다.
3정도의 잡음으로 보이지만 실제로 전류를 측정하면 -52.79 ~ 26.39까지의 값이 되고 만다.
이를 보완하기 위해서 커패시터를 붙이든가 하는 여러 방법을 사용하는 사람들이 국내외에 있지만 필자가 그런 자료를 찾아보고 결국 내린 결론은 이 센서는 낮은 전류를 측정 하기는 힘들다는 것이다.
그럼 위의 그림을 좀 더 직관적으로 보기 위해 이번에는 시리얼 플로터를 써보자.
시리얼 플로터를 보면 잡음이 확나오는 것을 볼 수 있다.
참고로 시리얼 플로터를 사용하기 위해서는 위의 그림과 같이 코드를 수정해야 한다.
그래서 필자가 다음으로 생각한 것이 그래도 좀 쌘 전류는 측정할까 였다.
필자 주위를 가볍게 둘러보니 L293D 모터 쉴드가 있어서 모터를 동작 할 때 측정을 해보기로 했다.
회로를 구성하고 배터리 홀더에서 모터 쉴드로 가는 전원을 끊어 ACS712 센서를 연결했다.
그리고 모터를 동작시켰다.
위와 같이 구성하고 동작을 시켜보았다.
위의 그림과 같이 300~400mA 사이의 값이 나온다.
이를 좀 더 잘 보기 위해 이번에는 계속 돌아가는 동작이 아닌 2초 간격으로 돌고 멈추고를 반복하여 해보았다.
빨간 네모는 모터가 동작 할 때의 값이고 초록 네모는 모터가 멈추었을 때의 값이다.
차이는 있어보이지만 저렇게 노이즈가 타는 것처럼 나타나는 것 때문에 제대로 값을 볼 수가 없다.
참고로 저 값과 실제 멀티미터로 측정한 값과 비교를 하면 비슷하기는 하다.
어느정도 전류가 높다면 값이 비슷하게 나온다는 것이다.
그리고 이에 대해 보완하기 위해 외국자료를 많이 찾아보았는데 대부분이 결론은 이 센서가 DC값과 AC 값을 동시에 측정하기 때문에 생기는 문제라고 했다.
그래서 보통은 값들을 여러개 받아 평균이나 아니면 AC의 실효값을 구하는 것과 같은 방식으로 DC 전류를 측정한다는 것이다.
위의 그림과 같이 붉은 선의 값을 찾아낸다는 것이다.
그리고 이 값은 어느정도 멀티미터와 비슷하게 나타난다.
그래서 최종 결론은 단순히 전류의 크기 비교를 할 때는 쓸만한 센서지만 정밀하게 전류의 값을 알아야 한다던가 하는 일을 할 때는 이 센서는 별로 좋지 않다고 말하고 싶다.
뭐 따로 모듈에 커패시터를 추가하고 한다면 어느정도 보정이 된다고는 한다.
하지만 정밀한 값을 원한다면 다른 센서를 사용하는 것이 좀 더 마음이 편하지 않을까 싶다.
그리고 조만간 이 센서보다 정확한 전류센서를 포스팅하겠다.
P.S 참고로 ACS723 센서도 있다. 민감도는 조금 다르지만 사용법은 같으니 이 포스트를 활용해도 된다.
INA219 전류센서모듈과 태양전지판을 사용한 전압/전류 측정 실험
INA219 센서는 DC 전류를 mA 단위로 측정할 수 있으며 상당히 정확도가 높은 센서 중에 하나입니다. 전류는 물론 전압측정도 가능하며 이를 통해 전력도 산출가능합니다. 최대 측정전류는 3.2A이며 전압은 0~26V까지 측정가능합니다. 구동전압은 3~5V로 공급해주면 됩니다.
INA219의 측정 원리는 옴의 법칙을 기반으로 하며 측정되는 전류는 아주 작은 값(R100; 0.1옴)의 션트 저항에 걸리는 전압값에 의해 결정되고 측정된 값에 10을 곱하면 실제 전류의 크기가 됩니다.
아래는 INA219의 전류 및 전압의 측정방법입니다. 중요한 것은 아두이노 보드와 INA219로 전류를 측정하는 경우 아두이노 보드, 공급전압(0~26), 부하간의 GND는 모두 공통으로 연결되어야 합니다.
1. 태양전지판으로 LED를 켜고 INA219 센서의 전압/전류를 시리얼모니터로 모니터링하기
아래 회로도와 같이 태양전지판으로 부터 발생된 전기로 LED를 켜보고 INA219센서로 회로의 전압과 LED에 흐르는 전류를 아두이노프로그램의 시리얼모니터에서 확인해 보겠습니다.
실험에 사용된 적색LED는 비교적 낮은 전압에서도 약하게 나마 발광할 수 있으므로 실내의 밝은 형광등 아래에서도 실험이 가능한 장점이 있습니다.
실내에서 실험할 경우 발전된 전압이 최소 1.7V 이상(2V이상 권장)이 되도록 합니다.
회로 구성을 마친 후 아래 라이브러리를 설치하고 소스코드를 복사 또는 작성합니다.
라이브러리는 아래 링크에서 다운로드하고 아두이노 프로그램 메뉴에서 스케치->라이브러리 포함하기->.ZIP 라이브러리 추가를 누르고, 파일선택창이 나오면 다운받은 라이브러리 파일을 선택하시면 됩니다.
라이브러리
소스코드
아래는 소스코드입니다. 아두이노 IDE에 붙여넣기 하여 컴파일하고 업로드합니다.
// INA219 전류센서모듈 실험 #1 #include
#include #define I2C_ADDRESS 0x40 INA219_WE ina219(I2C_ADDRESS); void setup() { Serial.begin(9600); Wire.begin(); if(!ina219.init()){ Serial.println(“INA219 not connected!”); } Serial.println(“INA219 Current Sensor with solar panel”); } void loop() { float shuntVoltage_mV = 0.0; float loadVoltage_V = 0.0; float busVoltage_V = 0.0; float current_mA = 0.0; float power_mW = 0.0; bool ina219_overflow = false; shuntVoltage_mV = ina219.getShuntVoltage_mV(); busVoltage_V = ina219.getBusVoltage_V(); current_mA = ina219.getCurrent_mA(); power_mW = ina219.getBusPower(); loadVoltage_V = busVoltage_V + (shuntVoltage_mV/1000); ina219_overflow = ina219.getOverflow(); Serial.print(“Shunt Voltage [mV]: “); Serial.println(shuntVoltage_mV); Serial.print(“Bus Voltage [V]: “); Serial.println(busVoltage_V); Serial.print(“Load Voltage [V]: “); Serial.println(loadVoltage_V); Serial.print(“Current[mA]: “); Serial.println(current_mA); Serial.print(“Bus Power [mW]: “); Serial.println(power_mW); if(!ina219_overflow){ Serial.println(“Values OK – no overflow”); } else{ Serial.println(“Overflow! Choose higher PGAIN”); } Serial.println(); delay(1000); } 소스코드를 컴파일하고 아두이노로 업로드 합니다.
시리얼 모니터를 열어 아래와 같은 메시지가 나오는지 확인합니다.
주의 사항 : 시리얼모니터에서 보드레이트는 9600으로 설정하시기 바랍니다.
2. INA219 센서의 전압/전류를 IIC LCD로 모니터링하기
아래 회로도와 같이 태양전지판으로 부터 발생된 전기로 LED를 켜보고 INA219센서로 발전된 전압과 LED에 흐르는 전류를 IIC LCD에서 확인해 보겠습니다.
1번 회로도에서 IIC LCD 부분만 아래와 같이 추가합니다.
회로 구성을 마친 후 아래 라이브러리를 설치하고 소스코드를 복사 또는 작성합니다.
라이브러리는 아래 링크에서 다운로드하고 아두이노 프로그램 메뉴에서 스케치->라이브러리 포함하기->.ZIP 라이브러리 추가를 누르고, 파일선택창이 나오면 다운받은 라이브러리 파일을 선택하시면 됩니다.
주의 사항 : 라이브러리는 설치되지 않은 경우에만 설치하시면 됩니다.
라이브러리
소스코드
아래는 소스코드입니다. 아두이노 IDE에 붙여넣기 하여 컴파일하고 업로드합니다.
// INA219 전류센서모듈 실험 #2 #include
#include #include #define I2C_ADDRESS 0x40 INA219_WE ina219(I2C_ADDRESS); LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display void setup() { lcd.init(); lcd.backlight(); lcd.clear(); Serial.begin(9600); Wire.begin(); if(!ina219.init()){ Serial.println(“INA219 not connected!”); lcd.print(“INA219″); lcd.setCursor(0,1); lcd.print(” not connected!”); } lcd.clear(); lcd.print(“Voltage:”); lcd.setCursor(0,1); lcd.print(“Current:”); Serial.println(“INA219 Current Sensor with solar panel”); } void loop() { float shuntVoltage_mV = 0.0; float loadVoltage_V = 0.0; float busVoltage_V = 0.0; float current_mA = 0.0; float power_mW = 0.0; bool ina219_overflow = false; shuntVoltage_mV = ina219.getShuntVoltage_mV(); busVoltage_V = ina219.getBusVoltage_V(); current_mA = ina219.getCurrent_mA(); power_mW = ina219.getBusPower(); loadVoltage_V = busVoltage_V + (shuntVoltage_mV/1000); ina219_overflow = ina219.getOverflow(); Serial.print(“Shunt Voltage [mV]: “); Serial.println(shuntVoltage_mV); Serial.print(“Bus Voltage [V]: “); Serial.println(busVoltage_V); Serial.print(“Load Voltage [V]: “); Serial.println(loadVoltage_V); Serial.print(“Current[mA]: “); Serial.println(current_mA); Serial.print(“Bus Power [mW]: “); Serial.println(power_mW); lcd.setCursor(8,0); lcd.print(loadVoltage_V); lcd.print(“V “); lcd.setCursor(8,1); lcd.print(current_mA); lcd.print(“mA “); if(!ina219_overflow){ Serial.println(“Values OK – no overflow”); } else{ Serial.println(“Overflow! Choose higher PGAIN”); } Serial.println(); delay(1000); }
So you have finished reading the 아두 이노 전류 측정 topic article, if you find this article useful, please share it. Thank you very much. See more: AC 전류 측정, ACS712, INA219, 전류 센서 사양, 션트 저항 아두이노, 아두이노 전압센서, 전력 측정기 만들기