인체의 중심 측정중심이란 물체를 형성하고 있는 질점은 모든 중력에 의해 바로 밑으로 끌어 당겨지고 있다. 이 중력을 하나로 모은 무게의 작용점이 중점이라 한다. 즉 물체의 각 질점에 작용하는 중력에 대한 합력의 작용점이 이론적인 무게의 중심이다.1) 줄로 매다는 법마분지나 판자처럼 밀도가 동일한 평면이라면 줄로 매달아 조사할수 있다.변형된 형태의 마분지와 중심을 구하는 방법2) 추전법추전법에 의한 중심고 계산방법발바닥에서 중심까지의 거리는 위 그림과 같은 방법으로 구할수 있다. 즉 균형된 상태로 있기 때문에 힘의 모멘트 (Wl, Fl)가 같다.Wl = Fl중심고 l = F/W * L단, F는 받침점의 체중계의 눈금(f)을, 사람이 받침점 위에 누워 있을 때의 눈금(F')에서 뺀다 ( F =F' - f)중심고 (l)의 신장 (H)에 대한 비율을 중심고라고 한다.한국인의 비중심고는 남자의 경우 55.4%, 여자의 경우 54.7% 이다.(3)평면법평면법으로 중심구하는 법추천법에서는 일축방향의 중심 위치 밖에는 구할수 없지만 이 평면법으로는 평면적으로 본 중심점을 찾아 낼 수가 있다.즉 정삼각형의 A,B,C점을 1점에 유지하고 A,B의 밑에 체중계를 둔다. 그리고 받침점의 무게를 제외한 A점의 무게 : FA B점의 무게 : FB 로한다.정삼각형의 높이를 h라고 하면 위 그림과 같이 생각할수 있다.맞으편쪽으로 A, 가까운쪽으로 cy에 대해서도 마찬가지로 BC를 한점으로 본다.AC에서 x 벌어진 평생선과 BC에서 y벌어진 평생선의 교점이 구하는 중심 위치이다.각부분이 중심선을 직선으로 연결시켜중심비의 역비로서 합성중심 위치를 안다.2개씩 맞추어 차례로 합성시켜간다.맞추어가는 방법은 자유롭게 한다.계산방법의 예4) 작도법스포츠에 있어서 준비자세는 다종 다양하며 동작은 시시각각 변화한다. 이와 같은 경우의 중심은 작도법으로 추정하여도 편리하다.계산 방법에 있어서는 각신체부위의 질량을 아래 표에 의하여 정하고 합성한다.남자의 경우질량비 : 체중을 1로 한 무게의 비율예) 체중 60kg인 사람의 전완의 무게 = 60 * 0.030 =1.8kg중심위치 : 두정측의 분절단에서의 분절 중심점까지의 상대거리예) 상완의 길이가 25cm 이면, 어깨에서 (25 * 0.46) = 11.5cm의 부분에 중심이 있다.남자부위질량비중심위치여자부위질량비중심위치머리0.0440.63머리0.0370.63목0.0330.50목0.0260.50몸통0.4790.52몸통0.4870.52상완0.0530.46상완0.0510.46전완0.0300.41전완0.0260.42손0.0180.50손0.0120.50대퇴0.2000.42대퇴0.2230.42하퇴0.1070.41하퇴0.1070.42발0.0380.50발0.0300.50실제 사람의 무게 중심 측정A : 178cm, 85kg부위질량길이중심 위치머리3.742113.23목2.80573.5몸통40.7155428.08상완4.5052611.96전완2.552711.07손1.53189대퇴174820.16하퇴9.0954418.04발3.2327.813.9B : 175cm, 65kg부위질량길이중심 위치머리2.862012.6목2.14573.5몸통31.1355227.04상완3.4452511.5전완1.952711.07손1.17189대퇴134719.74하퇴6.9554418.04발2.4726.313.154번의 방법을 응용하여서 무게의 중심을 구하고자 한다. 각 부위별 무게 중심은 위와 같고실제 인체의 모습에 응용하여 무게 중심을 구하였다.
#제어공학 2 재실험 (inertia로 disk 2개 사용)Consider the D.C Motor and Inertia system in thee Microprocessor Experimental Lab.Construct the following test system to get the frequency response of the open loop D.C Motor/Inertia system.-> Open Loop D.C Motor/Inertia system의 Frequency response와 Transfer function을 얻기 위한 실험이다. 주어진 시스템의 Analog 신호로부터 data를 얻어내어 이 데이터로부터 Frequency response를 얻어 Transfer function을 구하고, 이 Transfer function으로부터 이론적으로 구해지는 Frequency response와 비교 분석하는 실험이다.1) (Frequency REsponse Test) Generate sinusoidal wave inputs from the function generator. When you generate the sine waves, the mean value(or offset) is recommended to 3V and the amplitude of 2V. The reason for choosing the range is that the D.C motor can show some nonlinear characteristics for low range of input voltage, for example, less than 1V. The frequency range could be 0.05~5Hz, and the number of frequencies could be about 10. Obtain the steady state output histories for each input sinuoid.-> 우리는 Offset을 3V로 하고, Ampl때3Hz 일때4Hz 일때FrequencyAmplitude10.0520.1030.2040.3050.40Phaser60.5071.0082.0093.00104.002) From the obtained outputs draw the Bode Plot of the D.C Motor System.CVI 로부터 얻어낸 data 값으로부터 Matlab에서 bode plot을 그려보았다. w 값에 따른 amplitude 와 phase 값의 변화를 이 그래프를 통해 알 수 있다.4) Obtain the approximated transfer function from the voltage input to motor output velocity in the form.(Refer P55 eq.(2.69) in the textbook)에서 분모, 분자를으로 나누면,이 0일 때=1.10181.1018 x이다., phase 가 -90 일 때이다. 대입하고 소거하면, -90 일 때는 4.7315 , amplitude 는 -3.73. (아래 그림),,,ζ 값을 모두 구했으므로 이 값들을 대입하면 다음과 같다.phaser 가 -90일 때w 가=4.7315w 가일 때amplitude = -3.735) Overlap the Bode and Nyquist plots from experimental data on the Bode and the Nyquist Plot of the above transfer function (1) drawn by MATLAB.Check how the approximation is good enough.위의 transfer function 값을 Matlab에서 구현해보면 위와 같이 실험 데이터을 통해 구한 bode plot과 전달함수를 통해 구한 bode plot 이 비슷한 파형을 보였다.6) (Step Input Test) When the motor is at rest, give a step input to the motor and record the velocity h, CVI 로 받은 데이터에서 보면 8V를 주었을 때 최고입력이 7.992V 이고 최고출력은 8.009V이다. 7.992 x= 8.009 에서=4.961 이다.두 번째, 마찬가지로 데이터를 보면 5V를 주었을 때 최고입력이 5.049V 였고, 최고출력은 4.905V였다. 따라서 5.049 x= 4.905 에서=5.038 이다.8V 에 대한 출력값을값의 변화에 따라 나타내보았다. 파란선이 입력이고 녹색점선이 실제출력이다. 빨간선은와 ζ을 대입해 구한 그래프이다.(값을 0.95로 함)8V 입력을 주었을 경우마찬가지로 5V에 대한 입, 출력값이다.(값을 0.95로 함.)5V 입력을 주었을 경우▶▷▶값을 0.85, 0.90, 0.95 로 변화시키면서 출력값과 비교해보았다. 그래프를 보면이 점점 커질수록 출력값과 비슷해진다. 0.95 일 때 거의 일치한다고 판단하고를 구했다.7) Compare the parameter values obtained from Frequency response technique and the Step input test.8volt 일 때의transfer function의 bode plot5volt 일 때의transfer function의 bode plotfrequency test에서 구한 transfer function과 6번 문제 step input에서 구한 transfer function 의 bode plot 을 그려보았다. 둘 다 눈에 보이는 차이는 없지만 frequency 실험에서 구한 transfer function 값과 8volt 일 때의 transfer function 값이 5volt 일 때보다 더 비슷한 것을 알 수 있다.8) 고찰이번 실험은 offset, amplitude 를 일정하게 주고 주파수를 변화시켜가면서 그 응답을 살펴보고 그 출력 결과를 Matlab 으로 확인하여 두 값을 비교해보는 실험이었다. 또 step input 을 주어 sine input과 비교도 해보는 실험이었다. 처음에 여러 선을 연결하는데 있어서 복잡tol=0.01;A=load('50m.dat');A1=A(:,1);A2=A(:,2);tA=[1/sam:1/sam:length(A1)/sam];subplot(5,2,1), plot(tA,A1,tA,A2,':');grid on;title('in/out voltage at 0.05Hz frequency')legend('output vol.','input vol.');B=load('100m.dat');B1=B(:,1);B2=B(:,2);tB=[1/sam:1/sam:length(B1)/sam];subplot(5,2,2), plot(tB,B1,tB,B2,':');grid on;title('in/out voltage at 0.1Hz frequency')legend('output vol.','input vol.');C=load('200m.dat');C1=C(:,1);C2=C(:,2);tC=[1/sam:1/sam:length(C1)/sam];subplot(5,2,3), plot(tC,C1,tC,C2,':');grid on;title('in/out voltage at 0.2Hz frequency')legend('output vol.','input vol.');D=load('300m.dat');D1=D(:,1);D2=D(:,2);tD=[1/sam:1/sam:length(D1)/sam];subplot(5,2,4), plot(tD,D1,tD,D2,':');grid on;title('in/out voltage at 0.3Hz frequency')legend('output vol.','input vol.');E=load('400m.dat');E1=E(:,1);E2=E(:,2);tE=[1/sam:1/sam:length(E1)/sam];subplot(5,2,5), plot(tE,E1,tE,E2,':');grid on;title('in/out voltage at 0.4Hz frequency')legend('output vol.','input vol.');F=load('500m.dat');F1 at 2.0Hz frequency')legend('output vol.','input vol.');I=load('3Hz.dat');I1=I(:,1);I2=I(:,2);tI=[1/sam:1/sam:length(I1)/sam];subplot(5,2,9), plot(tI,I1,tI,I2,':');grid on;title('in/out voltage at 3Hz frequency')legend('output vol.','input vol.');J=load('4Hz.dat');J1=J(:,1);J2=J(:,2);tJ=[1/sam:1/sam:length(J1)/sam];subplot(5,2,10), plot(tI,I1,tI,I2,':');grid on;title('in/out voltage at 4Hz frequency')legend('output vol.','input vol.');amp1=[(max(A2)-min(A2))/2 (max(B2)-min(B2))/2 (max(C2)-min(C2))/2 (max(D2)-min(D2))/2 (max(E2)-min(E2))/2 (max(F2)-min(F2))/2 (max(G2)-min(G2))/2 (max(H2)-min(H2))/2 (max(I2)-min(I2))/2 (max(J2)-min(J2))/2];amp2=amp1/2;amp=20*log10(amp2);off1=[(max(A1)+min(A1))/2 (max(B1)+min(B1))/2 (max(C1)+min(C1))/2 (max(D1)+min(D1))/2 (max(E1)+min(E1))/2 (max(F1)+min(F1))/2 (max(G1)+min(G1))/2 (max(H1)+min(H1))/2 (max(I1)+min(I1))/2 (max(J1)+min(J1))/2];off2=[(max(A2)+min(A2))/2 (max(B2)+min(B2))/2 (max(C2)+min(C2))/2 (max(D2)+min(D2))/2 (max(E2)+min(E2))/2 (max(F2)+mj)
antenna 모델의 T.F 은 인데, K 값을 추가하여 bode plot 을 그려보면 다음과 같다. magnitude 가 대략 0 되는 지점에서 w가 3.08 이고 phase 는 -162° 이다. open loop 의 phase margin 은 180-162=18° 가 된다. lead controller 를 써서 phase margin 을 60°로 만들려면 lead controller에서 를 42° 가 되게 해야한다. phase 값만 올려주면 좋지만, lead controller 를 추가하게 되면 magnitude 값도 변하게 된다. 따라서 두 개의 bode plot 을 그려 비교할 필요가 있다.연두색 lead controller 를 추가한 후의 그래프이다. 보면 최대 1.12 정도 되는 것을 확인할 수 있다. 따라서 overshoot는 12~13% 정도이다. lead controller 는 PD controller 와 유사한 특성을 지니는데 출력 그래프에서 보면 확인할 수 있듯이 응답속도를 높이고, 오실레이션을 줄인 것을 볼 수 있다.
8254를 이용하여 직류모터의 속도를 제어하는 프로그램을 정량적(숫자를 사용하여)으로 해석하고 설명하세요.◆ 프로그램 소스와 주석CNTREQU706H ;컨트롤 워드의 주소CNT0EQU700H ;counter 0의 주소CNT1EQU702H ;counter 1의 주소COUNTEQU30720 ;counter 0과 1을 30720 으로 분주SPEEDPROCNEARPUSHAX ;AX 레지스터를 pushPUSHDX ;DX 레지스터를 pushPUSHBX ;BX 레지스터를 push; => save registers 로 이전의 레지스터에 저장된 데이터를 보존하기 위해 스택에 저장하는 작업;한 주기 동안 (30720) 카운터의 High와 Low일 때의 시간을 구한다.MOVBL,AL ;calculate count(AL 값을 BL로 mov)MOV AX,120 ;AX에 120을 저장(분주율 30720/256 = 120 이므로 256가지 속도조절)MUL BL ;AX와 BL을 곱해서 AX에 저장한다.(Q가 High인 동안의 카운터시간)MOV BX,AX ;AX 값을 BX 로 movMOV AX,COUNT ;AX에 COUNT 값 30720 적재(한 주기 동안의 카운터 값)SUB AX,BX ;AX에서 BX를 뺄셈을 해서 AX에 적재한다.(Q가 Low인 동안의 카운터 시간을 계산)MOV BX,AX ;BX에 AX의 값을 적재;Control word의 신호를 내보낸다.(카운터 0,1을 설정)MOV DX,CNTR ; 컨트롤 워드 주소값을 DX 로 movMOV AL,00110100B ;counter 0을 사용하고, MODE 2를 사용.OUT DX,AL ;counter word주소로 AL을 출력하여 counter 0을 사용MOV AL,01110100B ;counter 1을 사용하고, MODE 2를 사용.OUT DX,AL ;counter word주소로 AL을 출력하여 counter 1을 사용;conter1의 주소로 AX의 COUNT 한주기 30720을 8비트씩 전송MOV DX,CNT1 ;counter 1의 주소값을 DX 로 movMOV AX,COUNT ;AX에 COUNT의 값 30720 적재OUT DX,AL ;counter1의 주소로 AL의 데이터를 전송.MOV AL,AH ;AL에 AH의 값을 적재OUT DX,AL ;counter1의 주소로 AL의 데이터를 전송.;counter1의 카운팅 값을 읽어서 Low 사간과 비교해서 작을 경우 클 때까지 비교하고 클 경우 다음 명령어를 수행한다.SPE:IN AL,DX ;counter1의 값을 입력받아 AL에 적재XCHG AL,AH ;AH 값과 AL 값을 서로 바꿈IN AL,DX ;counter1의 값을 입력받아 AL에 적재XCHG AL,AH ;AH 값과 AL 값을 서로 바꿈CMP AX,BX ;AX와 BX의 값을 비교하여 AX가 BX보다 작으면 SPE로 분기JB SPE ;AX가 BX보다 크면 다음으로 점프.;conter0의 주소로 AX의 COUNT 한주기 30720을 8비트씩 전송한다.MOV DX,CNT0 ;counter0의 주소를 DX 로 movMOV AX,COUNT ;AX에 COUNT의 값 30720 적재OUT DX,AL ;counter0의 주소로 AL의 데이터를 전송.MOV AL,AH ;AL에 AH의 값을 적재OUT DX,AL ;counter0의 주소로 AL의 데이터를 전송.POP BX ;BX 레지스터를 popPOP DX ;DX 레지스터를 popPOP AX ;AX 레지스터를 popRET ;return; = > restore registers 로 이전에 스택에 저장된 레지스터 값을 해당 레지스터로 복귀하는 작업SPEED ENDP ;함수 종료◆ 설명(1) DC 모터 제어 회로도 분석8254 타이머를 사용한 모터 속도와 방향 제어 회로도에서 JK 플립플랍에 의한 출력값 Q가 인버터에 에 의해서 출력이 바뀌고, 이 논리값의 변화에 따라 트랜지스터에 의해 모터의 +, - 단자에 인가되는 전압이 달라진다. 만약 출력값 Q가 바뀌게 되면 논리값도 바뀌어 모터의 +, - 단자에 인가되는 전압이 달라져 모터의 회전 방향이 달라지게 된다.따라서 플립플랍의 출력 Q의 값을 0과 1 사이에서 계속 바꾸어주면 모터의 속도와 방향이 바뀌게 된다. 예를 들어, Q 출력의 duty cycle 이 50% 이면 0과 1이 똑같으므로 모터가 정지하게 되고, duty cycle 이 50% 가 아니라면 0과 1의 비율이 다르므로 모터가 정회전을 하든 역회전을 하든 방향과 속도가 달라진다. 이렇게 DC 모터를 제어하는 방식을 펄스 폭 변조방식 즉, PWM 방식이라고 한다.이러한 파형을 만들기 위해 counter 0과 1을 30720 으로 분주한다. 30720은 256으로 나누어 떨어져 256 가지의 속도를 허용하는 짧은 프로그램을 작성할 수 있다. 그리고 counter 0 에 대해서 counter 1 이 시작하는 시점을 바꾸면 Q의 duty cycle 을 변화시킬 수 있다.- > 모터의 방향과 속도 제어8MHz ÷ 30720 = 260 Hz 이다. 모터에 들어가는 기본 주파수가 260Hz 가 된다. 이 주파수는 모터를 구동시키기에 낮은 주파수이다. 이 동작 주파수를 60Hz ~ 1000Hz 로 유지해야한다.(2) 프로그램 설명위의 프로그램 소스는 모터의 속도와 방향을 제어하는 프로시져를 포함한다. counter 0과 1을 30720 으로 분주하는 이유를 (1)에서 설명했다. 속도는 이 프로시져가 호출될 때 AH 값에 의해 제어된다. 8bit 를 사용하므로 duty cycle 50% 가 되어 모터가 정지할 때 모터 사이클 계수치는 128이다. AH 값을 바꾸어 이 프로시져를 호출하면 모터는 속도가 순방향이나 역방향으로 증가된다. AH 값이 00H 에 가까워지면 모터는 역회전을 하고, FFH 에 가까워지면 모터는 정회전을 한다.counter0을 counter1에 대해서 시작하도록 하는 계수치를 먼저 계산함으로써 Q의 파형을 조절한다. 이것은 AH에 120을 곱하고 이 값을 분주율 30720에서 빼면 된다. 그러나 이 counter들은 프로그램 계수치에서 0으로 계수하는 내림차순 counter 이므로 이 카운터가 재시작하기 전에 해야 한다. 설정이 끝나면 counter1의 계수치 값을 30720으로 설정하면 counter하기 시작한다. counter1이 시작된 후, counter1이 읽혀져서 계산된 계수치와 비교된다. 이 비교된 값이 계수치에 도달하면, counter0이 30270의 계수치를 가지고 동작하기 시작한다. 이때부터 두 counter들은 모터의 속도와 방향을 조절하기 위하여 프로시져를 다시 호출하기 전까지는 0과 1의 파형을 계속해서 발생하게 된다.
실습문제 6-1 (Hw) : 최대값 구하기 (소스 및 실행 결과 제출)크기가 10인 정수형 배열에 난수(random number)를 채우고, 이의 최소값과 최대 값을 구하는 프로그램을 아래와 같은 지침에 따라 작성하시오.실습문제 6-2 (Hw) : 구구단 출력하기(소스만 제출)첨부된 실행 파일 6_2.exe에서와 같이 2단부터 9단 까지의 구구단이 출력되는 프로그램을 아래의 지침에 따라 작성하시오.▶ 단, 하나의 문장(세미콜론으로 끝남)을 하나의 라인으로 작성할 때 프로그램은 20라인을 초과하여서는 안 됨. (Hint. 이중 loop를 사용)▶ 각 단 사이에는 하나의 빈 라인이 반드시 들어가야 함.실습문제 6-3 (Hw) : swich 문과 무한 loop 문(소스만 제출)사용자의 입력에 따라 아래의 동작을 무한히 수행하는 프로그램을 작성하시오.(아래의 메뉴를 구성하는데 있어서 반드시 switch 문을 이용하시오.)▶ 사용자의 입력이 1인 경우 : 사각형의 폭과 높이에 해당하는 두 개의 값을 사용자로부터 추가로 입력 받는다. 이중 loop를 이용해 예제 7.17에서와 같이 ‘*’ 문자로 구성된 사각형을 출력한다.▶ 사용자의 입력이 2인 경우 : 직각 이등변 삼각형의 대각선이 아닌 한 변의 길이에 해당하는 값을 입력 받는다. 이중 loop를 이용해 첨부된 실행 파일 6_3.exe에서와 같이 `*` 문자로 구성된 직각 이등변 삼각형을 출력한다.▶ 사용자의 입력이 q인 경우 : 프로그램을 종료한다.