2016년 8월 7일 일요일

나만의 라이브러리 만들기 (헤더파일 만들기 2탄임)

코드가 아주 길 때 메인부와 함수부를 따로 나누어 파일로 관리하면 더 보기 쉽고 수정하기 편합니다. 그래서 다음의 간단한 예제로 메인부와 함수부를 각각 파일로 나누어 보겠습니다.

-원래 코드
1
2
3
4
5
6
7
8
9
10
11
12
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}
cs


-함수부 파일 만들기
우선 아두이노 라이브러리 폴더에 다음과 같이 폴더를 만듭니다.
그 다음 폴더이름과 같은 .h파일과 .cpp파일을 만들어요
그리고 아두이노 IDE 창에서 같이 소스를 수정할 수 있게 하기 위해서  두 파일을 아두이노 IDE창에 끌어당겨 넣어줍니다.

.h파일에는 사용할 함수를 선언하면 됩니다. 이때
#ifndef
#define

(헤더파일 내용)

#endif
형식으로 쓰는데 이것은 헤더파일 내용의 중복을 피하기 위해써 쓰는 방법입니다.

.cpp 파일에는 선언한 함수의 내용을 만들어 주면 됩니다. 이때 위에 #include "Arduino.h"와 #include "헤더파일 이름.h"를 넣어 주어야 합니다.


- 수정된 메인부
이렇게 함수부의 파일을 따로 떼어 놓았습니다. 이 파일의 내용을 바탕으로 메인부의 코드를 수정해서 컴파일 해보았습니다.


나만의 헤더파일 만들기

프로그램을 할때 #include <뭐시기.h> 로 라이브러리를 쓰죠?
이때 직접만든 라이브러리를 쓰려면 어떻게 해야 할까요?

라이브러리에다가 저장 시키고 싶은 함수:
예를 들어, 아두이노에서 Serial.print함수를 써서 여러변수의 출력값을 보려면 이렇게 코드를 짜야합니다.
Serial.print(val1);
Serial.print(","); 
Serial,print(val2);
Serial.print(",");
Serial.print(val3);
Serial.print(","); 
Serial,print(val3);
Serial.println(",");
음.. 굉장히 보기 싫고 귀찮네요 전.. 
그래서 visual studio에서 처럼 출력하고 싶은 마음이 간절해 짐니다.
printf("%d, %d, %d, %d ", val1, val2, val3, val4);

이때 요 함수를 쓰면  ​위에서 처럼 쓸수 있습니다!!

http://colorscripter.com/s/pp3EqkX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#define ARDBUFFER 16
 
int printt(char *str, ...)
{
  int i, count=0, j=0, flag=0;
  char temp[ARDBUFFER+1];
  for(i=0; str[i]!='\0';i++)  if(str[i]=='%')  count++;
 
  va_list argv;
  va_start(argv, count);
  for(i=0,j=0; str[i]!='\0';i++)
  {
    if(str[i]=='%')
    {
      temp[j] = '\0';
      Serial.print(temp);
      j=0;
      temp[0= '\0';
 
      switch(str[++i])
      {
        case 'd': Serial.print(va_arg(argv, int));
                  break;
        case 'l': Serial.print(va_arg(argv, long));
                  break;
        case 'f': Serial.print(va_arg(argv, double));
                  break;
        case 'c': Serial.print((char)va_arg(argv, int));
                  break;
        case 's': Serial.print(va_arg(argv, char *));
                  break;
        default:  ;
      };
    }
    else 
    {
    
        Serial.print(str[i]);
        
    }
  };
  Serial.println();
  return count + 1;
}
cs

이 함수를 아두이노 소스에서 붙여 넣기 하면 되죠. 
그러나!! 이 함수는 자주!! 쓸것이기 때문에 라이브러리에다가 이 함수를 저장해서 계속 쓰고 싶습니다.


라이브러리 만들기:
자! 그럴때는 일단 아두이노 라이브러리에 폴더하나를 만듭니다. 
저는 myfuc이라고 했습니다.

폴더안에 (폴더와 같은 이름.h) 인 메모장을 만듭니다.
저는 myfuc.h 입니다.
이때 생각 하셔야 할께 #incldue의 의미가 단순이 파일을 복사 붙이기 한다는 사실!


출처:
-라이브러리
-printt함수

2016년 8월 5일 금요일

ps

ps [-option]

옵션이 없는 경우, 현재 터미널에서 수행한 프로세스에 대한 정보만 출력한다.

-option
l : 세부적인 정보를 출력
u : 실행한 유저와 실행 시간까지 출력
x : 접속해 있는 터미널 뿐만 아니라 지금 사용되고 있는 모든 프로세스를 출력
e : 모든 프로세스의 리스트를 출력
s : signal 포맷으로 표시
m : 메모리 정보
a : 다른 사용자가 실행하고 있는 프로세스 출력
j : job 형식으로 표시
f : 프로세스 시작 시간, 프로세스의 부모 PID, 관련 사용자 ID, 명령 이름과 가능한 매개변수 등 모든 정보를 출력함.

-정보
UID : 사용자 ID
PID : Process 고유 번호
PPID : 부모 프로세스 ID
C : 스케줄링을 위한 프로세스 소모량
PRI : 프로세스 우선순위
VRZ : 가상 메모리 사용량
RSS : 사용된 실제 메모리 량
TTY : 실행된 터미널 번호
TIME : 총 CPU 사용 시간
ADDR : 프로세스의 메모리 주소
STAT : Process 상태
- R(Running) : 프로세스 실행 중
- S(Sleeping) : 일시적으로 쉬고 있는 상태
- T(Traced/Stoped) : 구동이 중지되어 있는 상태
- Z(Zombie) : 좀비 프로세스
- W (Swapped out) : 메모리를 사용하지 않는 스와핑 상태

- 사용 예
터미널을 두 개 켜서 위 쪽과 아래쪽에 배치해 두었다. 
위 쪽 터미널에서는 rec이라는 프로세스를 동작시키고 있고, 이를 통해 ps 명령어를 통해 이 프로세스가 돌아가는 것을 볼 수 있는지 확인할 것이다.
아래의 터미널에서는 ps -au | more 명령어로 다른 사용자가 실행하고 있는 프로세스를 시간 정보가까 함께 볼 수 있도록 하였다. 
파이프 | 를 통해여 more 명령어를 입력하였기 때문에 비교적 최근에 실행된 rec 프로세스는 아래쪽에 있을것이다. 
ps 에서 아래에 나오는 정보들을 더 보자.

bash란 터미널 프로세스를 의미하기 때문에 13번 터미널(pts/13)과 0번 터미널(pts/0)이 동작 중임을 알 수 있다. 
그리고 13번 터미널에서 rec 프로세스를 동작하고 있으며, 그 후에 ps 프로세스가 돌아가는 중임을 나타내에진 시간을 통해서 확인할 수 있다. 














2016년 8월 4일 목요일

Flyback Transformer의 원리와 작동 방법에 대해서 생각했다.


저희가 10만볼트가 나오는 고전압 서플라이를 빌리려고 학교를 뒤졌지만 빌리지 못 했습니다. 그래서 저희는 고압을 직접 만들어야 할 것 같네요..

그래서 CTR 모니터를 분해해본 결과 고압을 만드는 방법이 Flyback Transformer라는 것을 알았고 이것을 공부해 보았습니다.



1. 트랜스포머의 원리

트랜스포머(변압기)는 AC 입력 전압을 더 높거나 낮은 출력전압으로 바꿔주는 부품이에요.
가장 간단한 부분으로는 코어를 중심으로 코일 두개가 감아져 있는 형태인데, 각 코일은 간단하게 전압이 입력되는 쪽의 코일을 Primary라고 부르고 출력 전압이 나오는 코일을 Secondary라고 부르죠.
이 부품도 전자기학의 법칙 - 멕스웰 방정식의 4가지 법칙을 벗어나지 않습니다. 전류가 흐르면 그 주변으로 자기장이 형성되는 암페어 법칙과 자기장이 변하면 기전력emf가 생기는 페러데이 두 법칙에 의해서 동작해요.
Primary 코일에서 AC전압이 인가되면 자기장이 생기는데 이 자기장은 시간에 따라 변하는 자기장이겠죠? 그러면 이것은 코어로 전달되고 Secondary 코일로 전달됩니다.

트렌스포머는 전력이 커지지 않기때문에 양쪽 코일의 전력(V x I)는 일정합니다. - 이상적인 경우 Primary 코일에서 Secondary로 전력이 손실되지 않고 그대로 전달되어
 Pp = Ps 이지만, 실제로는 전달되는 과정에서 전력이 손실되어 Secondary 코일의 전력은 줄어들어요ㅠㅜ.




그래서 Secondary 코일을 더 많이 감으면 전압을 높아지지만 전류는 떨어지고, 코일을 적게 감으면 전압은 떨어지지만 전류는 많이 흐르게 되는 것입니다.
그리고 트랜스포머는 감는 방향에 따라 극성이 결정되어서 반대로 감으면 입력이 +일 때 출력은 -가 되니까 주의하시길.



2. SMPS(Switching Mode Power Supply - 스위칭 전원 공급 장치)
보통 전자 장비는 DC 전압을 필요로 하는데요. DC 전압을 만드는 방법으로는 배터리로 직류 전원을 만드는 방법(DC - DC)이 있고, 상용 교류 전압에서 만드는 방법 (AC-DC)이 있죠. 상용 교류 전압으로 사용하고 싶은 직류 전원으로 만드는 방법은 다시 드로퍼 방식과 스위칭 방식이 있는데 여기서 스위칭 방식이 SMPS입니다.
드로퍼 방식은 전자회로 1에서 배운 건데요. 상용 교류로부터 전압을 다운 시킨 후에 정류기에서 직류로 정류하고 커패시터로 평활시키는 방식인데, 리플이나 노이즈가 작은게 장점이지만 전력 효율이 나쁜 단점이 있습니다.
SMSP는 교류전원을 일단 직류로 변환 한 후에 반도체 스위치(BJT나 FET같은 거)로 고속 스위칭(껏다 켯다)해서 펄스 형태의 교류로 변환합니다. 이 고주파 전력을 변압기 1자 코일에 입력한 후 2차 코일에 유도된 전력을 정류시켜서 직류 출력 전압을 얻어요. 뭔소린지 모르겠죠? ㅋㅋㅋ
일단 SMSP란 AC->DC->DC 방식이다. 그래서 더 간단하게 그냥 DC->DC 방식이다. 이렇게 기억하고 있습시다.

3. BUCK REGULATOR
가장 단순하고 일반적으로 사용하는 스위칭 변환기는 아래 회로이구요 Buck이라고 부릅니다.
이것은 전력 손실은 적게하고 전압을 떨어뜨릴때 사용합니다. 출력 전압의 극성은 입력과 같아지구요.


스위치가 켜지면 입력 전압은 인덕터에 연결됩니다. 곧바로 전위차는 인덕터에 가해지고 인덕터에 흐르는 전류는 점점 증가합니다. 인덕터를 통해 흐르는 전류는 부하와 출력 커패시터를 통해 흐르고 이때 커패시터는 충전되죠.
스위치가 꺼지면 인덕터에 적용된 입력전압은 없어지지만 전류는 갑자기 변할 수 없기 때문에 인덕터 양단의 전압은 전류를 유지하기 위해서 조절됩니다.  인덕터의 들어가는 부분의 전압이 점점 줄어드는 전류 때문에 음극이 되서 다이오드가 켜져요. 그러면 인덕터 전류는 부하와 다이오드를 따라 흐르게 됩니다.  이때 커패시터는 부하에 흐르는 전체 전류에 포합되서 방전하게 됩니다.


Vout = D x Vin  
(D는 듀티비)

Buck의 출력은 PWM의 듀티비에 의해서 결정됩니다.



4. Buck-boost
다음 Buck-boost 회로는 출력 전압이 입력전압보다 더 작아질 수 있을 뿐만아니라 커질 수도 있어요. 그리고 출력 전압은 입력에 반대 극성이라는 거...



스위치가 켜지면 인덕터에 입력전압이 가해져서 인덕터에 흐르는 전류는 점점 증가하게 됩니다. 이떄 출력 커패시터의 방전은 부하에 흐르는 전류의 유일한 소스가 되죠.
스위치가 꺼지면은 인덕터에 흐르는 전류가 줄어들면서 다이오드 부분의 전압이 마이너스로 확 바뀝니다. 그래서 다이오드가 켜지고 인덕터로 흐르는 전류는 출력 커패시터와 부하에 공급되네요.
결국 부하에 흐르는 전류는 스위치가 꺼져있을 땐 인덕터에서 공급되고 스위치가 켜져있을 때는 출력 커패시터에서 공급되네요.

Vout = -D/D' Vin 
(D는 듀티비고 D'은 1-D)


5. FLYBACK REGULATOR
자자 이제 다와갑니다. 이게바로 우리가 고압을 만들 때 쓸 FLYBACK 입니다. FLYBACK은 앞에서 본 Buck-boost와 입력/출력 전류의 흐르는 방식이 같은 데요. 하지만 이건 극성은 입력과 출력이 같다라는 점!


자자 또 스위치를 켜봅시다. 그러면 입력 전압은 트랜스포머의 Primary 코엘에 가해져서 인덕터에 흐르는 전류는 점점 증가합니다. 근데 여기서 Primary랑 Secondary 코일이 반대로 감겨져 있다는 사실은 똑똑히 보시구요. 다이오드 입구쪽 전압이 마이너스가 되어서 다이오드가 꺼져버려서 Secondary코일에 전류가 못 흐르게 됩니다. 이때 부하에 흐르는 전류는 출력 커패시터를 통해서만 공급받습니다.
다음으로 스위치가 꺼졌을 때, Primary에 흐르는 전류는 줄어들게 되면서 다이오드 입구쪽 전압이 플러스로 확 바뀌게 됩니다. 다이오드는 켜지구요 전류는 부하와 출력 커패시터 둘 다로 흐릅니다. 스위치가 켜진 동안 출력 커패시터가 부하를 통해 잃어버인 전하는 스위치가 꺼져있는 동안 다시 충전되게 됩니다.
Vout = D/(n*D') Vin
(D는 듀티비, D' = 1-D)


 5. 전자총에 쓸 HV - Flyback
자 이제 위에서 공부한 FLYBACK REGULATOR을 이용해서 전자총에 고압을 만들어봅시다.







전원이 공급되면 트랜지스터는 Primary 코일로 전류를 흐르게 합니다. 이 전류는 Secondary에 전류를 유도하고, 동시에 feedback 코일에도 전류를 흐르게 하죠. 이 feedback 전류는 트랜지스터를 꺼지게 하고 패라이트 코어의 자기장이 줄어들게 됩니다. 그러면 큰 고전압 스파크가 Secondary 코일에 나타나게 됩니다.  이제 트랜지스터를 꺼지게 하는 feedback 전류가 없기때문에 다시 한번 도통되고 이 싸이클이 반복됩니다. 트랜스포머를 공명으로 만드는 자연적인 주파수에서 엄청난 전압이득을 얻게 되는데요.. feedback 코일을 감게되면서 회로의 작동 주파수가 여러가지 요소들에 의해서 자동적으로 공명에 맞춰집니다.















모니터를 모두 뜯어보았다.

전자총을 만들고 있는 경북대 빛돌입니다.

전자총의 원리가 CRT와 비슷하다는 이야기는 아주 많이많이 들었지만 흘려듣고 있었습니다.
그러던중 저희 지도 교수님께서 교수님이 전자총을 만든다면 먼저 CRT TV부터 뜯어 보시겠다고 이야기 하셨습니다. 이것을 계기로 저희가 25000원+배송비 5000원으로 중고 CRT 모니터를 질렀습니다.

모니터를 분해하러 밖으로 나갔는데요.
모니터를 직접 분해해보고 내부를 보니 역시 분해해보길 잘 한 것 같습니다.



아래 사진은 CRT 모니터의 전자회로 기판입니다. 오른쪽에 작은 기판은 RGB 제어를 하는 전자총 제어부인 것 같구요 왼쪽에 큰 기판은 DC전압 공급과 스캔 코일 제어 등등을 하는 회로들이 있는 것 같습니다.


아래 그림은 오른쪽의 큰 기판을 좀 더 분석해 본 것인데요. IC칩들을 찾아보고 CTR 모니터의 BLOCK DIAGRAM을 찾아보면서 나름대로 이게뭔가 생각을 해봤습니다.


참고로 오른쪽에 Flyback Transformer 부분에 부품이 없는것을 볼 수 있죠?
이건 저희가 분해해서 그렇습니다. ㅎㅎ
원래 저 자리에 큼지막한 트랜스포머가 있었습니다. 






[참고]
- CTR MONITOR BLOCK DIAGRAM
http://jestineyong.com/crt-monitor-block-diagram/






수차에 대한 이론

개구수(Numerical Aperture)
- 대물렌즈의 밝기와 분해능에 영향을 주고, 카메라 렌즈의 조리게 값과 부합된다.
- 표본과 대물렌즈 사이 물질의 반사지수를 나타내는 상수값 n과 그 각도의 sin값에 의해 결정된다.
- NA는 렌즈가 얼마의 빛을 수용할 수 있는가를 나타내는 척도이다.
https://lh4.googleusercontent.com/ECe41wOxj0yclOX5SXSRhzTnoKSo6PfMMXndp0pH3EWp3xErhqgO3RIVDWXqvpcEGlLQSAs0uF5g8YLHxmx6yPs4W8935rB3QAfsr-36UedkYFSjEJq5hr27yk_bZ0gJCbp5jPb2
- 관련 공식을 보면 sin 값이 클수록 NA 값은 커지며, a가 짧아질 수록 sin 값이 상승한다. 따라서 NA 값은 매질의 굴절률 n과 sin 값에 비례하는 것을 알 수 있다.

분해능(Resolution)
https://lh6.googleusercontent.com/qrFOpVv614Zj4lC6Mq9UtvzEm5rH2PJBnmlP_tUJzknalOytFO_mpXlFYQPKlV13ncobrZCvhr_Fwmb7FLb-HeSQFsF9-R77uLL2Rj7zXxKoQmS9zs1le_5yLbz583dA1APLVHCg
- Airy Disk : 일정 크기의 조리개 하에서 피사체 점은 회절현상에 의하여 원반상으로 나타난다.
- 두 점이 근접해 있을 때 Airy Disk는 겹치게 되고, 두 점이 R 이하의 거리로 근접해 있으면 두 점으로 보이지 않고 한 점으로 보이게 된다. 이때의 R 분해능 또는 분해능 한계(resolution limit)라 한다.

https://lh4.googleusercontent.com/o-qkBYa7RzUuDxUXCLgg9MPFDRDHOL9rlUP0vvAkxs7XmhmZZO577qX_qCzLtSrrGA-hCUM7L2wcQ7-0h2JorMD05yKosiDwT38y3Xl1-7ib9FyRDmV1kA4EVFCY72a8N__g-oEQ
- 파장의 변화가 없는 상태에서 NA 값을 올리면 보다 작은 R 값을 얻을 수 있다. 광학 현미경의 최소 분해거리는 대략 0.2마이크론이다.
- NA 값의 증가는 한계가 있으므로 빛보다 짧은 파장의 전자빔을 이용해서 R값을 보다 감소시킬 수 있다. 이 이론이 광학현미경보다 1000배 이상의 분해능을 가진 전자현미경의 원리이다.

초점심도(Depth of Focus)
- 초점으로 잡을 수 있는 허용 범위. 보다 큰 심도는 두꺼운 표본의 관찰을 용이하게 한다.
- 심도는 대물렌즈의 배율과 NA값에 반비례한다. 이것은 분해능이 클수록 초점심도는 얇아진다는 것을 의미한다.
https://lh3.googleusercontent.com/nOXAK8HofC4AlWICNt3A1iPP8ju3d2VJSspCee6Izjv423D4zbEIV-0Y3AyXCn2Kt2dVe78kwusDa06haL1h14MeSsEVWXPoJmQWEZHurKexE1nDtXLUlSfB9pu9H96WCXrNJLvN
- SEM의 초점심도가 크기 때문에 3차원적인 영상의 관찰이 용이해서 곡면 혹은 울퉁불퉁한 표면의 영상을 육안으로 관찰하는 것처럼 보여준다
https://lh4.googleusercontent.com/lJNJWkw7olRGWXs9bb41gcqvWdjQEVySr0vBkajd5rEteWt-5niWXJnZBUhyDpG38NdJAPpiFcAaYBmu1NHj-pR1t9mecPGPpsLpYHFU_OjPAFRQrJBkUw2q6OFeoEnRN8mPE747

- 초점에서 D/2거리에서 빔의 지름은 픽셀 지름의 두 배가 된다. 이러한 한계점 사이의 거리 D 상에서 이미지는 받아들일 수 있는 만큼 선명한 초점에 있게 된다.

수차(Aberration)
- 한 점에서 나온 빛이 렌즈를 거쳐서 한 점에 모이는 상황은 근축광선의 조건을 만족할 때 뿐이다. 여기서 근축광선이란 광축과 근소한 각도를 이루며 접근해 있는 광선을 가리키는 말이다. 예컨대 둥근 볼록렌즈의 정중앙을 통과하는 빛(광축)의 곁을 지나는 빛줄기다.
- 근축광선이 아닌 경우에는 렌즈를 거친 후에 상당히 넓은 영역으로 퍼져버린다. 이렇게 이상적인 결상관계에서 어긋나는 것을 수차(aberration)라고 한다.

1) 회절 수차 (diffraction aberration)
- Airy Disk란 빛 또는 전자가 작은 원형 틈을 통과할 때 생기는 회절과 간섭으로 인해 발생하는 동심원의 간섭무늬이다. Airy Disk의 중심에 있는 가장 밝은 원이 전체 광원의 84%의 광량을 차지하고 그 주위에 어둡과 밝은 원반들이 차례로 나타난다.
- Airy Disk의 크기로 인해 나타나는 형상은 선명하게 또는 흐릿하게 표현될 수 있다.
https://lh3.googleusercontent.com/otFUCZPuEmSoWItA06oHq0pKgw7VYfT8yuhr5xSGJt-N_z6VzG9g1NfQJQn3dSbRrHtrf5M_wu1ckKIdjcOYCRfvKE-9JvO6Uy1mHH3UF-F3NzdTj10MR64u2bC_DhARxUigtd-p
https://lh6.googleusercontent.com/2x0eei5hP6VsF10yzV0tnFZ5oW3wjGTuGn6AvtwanqquYNgh3f0eAL8vk5HDze2icqFfKoRZqXw2J9Urv2RBFjddJXpnd4j5cp2OCjIl1Di9CvsyaACZb5o9Cq9yaGWmIazAG3Qh

- 회절은 빛이나 전자가 조리개와 같은 틈을 지날 때 꺽이는 현상을 말한다. 이러한 회절은 틈이 작을수록 잘 생기기 때문에 조리개의 크기가 작아질수록 빛은 더 크게 꺽여 Airy Disk를 더 크게 만든다.

https://lh6.googleusercontent.com/0_fK4XtX6nJYY6D3y5zW-e_ZB3ZHOM_N-7Vzrhx3NDl34jOVJHp9VIxovuAhcsR4DmL90g_6qyAlzwOahHdqCw5RWiSu0tK70TZbsBVoH1Zjd5XuZem7jHTgxTO-vHoUjzdyrH0G
2) 구면수차 (spherical aberration)
- 빛이 광축에 평행하게 입사할 때, 렌즈의 중심부와 주변부의 굴절률의 차이에 의하여 초점이 한곳에 맺히지 못함.
- 렌즈 자체의 특성상 주변부로 들어온 빛이 꺽이는 각도와 중심부를 지나는 빛이 꺽이는 정도가 다르기때문.
- 렌즈가 곡면이라서 생기는 것이기 떄문에 렌즈를 평면에 가깝게 만들수록 잘 발생하지 않는다.
https://lh6.googleusercontent.com/_jkSldPBYbs95d7fh3pgBVOdfKN2e6QsLk6sfC7xd4GmaFTvnZItFtvX4oBSAYrILhwJG1ytFGzaoJP7Rvyz4KLBgOVxKyqee308oLx0PzpGVm2MrnD63aYnw58kikmYwLoSQBht

3) 색수차 (chromatic aberration)
- 빛은 진행하는 매질에 따라 속도가 달라지게 된다. 이 속도차이로 인해 빛은 한 매질에서 다른 매질로 진행할 때 굴절이 일어나 진행방향이 꺽이게 된다. 한편, 빛은 그 파장에 따라, 매질 내 진행 속도가 다르므로, 다른 매질로의 진행 시 굴절률도 달라져 꺽이는 정도가 달라지게 된다. 즉, 백색광과 같이 여러 파장이 섞여 있는 빛의 경우 파장에 따라 초점 위치가 달라져 선명한 이미지를 얻지 못하는 현상이 색수차이다.
- 매질에서의 속도는 v = 거리/시간 = 파장/주기 로 나타낼 수 있고, 식에 따라 파장이 길수록 굴절률이 작고, 짧을수록 크다.
https://lh5.googleusercontent.com/DX_nBdNEcqFQB6AQxyioSiPLzNBK_OZw8RBRn-Lg7XqWkVV9YoT4VgOpgxIzLf6z2i1DhruiRbLA7K2FfYw789nyiqIdzhFf-Zh02dw2MqNPanu3p2uowQyBxlcs-lGadP3W849r
- 가속 전압 또는 렌즈의 전류가 불안정 하면 자기 렌즈의 초점거리에 변동이 생기게 된다.



https://lh4.googleusercontent.com/J39IKL4R2cuJ8qOp3fAbtwccqesAti3ajApRn1LGgHOui88j4oJEtgpB5KUBK3YFVKrDtQBP3gCMmM5Ejc3Ss-oYHVvErtSihDE_7_jkk0PcUYgfJejgq3f6siq180p2SalDxiPd
4) 비점수차 (astigmatism aberration)
- 한자어 아닐 비, 말 그대로 점이 아닌 수차. 촬영을 할 때는 분명 점을 촬영하였는데, 촬영한 이미지는 점이 아니게 보이는 현상
- 수평으로 들어가는 광선과 수직으로 들어가는 광선이 서로 다른 초첨을 맺는다. 즉, 수직곡률과 수평곡률이 일정하지 않아서 마치 럭비공처럼 되어 초점이 한 곳에 일치하지 못한다.
https://lh4.googleusercontent.com/elZeV3CE-ZyCf-3ryKkaor81VuU6GK6Ghkg9yWfXO57AyB0QmeuYY3rXojzz0cUf4PPSvAMlsMNPeiNqtFxDN5aU70wd3Vtlh44RUjI8O0zD9yEwov6MZG0vI1WFSOBhmAxjpve4

- 이는 인간의 눈에서도 볼 수 있는데 아래 그림처럼 시신경에 초점이 제대로 맺지 않는 것을 난시라 한다. 그래서 astigmatism 라는 용어가 쓰인 것.

https://lh4.googleusercontent.com/Ch8Y9PMJJ0max_KThBLz5guyXZvALUmvAkIuICULilza4Xn-bjdoqzt1A3OGXgGqYjd4nA6Jyf-SZtNzP9teNandRrUIxl6hJ84jZSeMfJkoQ07grJhTL42bTqQsteiWF2N3j1WIhttps://lh6.googleusercontent.com/zjYGrfeOAo0G3C-IaG3249hLSdx8s_JBeEv881foG7VJ6HE3M9jaTCSR3oQxU3udzWfXBw8k2V91eSMaV_wsp9rACTqI7gKYS1XTw2bmxj7tckcYCHKkEz8A4-7mlp7hL4qwfEvm










clear images were obtained