본문 바로가기

Electronic Craft/DIY Audio

KiCAD를 이용한 전자회로 시뮬레이션 : 2. 트랜지스터(BJT)

반응형

먼저 프로젝트를 생성하고 스케메틱 에디터를 실행 시킵니다. 여기서는 KiCAD 6.0을 사용합니다. KiCAD 6.0을 설치하면 메뉴는 자동으로 한글로 설정됩니다. 다운로드 디렉토리는 아래를 참조하시기 바랍니다. (windows용)

https://www.kicad.org/download/windows/

 

Windows Downloads

Downloads KiCad for Windows 8.1, Windows 10 and Windows 11

www.kicad.org

 

kicad를 실행 시키고 파일/새 프로젝트 메뉴을 클릭합니다.

 

아래와 같이 원하는 디렉토리 아래에 프로젝트 폴더를 만들고 프로젝트 이름을 입력합니다.

 

그러면 아래와 같이 회로도 편집기와 PCB편집기 파일이 생성됩니다.

회로도 편집기는 프로젝트 화면에서 .kicad_sch 이름을 더블클릭하면 실행됩니다. 그리고자 하는 회로의 부품을 선택하기 위해 오른쪽 빨간 동그라미의 아이콘을 클릭합니다. 클릭하면 아래 화면 처럼 부품 라이브러리를 읽어 옵니다. 처음에는 시간이 좀 걸릴 수 있습니다. 

 

라이브러리를 다 읽어 오면 아래와 같이 원하는 부품을 찾는 창이 뜹니다. 여기서 우리는 BC546이라고 하는 NPN 트랜지스터를 사용하려고 합니다. 검색 창에서 bc546을 입력하면 필터링 되어 아래에 표시됩니다. 이를 더블클릭 하면 화면에 트랜지스터가 나타납니다.

 

 

 

마찬가지로 저항도 찾아서 에디터에 위치 시킵니다. 저항은 기본적으로 검색창에 'r' 혹은 'R'을 입력하면 되지만 심볼이 기본 사각형으로 나옵니다. 우리가 흔히 알고 있는 저항 기호는 'r_us'를 입력해야 나옵니다.

 

 

이렇게 저항과 트랜지스터를 에디터에 배치시킨 화면입니다.

 

그리고자 하는 회로에 맞게 나머지 부품들도 배치 시킵니다. 하나의 부품을 클릭 한 뒤 Ctrl-c, Ctrl-v로 복사/붙이기를 할 수 있습니다.

 

커패시터의 경우 'c'를 입력하면 아래와 같이 여러가지 종류의 커패시터가 표시되는데 일단 극성이 없는 일반적인 커패시터를 선택합니다.

 

 

마찬 가지로 필요한 만큼 복사/붙이기를 합니다.

 

그리고 전원과 입력 신호를 만들기 위해 VSOURCE를 검색하여 찾습니다. VSOURCE는 DC전압 AC전압을 만들 수 있으므로 전원 소스와 입력 소스를 만들 수 있습니다.

 

이렇게 대략적인 위치를 잡아서 배치 시킵니다.

 

그리고 오른 쪽의 wire 아이콘을 선택하여 각 부품을 연결합니다.

 

아래와 같이 연결하여 common-emitter 증폭 회로를 구현하였습니다.

 

그리고 ground 를 반드시 연결해야 하는데 부품 검색에서 'gnd'를 검색하여 찾으면 됩니다.

 

이렇게 해서 ground까지 연결하면 회로가 완성됩니다. 

시뮬레이션을 수행한 뒤 원하는 노드를 찍어서 파형을 봐야 하는데, 노드를 알아보기 쉽도록 라벨을 붙일 수 있습니다.

아래 그림에서 오른 쪽에 라벨 편집 아이콘을 클릭하면 라벨 이름을 설정할 수 있는 창이 뜨고 라벨 이름을 지정합니다.

 

 

여기서는 입력 전압을 찍어 보기 쉽도록 Vin이라고 하는 라벨을 만들었고 입력 VSOURCE 위쪽에 연결합니다.

 

필요한 노드에 라벨을 만들어 붙여 줍니다. 여기서는 Vbias, Ve, Vout등을 만들어 연결하였습니다.

 

이제 각 부품의 이름 및 값을 알맞게 설정해 주어야 합니다. 이름은 각 부품에서 ?가 들어가 있는 부분을 수정해 주면 되는데 일일히 손으로 고치지 않고 한 번에 자동으로 번호를 매겨 주는 기능이 있습니다. 화면 위쪽 아이콘 중 오른 쪽에 있는 심볼참조지정자채우기 아이콘을 클릭하면 자동으로 각 부품의 물음표가 순서대로 채워집니다.

 

 

이제 각 부품의 값을 입력해 주어야 합니다. 입력하고자 하는 부품을 선택하여 더블 클릭하면 아래와 같이 부품의 각 종 파라메터를 설정할 수 있는 창이 뜹니다. 아래는 C1을 더블 클릭 했을 때 뜨는 창입니다. 여기서는 Value에 커패시터 값을 입력합니다. 10uF을 입력하려면 그냥 10u까지만 써도 됩니다.

 

 

R1저항 값도 마찬가지로 설정해 줍니다. 1000단위는 'k'를 사용할 수 있습니다.

 

이번에는 입력 VSOURCE에 원하는 입력 파형을 설정하는 방법입니다. V1 VSOURCE를 더블클릭하면 아래와 같은 창이 뜹니다. 여기서 아래 쪽에 있는 '스파이스 모델' 버튼을 클릭합니다. (참고로 전원단의 DC전압은 아래 전원 속성 창에서 Value 값에 DC 전압을 써주면 됩니다. 여기서는 아래 화면 오른 쪽에 보듯이 15를 입력하여 15V로 설정하였습니다.)

 

그러면 아래와 같은 창이 뜨고 여기서 '소스'탭을 클릭합니다. 사인파를 만들기 위해 '사인 곡선' 탭을 클릭하고 

DC 오프셋은 '0', 진폭은 '1m', 주파수는 '1000'을 입력합니다. 이것은 DC level offset을 0으로 하고 진폭이 1mV(=0.001V)이고 주파수는 1000Hz(=1kHz)인 사인파를 만든다는 말입니다.

 

다음은 트랜지스터인 BC546의 spice model을 설정해 주어야 합니다. BC546 심볼을 더블클릭하면 아래와 같은 창이 뜹니다.

마찬가지로 '스파이스 모델' 버튼을 클릭하면 라이브러리 파일을 선택하는 창이 아래와 같이 뜹니다.

 

파일 선택 버튼을 누르고 bc546의 spice model이 들어 있는 라이브러리 파일을 선택합니다. 여기서는 spice_complete라는 디렉토리 안에 BJTN.LIB 파일 안에 있는 경우이므로 BJTN.LIB파일을 선택 합니다.

 

참고로 spice model이 들어 있는 파일은 아래 링크에서 다운로드 받을 수 있습니다. 파일을 다운 받은 후 압축을 풀고 spice_complete 디렉토리를 필요한 위치에 복사하여 사용하면 됩니다. 저의 경우 아래와 같이 tr_sim 디렉토리 아래에 복사하였습니다.

http://ngspice.sourceforge.net/model-parameters/models_ugr.7z

 

파일을 선택하면 이 파일안에 들어 있는 모든 부품이 표시 됩니다. 여기서 BC546을 선택하면 아래와 같이 spice model이 들어 있는 것을 볼 수 있습니다.

 

그런데 스파이스 모델의 핀 순서와 KiCAD 부품의 핀 순서가 맞지 않기 때문에 이를 맞추어 주어야 합니다. BJT 트랜지스터의 핀 순서는 콜렉터,베이스,에미터 순서로 표시 되는데 KiCAD 심볼에서는 1,2,3 순서로 되어 있고 스파이스 모델에서는 3,2,1 로 되어 있는 것을 알 수 있습니다. 따라서 아래 그림 처럼 대체 노드 시퀀스 체크 박스를 체크 하고 '1,2,3'을 입력합니다.

이렇게 하면 시뮬레이션 할 모든 준비가 끝났습니다. 최종 회로도는 아래와 같습니다.

 

시뮬레이션은 메인 메뉴의 '검사' 메뉴를 클릭 하고 '시뮬레이터'를 클릭하면 됩니다.

 

그러면 시뮬레이터 창이 뜨고 여기서 톱니바퀴 표시의 시뮬레이션 설정 아이콘을 클릭합니다. 그리고 '과도적' 탭을 클릭하면 아래 그림 처럼 시뮬레이션 파라메터 설정 창이 뜹니다.

주어진 입력에 따라 출력이 어떻게 바뀌는지를 보는 것이 과도적 (과도응답) 시뮬레이션 입니다. (Transient Simulation)

각 입력 필드의 의미는 아래와 같습니다.

시간 단계 : 시뮬레이션을 진행 하는 시간 간격입니다. 작게 할 수록 더 정밀하게 시뮬레이션 할 수 있습니다. 여기서는 0.0001 초로 설정하였습니다.

최종 시간 : 전체 시뮬레이션 시간입니다. 여기서는 10m 초를 설정하였습니다. (10 밀리세컨드 = 0.01초)

초기 시간 : 시뮬레이션 시작 시간입니다. 디폴트 0초이므로 설정 안하면 자동으로 0초가 됩니다.

 

이렇게 하고 시뮬레이션 실행 버튼을 클릭하면 시뮬레이션이 실행됩니다. 시뮬레이션이 끝나고 나면 아래와 같은 화면이 표시됩니다. 각 노드별로 DC 전압이 아래에 표시 됩니다. 이를 통해 라벨을 달아 주었던 노드의 DC전압을 알 수 있기 때문에 bias 전압 등을 확인할 수 있습니다.

프로브 아이콘을 클릭하면 회로도 편집기로 이동이 되고 보고자 하는 노드를 클릭 하면 파형이 표시 됩니다.

 

Vout을 클릭했는데 전압이 움직임이 없네요 ㅠㅠ. 무엇이 잘 못 되었을 까요?

 

회로도를 살펴 보니 C3의 커패시터 값을 설정하지 않았습니다...

 

다시 10uF으로 설정해 줍니다.

 

아까와 같이 시뮬레이션 파라메터를 설정해 줍니다. 시간 단계만 0.01ms로 바꿔 주었습니다.

 

다시 시뮬레이션을 실행 시키고 이번에는 신호 추가 아이콘을 클릭하여 원하는 노드를 출력해 봅니다.

 

Vin을 찍어 봅니다. 입력 신호는 설정해 준 대로 +/- 1mV로 잘 움직입니다.

 

출력 신호 Vout을 찍어 봅니다. 입력 신호와 비교해 보면 약 50배 정도 증폭되어 나타나는 것을 볼 수 있습니다.

그런데 이렇게 매번 시뮬레이션을 할 때마다 각 파라메터를 설정하려면 매우 귀찮습니다. 그래서 시뮬레이션 명령어를 만들어 한 번에 시뮬레이션을 실행하는 방법을 알아봅니다.

 

메인 메뉴의 '배치'를 클릭하여 '텍스트 추가'를 클릭합니다. 

텍스트 창에 .tran 0.01m 10m 0 이렇게 입력합니다. 이런 것을 spice command라고 하는데 이것은 과도응답 시뮬레션 코맨드입니다.

아래와 같이 텍스트를 배치 하면 매번 시뮬레이션 설정 할 필요 없이 바로 실행 버튼을 누르면 됩니다.

 

실행 버튼을 눌러서 실행 시키고 아까와 같이 Vin/Vout 노드를 찍어 봅니다.

정상적으로 파형이 나오는 것을 확인할 수 있습니다.

지금 까지 BJT 트랜지스터의 스파이스 모델을 연결하여 시뮬레이션 하는 방법을 알아 보았습니다. 다음에는 여러가지 다른 시뮬레이션을 해보고 그 의미를 알아보겠습니다.

반응형