Microsoft MVP성태의 닷넷 이야기
사물인터넷: 31. 커패시터와 RC 회로 [링크 복사], [링크+제목 복사]
조회: 1956
글쓴 사람
홈페이지
첨부 파일

커패시터와 RC 회로

"짜릿짜릿 전자회로 DIY (2판) 뜯고 태우고 맛보고, 몸으로 배우는" 책의 그림 2-71 회로 실습을 보면 1000uF 용량의 커패시터를 사용하고 있어서 저도 이 부품을 구매했습니다.

50PK1000MEFCCC12.5X25
; https://www.eleparts.co.kr/goods/view?no=2627278

Capacitance: 1000uF
Voltage Rating: 50V
Product Range: PK Series
Capacitance Tolerance: ±20%
Capacitor Terminals: Radial Leaded
Diameter: 12.5mm
Lead Spacing: 5mm
Height: 25mm
Operating Temperature Min: -40°C
Operating Temperature Max: 85°C
Lifetime @ Temperature: 2000 hours @ 85°C
Capacitance Tolerance ±: ±20%
Packaging: Each
Ripple Current AC: 1350mA

(첨부 파일에 datasheet - 2321614.pdf가 있습니다.)

보통 전해 커패시터는 다리의 길이로 극을 알 수 있다고 하는데요, 배송되어온 제품이 다음과 같이 다리가 동일하게 잘려 있는 것입니다. ^^;

capacitor_1.png

극을 찾는 다른 방법이 있을까 찾아봤더니 다행히 ^^ 있습니다.

전해 콘덴서의 고장 여부 판별 방법 및 기능 총정리
; http://mon.futurepia.com/21

제가 올려놓은 사진을 보면 우측에 회색 띠가 있는데요, 그 부분 쪽으로 나온 다리가 음극인 것입니다. 자, 그럼 간단하게 다음과 같이 회로를 구성해 봅니다.

capacitor_2.png

그런 후 계측기로 커패시터 다리 양측의 전압을 재는데, 스위치를 누르면 금방 다음과 같이 바뀝니다.

[측정값]
+/-: 8.83V
커패시터: 8.83V

저항이 없는 상태이기 때문에 순식간에 8.83V로 채워지고 스위치를 떼면 그 이후부터 0.0x ~ 0.00x 단위의 전압이 누수가 되면서 떨어집니다. 그리고 양(+)극에 연결된 선을 GND로 옮긴 후(어떤 식으로든 커패시터를 배터리로 여기고 +/-를 연결하는 폐회로 구성) 다시 스위치를 누르면 순식간에 0V 전압으로 내려가는데 재미있는 것은 이번엔 0.0x ~ 0.00x 단위의 전압이 다시 올라가는 현상이 발생합니다.

이렇게 순간에 충전되고, 순간에 방전되는 것을 모두, 저항을 이용하면 제어가 가능합니다.

우선, 순간에 충전되지 않도록 회로를 다음과 같이 변경해 보겠습니다.

capacitor_3.png

이렇게 저항을 연결해 주면 "TC = R * C"라는 시상수(Time constant, 또는 시정수)" 함수에 따라 커패시터가 갖는 충전 용량의 63%를 원하는 시간에 채우도록 제어할 수 있습니다. 예를 들어, R = 1K, C = 1,000uF 이면 TC = 1000 * 0.001F = 1이 되므로 1초에 완전히 방전된 커패시터를 9V의 63%까지 채울 수 있습니다. (이후로 미분 방정식처럼 그런 과정이 연속됩니다.)

또한 순간에 방전되지 않도록 하는 것은 저항을 다음과 같이 병렬로 연결하면 됩니다.

capacitor_4.png

위와 같이 구성하면 S1 스위치를 닫는 경우 R1의 저항 크기에 따라 커패시터가 충전되는 속도가 달라지며, (S1을 떼고) S2 스위치를 닫으면 R2의 저항 크기에 따라 커패시터의 방전 속도가 달라집니다.

이렇게 구성한 회로를 RC(Resistor-Capacity) 네트워크라고 부른다는데 ^^ 저 같은 비전공자가 설명할 만한 내용이 아니므로 ^^ 이에 대해서는 다음의 글을 좀 더 읽어보시길 바랍니다.

RC회로의 응용(1)
; http://forum.falinux.com/zbxe/index.php?document_srl=792177

RC회로의 응용(2)
; http://forum.falinux.com/zbxe/index.php?document_srl=794104




이번엔 위의 회로에서 저항 옆에 LED 하나씩을 붙여 보겠습니다.

capacitor_5.png

복잡한 회로라고 생각이 드는데, 그냥 충전 시에 동작할 회로라면 아래의 S2 스위치가 그려진 부분은 없다고 생각하면 됩니다. 그 상태에서 상단의 S1 스위치를 닫으면 어떻게 될까요?

처음 C1 커패시터는 0V로 충전된 상태이기 때문에 시상수 함수의 규칙에 따라 (초기에는 빠르지만 이후) 서서히 충전이 될 것입니다. 충전이 되면서 자연스럽게 커패시터의 전압이 0V에서 9V 가까이까지 올라가게 됩니다. 예를 들어, 커패시터에 0V 일 때는 나머지 9V의 전압이 "R1 + LED2"에 걸리게 됩니다. 즉, 이해를 돕자면 커패시터가 0Ω에서 계속 저항값이 증가하는 부품이라고 생각하면 됩니다. 저항값이 올라가면서(즉, 충전이 이뤄지면서) 나머지 전압은 커패시터 이후의 부품들이 받게 되는 것입니다.

이 때문에, 위의 회로는 S1을 닫으면 LED2 부품이 밝아졌다가 서서히 빛을 잃어가게 됩니다.

이어서 방전을 해보겠습니다. 방전할 때, 커패시터는 DC 건전지라고 생각하면 됩니다. 그렇다면 위의 회로에서 (S1 스위치가 열리고) S2 스위치가 닫혔을 때 이번엔 커패시터에 충전된 전압이 R2, LED1 부품을 흐르면서 전원을 공급하게 됩니다. 따라서 LED1이 밝아졌다가 서서히 흐려지게 됩니다.

여기서 C1 커패시터의 용량을 0.33uF로 된 것을 연결해보겠습니다.

AL-CAP 0.33uF 50V   
; https://www.eleparts.co.kr/goods/view?no=3369510

전해콘덴서 85도
5x11mm,2000HRS

(첨부 파일에 datasheet - SHL.pdf가 있습니다.)

이 상태에서 S1 스위치를 닫으면 LED2가 순간적으로 깜빡하고는 커패시터의 용량이 금방 6.68V까지 충전됩니다. 그다음 (S1 스위치를 열고) S2 스위치를 닫으면 마찬가지로 LED1이 순간적으로 깜빡하고는 커패시터의 용량이 금방 0V에 가깝게 내려갑니다.

재미있는 것은, 이때 커패시터의 +/- 노드에 계측기를 연결한 경우입니다. 계측기를 (전압 측정 모드로) 연결하면 S1 스위치를 닫아 6.68V까지 충전한 다음 스위치를 열면 커패시터 자체의 누수라고 하기에는 너무 빠른 속도로 방전이 됩니다. 그래서 계측기 연결 상태에서는 S2 스위치를 빨리 테스트하지 않으면 LED1이 깜빡이는 것을 볼 수 없습니다.

이유는 이렇습니다. 제가 가진 계측기는 전압을 측정하기 위해 자체 저항을 10MΩ으로 연결하기 때문에 결국 커패시터에 저항을 병렬연결한 것이므로 커패시터가 방전을 시작하는 것입니다. 그런데 1000uF에 비해 0.33uf의 방전이 빠른 것은 시상수의 함수가 달라졌기 때문입니다.

10MΩ = 10000000Ω
1000uF = 0.001F
0.33uF = 0.00000033F

TC = R * C

10000000 * 0.001 = 10,000초
10000000 * 0.00000033 = 3.3초

따라서 3초 만에 기 충전되었던 전압에서 (1 - 0.63) 37%만큼의 전압으로 떨어지게 됩니다.




위의 내용을 이해하고, "짜릿짜릿 전자회로 DIY (2판) 뜯고 태우고 맛보고, 몸으로 배우는" 책의 101 페이지에 있는 회로도를 보면 이제 설명이 틀렸다는 것을 알 수 있습니다.

capacitor_6.png

책에서 위의 회로를 설명할 때 다음과 같이 시작합니다.

버튼 B를 눌렀다가 떼서 커패시터를 충전하면...

실은 "충전"이 아니라 "방전"입니다. 위의 회로에서 C1 커패시터를 기준으로 S1 스위치가 닫힘으로써 (저항 없는) 폐회로가 구성되었기 때문에 커패시터는 일순간에 방전해 버립니다.

그리고 이후의 설명도 약간 혼란스러운 면이 있습니다.

버튼 B를 눌렀다가 떼서 커패시터를 방전하면 계측기에 약 9VDC의 측정값이 나타나는데 커패시터의 위쪽 핀이 10K 저항을 지나 양극 버스와 연결되어 있기 때문이다. 커패시터가 DC를 차단하고 있기 때문에 커패시터에 걸리는 저항이 무한하고 양전하가 '갈 데가 없'는 것처럼 보인다.


저기서 계측기에 9VDC의 측정값이 나타나는 것은 저항의 연결이나 커패시터가 DC를 차단하고 있는 것과는 아무런 상관이 없습니다. 다시 말해, 저 회로에서 R1, C1 부품이 없어진다고 해도 여전히 9VDC의 측정값이 나옵니다. 왜냐하면 S2 스위치가 열려 있어 회로가 끊어져 있기 때문입니다. 위의 회로에서 C1은 S1을 눌러 방전한 상태이므로 0V 전압을 띠게 되므로 결과적으로 다음과 같은 회로의 전압을 재는 것과 같습니다. (그리고 그 끊어진 회로를 계측기가 10MΩ의 저항으로 직렬 연결하면서 전압을 측정한 것으로 이에 대해서는 "https://www.sysnet.pe.kr/2/0/11651" 글에서도 한 번 다뤘습니다.)

capacitor_7.png

따라서 저 회로에서 S2 스위치의 좌측과 음극의 전압을 재는 것이므로 자연스럽게 9V가 나오는 것은 당연합니다. 단지 이런 이유일뿐인데 그 설명을 "커패시터의 위쪽 핀이 10K 저항을 지나 양극 버스와 연결되어 있기 때문... 커패시터가 DC를 차단하고 있기 때문에 커패시터에 걸리는 저항이 무한..."이라고 장황하게 설명하니 왠지 10K 저항과 커패시터가 연결되어 있어 9V가 나오는 것처럼 이해할 수 있는 여지를 남긴 것입니다.

(첨부 파일은 이 글의 그림에 대한 fzz 파일입니다.)




커패시터의 활용이란, 결국 충전과 방전을 적절한 시기에 원하는 속도로 하도록 저항을 잘 연결하는 것이라 생각하는데요. 충전의 경우, DC 전압과 연결한 닫힘 회로가 필요하고 방전의 경우 DC 전압이 유입되지 않는 상황에서 어떤 식으로든 닫힘 회로가 필요합니다.

문제는, DC 전원 하에서 충전과 방전을 단일 폐회로에서 하는 것은 불가능하기 때문에 자연스럽게 병렬 회로를 비롯해 복잡한 구성을 가져갈 수밖에 없습니다. 아마도 그래서 더 커패시터가 연결된 회로를 이해하는 것이 어려울지도 모르겠습니다.




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]





[최초 등록일: ]
[최종 수정일: 8/18/2018 ]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer@outlook.com

비밀번호

댓글 쓴 사람
 




1  2  3  4  5  6  [7]  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
11856정성태3/25/2019562VS.NET IDE: 134. 마이크로소프트의 CoreCLR 프로파일러 리눅스 예제를 Visual Studio F5 원격 디버깅하는 방법 [1]파일 다운로드1
11855정성태3/25/2019625개발 환경 구성: 436. 페이스북 HTTPS 인증을 localhost에서 테스트하는 방법
11854정성태3/25/2019427VS.NET IDE: 133. IIS Express로 호스팅하는 사이트를 https로 접근하는 방법
11853정성태3/24/2019536개발 환경 구성: 435. 존재하지 않는 IP 주소에 대한 Dns.GetHostByAddress/gethostbyaddr/GetNameInfoW 실행이 느리다면? - 두 번째 이야기
11852정성태3/20/2019631개발 환경 구성: 434. 존재하지 않는 IP 주소에 대한 Dns.GetHostByAddress/gethostbyaddr/GetNameInfoW 실행이 느리다면?파일 다운로드1
11851정성태3/19/2019575Linux: 8. C# - 리눅스 환경에서 DllImport 대신 라이브러리 동적 로드 처리
11850정성태3/18/2019579.NET Framework: 813. C# async 메서드에서 out/ref/in 유형의 인자를 사용하지 못하는 이유
11849정성태3/18/2019680.NET Framework: 812. pscp.exe 기능을 C#으로 제어하는 방법파일 다운로드1
11848정성태3/17/2019472스크립트: 14. 윈도우 CMD - 파일이 변경된 경우 파일명을 변경해 복사하고 싶다면?
11847정성태3/17/2019560Linux: 7. 리눅스 C/C++ - 공유 라이브러리 동적 로딩 후 export 함수 사용 방법파일 다운로드1
11846정성태3/15/2019627Linux: 6. getenv, setenv가 언어/운영체제마다 호환이 안 되는 문제
11845정성태3/15/2019714Linux: 5. Linux 응용 프로그램의 (C++) so 의존성 줄이기(ReleaseMinDependency) [3]
11844정성태5/22/2019706개발 환경 구성: 434. Visual Studio 2019 - 리눅스 프로젝트를 이용한 공유/실행(so/out) 프로그램 개발 환경 설정파일 다운로드1
11843정성태3/14/2019407기타: 75. MSDN 웹 사이트를 기본으로 영문 페이지로 열고 싶다면?
11842정성태5/3/2019522개발 환경 구성: 433. 마이크로소프트의 CoreCLR 프로파일러 예제를 Visual Studio CMake로 빌드하는 방법 [1]파일 다운로드1
11841정성태3/13/2019383VS.NET IDE: 132. Visual Studio 2019 - CMake의 컴파일러를 기본 g++에서 clang++로 변경
11840정성태3/13/2019380오류 유형: 526. 윈도우 10 Ubuntu App 환경에서는 USB 외장 하드 접근 불가
11839정성태3/12/2019621디버깅 기술: 124. .NET Core 웹 앱을 호스팅하는 Azure App Services의 프로세스 메모리 덤프 및 windbg 분석 개요 [1]
11838정성태5/9/20191106.NET Framework: 811. (번역글) .NET Internals Cookbook Part 1 - Exceptions, filters and corrupted processes [1]파일 다운로드1
11837정성태7/5/20192174기타: 74. 도서: 시작하세요! C# 7.3 프로그래밍 [4]
11836정성태3/5/2019722오류 유형: 525. Visual Studio 2019 Preview 4/RC - C# 8.0 Missing compiler required member 'System.Range..ctor' [1]
11835정성태3/5/2019684.NET Framework: 810. C# 8.0의 Index/Range 연산자를 .NET Framework에서 사용하는 방법 및 비동기 스트림의 컴파일 방법파일 다운로드1
11834정성태3/4/2019579개발 환경 구성: 432. Visual Studio 없이 최신 C# (8.0) 컴파일러를 사용하는 방법
11833정성태5/14/2019485개발 환경 구성: 431. Visual Studio 2019 - CMake를 이용한 공유/실행(so/out) 리눅스 프로젝트 설정파일 다운로드1
11832정성태3/4/2019484오류 유형: 524. Visual Studio CMake - rsync: connection unexpectedly closed
11831정성태3/4/2019383오류 유형: 523. Visual Studio 2019 - 새 창으로 뜬 윈도우를 닫을 때 비정상 종료
1  2  3  4  5  6  [7]  8  9  10  11  12  13  14  15  ...