Microsoft MVP성태의 닷넷 이야기
사물인터넷: 35. 병렬 회로에서의 커패시터 [링크 복사], [링크+제목 복사],
조회: 11201
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일

병렬 회로에서의 커패시터

커패시터는 (시간이 주어진다면) 입력 전압만큼 충전이 됩니다. 예를 들어, 다음의 회로를 보면,

capacitor_parallel_1.png

회로 전압이 8.73V 일 때, C1도 8.73V만큼 충전이 됩니다. 그리고 다음과 같이 병렬 회로를 구성해도,

capacitor_parallel_2.png

8.61V 전압으로 약간 내려가긴 했지만 금방 충전이 됩니다.

하지만 위의 회로에서 다음과 같이 저항을 하나 추가하면,

capacitor_parallel_3.png

(R3와 Battery 구간의 전류는 4.36mA) 이젠 C1에 4.31V 정도만 충전이 됩니다. 대략, R3와 R1이 50:50으로 전압을 나눠 갖은 정도입니다. 조금 생각해 보면 이해가 됩니다. 원래는 R1 || R2의 구간이 병렬 회로이기 때문에 500Ω 정도의 저항이 있을 것이므로 R3 : (R1 || R2) 구간의 전압은 1K:500 정도로 나뉘어야 됩니다. 즉, 8.73V 입력 전압일 때,

[R1 || R2 전압]
1500:500 = 8.73:x
x = 2.91V

[R3 전압]
1500:1000 = 8.73:x
x = 5.82V

이렇게 전압 배분이 되어야 합니다. 하지만, 일단 전원이 인가되면 C1이 충전될수록 점점 더 저항이 올라가는 효과가 발생합니다. 그래서 R1 || R2 병렬 회로의 합성 저항값이 올라가게 되고 이 때문에 2.91V를 넘어 전압을 받게 됩니다. 하지만 병렬 회로의 합성 저항은 아무리 커야 낮은 쪽 저항의 값에 수렴하게 됩니다. 가령 합성 저항의 공식에 위의 회로에서 (R1 || R2)의 합성 저항이 1K가 되도록 만들려면,

1000 = (1000 * x) / (1000 + x)
1000 * (1000 + x) = 1000x
1000 * 1000 + 1000x = 1000x
1000 * 1000 ≠ 0 // 합성 저항이 1K로는 정의할 수 없음.

999 = (1000 * x) / (1000 + x)
999 * (1000 + x) = 1000x
999 * 1000 + 999x = 1000x
999 * 1000 = x
999000 = x         // 합성 저항을 500에서 999로 끌어올리는데 1MΩ 정도의 저항이 필요

그러니까, (1K || 1K) 병렬 회로에서의 합성 저항이 1K가 되려면 C1의 저항이 무한대가 되는 시점(다시 말해 단선이나 다름없는 시점)이고, 그제서야 전체적으로는 직렬 회로처럼 되어 1K:1K 비율의 전압 및 저항으로 나뉘게 되고 결국 C1에 충전할 수 있는 전압의 양은 1/2 정도가 되는 것입니다.




그럼 다음과 같이 LED를 하나 추가해 보면 어떻게 될까요?

capacitor_parallel_4.png

측정해 보면 LED에 2.496V의 전압이 있습니다. 따라서 전체 8.72V에서 2.496V를 제외한 6.224V를 절반으로 나눈 3.112V가 충전될 것입니다. 실제로 측정해 보니 3.083V가 나왔습니다.




또는 이런 식으로 연결하면 어떻게 될까요?

capacitor_parallel_5.png

그럼 (극이 없는) ceramic capacitor는 S1 스위치가 눌린 경우 왼쪽을 양(+) 극을 갖는 충전 상태가 됩니다. 그리곤 S1 스위치를 열면 C1 - R1 - R2의 폐회로가 있기 때문에,

1KΩ = 1000Ω
2.2uF = 0.0000022F

TC = R * C

TC = 2000 * 0.0000022 = 0.0044초

순식간에 방전됩니다. 반면 S2 스위치를 닫는 경우에는 오른쪽을 양(+) 극을 갖는 충전 상태가 되고 S2 스위치를 열면 C1 - R2 - R1의 폐회로가 있기 때문에 마찬가지로 빠르게 방전됩니다.




위의 회로에서 "R2"만 470KΩ으로 저항을 바꿔보겠습니다.

capacitor_parallel_6.png

S1을 누르면 R1을 경유해 충전되므로 1KΩ 저항에 따른 시상수 함숫값으로 충전이 빠르게 이뤄지지만 스위치를 떼었을 때는 (1K + 470K)에 해당하는 시상수 함숫값이 나오기 때문에 방전은 느리게 이뤄집니다.

반면, S2를 누른 경우에는 R2를 경유해 충전되므로 470K 저항에 따른 시상수 함숫값이 나와 충전이 느리게 이뤄지고 방전 시에도 +1K가 더해져 약간 더 느린 속도로 진행합니다.

S1의 On/Off
    C1 - 고속 충전, 저속 방전

S2의 On/Off
    C1 - 저속 충전, 저속 방전

그렇다면, 한 쪽 스위치(예를 들어 S1 스위치를 닫아 충전한 다음, S1 스위치)를 열어 저속 방전 시에 다른 쪽 스위치(예를 들어 S2 스위치)를 누르면 어떻게 될까요? 그럼 고속 방전이 이뤄지는데 아마도 방전 방향과 같게 전류도 흐르므로 속도를 높여주는 것 같습니다.

그래도 또 하나 테스트할 것이 있습니다. 저 상황에서 S1을 누르면 고속 충전이 되는데 그 눌린 상태에서 S2를 누르면 어떻게 될까요? S1을 누르면 C1 왼쪽이 양(+) 극을 띠고 고속 충전된 상태에서 S2가 함께 눌리면 C1으로의 저항값이 무한대이기 때문에 R1으로 흐르던 전류는 S2로 곧바로 흘러 버립니다. C1은 R1으로부터 유입되던 전류가 끊겨 버려 방전을 하기 시작하는데 C1 - S2 - S1으로의 폐회로가 단락되기 때문에 순간 방전을 하게 됩니다. 재미있게도 R2를 통한 충전이 발생하지는 않는다는 점입니다. 아마도 R2에서 S1으로의 경로가 GND로 접지되기 때문에 C1으로의 전류가 흐르지 않는 것 같습니다. 즉, C1은 말 그대로 0V의 상태로 충전도 방전도 하지 않는 상태로 빠집니다. (계측기로 C1의 왼쪽에 +, 오른쪽에 - 탐침을 두고 측정해 보면 전압이 0.008V 나옵니다.)

참고로, S2를 누르고 S1을 눌러도 같은 상태로 빠지며 C1의 전압은 동일하게 0.008V에서 멈춥니다.




또 하나 해볼까요? 다음과 같이 트랜지스터를 넣어두면 어떻게 될까요?

capacitor_parallel_7.png

스위치의 상태에 따른 C1의 전압은 다음과 같습니다.

+/-: 8.73V

계측기 탐침 [+]: C1 [Left]
계측기 탐침 [-]: C1 [Right]

[계측기를 C1에 병렬연결했으므로 방전 시 영향이 있음]

S1 ON: 8.03V 고속 충전 (1K 저항과 병렬로 베이스-이미터 연결)
S1 OFF: 저속 방전 (R1 - R2 - C1의 연결로 470K 저항의 영향)

S2 ON: -8.17V 저속 충전 (R2 - C1의 연결로 470K 저항의 영향)
S2 OFF: 저속 방전 (R2 - R1 - C1의 연결로 470K 저항의 영향)

S1 ON + S2 ON인 경우 C1의 전압: -0.628V

참고로 R3의 경우 방전 시에 베이스에서 컬렉터로 전류가 흐르지는 못하므로 아무런 영향을 주지 않습니다.

그렇다면 트랜지스터의 상태는 S1, S2의 열고 닫힘에 어떻게 반응할까요?

우선, S1이 닫히면 배터리 양(+) 극 => R1 => C1 => Q1 Base => Q1 Emitter로의 경로가 개방되므로 스위치가 켜집니다. 하지만, 곧 C1이 충전되면서 저항이 증가해 R1의 전압은 0V가 되고 C1은 8.01V까지 상승합니다. 그래도 Q1은 스위치가 켜진 상태를 유지하는데 R2로부터의 전류 유입이 있기 때문입니다. 이미터가 GND에 곧바로 연결되어 있으므로 Base -> Emitter의 전압은 운영 전압인 0.67V 정도를 S1이 닫혀 있는 동안 유지합니다.

반면 S1이 열리고, S2만 닫히면 어떻게 될까요? 이런 경우에는 S1 스위치가 닫혀 있기 때문에 Emitter로의 경로가 끊어져 있으므로 베이스로 전류가 흐르지 않게 되어 당연히 Q1 스위치는 언제나 꺼져 있게 됩니다.

그렇다면 S1이 닫힌 상태에서 S2를 닫으면 어떻게 될까요? S1이 닫히면서 Q1의 Base => Emitter는 연결되고, 이 상태에서 S2가 닫히면 C1의 왼쪽이 GND와 바로 연결되면서 R2로부터 전류가 잠시 흐르게 되고 C1 역시 방전이 됩니다. 따라서 잠깐 음(-) 전압 상태로 바뀌었다가 (저속 충전에 의해) C1이 충전되면서 저항이 커지게 되고 이내 R2의 전류 흐름은 Q1의 베이스로 향하게 됩니다. 결국 잠시 스위치가 꺼졌다가 다시 열리게 됩니다.

이 상태를 이미터에 LED를 연결하면 눈으로 확인할 수 있습니다. S1을 닫아 LED 불이 켜진 상태에서 S2를 닫으면 잠시 LED가 꺼졌다가 잠시 후 다시 밝아집니다.

(첨부 파일은 이 글의 그림에 사용된 fzz 원본입니다.)




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







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

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

비밀번호

댓글 작성자
 




... 61  62  63  64  65  66  67  68  69  70  71  [72]  73  74  75  ...
NoWriterDateCnt.TitleFile(s)
11845정성태3/15/201914282Linux: 5. Linux 응용 프로그램의 (C++) so 의존성 줄이기(ReleaseMinDependency) [3]
11844정성태3/14/201915112개발 환경 구성: 434. Visual Studio 2019 - 리눅스 프로젝트를 이용한 공유/실행(so/out) 프로그램 개발 환경 설정 [1]파일 다운로드1
11843정성태3/14/201910857기타: 75. MSDN 웹 사이트를 기본으로 영문 페이지로 열고 싶다면?
11842정성태3/13/201910267개발 환경 구성: 433. 마이크로소프트의 CoreCLR 프로파일러 예제를 Visual Studio CMake로 빌드하는 방법 [1]파일 다운로드1
11841정성태3/13/201910230VS.NET IDE: 132. Visual Studio 2019 - CMake의 컴파일러를 기본 g++에서 clang++로 변경
11840정성태3/13/201911335오류 유형: 526. 윈도우 10 Ubuntu App 환경에서는 USB 외장 하드 접근 불가
11839정성태3/12/201914106디버깅 기술: 124. .NET Core 웹 앱을 호스팅하는 Azure App Services의 프로세스 메모리 덤프 및 windbg 분석 개요 [3]
11838정성태3/7/201916851.NET Framework: 811. (번역글) .NET Internals Cookbook Part 1 - Exceptions, filters and corrupted processes [1]파일 다운로드1
11837정성태3/6/201926569기타: 74. 도서: 시작하세요! C# 7.3 프로그래밍 [10]
11836정성태3/5/201914409오류 유형: 525. Visual Studio 2019 Preview 4/RC - C# 8.0 Missing compiler required member 'System.Range..ctor' [1]
11835정성태3/5/201914181.NET Framework: 810. C# 8.0의 Index/Range 연산자를 .NET Framework에서 사용하는 방법 및 비동기 스트림의 컴파일 방법 [3]파일 다운로드1
11834정성태3/4/201913070개발 환경 구성: 432. Visual Studio 없이 최신 C# (8.0) 컴파일러를 사용하는 방법
11833정성태3/4/201913833개발 환경 구성: 431. Visual Studio 2019 - CMake를 이용한 공유/실행(so/out) 리눅스 프로젝트 설정파일 다운로드1
11832정성태3/4/201910853오류 유형: 524. Visual Studio CMake - rsync: connection unexpectedly closed
11831정성태3/4/201910452오류 유형: 523. Visual Studio 2019 - 새 창으로 뜬 윈도우를 닫을 때 비정상 종료
11830정성태2/26/201910243오류 유형: 522. 이벤트 로그 - Error opening event log file State. Log will not be processed. Return code from OpenEventLog is 87.
11829정성태2/26/201912142개발 환경 구성: 430. 마이크로소프트의 CoreCLR 프로파일러 예제 빌드 방법 - 리눅스 환경 [1]
11828정성태2/26/201918549개발 환경 구성: 429. Component Services 관리자의 RuntimeBroker 설정이 2개 있는 경우 [8]
11827정성태2/26/201912456오류 유형: 521. Visual Studio - Could not start the 'rsync' command on the remote host, please install it using your system package manager.
11826정성태2/26/201912342오류 유형: 520. 우분투에 .NET Core SDK 설치 시 패키지 의존성 오류
11825정성태2/25/201917205개발 환경 구성: 428. Visual Studio 2019 - CMake를 이용한 리눅스 빌드 환경 설정 [1]
11824정성태2/25/201912001오류 유형: 519. The SNMP Service encountered an error while accessing the registry key SYSTEM\CurrentControlSet\Services\SNMP\Parameters\TrapConfiguration. [1]
11823정성태2/21/201913500오류 유형: 518. IIS 관리 콘솔이 뜨지 않는 문제
11822정성태2/20/201911632오류 유형: 517. docker에 설치한 MongoDB 서버로 연결이 안 되는 경우
11821정성태2/20/201912085오류 유형: 516. Visual Studio 2019 - This extension uses deprecated APIs and is at risk of not functioning in a future VS update. [1]
11820정성태2/20/201915230오류 유형: 515. 윈도우 10 1809 업데이트 후 "User Profiles Service" 1534 경고 발생
... 61  62  63  64  65  66  67  68  69  70  71  [72]  73  74  75  ...