Microsoft MVP성태의 닷넷 이야기
사물인터넷: 35. 병렬 회로에서의 커패시터 [링크 복사], [링크+제목 복사],
조회: 17281
글쓴 사람
정성태 (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

비밀번호

댓글 작성자
 




... 121  122  123  124  125  126  127  128  129  130  [131]  132  133  134  135  ...
NoWriterDateCnt.TitleFile(s)
1780정성태10/15/201424173오류 유형: 249. The application-specific permission settings do not grant Local Activation permission for the COM Server application with CLSID
1779정성태10/15/201419698오류 유형: 248. Active Directory에서 OU가 지워지지 않는 경우
1778정성태10/10/201418152오류 유형: 247. The Netlogon service could not create server share C:\Windows\SYSVOL\sysvol\[도메인명]\SCRIPTS.
1777정성태10/10/201421234오류 유형: 246. The processing of Group Policy failed. Windows attempted to read the file \\[도메인]\sysvol\[도메인]\Policies\{...GUID...}\gpt.ini
1776정성태10/10/201418286오류 유형: 245. 이벤트 로그 - Name resolution for the name _ldap._tcp.dc._msdcs.[도메인명]. timed out after none of the configured DNS servers responded.
1775정성태10/9/201419407오류 유형: 244. Visual Studio 디버깅 (2) - Unable to break execution. This process is not currently executing the type of code that you selected to debug.
1774정성태10/9/201426614개발 환경 구성: 246. IIS 작업자 프로세스의 20분 자동 재생(Recycle)을 끄는 방법
1773정성태10/8/201429774.NET Framework: 471. 웹 브라우저로 다운로드가 되는 파일을 왜 C# 코드로 하면 안되는 걸까요? [1]
1772정성태10/3/201418566.NET Framework: 470. C# 3.0의 기본 인자(default parameter)가 .NET 1.1/2.0에서도 실행될까? [3]
1771정성태10/2/201428059개발 환경 구성: 245. 실행된 프로세스(EXE)의 명령행 인자를 확인하고 싶다면 - Sysmon [4]
1770정성태10/2/201421683개발 환경 구성: 244. 매크로 정의를 이용해 파일 하나로 C++과 C#에서 공유하는 방법 [1]파일 다운로드1
1769정성태10/1/201424105개발 환경 구성: 243. Scala 개발 환경 구성(JVM, 닷넷) [1]
1768정성태10/1/201419529개발 환경 구성: 242. 배치 파일에서 Thread.Sleep 효과를 주는 방법 [5]
1767정성태10/1/201424628VS.NET IDE: 94. Visual Studio 2012/2013에서의 매크로 구현 - Visual Commander [2]
1766정성태10/1/201422476개발 환경 구성: 241. 책 "프로그래밍 클로저: Lisp"을 읽고 나서. [1]
1765정성태9/30/201426047.NET Framework: 469. Unity3d에서 transform을 변수에 할당해 사용하는 특별한 이유가 있을까요?
1764정성태9/30/201422283오류 유형: 243. 파일 삭제가 안 되는 경우 - The action can't be comleted because the file is open in System
1763정성태9/30/201423848.NET Framework: 468. PDB 파일을 연동해 소스 코드 라인 정보를 알아내는 방법파일 다운로드1
1762정성태9/30/201424547.NET Framework: 467. 닷넷에서 EIP/RIP 레지스터 값을 구하는 방법 [1]파일 다운로드1
1761정성태9/29/201421566.NET Framework: 466. 윈도우 운영체제의 보안 그룹 이름 및 설명 문자열을 바꾸는 방법파일 다운로드1
1760정성태9/28/201419828.NET Framework: 465. ICorProfilerInfo::GetILToNativeMapping 메서드가 0x80131358을 반환하는 경우
1759정성태9/27/201430975개발 환경 구성: 240. Visual C++ / x64 환경에서 inline-assembly를 매크로 어셈블리로 대체하는 방법파일 다운로드1
1758정성태9/23/201437877개발 환경 구성: 239. 원격 데스크톱 접속(RDP)을 기존의 콘솔 모드처럼 사용하는 방법 [1]
1757정성태9/23/201418400오류 유형: 242. Lync로 모임 참여 시 소리만 들리지 않는 경우 - 두 번째 이야기
1756정성태9/23/201427404기타: 48. NVidia 제품의 과다한 디스크 사용 [2]
1755정성태9/22/201434200오류 유형: 241. Unity Web Player를 설치해도 여전히 설치하라는 화면이 나오는 경우 [4]
... 121  122  123  124  125  126  127  128  129  130  [131]  132  133  134  135  ...