the art of electronics + learning the art of electronics 2章 Bipolar transistor

2.1 introduction

 トランジスタは最も大事なactive component

入力の信号をより電力を持った形で出力する ただし電力は追加のソースから来る

トランジスタをよく理解することはICだけで回路を作るとしても、ICの入力と出力の特性の理解は、ICを回路の他の部分につなぐ時に必要。また、トランジスタ自体が、そういった回路のinterfacingに活躍。あと適切なICがなかったら作るしか無い。

トランジスタの理解は楽しい

 

BJTをやる

 

この本はhパラメータとトランジスタの等価回路をつかってBJTを取り扱わない

 

2.1.1 first transistor model: current amplifier

bipolar transistorは3端子

Bに小さな電流が流れた時にCとEにもっと大きな電流流れる

npnとpnpがある

npnの特性がある時、pnpでは全て極性が逆になっている

 

ルール1 polarity CはEよりずっとpositive

ルール2 junctions  B-EとB-C間はダイオードのように振る舞う。Bに流れる電流はCとEの間に流れている電流をコントロールする。普通 B-Eは順電圧 B-Cは逆電圧

ルール3 maximum rating Ic Ib Vce Vbeに定格がある 消費される電力IcVceにも定格がある 温度にも気をつける

ルール4 current amplifier ルール1−3に従っている時 Ic = hfe Ib      Ib = β Ib

βはカレントゲイン

 

ルール4ががトランジスタの有用性。

大切な警告:βは、良いトランジスタのパラーメータではない。かなり敏感に変化する。Ic Vce 温度によって。βの特定の値に頼る回路は良い回路ではない

 

ダイオードだと解釈したとして、電圧降下が0.6-0.8Vぐらいなので、電流が大量に流れたりするのでルール2を守るVb = Ve + 0.6 (Vb = Ve+Vbe)

Ic は Vcの変化に対して鈍感

 

2.2 Some basic transistor circuits

 2.2.1 transistor switch

 トランジスタのスイッチングはCE間に電流が流れているか流れていないか(エミッタフォロワ) saturation or OFF

 気温が下がると抵抗値は下がる

 ベース電流をいっぱい流すことは図2.5のlampの抵抗値が下がった時に駄目になったりするから重要

 ベースからGNDに十分大きい抵抗(ONの時にそっちに電流があんまり流れないような値の抵抗)をつなぐとmake sure the base is at ground with the switch open

 

 

 

 

C.Pulse generator 1

exercise2.2

 

R3での電圧降下 + Q2のVce = 5 になっている

R3での電圧降下が4.4Vになるまでの時間、パルスはONになってそう

 

 

Vceが0.6以上になるまでQ2のベースに電流は流れないと考える。

R3とCが直列につながっていて5Vの定電圧源につながっているとしてその回路に流れる電流は、RC直列回路の電流の式で計算すると

なので76μ秒ぐらいになると思われる?

https://electronics.stackexchange.com/questions/255469/pulse-generator-i-art-of-electronics

 

コンデンサにかかっている電圧は急に変化しない

 

 

 

シュミットトリガー

入力が0Vの時 ①

入力が5Vの時 ②


①ー>②

ONの時Vbeが0.6V必要だが、R9にかかっている電圧のせいで

Q4の電位は0.8V必要

 

②ー>①

ONの時Vbeが0.6V必要だが、R9にかかっている電圧のせいで

Q4の電位は0.7V必要

 

ヒステリシス性

 

詳しい人の解説

「シュミットトリガ回路」の解説(1) - しなぷすのハード製作記 (synapse.kyoto)

 

エミッタフォロワ

 ・Zin<<Zout

 ・電圧ゲイン1 電圧ゲインない 

 ・stiff?

 ・インピーダンスが変化する場合に有用

 ・電流ゲインある

 ・パワーゲインある

 



エミッタフォロワの入力抵抗と入力インピーダンス

 

ΔIe

ΔIb

ΔVb

ΔVe

 

入力抵抗 = ΔVb/ΔIb

 

Vbの変化とVeの変化は同じ

 

rin = (β+1)R

Such a "small-signal" analysis is used when hte variations represent a possible signal ??

Zin = (β+1)Zload

 

出力インピーダンス

 

bias

バイアスをかけて動作点をずらす

 

R1R2/(R1+R2)<<βRe

になるようにする。

ー>分圧の部分に流れる電流>ベースに流れる電流 になるように

 

 

Emitter follower design example ???

 Vcc=15 

  入力の信号が20~20kHz

 (Veの電圧の変化が0~15Vの範囲に収まるように動作点を設定したときに、

 電圧が動作点の時にエミッタに流れている電流が1mAにする?)

 

 

 

 Vcc

 STEP1 Veを選ぶ。15*0.5=7.5V

STEP2 Reを選ぶ。7.5Vの時に1mAよって7.5kΩ

STEP3 R1とR2を選ぶ Veは7.5+0.6V.15Vが分圧されたときにR2にかかっている電圧が8.1Vになるように選ぶ。さらに、R1とR2を並列に見た時の合成抵抗がReよりも

 

 

common emitter amp

gain = vout / vin = -Rc / Re

ebers moll model

トランジスタのルールのルール4を修整する

 

ルール1 polarity CはEよりずっとpositive

ルール2 junctions  B-EとB-C間はダイオードのように振る舞う。Bに流れる電流はCとEの間に流れている電流をコントロールする。普通 B-Eは順電圧 B-Cは逆電圧

ルール3 maximum rating Ic Ib Vce Vbeに定格がある 消費される電力IcVceにも定格がある 温度にも気をつける

ルール4 current amplifier ルール1−3に従っている時 Ic = hfe Ib      Ib = β Ib

newルール4 ルール1ー3に従っているとき

室温ではkt/q = 25.3mV

qは電荷

kはボルツマン定数

Tは絶対温度

Is(t)は飽和時の電流??

 

 

A.steepness of the diode curve

Icが10倍になると、V_BEはどのくらい増えるか?

 ー>58.2mV

base-emitter間の電圧は、コレクタ電流が10倍になると、約60mV増える

B.small signal impedance looking int the emitter, re for the base held at a fixed voltage

C.The Tempetature Dependency OF VBE

 Is(T)の温度による変化は非常に強力

V_BE(at constant I_C)は -2.1mV/℃

I_C(at constant V_BE)は9%/℃上昇

 

D.Early Effect

V_BEはV_CEの変化によってわずかに変化する

 

エミッタ接地の時に、エミッタに抵抗を入れるべき理由

 

the art of electronics + learning the art of electronics

この本を読むと電気回路のデザインができるってまえがきに書いてた

 

1.2 ”電圧”とは 一個の正に帯電した何かを、負の点(lower potential)から正の点(higher potential ) に動かすために必要なエネルギーのこと。これは、一個の正に帯電した何かが

higher potential から lower potential に移動する時に放出されるエネルギーという意味でもある。

  ”1Jの仕事がなされた”とは、1クーロンの電荷を、1Vのpotentialの差がある間を動かすときの仕事

  ”電流”とは 1クーロンの電荷が1秒間に流れた(ある点を?)

     伝統的には正の点から負の点に向かって電流は流れると考えられていたが実際の電子の流れは逆らしい

 

  大事 volates are applied across things

               current through a something.

         

       オシロスコープを使うと電圧を、電圧を時間の関数として見れる

 

電圧と電流のルール

 1.ある回路中の閉路において電圧の和は0 キルヒホッフの電圧則

 2.ある回路中の点において電流の和は0   

 3.ある回路中のデバイスにおいて消費されるpower(時間あたりのエネルギー)は

   P=VI (W)

           これは単に(energy/charge)*(charge/time)

   1(W)= 1(J/s)

パワーは熱になったりモーターを動かす何かになったりエネルギーになったりする。

熱の設計はシステムデザインで重要

 

1.2.2 

    R=V/I

 十分に太いワイヤーを使うと電圧降下を無視できるようになって、良いらしい

 直列と並列

exercise 1.1  (1)15k (2) (10/3)k

exercise 1.2  144wat

ex1.3             キルヒホッフの電圧則を使う?

ex1.4             並列のときの結果を利用して一個一個つなぐ?

 ビギナーは難しい代数やelectronicsの理解に持っていかれる傾向があるので直感的な説明がある

(色々書いてる)

もし抵抗値を1%下げたかったら、その抵抗の100倍の抵抗を並列につなぐと良い

R*100R/(R+100R)

同じ抵抗をNこ並列に繋いだら抵抗値が1/Nになる

 

伝承されてきた哲学が言うには、ビギナーは抵抗の値やその他の値をすぐ計算機を使って求めようとする.

これをやめたほうがいい理由

(A)回路の部品に精度があるから(抵抗値なら+ー5%とか,トランジスタなら2倍程度?)

(B)良い回路デザインであることの一つの指標は、完成した回路の、回路の部品の値の精度に対する鈍感さ?である(例外はある)

 

exer1.5 P >= V^2/R

             V <=sqrt(R*P)

             V <= sqrt(250)

             V <= 15.

             なので15ボルトで大丈夫

https://www.dogrow.net/elecronics/blog7/#:~:text=%E6%8A%B5%E6%8A%97%E3%81%AE%E5%AE%9A%E6%A0%BC%E9%9B%BB%E5%8A%9B%E3%81%A8,%E4%BF%9D%E8%A8%BC%E3%81%A7%E3%81%8D%E3%82%8B%E9%9B%BB%E5%8A%9B%E3%81%AE%E3%81%93%E3%81%A8%E3%80%82&text=%E3%81%93%E3%82%8C%E3%82%92%E8%B6%85%E3%81%88%E3%81%A6%E9%9B%BB%E5%8A%9B,%E3%81%A8%E3%81%84%E3%81%86%E5%88%B6%E9%99%90%E5%80%A4%E3%81%AE%E3%81%93%E3%81%A8%E3%80%82

exer1.6 

https://milesdai.github.io/TAoE3Solutions/data/taoe3-solutions.pdf

 伝達関数 H

 例えば 入力されてくる電圧を100倍して出力する回路があったら

H=100

 

分圧

R2/(R1+R2)

もしR1が負の抵抗値だったら増幅できるけど

(negative incremental resistance eg. トンネルダイオード

(true negative resistance eg. negative impedance converter 6.2.4で出てくる)

今は関係ないらしい

 

1.2.4

理想電圧源は 掛けたい電圧をVとするとI=V/Rの大きさの電流を流す

現実の電圧源も、抵抗が小さいときは、ほぼ理想電圧源

電圧源は開放(open)状態が好きで、短絡(short)状態を嫌う

 

理想電流源は、流したい電流をIとするとV=I/Rの大きさの電圧をかける

 

電流源は短絡状態が好きで、開放状態を嫌う

 

バッテリーは電圧源(電流源はアナログ的?には存在しない)

 

1.2.5

 

テブナンの定理

任意の2端子回路網は、2端子からみると電圧源と抵抗に置き換えれる

Vth = V(端子を開放した時に、端子にかかっている電圧)

Rth = Vth/I(端子を短絡したときに端子に流れる電流)

 

 

分圧する回路に適用すると(R1とR2が直列に繋がれて、両端にVinがかかる回路の図がある)

Vth = Vin(R2)/(R1+R2)

Rth = R1R2/(R1+R2)

http://www.remff.co.jp/2017/03/13/thevenin/

Rthはつまり出力インピーダンス

端子側から見た抵抗

端子側から見ると並列に見える

昔やったようなやらなかったような

 

exe1.10

(a)15V

(b)(a)よりVth = 15V

     Ith = 30/10k

     Rth = Vth/Ith = 5k

     15*(10k)/(5k+10k) = 10V

 (e)Rthにかかる電圧は15*(5k)/15k = 5

     10kにかかるでんあつは10

     Rthで消費される電力は5*5/5k = 5みりワット

      こうはならないらしい todo

     10kのところで消費されるのは10mW

  並列の反対側もおなじく10mW

     直列の部分は20*20/10 = 40mW

     30*30/15k = 60mW

 

この抵抗を用いた電圧変換は効率悪くてトランジスタとか使えばRthをすごく小さくできていいってことを2-4章でやるらしい。

an active power supplyとやらを使うと制御しやすい電圧が手に入るってことを9章でやるらしい

 

内部抵抗という概念はバッテリーと分圧だけでなくいろんなところででてくる

発振 増幅 センサーは内部抵抗という概念が出てくる

内部抵抗と同じぐらいの抵抗を回路につなぐことはすごく出力を減らす。

この望ましくない減少をcircuit loadingと呼ぶ

 

B.power transfer

exe1.11

  {P=V^2×(Rout)/ ( (Rout+R)^2)}

  微分して0になるところを見るとRout^2 = R^2

 多くの回路は内部抵抗よりload resistanceが大きくなるように設計されているらしい

 

1.2.6 小信号抵抗

 

IがVに比例しないことがある。

そういう場面では抵抗については議論しない。なぜならV/IはVに依存する。

そういう時はV-I曲線の傾きに注目。つまりdV と dI を考えてdV/dI

dV/dIはsmall-signal resistance, incremental resistance, dynamic resistanceとか呼ばれる。

色んな場面で抵抗を考えづらい時に代用される。

 

ツェナーダイオード

一定の電圧を作るのに使われる

 図1.15をみると、電流を増やしてもあんまり電圧が増えてない

dynamic resistanceという量を持っている

これを使うと

dV = dR * dI

で、電流が変化するとどのくらい電圧が変化するか分かる。

10mAで

dR = 10ohm

とすると、そこから電流が10%変化したとして

dV = 10mV

dV/V = 0.2%

電流が10%変化しても電圧が0.2%鹿変化してなくてすごい

 

図1.16の回路に対して

流れる電流は

I = (Vin - Vout)/R

dI = (dVin - dVout)/R

dVout = dR*dI = dR*(dVin - dVout)/R

 

dVout = (dR/(R+dR))*dVin

 

変化量だけみると、図1.16は分圧器

 

300ohmの抵抗と1N4733というダイオードを使って回路を組むと、

17mAの変化で0.12Vの電圧変化になる。

ダイオードのdynamic resistanceは流す電流に対して反比例になっている。

いいICを使うと、もっと小さいdynamic resistanceのがある。

 

1.3 signal

コンデンサの話になる

交流回路で使える

とりあえずオームの法則とかテブナンの定理は使える。

 

1.3.1

sinusoidal signals

V = Asin(2pift)

A:振幅

f:周波数

t:時間

sin波は、特定の線形システムの解になるので重要

線形システムは出力に線形性

sin波が入力された線形システムの応答もsin波になる。振幅とか周波数は変わるけども

他の周期関数だとこういう性質は出ない。

印加されたsin波の振幅が周波数の関数になる場合、これを周波数応答と呼ぶ。

2GHz以上になると、特別な伝送線路テクニックが必要になって大変。

 

 

1.3.2

root-mean-square amplitude

Vrms = (1/sqrt(2))*Amplitude

電力の計算に便利らしい。(力率だっけ?違ったっけ?)

 

A.decibels

  ふたつの電力を比べる場合

dB = 10log10(P2/P1)

  ふたつの信号の振幅を比べる場合

dB = 20log10(A2/A1)

 

なんかdBV dBm とかあるらしい わからない todo

 

exercise1.12

 

(a)

3dB = 10log10(P2/P1) 

0.3 = log10(P2/P1)

10^0.3 = P2/P1

P2/P1 = 2

V2/V1 = 1.41

(b)

10^(6dB/10) = P2/P1 = 4

10^(6dB/20) = V2/V1 = 2

 

(c)

 

10^(10dB/10) = P2/P1 = 10

10^(10dB/20) = V2/V1 = 3.1

 

(d)

10^(20dB/10) = P2/P1 = 100

10^(20dB/20) = V2/V1 = 10

 

 

1.13

  1: 10^(10/10) = 10

            10^(9/10) * 10^(1/10) = 10

             10^(1/10) = 1.25

           1-> 1.25

        2: 10^( 3/10) / 10^(1/10) = 2/1.25 = 1.6

           2->1.6

 

         ....

 

1.3.3 other signals

A.ramp 右肩上がり

   finite ramp

    peridodic ramp

 B. 三角波

C.noise

   一周毎に電力はおなじなノイズ?ー>band limited white Gaussian noise

D.矩形波

 

パルス ステップ スパイク

 

1.3.4 logic level

 定格できめられた電圧以上以下でLOW HIGHを1 0に対応付ける

この時正確な電圧の値は必要ない。

なんか多分マージン的なことが書いてある。

そういうの10−12章でやる

 

1.3.5 signal sources

 

テストの時はsignal sourcesほしい

signal generator, pulse generator, function generatorがある

A, signal generator

 sin波発生器 Aを変化させたりFを変化させたりする。

sweep generator 周波数をいっぱい変えれる?

frequency synthesizer 周波数を正確に変更できる

B, pulse generator

C, Function generator,

いろいろなsignal作れる。コントロールも細かくできる。

 

 

1.4 capacitors and ac circuits

 

DCだけの世界では必要のない素子であるcapacitor と inductorいらっしゃい

RとCapとLの3人組でpassive deviceのほとんどがコンプリート

Capは波形発生、フィルター、ブロッキング、バイパスとかに使われる。

いろいろな素子との組合せで色々おもしろくなる

Q=CV

C[F]のCapにVをかけると、片方の平板にQ[coulomb]、もう片方に-Qの電荷が貯まる。

C=8.85*10^-14*ε*A/D[F]

A:平板の面積

D:平板間の距離

ε:平板の間にある物質の誘電率

 

Capは周波数に依存する抵抗と考えることができる。

これを利用して周波数に依存する分圧器が作れる。

bypass coupling に使うのは簡単だが filtering, energy storage, resonant circuitに使うには、より深い理解が必要になる。例えば、理想的なキャパシタは、位相が90度違うので電力損失がない、とか。

 

カップリングってこういう感じなんだ

https://www.google.com/search?sxsrf=ALiCzsaEo31kSbFNXcqRRMoux-J6bqta3w:1656158719749&q=%E3%82%AB%E3%83%83%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%82%B3%E3%83%B3%E3%83%87%E3%83%B3%E3%82%B5%E3%81%AE%E7%9B%AE%E7%9A%84%E3%81%AF%EF%BC%9F&tbm=isch&source=iu&ictx=1&vet=1&fir=2CAgogDEmH9hOM%252CEc0wUF0UcZsMEM%252C_&usg=AI4_-kR3bObvZ9j4N3o117DU7dcvkKq2uQ&sa=X&ved=2ahUKEwjWyJWByMj4AhVYIzQIHam9AgIQ9QF6BAhUEAE&biw=1347&bih=654&dpr=0.9#imgrc=2CAgogDEmH9hOM

CapはDCではopen、ACではshortに見える。

 

電荷の時間変化は電流なので、

Q=CV

I = C*dV/dt

もし電圧を変化させたら電流が流れるし、電流が流れたら電圧が変化する。

 

キャパシタを充電するとエネルギーが貯まる

Uc = 1/2 * C * V^2

 

exer1.14

  dU = VIdt

       積分すると、上記式が確かに出てくる。

 1.2 ”電圧”とは 一個の正に帯電した何かを、負の点(lower potential)から正の点(higher potential ) に動かすために必要なエネルギーのこと。これは、一個の正に帯電した何かが

higher potential から lower potential に移動する時に放出されるエネルギーという意味でもある。

  ”1Jの仕事がなされた”とは、1クーロンの電荷を、1Vのpotentialの差がある間を動かすときの仕事

  ”電流”とは 1クーロンの電荷が1秒間に流れた(ある点を?)

よくわからない todo

 

並列

Ctotal = C1+C2+C3...

 

直列

Ctotal = 1/ ( ( 1 / C) + (1/C) ... )

 

exer1.15 todo わからない

https://www.geisya.or.jp/~mwm48961/electro/condenser2.htm

 

電流が流れた時、抵抗のときと違ってエネルギーが熱に変換されない。貯まる

 

充電したキャパシタに抵抗をつなぐと

CdV/dt = I = -V/R

V = A × e ^ ( -t/RC)

抵抗で消費される。

 

A.時定数

 図1.33の回路に対して、RCは時定数

Vout = Vf ( 1-e^ ( -t/RC ) )

 

t = RCloge ( Vf/(Vf-V ) )

 

exer1.16 RC(ln10-ln1.111) = RC2.2

 

 

exer1.17 

I1 = I2+Ic

式の形をRC回路のときと同じにすると

V( t )= Vin/2 * ( 1 - e^t/(5k * 0.1micro))

 

テブナン等価回路について素子が抵抗だけの回路を等価回路にする方法は理解できた... - Yahoo!知恵袋

ふむふむ 後にする

 

D. A circuit example:time-delay circuit

 

CMOSバッファーとRC回路で信号をdelayさせる

 

E. 

comparator

(a)ICである

(b)2つの入力の大小で出力が変わる

inverting non-inverting

 

図1.38 スイッチを押すと、C1に充電される。スイッチを放してもコンデンサとグランド間の電圧が高い間は出力がhighになる。どのくらいの時間の間高くなるかは時定数できまる。

SSR(solid state relay) triacとも呼ばれる。

入力と完全に離れていて電流いっぱい流れても大丈夫なリレー

図1.38において、R1を省いてもいいけど大きい過渡電流がながれて危険

 

多分コンパレータの出力は判定する部分を電圧が言ったり来たりする時にノイズが生まれてそれの対策を4章10章でやるって書いてる。

回路において、バイパスコンデンサいっぱい使う。

 

1.43 微分

 出力が入力の微分に比例する回路

Vout ∝dVin/dt

RCが十分小さいとdVout/dt << dVin/dt todo

Vout(t) =~ RCdVin(t)/dt

leading edges と trailing edgesを見つける時に使える。

周波数領域の話でRが小さすぎたらなんであかんのかとかやる。1.7.10

 

A.unintentional capacitive coupling

 微分器は、作ってなくても出てくる。ノイズ

なんか凄い有用そうなこと書いてるけどよくわからない

 

1.4.4 積分

V ( t ) = 1/RC ∫ Vin t(t) dt + const

opampとfeedbackを使うともっと良い積分器作れる

積分器は制御とかAD変換とか波形発生とかに使う

 

A.ramp generators

電流源にコンデンサをつなぐとramp generatorになる

I=C(dV/dt)

V(t) = (I/C)t

 

 

1.5 inductors and transformers

 

 V = L dI / dt

 1V 1H だと1秒間に1A流れる

U = 1/2 L I^2

コイルに電流が流れると磁場がコイルの軸の向きに発生する。その磁場の変化を妨げる方向に電圧を生む(レンツの法則

インダクタンスとは、コイル中を流れる磁場 / その磁場を発生させる電流 

 

 

exer1.19

  なんでLは巻数に比例するんだろうね todo 

 

L =~ (d^2) (n^2) / (18d + 40 l)  μH

d : コイルの直径

 l : コイルの長さ

(l > 0.4 d の時に大体正しい wheelers law)

 

コンデンサと同じようにコイルもIがVに比例しない

コイルに電流が流れると磁場の形でエネルギーが貯まる。

コンデンサの場合は電場の形で貯まる

 

コイルのポピュラーな芯の部分にはソレノイド、アイロン フェライト

形も色々ある

コイルはRFで色々使われる

コイルは真の意味でコンデンサの逆のデバイス

インピーダンスについて勉強するとその意味が明らかになる

 

V=LdI/dt の定義により平均電圧は0 todo

図1.52の回路で50:50の時間割合でスイッチングすると出力がVin / 2 になる ??

この回路は電力が無駄にならない

syncronous buck converter

 

1.52Bのようにスイッチの場所を変えると出力が2倍になる。これは分圧器ではできない

syncronous boost converter

9章でやる

 

1.5.2 トランス

トランスフォーマー2つのコイルをすごく近づけたもの

primary secondry

 

2つのコイルの巻数の比でそれぞれのコイルに流れる電流、電圧が変わる

 

パワートランスフォーマーは2つの重要な役割がある。

・AC電圧を変える

・2つの回路を隔離する。パワーラインという形でつなぐことで、線ではつながっていないけどつながっているようにする。

トランスフォーマーの関連でpower conversion 周波数の変換とか

高周波では特殊なコアのトランスが必要

 

 

1.6 Diodes and diode circuits

  キャパシタとインダクタについて時間領域で取り扱った。あとで周波数領域で取り扱う。

次はダイオードを取り扱う。最初の非線形素子。粋

1.6.1 Diodes

 これまで取り扱った回路は、入力の電圧を2倍すれば出力が2倍(電流も同様)

これまで取り扱ったものはpassive

対極がactive トランジスタとか。電力の流れを制御する

 

ダイオードは2端子受動非線形素子である。

 

anode ー> cathode

 

の ようになっている。

 

アノード側のほうがだいたい0.6Vぐらい高い。forward voltage drop

逆方向電流はすごく小さい スケールが違う

逆方向の電圧を考慮することは、考慮しない限りない(peak inverse voltage PIV グラフの左側ぐらい)

ダイオードに大きな逆方向電圧をかけることはそうない(zenerは例外)

ダイオードは理想的なone-way conductor の近似と捉えることができる。 I = C dV/dt でCがすごく小さい時的な?わからない

 

いろんな特性がある(電流の許容量 キャパシタンス 漏れ電流 reverse recovery time

 

ダイオードは抵抗をもたない オームの法則が通用しない

ダイオードがある回路ではテブナンの定理は使えない

 

1.6.2 rectification

整流子はac を dc にする。

正弦波を入力すると電圧が正のところだけ出力する回路が書いてあるhalf wave rectifier

負のところを正にして出力する回路も書いてある full-wave rectifier

ダイオードで起こる電圧降下のせいで0の付近のところだけちょっと出力できない

もし低電圧電源を作ろうとしたらこれがすごくクリティカル

 

1.6.3 power supplying filtering

出力をもっとDCに近くしたい

これのために出力のところにコンデンサを並列につなぐ

Rload * C >> 1 / f になるように

A. calulation of ripple voltage

 It is easy to calculate the approximate ripple voltage, particularly if it is small compared with the dc

Rloadはキャパシタにdischarge させる

Rloadに流れる電流はほとんど変化しないと考えると、

 

コンデンサの電圧の変化は

I  = C * dV / dt より

 

dV = ( I / C ) * dt

 

dt = 1 / f  ( full wave なら1/ ( 2 * f) ) を使うと

 

dV = Iload / ( f * C )

 

( こういったことを覚えるのではなくて導出できるようになれって書いてある。脳のメモリの無駄だから )

難しい四季を使えば厳密に計算できるが

( a ) 出力に繋がれているのが抵抗じゃないと適用できない

( b )  だいたいの電源は20%の誤差に対応するよう設計する

最悪ケースの部品の組み合わせに対して許容するようにする?

 

exer1.20 わからない todo

https://milesdai.github.io/TAoE3Solutions/data/taoe3-solutions.pdf

 

 

A.

 既製品でいいrectifierがある

 

B. わからん todo

exer1.21 todo

https://electronics.stackexchange.com/questions/280148/art-of-electronics-center-tapped-transformer-efficiency-and-current-question

C split supply

center-tappled full-wave circuit のバリエーション

プラスとマイナスに別れてて便利なバージョン

 

D. voltage multiplier

電圧2倍3倍4倍の回路

 粒子加速器とかイオナイザーとかレーザーとかに使えるらしい

 

1.6.5 regulator

 整流回路で使うキャパシタを大きくすればリップルの部分をちいさくできるけど

 キャパシタがでかくなる 値段が高くなる

 conduction angle(導通角?)がI^2 * Rの熱を生む(?)

 リップルを軽減してもリップルのようなものが他の原因からでることになる

  たとえば出力であるdcの電圧は入力のacの電圧に比例するが、入力のacの変化が   

   リップルを引き起こしたりする

  あとトランスフォーマーのもつfinite internal resistanceが、出力抵抗にながれる電流を変化させたりしてもリップルが生まれる

 

 ちょうどいいぐらいのリップルになるようにキャパシタの値を決める(DCの電圧の10%ぐらい)

そしてactive feedback circuitを使うと、内部抵抗を出力が安定するように変化させることで出力を安定させる

linear regulator dc power supplyと呼ばれる。

いろいろな回路に使われる。

1ドルぐらいで買える

short とかover-heatingに対応可能?

9章でやる

 

 

1.6.6 diode応用

 

A.signal rectifier

 これまでサイン波だけだったけどそれ以外だとどうなるんだろう

矩形波の起き上がり検知とかあった

0.6ボルトの電圧降下が起きるけど0.6ボルト以下だと検知できない

ショットキーダイオードと使うと電圧降下が0.25Vで住む

回路的な解決法として補償?の回路

メリットは

 ( a )調整の必要がない

 ( b )補償がほぼ完璧に動く

 ( c )温度の変化とかで変動してもいける

FETでもこのトリック使う。

B.diode gates

 under the general heading of logic

高い方の電圧を通す時に低いほうの電圧に影響しないようにする

バッテリーのバックアップに使われる

 

C.diode clamps

 出力を一定の範囲にするためにダイオードを使う

動作原理が理解できない

exer1.22 わからない todo

D.limiter

swingを抑える回路

https://electronics.stackexchange.com/questions/90833/what-exactly-is-signal-swing

 

出力が0.6V以内になる

オペアンプとかを使うとそのぐらいのレンジの電圧を扱うことになる

 

E.Diodes as nonlinear elements

ダイオードでは、温度が一定とすると

I ∝ e^(V)

が成り立つ。もっと詳しいことを2.3.1

Iが大きく変化してもVは大きく変化しない

0.6Vの電圧降下を無視したり温度変化に強くしたりしたい

図1.82 に cpmpensation

opampを理解しようとしたらこういったことの理解が必要

 

1.6.7 inductive loads and diode protection

 

コイルに電流が流れている時に急にスイッチをオープンにすると

コイルの電流を流し続けようとする作用によってオープンにした部分の電圧が

非常に高くなって危険

図1.84のようにすると良い

 これは回路の電流の遅れが大きくなる。そういうのがまずい応用に向かない(カメラのシャッター、ハイスピードアクチュエータ)

 適切な?( todo ) 抵抗を入れると良い

 

以上の対策は交流では不可。

スナバ回路をつかうと良い

 

スナバ回路の代替としてはbidirectional zener like voltage clamping element

TVS(transient voltage supressor

metal-oxide varistor

 

1.6.8 interlude. inductors as friends

コイルは怖いけどすごい

キャパシタを充電したいときにRをつなぐとエネルギーがそこで消費されるけど

コイルとダイオードを使うと損失無しで充電できる

しかも入力の2倍の電圧が出せるらしい

 

1.7 impedance and reactance

 ある周波数のサイン波が入力の線形回路の出力は、

同じ周波数のサイン波になる。(振幅と位相は違うかもしれない)

1周期のサイン波が入力された時に出力はどうなりますかー>周波数応答

図1.87はある周波数の音声が入力された時、出力の音声の大きさは周波数ごとにどのぐらいになるかの周波数応答。この図をみるとどこをフィルターで補正すればいいかわかる。

 

レジスターとキャパシタとインダクターを数学的に同時に扱うために

抵抗を一般化してインピーダンスを使う

インピーダンスは一般化された抵抗

インダクターとキャパシタ ( 位相が90度遅れるようなもの:reactive )

              ( 位相が同期されたもの : resistive )

 

一般的に、resistive なものとreactiveなもので構成された回路は

ある場所のVとIを考えると、VとIは位相について関係性があるー>複素数を使って表す

Z = R +jX

 

入力が複雑な波形だと、微分方程式とかフーリエ変換とかが必要になる

 

1.7.1 frequency analysis of reactive circuits

コンデンサにV ( t ) = V0 sin ( wt )

I ( t ) = C dV/dt = C w V0 cos ( wt )

 

だいたい I = V / ( 1 / wC )

 

位相の変化を後で考えることになるがそのとき複素数が出てくる

| V | / | I | = 1/ ( wC )

この量をリアクタンスと呼ぶ

周波数に依存する抵抗値と見ることもできる

 

A. RC lowpass filter ( approximate )

図1.90はローパスフィルタ

低周波を通して高周波をカットする

 

Vout / Vin = Xc / ( R + Xc )  = 1 / ( 1 + wRC ) ( approximate  )

周波数が高いとリアクタンスが高くなりブロック

 

pass か block かの分岐点になる周波数は

w0 = 1 / RC 

 

位相を無視した概算だが、十分に周波数が低いところと高いところではすごく正確に見積もれる

 

Vout / Vin = 1 / sqrt ( 2 ) の部分で概算と正確な値の差が大きい

 

B. RC highpass filter ( approximate )

 Vout / Vin = wRC /  ( 1 + wRC )     ( approximate )

 

C. blocking capacitor

 増幅器などで、ある周波数の範囲の信号は通して、直流はブロックしたいということがある。通したい範囲より分岐点の周波数が低いハイパスフィルターを使う。この使い方をブロッキングキャパシターと呼ぶ

例えばすべてのステレオオーディオはそれを持ってる。入力されてくる信号のDCレベルがどのくらいかわからないのでそれを交流成分のみにする用カップリングする

 

RとCの決め方

 オーディオではR=10k C=3.3μ

 出力に繋がれた回路は10kより大きい抵抗を持つ必要がある。Loading Effectを回避するために (どっかに書いてたような気がするtodo)

 フェーズシフトの影響がすごい小さいところでの調整の話なのでフェーズシフトの影響考えなくていい

 信号の歪みに関しては時定数が絡んだりするので時間領域で考えるのも必要

 

D. driving and loading RC filters

 ほぼ一般的に、出力からみたインピーダンス(内部抵抗)は小さいほうが良い(伝送線路、電流源を除く)

 

 ハイパスフィルター、ローパスフィルターの入力インピーダンス、出力インピーダンスを求めようとする。

 仮定1.入力インピーダンスについて考える時、出力ではすごく高いインピーダンスがあると考える。出力インピーダンスについて考える時、内部抵抗はすごく小さいと考える。

 仮定2.入力インピーダンスの最小値 出力インピーダンスの最大値を考える

 

exer1.23 上を示せ

 ローパスフィルター

 R+ 1 / wC

  入力インピーダンスの最小値

    R

  出力インピーダンスの最大値

    RC並列回路のインピーダンスを考えるとなんかそうなりそう わからない todo

 ハイパスフィルター

  入力インピーダンスの最小値

     R

  出力インピーダンスの最大値

     同上

 

exer.1.24 todo

1.72 Reactance of inductors

 Xl = wL

 キャパシタと逆になってる

直列に繋がれたLは直流と低周波をとおして高周波をカットすると考えることができる

RF回路ではチョークと言う名前でよく出てくる

 

1.73 Voltages and currents as complex numbers

 

 

  V0 cos( wt + f ) -> V0 * e ( jf ) = a + jb

 V0 e ( jf)             ->  ( e^ ( jf ) ) *  ( a + jb )  の実部はV0 cos ( wt + f )

Z = Z1 + Z2 ...

Z = 1 / ( ( 1 / Z1 ) + ( 1 / Z2 ) ... ) 

 

Zr = R

Zc = -j / ( wC )

Zl = jwL

 

 

exer1.25

 式を整理する

 

exer1.26 todo

 

1.7.6 Power in reactive circuits

   サイン波をキャパシターに掛けたとしたら、平均したらパワーは0

 

P = Re ( V  *I) = Re ( *V I  )

*:複素共役

数学において、複素共役(複素共軛、ふくそきょうやく、英: complex conjugate)とは、複素数の虚部を反数にした複素数をとる操作(写像)のことである。 複素数 z の共役複素数を記号で z で表す。

 

https://detail-infomation.com/difference-of-power/

 

力率の話 todo

exer1.28 todo

exer1.29 todo

 

1.7.7 voltage diviers generalized

 分圧器を複素数でで表すと

 Vout = Vin Z2 / ( Z1 + Z2 )

 

1.7.8 RC highpass filter

 

RCハイパスフィルターのベクトルの大きさ

 Vout = ( R / sqrt ( R ^ 2 + ( 1 / w^2 C^2 ) ) ) Vin 

 

 

 

 

 

 

 

1N DC Circuits

dRの考え方はいろいろな非線形素子に適用できて便利

VOMがもつ入力インピーダンスは大きい方が良い

出力インピーダンスと入力インピーダンスを考えて回路を部分ごとに独立に設計できるようにする.減衰

codeforcesの復習

 

println!は遅いので出力は以下のコードに

let out = std::io::stdout();
let mut out = std::io::BufWriter::new(out.lock());
 //writeln!(out, "{}", res.len()).ok();

https://codeforces.com/contest/1638/submission/146385378

Codeforces Round #780 (Div. 3)

F 数学

// n0 - n1 >= 0 & (n0-n1)%3 == 0 を少なくとも満たしていないといけないが、隣り合って居るやつしか変更できないという条件も考慮するとこれだけでは足りないと思いきやこの条件だけで行ける。 (n0-n1)/2が変更できる回数になる。

 

 

Codeforces Round #779 (Div. 2)

D xor binary_trie

//1〜nのxorを眺めると、上からx桁目までは等しいとして、x+1桁目が0と1になっているグループをそれぞれ眺めると、問題の制約化では一意に定まる。なので大きい方と小さい方に分けることをやっていくと行ける。binary_trieを持っているとすごく簡単になる。

E 集合と論理

//一番大きいやつは確定で勝ち。dp[x1][y1] = 1 で勝ちとして、 manhattan(x1, x2, y1, y2)>kのセルはdp[x2][y2] = 0. 

// P : dp[x1][y1] = 1 

// Q: manhattan(x1, x2, y1, y2)>k 

// R: dp[x2][y2] = 0

//  P&Q->R       !R -> !P or !Q 

//https://discord.com/channels/953223113603162112/

//で聞くと、dp[x1][y1] = 1の時は!Pではないので、!Rが成り立つためには!Qを満たす必要がある。

//なのでdp[x1][y1]=1 dp[x2][y2]=1 なら manhattan(x1, x2, y1, y2)<=k である。

//やはり上記で言われたとおり、3. 「すべて」や「ある」を含む命題の扱い方

//の時にややこしくなってる気がする

//やっぱちょっとわかんないかも

//dp[x1][y1]=1を満たす集合で考えるということにしておこう。

 

Educational Codeforces Round 125 (Rated for Div. 2)

D:dp 調和級数dp 良い 楽しい

 

Codeforces Global Round 19

 B dp 区間dp?

    // 区間数1の場合をとりあえず求めて、左側に区間を1個ずつ追加する。区間数1,2, 3..の順番で求める。 O(n^4)だが、定数倍が軽いので行ける。 全部バラバラにするのが最適解らしい

 D dp 

   // dp[i] = 現在aに属する要素の和がiになるような列の答えの最小値

 E sqrt double_pointer 難しい

   // 「数ごとの頻度」のヒストグラムを取ると、そのヒストグラムの横軸の長さは、数列の長さをnとするとsqrt(n)以下らしい どの部分か知らんけどdouble_pointerと言うらしい

 

Codeforces Round #771 (Div. 2)

 D 後ろから考える 難しい

 E 区間を分割、区間をマージはO(N)になる 遅延評価セグメント木 難しい

蟻本の復習

gcc -g a.c
a.out
gdb a.out

で、エラーが起こっている行がどこなのか知れる

http://www.math.tohoku.ac.jp/~akama/2006/debug.html

 

 

2-1

 部分和問題

  いろいろなやり方がありそう

 poj2386

       DFSの練習

   迷路の最短路

  BFSの練習

 

 

 

 

練習問題

 poj1979 M行N列の文字列が与えられる

     .が黒 #が赤  @がスタート地点で黒

     隣り合う黒を辿っていくことで到達できる黒の数を求めよ

    poj3009 M行N列の文字列が与えられる

     0がなにもない 1がブロック  2がスタート 3がゴール

     ある点からスタートした時、以下のルールで操作を行った時

     10手以内にゴールの上を横切るかゴールの上に止まるかどっちかが可能かどうか判定

     ・あるマスで止まっていた時、上下左右の内、一方向を選択して進み続ける。居る場所の目の前がブロックのマスになるとそこでストップする。目の前のブロックは消滅する。これが一手。この操作で、目の前がブロックであるような方向を選択することは出来ない

     ・場外はアウト

 

ABCの復習

001 pass

 

002 c pass

       d UnionFind木の動作の理解

 

003 b pass

       c xy座標上に点の集合があって、集合についてある点を中心に考える 三角形の面積

       d 組合せ ほうじょ原理 数えやすいパターンについて考える 難しい

 

004 pass

 

005 c 貪欲法 PriorityQue

       d pass

 

006 b そのままやる 行列累乗

       c 連立方程式

       d 挿入ソート セグ木

 

007 d 桁dp 

 

008 c 期待値 手計算 難しい

       d  2次元の区間dp 

 

009 c 文字列 辞書順 貪欲 難しい

       d 行列累乗

 

011 d 2次元のデータが与えられた時、それぞれの座標ごとに考える 確率のdp 難しい

 

013 d あみだくじと順列 あまりが一緒の時結果が同じ 辿り方がカタツムリみたいになるやつ

 

017 c 左からなめたやつと右からなめたやつを持っておく

       d セグ木+dp 

 

018 c マンハッタン距離と45度 2次元累積和

 

019 d 木の直径

 

020 d gcd(x, y)=1に着目する? 倍数 ほうじょ原理 難しい

   // i/gcd(i, k) => gcd(i, k)のパターンは多くない =>gcd(i, k)=1ということは、iはkと共通の約数を持たない=>素因数とほうじょ原理  gcd(i, k)=xとして、xの倍数の内、gcd(xの倍数, k) = xとなるものの和

 

022 d とつほう とつほうは座標をx倍すると面積がx倍になる 難しい

 

024 d 組合せの関係式 手計算 連立方程式 難しい

 

025 d 難しい

 

026 d 中間値の定理 2分探索

 

027 d 独立に考える 変化量を考える 難しい

 

029 d 桁dp

 

030 d 順列とループ あまりが一緒の時結果が同じ 

 

032 d ナップサック問題

 

033 d 難しい

 

034 d 難しい

 

036 d dp

 

037 d dp 

 

040 d グラフを構築しながらなんかする

 

041 d bitDP bitDPで、条件をマスクで表して高速化 トポロジカルソート

 

042 b 文字列の集合を辞書順に並べる ab<ba

       c 難しい

       d 禁止ゾーン付き二項係数 難しい

 

044 c dp 平均値とdp 特定の数を作るdp

       d 桁の性質 割り算が引き算になる場合 よく見るとパターンがそんなにない n/iの列挙 難しい 

 

046 c 難しい 何回見ても意味がわからん 解ける気がしない

 

048 d 難しい

 

049 d 2つの集合の共通集合 コーナーケース

 

050 d 難しい xorと足し算 桁dp 

 

051 d ワーシャルフロイド法

 

274

    c 正方形判定

  https://sugim48.hatenadiary.org/entry/20141007/1412679470

   

 

AtCoder Grand Contest 055 B - ABC Supremacy

f:id:yagura37s:20211101211024j:plain

なんか操作を同一視できる量はないかという視点から考えたらワンチャン思いつく可能性が出てくる気がする

 

そう考えると

0 1 2

1 2 0

2 0 1

 

から

0 1 2

を引くと mod3で

 

0 0 0

1 1 1

2 2 2

になって、同じ数字が3つ連続しているときは好きに変えられる

 

また

0 1 1 1 0 0 

0 0 0 0 0 0

1 1 1 0 0 0

1 1 1 1 1 1

みたいに、間にある3つを消したら3つになるやつはマージできる

 

だからそういう感じで3つ連続しているやつを消していけば残ったやつが不変量?

 

 

AtCoder Beginner Contest 223 E - Placing Rectangles

f:id:yagura37s:20211021201004p:plain



長方形の張り方としては上の2パターンみたいな感じに分類できる

 

最初に 1 の置き場所を決める

1 は、上に長方形を接地しないことにする。

上に長方形を接地するようなパターンが最適だとしたら、

右側に、上に長方形が設置されていない長方形があることになる。

というわけで最初に、上に長方形を接地してないやつの置き場所を決める

できるだけX軸かY軸に押し付けるような形にしたほうが、残りの2個を置くための場所がとれそう

 

どっちの軸に押し付けるかの全探索と ABCのpermutationを全部試した

 

 

 

 

  1. fn solve(){
  2. let sssss = std::io::stdin();
  3. let mut sc = Scanner { stdin: sssss.lock() };
  4. let mut x:i64 = sc.read();
  5. let mut y:i64 = sc.read();
  6. let mut A:i64 = sc.read();
  7. let mut B:i64 = sc.read();
  8. let mut C:i64 = sc.read();
  9. let mut v= vec![A, B, C];
  10. let mut ok = false;
  11. fn dfs(x:i64, y:i64, i:usize, d:usize, v:&Vec<i64>)->bool{
  12. if x<0 || y<0{
  13. return false;
  14. }
  15. if i != 3 && x == 0 || y == 0{
  16. return false;
  17. }
  18. if i == 3{
  19. return true;
  20. }
  21. let mut res = false;
  22. if d == 0{
  23. let mut s = *1{
  24. let mut p = perm.into_iter().map(|x| *x).collect();
  25. ok |= dfs(x, y, 0, 0, &p);
  26. ok |= dfs(x, y, 0, 1, &p);
  27.  
  28.  
  29. }
  30. if ok{
  31. println!("Yes");
  32. }
  33. else{
  34. println!("No");
  35. }

 

 

解説とかツイッターとか見た

本番ではかなり無理そう

 

 

 

 

*1:v[i]-1)/y + 1);

  • res |= dfs(x-s, y, i+1, 0, v);
  • res |= dfs(x-s, y, i+1, 1, v);
  • }
  • else if d == 1{
  • let mut s = ((v[i]-1)/x + 1);
  • res |= dfs(x, y-s, i+1, 0, v);
  • res |= dfs(x, y-s, i+1, 1, v);
  • }
  • return res;
  • }
  • for perm in v.iter().permutations(v.len(