그만큼 시계 프로젝트 1년 전에 끝났어요. 이것은 일종의 전원 모니터로 바뀔 수 있는 새로운 프로젝트의 시작입니다.
다음은 ~1990년의 구식 스코프에 있는 두 개의 파형 사진입니다.
Sine wave is volts, pulse is amps사인파는 볼트, 펄스는 암페어입니다.
단위와 스케일이 올바른 경우 볼트 * 암페어의 통합이 부하에서 사용되는 실제 전력입니다. 그렇게 해서 눈을 크게 떴더니 47와트가 나왔습니다. 테스트 중인 장치이기 때문에 조금 실망스러웠습니다.
30W CFL bulb30W CFL 전구
그것이 백열전구라면 볼트와 암페어는 매우 유사한 파형이 될 것이고 깔끔하게 정렬될 것입니다. 그러나 오늘날 대부분의 전자 제품은 전압 사이클의 일부 동안 전력을 요구합니다.
더보기...내 노트
current: peak is 85 mv on 30 ohms. e/r=i, .085/30 = .0028 amp
x500 -> 1.4Amp
That max current is when Volts = 4, current ramps to zero as volts ramps to 6.
The volts are actually (xformer ratio 230/8.6 no load) x26.75, so 4*26.75 = 107V to 6*26.75 = 160.5V
the ramp is about 1/4 of the cycle.
treat the sine wave as a linear ramp too.
begin of ramp is .0028A * 107V
end of ramp is 0.0A * 160V
average is 1.4A * 133.5V = 186.9 volt-amps (watts)
but only 25% duty cycle
187/4 = 47W
이 숫자는 모두 화면이나 데이터 시트에 없는 추정치입니다. 아래에서 일부 내용이 변경됩니다.
다음은 일부 포인트를 디지털화하는 데 사용한 JSL입니다. 데이터 배열은 처음에는 채워지지 않았습니다. 그게 내 대답이야. 이는 일회용 코드입니다. 저는 지름길을 택하여 첫 번째와 마지막 지점에 특별한 의미를 갖도록 했습니다.
더보기...
img = New Image( "z:/scope.jpg" );
img << rotate( 1 );
{nx, ny} = img << size;
New Window( "", gb = Graph Box( framesize( 900, 600 ) ) );
volts=[ 24.6814218645205 25, 39.4366197183099 58.0851063829787, 42.186452045607
65.531914893617, 44.1985244802146 69.3617021276596, 46.2776659959759
72.6595744680851, 48.692152917505 73.2978723404255, 51.5090543259557
72.6595744680851, 56.8075117370892 61.3829787234043, 74.6478873239437
25.8510638297872];
amps=[ 42.713423397528 50.5777501131734, 43.1254191817572 62.5531914893617,
43.7865286959854 59.4881167949298, 45.0384848775191 58.3055681303757,
45.8433138513621 55.4454504300589, 46.8908690236658 53.6853779990946,
48.4238765928907 51.1827750113173, 50.1229599821149 50.7702580353101,
51.7102615694165 50];
gb[framebox(1)]<<ADDGRAPHICSSCRIPT></ADDGRAPHICSSCRIPT>1도 회전하면 이미지 xy가 화면과 일치하게 됩니다.
Scope traces as image in a JMP graph. The tiny black square boxes on the traces are the handles.범위는 JMP 그래프의 이미지로 추적됩니다. 트레이스에 있는 작은 검은색 사각형 상자는 핸들입니다.
전체 사이클을 정의하는 첫 번째 및 마지막 전압 포인트와 펄스 길이를 정의하는 첫 번째 및 마지막 전류 포인트를 사용하여 포인트를 제자리로 드래그한 후 이것을 사용했습니다.
더보기...
vmax = Max( volts[0, 2] ); // sine top
vmin = Min( volts[0, 2] ); // sine bottom
vrange = vmax - vmin; // sine range
amax = Max( amps[0, 2] ); // similar for pulse
amin = Min( amps[0, 2] );
arange = amax - amin;
minx = Min( volts[0, 1] ); // length of sine cycle
maxx = Max( volts[0, 1] ); // because point 1 and 9 at begin and end
pulselength = amps[9, 1] - amps[1, 1]; // length of 1 of 2 pulses
pulseduty = 2 * pulselength / (maxx - minx); // 2 pulses per cycle
dt = pulselength / 16384; // small dt improves answer
n = 0; // count the dt intervals
sum = 0;
For( t = amps[1, 1], t < amps[9, 1], t += dt, // step thru the pulse
y = Interpolate( t, volts[0, 1], volts[0, 2] ); // get the volts
v = 125 * 1.414 * (2 * (y - vmin) / vrange - 1); // map the volts
y = Interpolate( t, amps[0, 1], amps[0, 2] ); // get the amps
a = 1.4 * ((y - amin) / arange); // map the amps
sum += a * v; // watts for this dt
n += 1;
);
sum = sum / n;
sum = sum * pulseduty;
Show( sum );
얻기 위해
합계 = 25.8513297218601;
약간의 재고가 필요했습니다. 변압기의 잘못 정의된 권선비와 스코프의 고대 교정을 사용하는 대신 집 전압이 125V rms라고 가정하고 1.414 계수를 사용하여 사인파가 일치해야 하는 피크 대 피크 전압을 얻었습니다. 그 정도면 충분해 보인다. 이제 ESP32가 점을 직접 디지털화하도록 하려면...
함께 연결합니다. ESP32는 FFT 주파수 영역 샘플을 JMP 그래프로 스트리밍합니다. 60Hz는 지금까지 지배적인 주파수이며 처음 몇 개의 홀수 고조파가 뒤따릅니다.
버전 0 보드는 연말 직전에 도착하여 그 목적을 달성했습니다. 내일 버전 1 보드가 나올 것으로 기대하고 있습니다. 다음은 240x320 2.8인치 디스플레이의 전압 사인파를 보여주는 버전 0 보드와 추가 보드입니다. 병뚜껑은 크기 조절용입니다. 노란색 원 안의 작은 커패시터를 보세요. PCB 공급업체는 이를 탑재합니다. 나는 할 수 없다고 확신합니다.
The display is mounted to the red card, which plugs in to a connector mounted to the vertical row of holes at bottom left-center.디스플레이는 빨간색 카드에 장착되며, 이 카드는 왼쪽 중앙 하단에 있는 수직 구멍 열에 장착된 커넥터에 연결됩니다.
버전 1 보드를 기다리는 동안 Wi-Fi 연결을 테스트한 결과 초당 40K~50K 바이트가 이 컴퓨터에서 수행해야 하는 다른 모든 작업에 대해 지속 가능한 데이터 속도임을 알 수 있습니다. 전압과 전류 채널을 모두 살펴보고 싶으므로 디지털화된 각 파형에 대해 약 20KB/초가 필요합니다. 어느 시점에서는 데이터에 FFT를 사용하고 싶고 버퍼 크기에 대해 생각하기 시작했습니다. FFT는 실제로 2가지 크기의 거듭제곱을 좋아합니다. 얼마나 많이? 다음은 몇 가지 테스트 코드입니다.
dt = New Table( "Untitled", "invisible", New Column( "size" ), New Column( "time" ) );
dt << New Column( "factors",
character,
formula(
primes = [2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257
263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409
419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569 571
577 587 593 599 601 607 613 617 619 631 641 643 647 653 659 661 673 677 683 691 701 709 719 727 733
739 743 751 757 761 769 773 787 797 809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907
911 919 929 937 941 947 953 967 971 977 983 991 997 1009];
start = size;
ip = 1;
q = primes[ip];
result = "";
While( start > 1,
If( Mod( start, q ) == 0,
result = result || Char( q ) || ",";
start = start / q;//
, //
ip += 1;
q = primes[ip];
If( q * q > size, Break() );
)
);
If( start > 1,
result = result || Char( start )
);
result;
)
);
For( i = 2, i <= 2 ^ 19, i += 1,
x = 0;
x = J( i, 1, Random Uniform() );
start = HP Time();
FFT( {x} );
end = HP Time();
dt << addrows( 1 );
dt:size[N Rows( dt )] = i;
dt:time[N Rows( dt )] = (end - start) / 1e6;
If( i == 10,
dt << Graph Builder(
Size( 1709, 424 ),
Show Control Panel( 0 ),
Variables( X( :size ), Y( :time ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Marker Size( 0 ), Marker Drawing Mode( "Normal" )}
)
)
);
Wait( .1 );
);
If( Mod( i, 100 ) == 0,
Wait( 0 )
);
);
테이블은 다음과 같습니다.
2 is great,3 and 5 nice, maybe 7.2는 훌륭하고, 3과 5는 훌륭하고, 아마도 7일 것입니다.
예쁜 그래프가 만들어집니다.
The fast buffer sizes, near the bottom, don't have large factors.하단 근처의 빠른 버퍼 크기에는 큰 요인이 없습니다.
9500 주변의 이상한 포인트 스택에는 무엇이 있습니까? 선택하고, 부분집합하고, 살펴보세요...
Bigger factors더 큰 요인
1024 또는 2048 샘플 버퍼를 사용하면 JMP에서 실시간 대시보드를 만들 수 있을 것 같습니다.
Very fast.매우 빠릅니다.
초당 60회에서도 1% 미만이다. esp32에서 FFT를 실행할 수 있습니다. 그런 다음 전체 파형을 보내는 대신 상위 N개의 주파수 빈과 진폭을 보낼 수도 있습니다. 고려해야 할 절충안이 많습니다.