"3245-01-ibw.txt"의 두 판 사이의 차이
(새 문서: 3245A <pre> 1 ! volt-std/3245-01-ibw.txt 10 !2018/04/30 HP3245A Universal Source로 출력 + HP3458A DMM으로 측정 20 ! DC 전압: -10.25V ~ +10.25V, 6자리(24비...) |
|||
(같은 사용자의 중간 판 2개는 보이지 않습니다) | |||
3번째 줄: | 3번째 줄: | ||
1 ! volt-std/3245-01-ibw.txt | 1 ! volt-std/3245-01-ibw.txt | ||
10 !2018/04/30 HP3245A Universal Source로 출력 + HP3458A DMM으로 측정 | 10 !2018/04/30 HP3245A Universal Source로 출력 + HP3458A DMM으로 측정 | ||
− | 20 ! DC 전압: -10.25V ~ +10.25V, 6자리(24비트) 고해상도, 3.5자리(12비트) 저해상도 모드 | + | 20 !2020/09/08 트랜스포머 측정 추가 |
− | + | 30 ! DC 전압: -10.25V ~ +10.25V, 6자리(24비트) 고해상도, 3.5자리(12비트) 저해상도 모드 | |
− | + | 40 ! 저해상도모드에서는 트리거 가능하다. | |
− | + | 50 ! DC 전류: -0.1A ~ +0.1A, 0.1mA~100mA 범위, 0.1nA 해상도 | |
− | + | 60 ! AC 전압(p-p 전압이다.)/전류 1MHz까지, 펄스는 100kHz까지 | |
− | + | 70 ! duty cycle은 100kHz까지 5%~95% | |
− | + | 80 ! Freq Ref = 1,073,741.824Hz | |
− | + | 90 ! APPLY DCV | DCI | |
− | + | 100 ! USE CHANA | CHANB = 0 | 100 | |
− | + | 110 ! TERM FRONT | REAR | OPEN = OFF | |
− | + | 120 ! IMP 0 | 50 | |
− | + | 130 ! ARANGE ON | OFF autorange | |
− | + | 140 ! RANGE | |
− | + | 150 ! DELAY 0.04sec (default) | |
− | + | 160 ! | |
− | + | 170 ! xmin, xmax, nop 로그계산방법 | |
− | + | 180 ! k=(xmax/xmin)^(1/(nop-1)) | |
− | + | 190 ! x=xmin*k^(n-1) n=1,...,nop | |
− | + | 200 INTEGER I,J,Nop,Count | |
− | + | 210 REAL K,Vmin,Vmax,Vset,Vmeas,Tmp | |
− | + | 220 GOSUB Fileopen | |
− | + | 230 ASSIGN @Source TO 710 !HP 3245A | |
− | + | 240 ASSIGN @Dmm TO 722 !HP 3458A | |
− | + | 250 ! OUTPUT @Source;"USE CHANB" | |
− | + | 260 OUTPUT @Source;"IMP 0" ! 0ohm 50ohm, 대부분 0오옴으로 | |
− | + | 270 T0=TIMEDATE | |
− | + | 280 Nop=101 | |
− | + | 290 Func$="Trans" ! V I i Trans | |
− | + | 300 Scale$="LOG" ! 전압 스윕 선택 = LIN LOG | |
− | + | 310 SELECT Func$ | |
− | + | 320 CASE "Trans" !트랜스 전압비 | |
− | + | 330 Fstart=10 | |
− | + | 340 Fstop=100000 | |
− | + | 350 Fnop=201 !반드시 2이상 | |
− | + | 360 Vstart=.1 !Vp-p | |
− | + | 370 ! Vstart=Vstart/2.828 ! Vpp=2.828 Vrms | |
− | + | 380 Vstop=10 !Vp-p | |
− | + | 390 ! Vstop=Vstop/2.828 ! | |
− | + | 400 Vnop=3 !반드시 2이상 | |
− | + | 410 ALLOCATE Vset_a_pp(Vnop),Vset_a_rms(Vnop) | |
− | + | 420 !!!! 출력 데이터에 헤더 작성 !!!!!!!!!!!!!!!!!!!!!!!!!!!! | |
− | + | 430 OUTPUT @File;"No., Time[s], Freq[Hz]"; | |
− | + | 440 FOR J=1 TO Vnop | |
− | + | 450 SELECT Scale$ | |
− | + | 460 CASE "LOG" | |
− | + | 470 Kvolt=(Vstop/Vstart)^(1/(Vnop-1)) | |
− | + | 480 Vset=Vstart*Kvolt^(J-1) | |
− | + | 490 CASE "LIN" | |
− | + | 500 Vset=Vstart+(Vstop-Vstart)/(Vnop-1)*(J-1) | |
− | + | 510 END SELECT | |
− | + | 520 OUTPUT @File;", ";Vset; | |
− | + | 530 Vset_a_pp(J)=Vset | |
− | + | 540 Vset_a_rms(J)=Vset/2.828 !p-p -> rms | |
− | + | 550 NEXT J | |
− | + | 560 OUTPUT @File;"" | |
− | + | 570 !!!! 출력 데이터에 헤더 끝 !!!!!!!!!!!!!!!!!!!!!!!!!!!! | |
− | + | 580 FOR I=1 TO Fnop !주파수는 로그 | |
− | + | 590 Count=I | |
− | + | 600 Kfreq=(Fstop/Fstart)^(1/(Fnop-1)) | |
− | + | 610 Freq=Fstart*Kfreq^(I-1) | |
− | + | 620 OUTPUT @Source;"FREQ ";Freq | |
− | + | 630 OUTPUT @File;Count,T,Freq, | |
− | + | 640 PRINT Count,Freq, | |
− | + | 650 FOR J=1 TO Vnop | |
− | + | 660 OUTPUT @Source;"APPLY ACV ";Vset_a_pp(J) | |
− | + | 670 WAIT .1 | |
− | + | 680 OUTPUT @Dmm;"TRIG SGL" | |
− | + | 690 ENTER @Dmm;Vmeas !rms | |
− | + | 700 T=TIMEDATE-T0 | |
− | + | 710 Vratio=Vmeas/Vset_a_rms(J) | |
− | + | 720 PRINT Vratio, | |
− | + | 730 OUTPUT @File;Vratio;","; | |
− | + | 740 NEXT J | |
− | + | 750 PRINT "" | |
− | + | 760 OUTPUT @File;"" | |
− | + | 770 NEXT I | |
− | + | 780 OUTPUT @Source;"APPLY ACV 1" | |
− | + | 790 CASE "V","v" !V출력, V측정 | |
− | + | 800 Vmin=5 ! 1uV | |
− | + | 810 Vmax=10 !10V | |
− | + | 820 OUTPUT @File;"No., Time[s], Vset[V], Vmeas[V]" | |
− | + | 830 FOR I=1 TO Nop STEP 1 | |
− | + | 840 Count=I | |
− | + | 850 SELECT Scale$ | |
− | + | 860 CASE "LOG" | |
− | + | 870 K=(Vmax/Vmin)^(1/(Nop-1)) | |
− | + | 880 Vset=Vmin*K^(I-1) | |
− | + | 890 CASE "LIN" | |
− | + | 900 Vset=Vmin+(Vmax-Vmin)/(Nop-1)*(I-1) | |
− | + | 910 END SELECT | |
− | + | 920 OUTPUT @Source;"APPLY DCV ";Vset | |
− | + | 930 WAIT .1 | |
− | + | 940 OUTPUT @Dmm;"TRIG SGL" | |
− | + | 950 OUTPUT @Dmm;"TRIG SGL" | |
− | + | 960 ENTER @Dmm;Vmeas | |
− | + | 970 T=TIMEDATE-T0 | |
− | + | 980 Diff=(Vmeas-Vset)/Vset*100 | |
− | + | 990 DISP Count,"Set V=";Vset," Meas V=";Vmeas," Diff[%]=";Diff | |
− | + | 1000 OUTPUT @File;Count,T,Vset,Vmeas | |
− | + | 1010 NEXT I | |
− | + | 1020 OUTPUT @Source;"APPLY DCV 0" | |
− | + | 1030 CASE "I" | |
− | + | 1040 Imin=1.E-9 ! 1nA에서부터 | |
− | + | 1050 Imax=.1 ! 100mA까지 | |
− | + | 1060 OUTPUT @File;"No., Time[s], Iset[A], Imeas[A]" | |
− | + | 1070 FOR I=1 TO Nop | |
− | + | 1080 Count=I | |
− | + | 1090 K=(Imax/Imin)^(1/(Nop-1)) | |
− | + | 1100 Iset=Imin*K^(I-1) | |
− | + | 1110 OUTPUT @Source;"APPLY DCI ";Iset | |
− | + | 1120 WAIT .1 | |
− | + | 1130 OUTPUT @Dmm;"TRIG SGL" | |
− | + | 1140 ENTER @Dmm;Imeas | |
− | + | 1150 T=TIMEDATE-T0 | |
− | + | 1160 Diff=(Imeas-Iset)/Iset*100 | |
− | + | 1170 DISP Count,"Set I=";Iset," Meas I=";Imeas," Diff[%]=";Diff | |
− | + | 1180 OUTPUT @File;Count,T,Iset,Imeas | |
− | + | 1190 NEXT I | |
− | + | 1200 OUTPUT @Source;"APPLY DCI 0" | |
− | + | 1210 CASE "i" | |
− | + | 1220 OUTPUT @File;"No., Time[s], HP3245A set[A], HP3458A meas[A]" | |
− | + | 1230 Count=0 | |
− | + | 1240 FOR I=-10 TO -1 !0.1A까지만 가능 | |
− | + | 1250 OUTPUT @Source;"APPLY DCI 0" !그렇다고 0이 나오는 것은 아니다. 입력단자를 short시켜야 한다. | |
− | + | 1260 IF I<=-8 THEN | |
− | + | 1270 OUTPUT @Dmm;"FUNC DCI ";1.E-7 !범위 0.1uA시작 000.000nA 표시된다. | |
− | + | 1280 ELSE | |
− | + | 1290 OUTPUT @Dmm;"FUNC DCI ";10^(I+1) | |
− | + | 1300 END IF | |
− | + | 1310 ! 전루 측정 범위별로 MATH NULL 수행 | |
− | + | 1320 ! OUTPUT @Dmm;"TRIG SGL" | |
− | + | 1330 ! ENTER @Dmm;Tmp | |
− | + | 1340 ! OUTPUT @Dmm;"MATH NULL" | |
− | + | 1350 ! OUTPUT @Dmm;"TRIG SGL" | |
− | + | 1360 ! ENTER @Dmm;Tmp | |
− | + | 1370 FOR J=1 TO 9 ! 10을 사용하면, 한 단계 더 높은 범위 1에서 수행되는 것과 겹쳐, NULL 의미에 문제가 된다. | |
− | + | 1380 Count=Count+1 | |
− | + | 1390 Vset=J*10^I ! 최초 출력 전류는 1E-10A부터 시작 | |
− | + | 1400 IF Vset>.1 THEN STOP ! 전류출력 .1A 초과하면 이상 나오게 프로그래밍되면 정지시킨다. | |
− | + | 1410 OUTPUT @Source;"APPLY DCI ";Vset | |
− | + | 1420 WAIT .1 | |
− | + | 1430 OUTPUT @Dmm;"TRIG SGL" | |
− | + | 1440 ENTER @Dmm;Vmeas | |
− | + | 1450 T=TIMEDATE-T0 | |
− | + | 1460 DISP Count,"Set I=";Vset," Meas I=";Vmeas | |
+ | 1470 OUTPUT @File;Count,T,Vset,Vmeas | ||
+ | 1480 NEXT J | ||
+ | 1490 NEXT I | ||
+ | 1500 OUTPUT @Source;"APPLY DCI 0" | ||
+ | 1510 END SELECT | ||
+ | 1520 OUTPUT @Dmm;"TRIG AUTO" | ||
+ | 1530 STOP | ||
+ | 1540 Fileopen: ! | ||
+ | 1550 DIM Filename$[20],Dhms$[8] | ||
+ | 1560 Time$=TIME$(TIMEDATE) | ||
+ | 1570 Date$=DATE$(TIMEDATE) | ||
+ | 1580 Dhms$=Date$[1;2]&Time$[1;2]&Time$[4;2]&Time$[7;2] | ||
+ | 1590 Filename$=Dhms$&".txt" | ||
+ | 1600 CREATE Filename$,1 | ||
+ | 1610 ASSIGN @File TO Filename$;FORMAT ON | ||
+ | 1620 RETURN | ||
+ | 1630 END | ||
</pre> | </pre> |
2020년 9월 8일 (화) 14:08 기준 최신판
1 ! volt-std/3245-01-ibw.txt 10 !2018/04/30 HP3245A Universal Source로 출력 + HP3458A DMM으로 측정 20 !2020/09/08 트랜스포머 측정 추가 30 ! DC 전압: -10.25V ~ +10.25V, 6자리(24비트) 고해상도, 3.5자리(12비트) 저해상도 모드 40 ! 저해상도모드에서는 트리거 가능하다. 50 ! DC 전류: -0.1A ~ +0.1A, 0.1mA~100mA 범위, 0.1nA 해상도 60 ! AC 전압(p-p 전압이다.)/전류 1MHz까지, 펄스는 100kHz까지 70 ! duty cycle은 100kHz까지 5%~95% 80 ! Freq Ref = 1,073,741.824Hz 90 ! APPLY DCV | DCI 100 ! USE CHANA | CHANB = 0 | 100 110 ! TERM FRONT | REAR | OPEN = OFF 120 ! IMP 0 | 50 130 ! ARANGE ON | OFF autorange 140 ! RANGE 150 ! DELAY 0.04sec (default) 160 ! 170 ! xmin, xmax, nop 로그계산방법 180 ! k=(xmax/xmin)^(1/(nop-1)) 190 ! x=xmin*k^(n-1) n=1,...,nop 200 INTEGER I,J,Nop,Count 210 REAL K,Vmin,Vmax,Vset,Vmeas,Tmp 220 GOSUB Fileopen 230 ASSIGN @Source TO 710 !HP 3245A 240 ASSIGN @Dmm TO 722 !HP 3458A 250 ! OUTPUT @Source;"USE CHANB" 260 OUTPUT @Source;"IMP 0" ! 0ohm 50ohm, 대부분 0오옴으로 270 T0=TIMEDATE 280 Nop=101 290 Func$="Trans" ! V I i Trans 300 Scale$="LOG" ! 전압 스윕 선택 = LIN LOG 310 SELECT Func$ 320 CASE "Trans" !트랜스 전압비 330 Fstart=10 340 Fstop=100000 350 Fnop=201 !반드시 2이상 360 Vstart=.1 !Vp-p 370 ! Vstart=Vstart/2.828 ! Vpp=2.828 Vrms 380 Vstop=10 !Vp-p 390 ! Vstop=Vstop/2.828 ! 400 Vnop=3 !반드시 2이상 410 ALLOCATE Vset_a_pp(Vnop),Vset_a_rms(Vnop) 420 !!!! 출력 데이터에 헤더 작성 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 430 OUTPUT @File;"No., Time[s], Freq[Hz]"; 440 FOR J=1 TO Vnop 450 SELECT Scale$ 460 CASE "LOG" 470 Kvolt=(Vstop/Vstart)^(1/(Vnop-1)) 480 Vset=Vstart*Kvolt^(J-1) 490 CASE "LIN" 500 Vset=Vstart+(Vstop-Vstart)/(Vnop-1)*(J-1) 510 END SELECT 520 OUTPUT @File;", ";Vset; 530 Vset_a_pp(J)=Vset 540 Vset_a_rms(J)=Vset/2.828 !p-p -> rms 550 NEXT J 560 OUTPUT @File;"" 570 !!!! 출력 데이터에 헤더 끝 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 580 FOR I=1 TO Fnop !주파수는 로그 590 Count=I 600 Kfreq=(Fstop/Fstart)^(1/(Fnop-1)) 610 Freq=Fstart*Kfreq^(I-1) 620 OUTPUT @Source;"FREQ ";Freq 630 OUTPUT @File;Count,T,Freq, 640 PRINT Count,Freq, 650 FOR J=1 TO Vnop 660 OUTPUT @Source;"APPLY ACV ";Vset_a_pp(J) 670 WAIT .1 680 OUTPUT @Dmm;"TRIG SGL" 690 ENTER @Dmm;Vmeas !rms 700 T=TIMEDATE-T0 710 Vratio=Vmeas/Vset_a_rms(J) 720 PRINT Vratio, 730 OUTPUT @File;Vratio;","; 740 NEXT J 750 PRINT "" 760 OUTPUT @File;"" 770 NEXT I 780 OUTPUT @Source;"APPLY ACV 1" 790 CASE "V","v" !V출력, V측정 800 Vmin=5 ! 1uV 810 Vmax=10 !10V 820 OUTPUT @File;"No., Time[s], Vset[V], Vmeas[V]" 830 FOR I=1 TO Nop STEP 1 840 Count=I 850 SELECT Scale$ 860 CASE "LOG" 870 K=(Vmax/Vmin)^(1/(Nop-1)) 880 Vset=Vmin*K^(I-1) 890 CASE "LIN" 900 Vset=Vmin+(Vmax-Vmin)/(Nop-1)*(I-1) 910 END SELECT 920 OUTPUT @Source;"APPLY DCV ";Vset 930 WAIT .1 940 OUTPUT @Dmm;"TRIG SGL" 950 OUTPUT @Dmm;"TRIG SGL" 960 ENTER @Dmm;Vmeas 970 T=TIMEDATE-T0 980 Diff=(Vmeas-Vset)/Vset*100 990 DISP Count,"Set V=";Vset," Meas V=";Vmeas," Diff[%]=";Diff 1000 OUTPUT @File;Count,T,Vset,Vmeas 1010 NEXT I 1020 OUTPUT @Source;"APPLY DCV 0" 1030 CASE "I" 1040 Imin=1.E-9 ! 1nA에서부터 1050 Imax=.1 ! 100mA까지 1060 OUTPUT @File;"No., Time[s], Iset[A], Imeas[A]" 1070 FOR I=1 TO Nop 1080 Count=I 1090 K=(Imax/Imin)^(1/(Nop-1)) 1100 Iset=Imin*K^(I-1) 1110 OUTPUT @Source;"APPLY DCI ";Iset 1120 WAIT .1 1130 OUTPUT @Dmm;"TRIG SGL" 1140 ENTER @Dmm;Imeas 1150 T=TIMEDATE-T0 1160 Diff=(Imeas-Iset)/Iset*100 1170 DISP Count,"Set I=";Iset," Meas I=";Imeas," Diff[%]=";Diff 1180 OUTPUT @File;Count,T,Iset,Imeas 1190 NEXT I 1200 OUTPUT @Source;"APPLY DCI 0" 1210 CASE "i" 1220 OUTPUT @File;"No., Time[s], HP3245A set[A], HP3458A meas[A]" 1230 Count=0 1240 FOR I=-10 TO -1 !0.1A까지만 가능 1250 OUTPUT @Source;"APPLY DCI 0" !그렇다고 0이 나오는 것은 아니다. 입력단자를 short시켜야 한다. 1260 IF I<=-8 THEN 1270 OUTPUT @Dmm;"FUNC DCI ";1.E-7 !범위 0.1uA시작 000.000nA 표시된다. 1280 ELSE 1290 OUTPUT @Dmm;"FUNC DCI ";10^(I+1) 1300 END IF 1310 ! 전루 측정 범위별로 MATH NULL 수행 1320 ! OUTPUT @Dmm;"TRIG SGL" 1330 ! ENTER @Dmm;Tmp 1340 ! OUTPUT @Dmm;"MATH NULL" 1350 ! OUTPUT @Dmm;"TRIG SGL" 1360 ! ENTER @Dmm;Tmp 1370 FOR J=1 TO 9 ! 10을 사용하면, 한 단계 더 높은 범위 1에서 수행되는 것과 겹쳐, NULL 의미에 문제가 된다. 1380 Count=Count+1 1390 Vset=J*10^I ! 최초 출력 전류는 1E-10A부터 시작 1400 IF Vset>.1 THEN STOP ! 전류출력 .1A 초과하면 이상 나오게 프로그래밍되면 정지시킨다. 1410 OUTPUT @Source;"APPLY DCI ";Vset 1420 WAIT .1 1430 OUTPUT @Dmm;"TRIG SGL" 1440 ENTER @Dmm;Vmeas 1450 T=TIMEDATE-T0 1460 DISP Count,"Set I=";Vset," Meas I=";Vmeas 1470 OUTPUT @File;Count,T,Vset,Vmeas 1480 NEXT J 1490 NEXT I 1500 OUTPUT @Source;"APPLY DCI 0" 1510 END SELECT 1520 OUTPUT @Dmm;"TRIG AUTO" 1530 STOP 1540 Fileopen: ! 1550 DIM Filename$[20],Dhms$[8] 1560 Time$=TIME$(TIMEDATE) 1570 Date$=DATE$(TIMEDATE) 1580 Dhms$=Date$[1;2]&Time$[1;2]&Time$[4;2]&Time$[7;2] 1590 Filename$=Dhms$&".txt" 1600 CREATE Filename$,1 1610 ASSIGN @File TO Filename$;FORMAT ON 1620 RETURN 1630 END