달력

4

« 2024/4 »

  • 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
2016. 8. 4. 17:58

Java Native Interface 프로그래밍/java2016. 8. 4. 17:58

JNI


1. JNI(Java Native Interface)이란?

다른 언어로 작성된 코드를 자바에서 호출할 수 있도록 만들어진 규약이다.  Native Code란 플랫폼에 종속적인 기계어 코드로 C/C++와 같은 언어를 말한다. 자바는 특정 플렛폼에서 제공하는 고유의 서비스의 기능을 모두 처리할 수 없기때문에 특수한 목적으로 제작된 하드웨어를 제어해야 할 필요가 있다면 자바만으로 해결하기 힘들다.


2. DLL이란 무엇인가?


라이브러리란 자주 사용되는 표준적인 함수를 매번 직접 작성해서 사용하는 것은 지나치게 시간 소모적이므로 표준화할 수 있는 함수를 미리 만들어서 모아 놓은 집합이며 보통 LIB확장자를 가진다. 이 라이브러리를 프로그램에 링크시키는 방식에는 정적 링크(Static Link)와 동적 링크(Dynamic Link)가 있는데 동적 링크 방식을 쓰면 DLL이 된다.


- 정적 링크(Static Link)

실행파일을 만들 때 프로그램에 라이브러리 코드를 복사하여 컴파일하는 방식이다. 그래서 파일의 크기는 커지지만 실행파일은 완전한 단독 실행파일이 된다. 컴파일이 끝나면 라이브러리 파일(LIB)이 없이도 프로그램을 실행할 수 있다.


- 동적 링크(Dynamic Link)

실행 파일을 만들 때 프로그램에 라이브러리를 복사시키지 않고 링크시키는 방식이다. 그러면 실행파일에는 호출할 함수의 정보만 포함되고 실제 함수 코드는 복사되지 않으므로 실행파일의 크기는 작아진다. 실행 파일은 실제코드를 가지고 있지 않으므로 프로그램 실행시에 DLL이 꼭 있어야 한다.


3. Shared object란 무엇인가?

라이브러리는 함께 링크될 수 있도록 보통 미리 컴파일된 형태인 오브젝트코드(Object code) 형태로 존재한다. 이 Object들은 자주 사용하는 함수의 소스를 컴파일하여 만들 수 있다.


*표준 시스템 라이브러리: /lib와 /usr/lib에 위치

*라이브러리의 이름은 대개 lib로 시작




1단계: Native Method를 선언하는 자바 클래스를 작성하고 컴파일한다.

여기서 Native Method란 Native code(C/C++)를 호출하기 위한 자바 함수이다.

native는 Native Function이라는 것을 알여주는 키워드이다.




[출처]

- DLL이란 무엇인가?

http://stdesignstar.tistory.com/entry/DLL-%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80




'프로그래밍 > java' 카테고리의 다른 글

객체  (0) 2016.05.04
변수  (0) 2016.05.04
hello world  (0) 2016.05.04
리눅스에 자바 설치 및 실행 방법  (0) 2016.02.13
:
Posted by youjin.A


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 코엘에 가해져서 인덕터에 흐르는 전류는 점점 증가합니다. 근데 여기서 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 코일을 감게되면서 회로의 작동 주파수가 여러가지 요소들에 의해서 자동적으로 공명에 맞춰집니다.









[참고]

-SWITCHING REGULATORS

http://www.ti.com/lit/an/snva559/snva559.pdf

-PowerLabs Flyback Driver

http://www.powerlabs.org/flybackdriver.htm

- youtube FQM-17B003 Flyback transformer

'전자현미경 > CRT 모니터 분해하기' 카테고리의 다른 글

스캔 코일  (0) 2016.08.04
전자총  (0) 2016.08.04
모니터 분해  (0) 2016.08.04
:
Posted by youjin.A
2016. 8. 4. 17:46

스캔 코일 전자현미경/CRT 모니터 분해하기2016. 8. 4. 17:46





'전자현미경 > CRT 모니터 분해하기' 카테고리의 다른 글

Flyback Transformer  (0) 2016.08.04
전자총  (0) 2016.08.04
모니터 분해  (0) 2016.08.04
:
Posted by youjin.A