34970vdp-ibw.txt
Togotech (토론 | 기여)님의 2020년 11월 26일 (목) 14:37 판 (새 문서: van der Pauw <pre> 10 !34970A 100번 슬롯 4x4 matrix switch, van der Pauw 면저항측정 20 !2020-11-26 30 DIM Id$[255] 40 INTEGER I,Count 50 INTEGER P1,P2,...)
10 !34970A 100번 슬롯 4x4 matrix switch, van der Pauw 면저항측정 20 !2020-11-26 30 DIM Id$[255] 40 INTEGER I,Count 50 INTEGER P1,P2,P3,P4 60 INTEGER Switch 70 ASSIGN @Sw TO 709 80 GOSUB Filesave 90 OUTPUT @File;"Count,Time[s],R1,R2,R3,R4,R5,R6,R7,R8,Rv,Rh,Rs[ohm]" 100 OUTPUT @Sw;"*IDN?" 110 ENTER @Sw;Id$ 120 CLEAR SCREEN 130 PRINT "instrument name = ";Id$ 140 !!!!!!!!!!!!!!!! 150 Curr=.1 160 OUTPUT @Sw;"INST:DMM OFF" 170 Count=0 180 T0=TIMEDATE 190 LOOP 200 T1=TIMEDATE-T0 210 Count=Count+1 220 !!!!!! 스위칭 작업을 8번 한다. !!!!!!!!!!!!! 230 Switch=1243 240 GOSUB Reading 250 R1=R 260 Switch=2134 270 GOSUB Reading 280 R2=R 290 Switch=4312 300 GOSUB Reading 310 R3=R 320 Switch=3421 330 GOSUB Reading 340 R4=R 350 Switch=1423 360 GOSUB Reading 370 R5=R 380 Switch=4132 390 GOSUB Reading 400 R6=R 410 Switch=2314 420 GOSUB Reading 430 R7=R 440 Switch=3241 450 GOSUB Reading 460 R8=R 470 !!!!!! 스위칭 작업 끝 !!!!!!!!! 480 Rv=(R1+R2+R3+R4)/4 !!! 수직저항 평균 490 Rh=(R5+R6+R7+R8)/4 !!! 수평저항 평균 500 PRINT "Rv=";Rv,"Rh=";Rh;"Rs="; 510 !!! Newton-Raphson 방법으로 Y값이 0이 되는 X구하기 520 X1=Rv ! 최초 X값은 Rv값 530 Rs_pre=X1 ! 최초 X값을 기억한다. 540 LOOP 550 Y1=FNEq(Rv,Rh,X1)! Y1 계산 560 X2=X1*1.01 ! X2는 X1에서 1% 증가한 값으로 570 Y2=FNEq(Rv,Rh,X2)! Y2 계산 580 A=(Y2-Y1)/(X2-X1)! 기울기 계산 590 X1=-Y1/A+X1 ! 두 점으로 계산된 직선에서 Y값이 0인 X을 찾는다. 600 Rs=X1 ! X값이 원하는 Rs값이다. 610 PRINT Rs; 620 EXIT IF ((Rs-Rs_pre)/Rs*1.E+9)<1 ! X값 변화가 이전 계산값보다 1ppb보다 작으면 멈춘다. 630 Rs_pre=Rs ! 나중에 변화를 계산하기 위해 현재 값을 기억한다. 640 END LOOP 650 !!! Newton-Raphson 종료 660 PRINT 670 OUTPUT @File;Count,T1,R1,R2,R3,R4,R5,R6,R7,R8,Rv,Rh,Rs !8번 측정 저항과 Rs값을 기록한다. 680 EXIT IF Count=10 690 END LOOP 700 STOP 710 Reading: ! 720 GOSUB Switching 730 WAIT 1 ! 기계적인 스위칭 동작이 다 끝날 때까지 기다려야 한다. 740 OUTPUT 722;"TRIG SGL" 750 ENTER 722;V !측정한 전압 760 R=V/Curr !저항 계산. 인가한 전류=0.1A 770 RETURN 780 Switching: ! 4x4 매트릭스 스위치에서 4개를 동작시킨다. 790 ! switch=1243 800 Str$=VAL$(Switch) 810 P1=VAL(Str$[1;1]) !1 추출 820 P2=VAL(Str$[2;1]) !2 추출 830 P3=VAL(Str$[3;1]) !4 추출 840 P4=VAL(Str$[4;1]) !3 추출 850 OUTPUT @Sw;"ROUTe:OPEN (@101:120)" 860 Ch_no1=104+(P1-1)*4 870 OUTPUT @Sw;"ROUTe:CLOSe (@";VAL$(Ch_no1);")" 880 Ch_no2=103+(P2-1)*4 890 OUTPUT @Sw;"ROUTe:CLOSe (@";VAL$(Ch_no2);")" 900 Ch_no3=102+(P3-1)*4 910 OUTPUT @Sw;"ROUTe:CLOSe (@";VAL$(Ch_no3);")" 920 Ch_no4=101+(P4-1)*4 930 OUTPUT @Sw;"ROUTe:CLOSe (@";VAL$(Ch_no4);")" 940 RETURN 950 Filesave: ! 960 DIM Filename$[20],Dhms$[8] 970 T=TIMEDATE 980 Time$=TIME$(T) 990 Date$=DATE$(T) 1000 Dhms$=Date$[1;2]&Time$[1;2]&Time$[4;2]&Time$[7;2] 1010 Filename$=Dhms$&".txt" 1020 CREATE Filename$,1 1030 ASSIGN @File TO Filename$;FORMAT ON 1040 RETURN 1050 END 1060 !!!!!!!!! van der Pauw 측정법에 의해 Rs값을 계산하기 위한 공식 !!!!!!!!!!!!!!!! 1070 DEF FNEq(A,B,X) 1080 Y=EXP(-PI*A/X)+EXP(-PI*B/X)-1 1090 RETURN Y 1100 FNEND 1110 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!