로그인회원등록 내글장바구니주문조회현재접속자
 상품 검색








 게시판 검색





 
 
회원등록 비번분실


온라인 입금계좌
ㆍ기업은행
ㆍ219-043192-01-028
ㆍ이건영

      거래은행 바로가기
 
 Sensor Applications
아듀이노 응용소스
작성자 avrtools™        
작성일 2016/01/29
첨부#1 arduino-wattmeter-v1.ino+hex.zip (21KB) (Down:115)
ㆍ추천: 0  ㆍ조회: 659   
  Arduino AC/DC Power Meter의 제작
Arduino 교류/직류( AC/DC) 전력 측정기 (Power Meter)의 제작 
참조 : Arduino AC-DC Wattmeter

아듀이노로 전력계를 DIY 하자. (최종 수정: 5/21, 2014)
 
그림 1: 아듀이노 전력계의 시작품(prototype)

교류/직류 겸용의 전압, 전류, 전력외 21 개의 매개변수를 측정한다.
교류직류 겸용 전력계에서 측정되는 값들은  다음과 같다.
Vmean [V] 평균 전압
Vrms [V] 유효 전압
Vmin [V]  최저 전압
Vmax [V] 최대 전압
F (V) [Hz] 전압 주파수
 
Imean [A] 평균 전류
Irms [A] 유효 전류
Imin [A] 최소 전류

Imax [A] 최대 전류
F (I) [Hz] 전류 주파수
 
Power [W] 유효 전력
Pmin [W] 최소 전력

Pmax [W] 최대 전력
Q (reacive) [VA] 무효 전력
S (apparent) [VA] 피상 전력
Phase (Cos Φ) [deg] 위상
 
Vsdev [V] 전압 표준편차
Isdev [A] 전류 표준편차
Flux (Φ) [Vs]  전압 면적
Charge (Q) [C]  전하량
Energy (E) [J] 열량
Time [sec] 측정시간

전력과 에너지의 측정이 불가능한 통상적인 멀티메터로는 어렵다.
믿을 수 있는 정밀한 측정을 하려면 특별한 전력계가 요구된다. 
이곳의 아듀이노 Nano 기반의 DIY 전력계는 저렴한 해결 방법이다.

매개변수
이 전력계는 real power, apparent power, reactive power, phase, energy를 측정한다.
전력계는 역시 평균(mean)값과 실효(RMS)값은 동시에 계산한다.   
그리고 전류와 전압을 모두 표준편차, 최고값, 최소값, 주파수를 측정한다. 
측정시간을 추적하여 전압의 면적(area)인 Flux와 전류의 면적인 Charge를 측정한다.
사용된 표시장치의 표시용량에 따라 2개 혹은 4개의 매개변수를 읽을 수 있다.
 
이상적인 측정기는 AC와 DC를 모두 측정할 수 있어야 한다.
이것은 선택된 매개변수를 정확하게 수학적으로 계산되어 알맞게 처리된다.
전압, 전류, 유효전력과 피상전력을 위한 대역폭(bandwidth)은 약 1.8KHz이다.
무효전력(reactive)과 위상( phase)을 위한 대역폭은 주 주파수인 50~60Hz로 제한된다.  

정확도
아듀이노를 고려하면 가장 정밀한 기판은 아니며, 알맞는 측정 장치를 만드는 것으로 만족한다. 
규격화된 부품들이 사용되었고, 10 °C의 변화로 0.2%를 유지하는 정밀도로 교정되었다.

코드
아듀이노 전력계의 소스 코드는 문자 파일로 있다 :  Arduino AC/DC Power Meter.ino (첨부파일 #1)

회로
만드는 희생을 감수하면 쉽게 만들 수 있는 회로와 제작 방법이 있다.
메터는 전압과 전류의 입력으로 고정된 측정범위를 갖는다.
다른 한편으로는 한개의 증폭기 만 사용된다. 역시 측정 가능한 낮은 전압과 전류는 부담이 된다.

그림 2: 아듀이노 전력계의 회로도
 

전압과 전류의 측정범위(range)는 R1과 R3 (불가능하면 R4)의 변경으로 전용화할 수 있다.
이번 예의 측정 범위는 ±50 V, ±5 A 이다.
(고전압의 교류전압과 교류전류를 측정하려면, 교류전압과 전류를 절연하고 낮추는 PT와 CT가 필요하다)  

개요 설명
전압은 COM과 V 단자 사이에서 측정된다.
전압은 아듀이노의 아날로그 입력 A4 핀으로 R1과 R2로 분할(divide)되어 측정된다.
다이오드 D1, D2는 아듀이노를 초과된 전압으로 부터 보호한다.
 
전류는 A 단자에서 F1과 전류측정 병렬저항(shunt) R3을 통해 COM 단자로 지나간다. 
전류는 R3을 통해 전류에 비례하는 전압 강하(voltage drop)를 발생(cause)한다.
이 전압은 측정범위에서 ±50 mV로 매우 작기 때문에 R4, R5 와 IC1에서 증폭하고 아날로그 A5 핀으로 공급된다.
다이오드 D3, D4는 전기 불꽃(electric spike)을 제거(against)하여 보호한다.

측정 입력회로에서 잘 알고있는 -전압은 측정이 가능한 +전압으로 바꾼다.
COM 전압은 기준 전압(reference voltage)을 반으로 줄여, 가상 접지(vertual common)로 연결한다.
아듀이노에 사용된 기준 저압은 1.1 V이다. 그래서 COM 전압은 0.55 V이다.
이 전압의 교류저항(impedance)은 R2와 비교하여 객관적으로 낮아야 한다.
(가상 접지-집합점- 전압의  발생회로 R6, R7에는 100uF의 정전용량(capacitor)을 병렬로 연결한다)
 
아듀이노의 기준전압은 오직 작은 부하만 연결할 수 있기 때문에,
기준전압의 1/2은 5V 전원에서 R6 1K옴, R7 270 옴으로 분할하여 구동한다. 
이 전압은 아날로그 입력 핀 A6으로 측정하고 계산하기 때문에 오랜 시간 정밀하지 않아도 된다. 
  
측정된 매개변수들은, 4비트 데이터와 3개의 제어신호로 아듀이노에 연결된,
16*2  혹은 16*4 LCD 장치에서 문자로 읽는다. 매개변수는 4개의 스위치에서 선택된다.
 
D7 LED는 초과(overflow)를 점등하여 표시한다.
만일 전압 혹은 전류 입력이 초과되면 측정은 더 이상 정밀하지 않게 될 것이다.
전력계는 9V 직류 전원(adapter)을 아듀이노의 Vin과 GND에 연결한다. 
소비 전류는 약 75mA의 전류가 기록되었다.

전압과 전류의 범위

그림 3: 전력계의 아날로그 입력과 Arduino 기판을 LCD 아래에 있게 구성했다.

전압과 전류의 범위는 전력계가 사용되는 응용에서 입력회로의 고정된 범위를 따른다.
범위를 선택할 때, 일반전압 보다 높이 튀는(peak) 전압을 고려해야 한다.
예를 들면 이 전력계는 12V PV-방식을 사용하였다.
 
PV-패널은 18V 까지 되지만, 전원은 개방(전원을 장치에서 뺏을 때) 전압은 14V 이다.
전원의 소비 전류 값은 돌입(순간적으로 들어가는) 전류로 매우 나쁘다.
 
측정 범위를 첨두 값으로 전환하는 생각이 필요하다.
정현파 교류의 첨두 값은 √2로 유효값 141 이상으로 100V 보다 높게 된다. 

측정전압과 감쇄기
입력 전압 감쇄기(attenuator)는 저항 R1과 R2로 결정된다.
이 저항은 입력 전압을 분할한다.
그래서 아듀이노 측정 기준은 0.55 V가 최대 범위이다.
저항 R2는 고정값 10 kΩ을 갖고, 범위는 R1을 설정(set)하여 계산된다.
 
입력 전압 저항[Ω]의 계산,
만일 50V의 측정 범위가 필요하면 R1은 반드시 899 KΩ 이다.
이 값은 표준이 아니기 때문이다. E12 계열에서 가까운 값은 1 MΩ이다. (E24 계열 저항은 910 KΩ)
초과전압으로 부터 보호 하려면 R1의 값은 10 KΩ 보다 낮은 값을 선택할 수 없다.
그러므로 가능한 전압 범위는 ±1.1 V로 낮아 진다.

전류 범위
증폭도와 아날로그 감도로 부터 전류 측정 범위는 병렬 저항(shunt resistor) R3으로 결정된다.
아듀이노의 입력 감도(sesitivity)는 ±0.55 V로 고정됬고 증촉기도 10 배로 고정됬기 때문이다.
R3을 지나가는 전압 강하의 최대 범위는 ±55 mV이다.
그래서 입력 범위는 R3의 값으로 결정하는 계산을 할 수 있다. 
 
병령 저항(shunt resistor)의 계산 [Ω]
만일 입력 범위로 5 A가 필요하면, R3은 반드시 0.011 Ω이 된다.
근접(rounded)시키면  0.01 Ω(10 mΩ)이 된다. 

전류검출 병렬저항(shunt resistor)

그림. 4: Vishay-Dale 사의 전류검출 저항(shunt resistor).

전류검출 저항은 까다로운 부품이다. 그리고 조금 특별한 주의가 필요하다.
저항들의 저항 값은 온도의 변화가 문제다, 주위온도 뿐만 아니고, 자체 발열도 포함된다.
전류검출 병렬저항의 자체 발열을 줄이려면, 소비전력 보다 반드시 큰 규격이 필요하다.
 
규정된 소비전력은 실제 최대 소비전력 보다 큰 10 배에 가깝다.
회로에서 주어진 병렬 저항에는 5A가 소비된다.
(계측산업에서 전류 검출저항의(shunt) FS은 50mV이다. CT의 FS은 5A이다.)
실제 소비전력은 50mV x 5A = 0.25 W 이므로 10 배 이상인 2.5W 보다 큰 3W가 알맞다.

만일 병렬저항의 온도계수가 50 ppm/°C 이면 오차(tolerance)는 ±20 °C 변동으로 0.1%가 된다.   
측정기 케이스의 온도상승이 전류검출 병렬저항의 자체 발열에 포함된다.
큰 온도 계수의 저가 병렬저항(shunt)을 사용하면 변동은 더 파급된다.
부품의 초기 오차는 중요도가 낮다. 이것은 교정값으로 보상된다.

전류는 매우 작은 값의 분담 전압으로 선택된 전류검출 병렬저항을 통과(across)한다.
50uV를 디지털 표시기에서 4자리의 분해능이다.
다른 금속으로 만든 접합점에서 발생하는 온도-전기(thermoelectric) 접합 전압 수준이다. 

이들 온도차는 검출저항의 주변에서 전력 손실의 차이로 부터 쉽게 일어날 수도 있다.
병렬저항의 온도차이로도 작은 납땜 연결점에서 전위차가 발생할 수 있다.
이 회로는 예외라 하더라도, 모든 저항들은 중대한 온도-전기 전압을 발생한다. 
병렬(shunt) 저항을 위한 조언은 VISHAY-DALE - WSL3637R0100FEA 에서 지원되었다.

증폭
LTC1050는 5uV의 낮은 입력전압의 편차로 특별한 rail-to-rail의 연산증폭기이다.
그리고 입력 전류도 10pA로 매우 낮다.(입력 임픽던스가 높아 측정오차가 적다)
rail-to-rail는 전원 전압이 낮은 회로에서 신호 전압을 전원 전압 까지 처리할 수 있다.
다른 opamp는 나쁜 특성이 나오므로 다른 opamp로 교환하면 안된다.
 
아날로그 부품 
아날로그 회로의 저항은 오차 1%, 온도계수 100 pp/°C,  0.25W 급의 금소피막 저항을 사용한다.
보호 다이오드 D1~D6은 역방향 누설전류(leakage current)가 작아야 한다.
 
그러나 1N4148은 특성이 매우 좋은 것이 아니다, 일반적인 성능은 좋다.
9V 전원의 입력저항 10MΩ 이상의 DVM으로 역방향 저항이 없을 것.
입력을 open한 조건에서 10nA의 누설전류가 있다면, 측정된 전압은 100mV 이상을 넘지 않을 것이다.

조립
전력계의 시작품에서 보여준 이 제작자료는 단일 기판 만으로 외부의 측정전선을 연결한다.
오직 기판에 고정으로 설치된 4개의 누름 단추는 제외되어야 하다.
이것은 80x100 mm 기판의 크기로 진행한다. 특별한 주의는 이제 부터다.

 
그림. 5: 전류검출 병렬저항(shunt resistor)의 연결

전류는 병렬저항(shunt resistro) R3 에 4개의 전선으로 연결된 점에서 측정된다.
그림과 같이 저항은 전류가 흐르는 I+와 I-를 추가하여 S+와 S-를 포함한 총 4개의 단자를 갖는다.
COM 쪽으로 연결하는 S-의 검출 단자는 회로도에서는 star point connection으로 본다.
이 자료의 모든 null의 연결은 오직 측정 오류를 없애려고 만들었다.
 
아듀이노의 아날로그 GND(Avss)는 아날로그 입력부의 아날로그 접지(Agnd)로 연결한다.
마지막은 디지털 접지를 사용하는 4개의 누름단추와 LCD 표시장치다.
두개의 GND (아날로그 검출부 집합점 null 과 디지털 Vss)는 함께 연결하지 마라.
아듀이노도 내부에는 두개의 GND 연결이 있다 (Avss와 Dvss)
 
납땜한 다음 아듀이노 나노와 기판을 세척용 알콜(Isopropyl alcohol)로 닦는다.
이것은  납땜하고 기판에 남은 플럭스를 제거하여 누설전류를 억제한다.

표 1: 부품 목록 (Parts list)

표 1은 전력계의 부품 목록을 보여준다.
카본필름 저항은 메탈저항으로 변경될수 있다. 그러나 메탈저항은 카본저항으로 대치될 수 없다.

 
그림 6: 부품 배치와 연결 배선

교정
하드웨어로 제작된 전압과 전류의 범위는 소프트웨어가 알아야 한다.
전압 측정범위를 위한 변환 상수는 전압변환 상수로 부터 계산된다.
그리고 전류 측정범위를 위한 설정값은 전류변환 상수로부터 계산된다.

그림 2에 주어진 회로에서의 부품의 값으로 부터,
전압 측정범위의 변환 상수는 1 MΩ + 10 kΩ / 10 kΩ = 101로 된다.
그리고 전류 측정범위의 변환 상수는 1 kΩ / (10 mΩ · 10 kΩ) = 10으로 된다.
 
두개의 숫자는 아래에 보여준 소스 코드의 "Calibration & Hardware Data"  안에 채워야 한다.
표시된 규정의 형식은 이곳과 같다.  
/*********** Calibration & Hardware Data ***********/
float Vdiv = 101.0; // Voltage conversion factor
float Cdiv = 10.0; // Current conversion factor
const byte LCDlines = 2; // LCD: Number of lines
const byte LCDwidth = 16; // LCD: Number of character per line
/***************************************************/ 

코드 1: 이 부분 코드는 스켓치의 가장 위부분에 교정값과 LCD 설정값이 들어 있다.
Arduino Wattmeter code V1.0 받기

조정
전력계의 교정에는 멀티메터와 안정도가 좋은 가변전압 전원이 필요한다.
원시 변환 상수로 계산된 코드는 위쪽의 아듀이노 소스에 있다.

전력계의 전원투입(power up)
전원과 멀티메터를 30분 이상 예열(warm up)시킨다.
전력계의 전압 입력단자에 전원공급기를 연결한다.
그리고 멀티메터를 병렬로 연결한다.
 
전원공급기의 전압을 측정범위에서 가장 높은 전압으로 설정(set)한다. 
멀티메터로 Vref 값과 전력계의 Vread를 읽는다.
새로운 변환 상수(conversion factor)를 계산하고 소스를 수정해야 한다.
소스 코드에서 Vdiv 값을 이 숫자로 변경한다.
 
다음은 전류 범위의 교정(calibrate)과 조정(adjust)이다.
전원장치를 전류제한 기능으로 설정한다. 처음에 0A로 맞춘다.
전원장치를 멀티메터와 전력계의 전류입력을 직렬로 연결한다.

전원장치의 전류값을 전력계 전류 측정범위의 높은 값으로 설정한다.
그리고 멀티메터와 전력계의 Iread를 읽는다.
새로운 전류 상수는 다음과 같이 계산된다. 전류변환 상수를 조절한다.
소스 코드에서 Cdiv를 이 값으로 변경한다.
 
전력계를 전원장치와 분리하고 수정된 코드를 아듀이노 스케치에서 탑재(upload)한다. 
전력계를 교정한 다음, 전압과 전류를 정확한지 다시 확인한다.
이제 전력계는 전압과 전류를 더욱 좋은 정도로 읽을 수 있다.
정밀도는 기준전압과 부품들의 온도 변화로 남아있는 오차로 10 °C 변동에 0.2% 이내로 될 것이다. 

 
그림. 7: 전압 범위를 교정한다.

 
그림 8: 전류 범위를 교정한다.

안전
주 교류 전원선을 전력계에 직접 연결하여 측정하지 말것.

 
그림 9: 안전한 바나나 입력 단자(socket) 

주 교류 전원선을 전력계에 직접 연결하여 측정하지 말것을 강력하게 추천한다.
이는 사람들을 보호하기 위해 불가피 하다. 나는 약간의 제한적인 위험을 안내하기 원한다.

• 외부 어댑터는 사용하지 말것
저전압 전원선은 주전원을 취급하기에는 절연이 충분하지 않다, 안전을 위해 노출된 금속부는 접촉하지 않는다.
전력계 내부에 전원을 만들 때 플라스틱 커버를 씌워라. 그렇지 않다면 건전지를 사용하라.
• 누름 단추의 손잡이는 긴 플라스틱을 사용하라, 최소한 부품은 6mm 이상 금속과 접촉거리를 유지하라
• 표시부는 플라스틱 커버에 아크릴 플라스틱 판을 덮어라.
• 주 전압이 걸리는 저항 R1은 수정하지 마라 (누군가 실수로 계산결과를  2개의 저항에 사용했다) 
• 3 개의 입력 단자는 안전한 바나나 소켓을 사용하라

사용 방법

그림 10: 전력원과 부하를 전력계와 연결하는 회로도
위의 회로도는 어떻게 전력계를 전원과 부하에 연결하는지 보여준다.
 
그림 11에는 실제로 실부하를 연결한 상황을 보여 준다. 
반드시 올바르게 측정된 전원을 전압 단자에 연결하라.
예: 전원 혹은 부하전류로 전선의 전압 강하는 전력계의 측정 오류를 수반한다.
 
연결하는 단자의 극성으로 측정 결과에 감염이 생긴다.
만일 전압과 전류가 같은 극성일 때, 측정된 전력은 +이다.
만일 극성이 반대라면 측정된 전력은 -이다.

 
그림 11: 제작한 전력 측정기를 전력 발생기(power source)와 부하(load)에 연결한다.

제어 누름단추
한 줄에 하나의 매개변수의 표시를 유지(hold)한다.
제어 단추를 사용하여 매개변수를 자유롭게 선택(select)한다.
 
첫번째 단추는 줄을 선택한다. 매개변수의 이름이 표시된다.
두번째 단추는 다음 매개변수를 선택한다.
세번째 단추는 이전 매개변수를 선택한다.

몇 개의 매개변수는 리셋이 된다. 표 2를 보라
이 함수의 기능은 우연한 값을 회피하기 위해서 초기값으로 리셋한다.
네번째 단추를 누루고 있고, 첫번째 단추를 누르면 선택된 매개변수가 리셋된다.
 
측정
전력계는 DC와 알려진 AC의 측정에 알맞다.
측정 소스를 변경하지 않고도 유효 전력과 에너지를 항상 정확히 측정된다.
측정된 전압과 전류의 값으로 전압과 전류를 계산하고 선택된 매개변수를 구한다. 
측정된 갑을 평균하는 기능은 직류영역에서 주로 사용된다.
 
피상전력값 측정과 유효값(RMS) 측정은 교류영역에서 주로 사용된다.
이것은 교류 전원의 전압을 측정하는데 사용된다.
그리고 직류 전원의 제어 잡음(noise)과 전원잡음(ripple)의 측정에 사용할 수 있다.
RMS로 측정한 RMS 값은 교류+직류의 합계를 측정한다.
이것은 돌발(impulse)적인 교류와 직류 영역에 사용된다.

 
그림 12: 입력범위가 초과되면 일치하는 항목에 ^를 표시한다.

전류의 면적 Charge를 측정할 때, 무언가 비슷한 일이 발생한다.
그것은 SI-unit Coulomb (C) 혹은 Ampere*seconds (As) 이다.
읽은 값에 3600을 곱하는 Ampere*hour (Ah)를 사용하면  공통으로 변환된다.

전압, 전류의 입력 초과
만일 전압 혹은 전류가 작동범위를 넘으면 D7이 점등될 것이다.
동시에 벗어난(affected) 매개변수(parameter)의 값과 단위 사이에 ^를 표시한다.
범위가 초과된 측정된 값들은 신뢰할 수 없다.

측정 매개변수
전력계는 초당 4808 번의 샘플링으로 A4 핀의 전압(Vadc), A5 핀의 전류(Iadc)
그리고 A6 핀의 집합점(analog node) 전압 null(Nadc)등 각 입력을 측정한다. 
집합점 전압 null값은 측정된 전압과 전류를 감산하여 - 전압을 +전압으로 변환된다.
입력 신호의 평균은 Ns(샘플수) =3200으로 완료되고 시간 값(time constant)은 0.67초다.
 
ADC 값의 원시값(raw)은 측정범위 인수(scale factor)가 완료되면 실제의 전압과 전류이다. 
이 전압들의 Vscale은 ADCsense * Vdiv 이고 Cscale은 ADCsense * Cdiv 이다.
ADCsense는 ADC의 감도(sensitivity)로 1.1V /1024 이다. (입력범위 1.1 V를 10 비트로 측정한다) 

표 2: 측정된 매개변수(parameter)와 사용된 원리(methods) 
   
소프트웨어 (Software)
전력계의 소스 코드 받기 : arduino-wattmeter-code-v1.0.  (첨부파일 #1)

아날로그 변환기와 입력 전환기 (ADC & multiplexer)
프로그램의 부분적인 구동은 ADC-가로채기 함수이다.
변환이 끝나는 시간에 결과가 있으면 발생하는 A/D 변환이라 부르는 ADC-가로채기 함수이다.
높은 대역폭을 구하려면, 샘플 주파수는 가능한 빠른 것을 선택한다,  
 
각 가로채기 함수의 성능으로 계산의 합계가 포함된다.샘플 주파수는 1923 Hz이다.
이것은 표준 아듀이노의 아날로그 읽기 함수에서는 실현이 불가능하다.
ADC는 연속 작동(free running) 방법(mode)으로 설정된다.
ADC 설정(configure)은 주 프로그램의 남은 시간으로 처리가 충분하므로 역시 확실하다. 

아날로그 입력 전환기 (Multiplexer)
3개의 ADC 측정입력 : 전압 입력(0~1.1V), 전류 입력(0~1.1V)과 가상접지 공급전압(0.55V) Vnc.
아듀이노는 한번에 하나의 입력만을 선택하여 ADC 변환 처리를 할 수 있기 때문이다.
ADC 각 핀의 입력은 반드시 시차제어(sequency)로 처리된다.
ADC 입력은 ADMUX register에서 설정하는 선택기(multiplexer)로 결정된다.
 
매번 ADC는 결과가 준비되면 가로채기 함수를 호출한다. 다음 입력(channel)을 선택한다.
주: ADC-가로채기 함수는 다음 변환이 시작되고 호출된다. 다음 변환은 이미 시작됬다.
그래서, 새로 선택된 아날로그 입력은 다음번에 변환되고 가로채기가 발생한다.
가로채기가 호출되고 나서 변환 결과가 준비된다. 변환결과는 MUX의 선택보다 2번 늦게 들어온다.

 
그림 13: ADC 가로채기(interrupt) 처리시간(timing)

채널 선택기(MUX)에 쓰는 채널과 변환이 준비된 채널과의 지연시간을 보여준다.
가로채기는 A7이 선택된다. A5는 현재 처리 중이다. 현재 선택된 채널의 변환값은 3번째(2번 뒤)에 나온다.
 
연속 작동(freerun mode)으로 아날로그 입력 4,5,6,7 번을 연속으로 변환할 때,
주함수에서 ADC를 초기화하고 MUX 카운터는 0번으로 CH은 4로 ADC를 시작한다.
첫번째 가로채기에서 ADC 값을 읽으면 CH6 값이다.
두번째 가로채기에서 ADC 값을 읽으면 CH7 값이다.
세번째 가로채기에서 ADC 값을 읽으면 CH4 값이다.
네번째 가로채기에서 ADC 값을 읽으면 CH5 값이다.

가로채기를 나오기 전에 MUX 카운터가 4보다 크면 0으로 리셋한다,

프로그램과 데이터의 흐름
ADC 가로채기 함수는 ADC의 하드웨어에서 변환된 전압과 전류의 첫번째 처리(processing)를 한다.
이것은 RMS를 위한 2승연산 값을 계산하고 전력 계산을 위해 전압과 전류를 곱셈한다.
모든 결과와 전압, 전류 값은 시간의 고정된 값으로 첫번째 평균으로 가산된다.   
이것을 비교하면, (측정하려는) 파형의 주기(period)는 주기의 갯수로 검출된다.

그리고 주기의 시간은 주파수 측정을 위한 카운터다.
역시 이 가로채기 함수로 누름단추의 진동방어(debouncing)를 제어한다.
전체적으로 상당히 큰 처리과제(task)를 고려한 이 함수는 초당 19,000 번 호출된다.
그러하므로 누름단추의 처리과제(task)는 4개의 가로채기로 분산되어 실행된다.   

모든 결과는 주함수로 전송된다. 두번째 평균을 하는 곳이다.
이 두번째 평균은 측정된 매개변수의 표시에 필요한 배열변수(aray)를 처리한다. 
직접 읽은 ADC값들의 모든 매개변수는 부동 소숫점(floating point)으로 초당 4번 씩 평균한다
그리고 계산된 결과는 배열변수(array)에 저장한다
 
마지막 결과로 표시된 값들은 선택된 것으로 표시되므로,
전체적으로 감도와 교정 데이터를 위한 모든 값들은 정확하다.

  
그림 14: 이 표는 프로그램의 데이터 흐름을 보여준다.

교류직류 겸용 전력계에서 측정되는 매개변수들은 다음과 같다.
Vmean [V] 전압 평균값 = 샘플링으로 측정된 전압변동분을 정적분하고 샘플수로 평균한 값
Vrms [V] 전압 유효값 = 샘플링으로 측정된 전압변동분을 2승하고 샘플수로 평균한 값의 평방근 값
Vsdev [V] 전압 편차 = 유효전압 2승과 평균전압 2승의 차이를 평방근한 값  
Imean [A] 전류 평균값 = 샘플링으로 측정된 전류변동분을 정적분하고 샘플수로 평균한 값
Irms [A] 전류 유효값 = 샘플링으로 측정된 전류변동분을 2승하고 샘플수로 평균한 값의 평방근 값
Isdev [A] 전류 편차 = 유효전류 2승과 평균전류 2승의 차이를 평방근한 값 
S (apparent) [VA] 피상 전력 = 유효전압과 유효전류를 곱한 값 
Power [W] 유효 전력 = 전압과 전류의 샘링링값을 곱한값을 정적분하고 샘플수로 나눈 값
Q (reacive) [VA] 무효전력 = 피상전력을 2승한값과 유효전력을 2승한 값의 차이의 평방근 값
Phase (Cos Φ) [deg] 위상차 = 유효전력과 피상전력의 위상차 (역율의 위상) 
Flux (Φ) [Vs]  = 샘링링으로 측정된 전압변동분을 정적분하고 샘플 주파수로 나눈 값
Charge (Q) [C] 전하량 = 샘플링으로 측정된 전류변동분을 정적분하고 샘플 주파수로 평균한 값
Energy (E) [J] 열량 = 전압과 전류의 샘링링값을 곱한값을 정적분하고 샘플 주파수로 평균한 값
Vmin [V]  전압 최저값 = 평균 전압의 최저 기록값
Vmax [V] 전압 최고값 = 평균 전압의  최고 기록 값
F (V) [Hz] 전압 주파수 = 측정 주기안에 들어온 전압의 주기수를 샘플시간으로 나눈 값  
Imin [A] 전류 최소값  = 평균 전류의 최저 기록 값
Imax [A] 전류 최대값  = 평균 전류의 최고 기록 값
F (I) [Hz] 전류 주파수 = 측정 주기안에 들어온 전류의 주기수를 샘플시간으로 나눈 값
Pmin [W] 전력 최소값 = 유효 전력의 최소 기록 값
Pmax [W] 전력 최대값 = 유효 전력의 최고 기록 값
Time [sec] 측정시간 = ADC를 샘플링하는 타이머의 설정값 (측정 간격)
 
소감
아듀이노라는 고정된 하드웨어로 복잡한 컴파일러의 설정을 고정시킬 수 있는 아듀이노 스켓치가 나왔고,
마이크로컨트롤러의 하드웨어 설계와 까다로운 컴파일러의 번거로운 설정이 필요없는 편리한 장점으로,
지금은 연구자, 교수, 학생, 예술인을 포함한 비전공자도 쉽게 사용할 수 있는 강력한 도구로 이용되고 있다.

거기에 최신의 하드웨어와 라이브러리가 발표됨으로써, 한층 어렵던 수준의 인터페이스도 간단히 구현되고 있다.
멋진 소스다. 정확한 설명과 다양한 값을 측정하고 계산하는 원리를 설명한 전력전자의 첨단 교재이다. 

이 프로그램은 무료 소프트웨어로, 신체와 재산 상의 어떤 위험과 손해를 보상하지 않습니다.
이 프로그램은 GNU 무료 소프트웨어 배포규정을 따릅니다.
Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
AVRTOOLS™
   
윗글 Ardunio 16비트 ADC Data Logger
아래글 Arduino 교류 역율계(power factor)의 제작
    N         제목    글쓴이 작성일 조회 추천
아듀이노 응용소스 게시판 avrtools™ 2016/02/05 (금) 242 0
25 ESP8266 MQTT Relay Control avrtools™ 2016/03/03 (목) 416 0
24 2 채널 ESP8266 WiFi Switch의 제작 avrtools™ 2016/02/25 (목) 467 0
23 ESP-12E SDK 0.9.5 사용방법 avrtools™ 2016/02/18 (목) 488 0
22 ESP8266 ESP-12E WiFi 센서 서버의 제작 avrtools™ 2016/02/17 (수) 460 0
21 Arduino DS3231 RTC to 5110 LCD avrtools™ 2016/02/16 (화) 486 0
20 ESP8266 Weather Server의 제작 avrtools™ 2016/02/15 (월) 491 0
19 Arduino 온습도 센서 DHT-22 avrtools™ 2016/02/12 (금) 416 0
18 ESP8266 WiFi 펌웨어 업그레이드 avrtools™ 2016/02/11 (목) 635 0
17 Arduion ESP8266 WiFi 설정 방법 avrtools™ 2016/02/10 (수) 604 0
16 Arduino 정전용량식 수분센서의 분석과 제작 avrtools™ 2016/02/07 (일) 346 0
15 Arduino 전극식 수분센서의 분석과 제작 avrtools™ 2016/02/07 (일) 458 0
14 Arduino 정밀 전력계의 ADC avrtools™ 2016/02/02 (화) 699 0
13 Arduino 정밀 전력계의 LPF avrtools™ 2016/02/02 (화) 477 0
12 Ardunio 16비트 ADC Data Logger avrtools™ 2016/01/31 (일) 368 0
11 Arduino AC/DC Power Meter의 제작 avrtools™ 2016/01/29 (금) 659 0
10 Arduino 교류 역율계(power factor)의 제작 avrtools™ 2016/01/29 (금) 467 0
9 Arduino DUE based DDS Synthesizer avrtools™ 2016/01/24 (일) 285 0
8 QTouch ADC 근접검출 스위치 avrtools™ 2016/01/21 (목) 504 0
7 Arduino 음성인식 Speech/Voice Recognition avrtools™ 2013/09/14 (토) 1739 0
6 Arduino Uno로 만드는 3축 CNC avrtools™ 2013/09/10 (화) 2650 0
5 Arduino로 만드는 mySpectral 분광기 avrtools™ 2013/09/04 (수) 2169 0
4 8채널 12비트 ADC MCP3208 오실로스코프 avrtools™ 2012/03/29 (목) 558 0
3 교류저항 (impedance) 측정 AD5933 avrtools™ 2012/03/17 (토) 498 0
2 Arduino DMX512 수신기 제작 avrtools™ 2012/03/15 (목) 3724 0
1 TSL2561 조도 측정기의 제작 avrtools™ 2011/09/11 (일) 2723 0
1

바구니 : 0
 보관함 : 0
오늘뷰 : 0
HOME   |   회사소개   |   제휴안내   |   회사위치   |   서비스이용 약관   |   개인정보 보호정책   |   사이트맵
17015 경기도 용인시 기흥구 동백중앙로16번길 16-25, 508호. 전화 : 031-282-3310
사업자 등록번호 : 697-47-00075 / 대표 : 이건영 / 업태 : 제조업 / 종목 : LED조명, LED전원, 제어장치.
개인정보 관리책임자 : 홈페이지 관리자 . Copyright ⓒ2016 아크레즈 (ACLEDS INC.)
HOME TOP PREVNEXT 0 0 0