【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

VtH=2.1V、VtL=0.5VのシュミットトリガICの前段にCRフィルターを用いてチャタリング防止回路を組みたいのですが、立上がり/下がり遅延時間の計算方法について、質問があります。
下記の1式が使えると思い、以下の様に計算しましたが、大丈夫でしょうか?

Eout(t) = E{1-exp(-t/CR)} ・・・ 1式

Eout(t)-E =-Eexp(-t/CR)
(Eout(t)-E)/E =-exp(-t/CR)
(E-Eout(t))/E =exp(-t/CR)
-t/CR= loge((E-Eout(t))/E)

t=-CRloge((E-Eout(t))/E) ・・・ 2式

立上がりは、VtHをEout(t)、入力電圧をEと考え、C=100pF、R=1000Ω、入力3.0Vとして、2式に代入して、
t=-(1.0E-10)*1000*loge(3.0-2.1/3.0)
≒132nsec

立下りは、E-VtLをEout(t)、と考え、
t=-(1.0E-10)*1000*loge(3.0-2.5/3.0)
≒197nsec

値はexcelで計算した値です。
すみませんが、宜しくお願いします。

A 回答 (4件)

ANo.2に間違いがありました。

かなりの箇所が間違っているので、「b点の電圧は」以降、以下の文章に入れ替えてください。

b点の電圧は
   Vb = ( VOH - VOL )*exp{ -t/(C*R) } + VOL       ( 0≦t≦tw )
       ( VOH - V1 )*[ 1 -exp{ -( t - tw )/(C*R) } ] + V1  ( tw≦t )
V1 は t = tw のときの電圧で
   V1 = ( VOH - VOL )*exp{ -tw/(C*R) } + VOL
a の立下りから c の立上がりまでの遅延時間 t1 は
   VtL = ( VOH - VOL )*exp{ -t1/(C*R) } + VOL
   → t1 = C*R*ln{ ( VOH - VOL )/( VtL - VOL ) }
一方、a の立上りから c の立下がりまでの遅延時間 t2 は
   VtH = ( VOH - V1 )*[ 1 -exp{ -t2/(C*R) } ] + V1
   → t2 = C*R*ln{ ( VOH - V1 )/( VOH - VtH ) }
c のパルス幅 to は
   to = tw - t1 + t2
     = tw - C*R*ln{ ( VOH - VOL )/( VtL - VOL ) } + C*R*ln{ ( VOH - V1 )/( VOH - VtH ) }
     = tw - C*R*ln[ (VOH - VOL )*( VOH - VtL )/{ ( VtL - VOL )*( VOH - V1 ) } ]

>因みに使用するシュミットはTIのAHCT14でした
HCTのデータシート [2] を見ると、TTLコンパチなので VtL と VtH は低いのですね。質問文の冒頭にある 「VtH=2.1V、VtL=0.5V 」は、それぞれ Vcc = 5.5V のときの VtH のMAX値、Vcc = 4.5V のときの VtL のMIN値ですが、最悪の場合を考えると、前段(TTL)のVOHやVOLも考慮する必要があります。最悪というのは2つの場合があります。
  (1) tw が小さすぎて c がHレベルにならない
  (2) CLOCKの周期 T が短すぎて、c がLレベルに戻らない
(1)とならない条件は
   tw > t1 = C*R*ln{ ( VOH - VOL )/( VtL - VOL ) }
ですが、t1 が最大となるのはVOH - VOLが最大で VtL - VOL が最小のときなので、VOHの最大値(Vcc-1.2V=3.8V)とVOLの最小値(0V)、VtL の最小値(0.5V)とVOLの最大値(0.4V)の場合で計算すればいいと思います(ややこしいですが)。この tw がCLOCKパルス幅(Lレベル)の最低値になります。
(2)とならないためには
   T - tw > t2 = C*R*ln{ ( VOH - V1 )/( VOH - VtH ) }
なので
   T > tw + C*R*ln{ ( VOH - V1 )/( VOH - VtH ) }
を満たせばいいわけです。それには ( VOH - V1 )/( VOH - VtH ) が最大となる場合の T を計算すればいいと思います。それがCLOCKの最低周期(CLOCK周波数は 1/T より低くしなければならない)になります。

CLOCKのdutyが50%( tw = T/2 )のとき、AHCT14の出力にちゃんとしたパルスを出すためのクロック周波数 f の条件は
   f < 1/[ 2*C*R*ln{ ( VOH - VOL )/( VtL - VOL ) } ]
   かつ
   f < 1/[ 2*C*R*ln{ ( VOH - V1 )/( VOH - VtH ) } ]
となります。つまり、1/[ 2*C*R*ln{ ( VOH - VOL )/( VtL - VOL ) } ] と 1/[ 2*C*R*ln{ ( VOH - V1 )/( VOH - VtH ) } ] のうち、小さいほうの値より小さい周波数になります。
    • good
    • 0
この回答へのお礼

お返事が遅れて申し訳ありません。
わざわざ、訂正ありがとうございました。
会社で見させてもらって、ちょっとおかしな所があるんじゃないかと思って質問しようとしていました。
質問しようと思って用意していたのは、
・b点電圧でVOH=Vccと考えていいでしょうか。
・不等号がおかしくないですか。
・(2)の変形が理解できません。
上記でしたが、全て訂正して頂いたので、納得しました。
自分で考えたら何日もかかるだろうし、いい加減にしてしまう所もありますが、これに関してはお陰さまで自分なりにスッキリしました。
本当にありがとうございました。

お礼日時:2008/09/09 23:45

こちらこそ失礼しました。

私も会社で検算して間違いを発見しました。
1つ自信がないところがあります。VOHの最大値とVOLの最小値です。LS-TTLのデータシート [3] を見ると、VOHの最小値(2.4V)と標準値(3.4V)、VOLの標準値(0.2V)と最大値(0.4V)は記載されていますが、VOHの最大値とVOLの最小値の記載がありません。ICの内部回路を考え、VOHがトランジスタのVbe(0.6V)2個分の電圧降下があると考えて3.8Vとし、VOLはコレクタ-エミッタ間の飽和電圧なのでGND未満にはなり得ないとして0Vとしました。VOHは電源電圧を越えることはありえないので、より厳しくなりますが、VOHの最大値をVccとして計算したほうがいいかもしれません。

[3] 74LS14データシート(4ページのVOHとVOL) http://focus.tij.co.jp/jp/lit/ds/symlink/sn74ls1 …
    • good
    • 0
この回答へのお礼

お返事が遅くなり申し訳ありません。
最悪値ではなくて、最良値の方の問題ですね。
おそらく計算するのは最悪値の方になると思いますが、最良値の計算が必要な時は上記参考にさせていただきます。
本当に色々とありがとうございました。

お礼日時:2008/09/12 00:56

>今回この回路を使用する信号・・


入力信号が CLOCK なら、CRでチャタリング防止しなくてもいいように思えますが、引き回しによって信号に乗った高周波ノイズを除去する目的でしょうか。

ANo.1で式(1)の最後のカッコが抜けていました。
 V = Vcc*exp{ -t/( C*R2 ) } --- (1)
が正解です(その次の式も } が抜けています)。

>私の変換方法は通常つかわないのでしょうか?
数学的には同じです。2式のCRより右側は
    loge((E-Eout(t))/E) = -loge(E/(E-Eout(t)))
と変形できるので
   t = CRloge(E/(E-Eout(t)))
とも書けます。頭に - をつけるかつけないかは好き嫌いの問題なのでどちらでもいいです。

CLOCK信号を反転させて使うというお話から考えると、実際の回路はこのような感じでしょうか。

  TTL a      b  AHCT14
 ┨>─── R ─┬─┤>○─ c
            │
            C
            │
 ───────┴───── GND

この回路での a~c の波形は以下のようになります。

      ←── T ──-→
      ←tw→
 a  ̄ ̄___ ̄ ̄ ̄ ̄ ̄__  ̄ VOH(最悪値 2.4V)
                       ̄ VOL(最悪値 0.4V)

 b  ̄ ̄\       / ̄\   ̄ Vcc
        \    / ̄ VtH \
      VtL ̄\/          \ ̄ VtL
            ̄ V1

         ← to→
 c        ̄ ̄ ̄          ̄ ̄
   ____     ______
      ←→  ←→
       t1   t2
      ↑   ↑
     t = 0  t = tw

b点の電圧は
   Vb = ( VOH - VOL )*exp{ -t/(C*R) } + VOL       ( 0≦t≦tw )
       ( Vcc - V1 )*[ 1 -exp{ -( t - tw )/(C*R) } ] + V1  ( tw≦t )
V1 は t = tw のときの電圧で
   V1 = ( VOH - VOL )*exp{ -tw/(C*R) } + VOL
a の立下りから c の立上がりまでの遅延時間 t1 は
   VtL = ( VOH - VOL )*exp{ -t1/(C*R) } + VOL
   → t1 = C*R*ln{ ( VtL - VOL )/( VOH - VOL ) }
     t1 > tw でなければならない
a の立上りから c の立下がりまでの遅延時間 t2 は
   VtH = ( Vcc - V1 )*[ 1 -exp{ -t2/(C*R) } ] + V1
   → t2 = C*R*ln{ ( Vcc - V1 )/( Vcc - VtH ) }
c のパルス幅 to は
   to = tw - t1 + t2
     = tw - C*R*ln{ ( VtL - VOL )/( VOH - VOL ) } + C*R*ln{ ( Vcc - V1 )/( Vcc - VtH ) }
     = tw - C*R*ln[ (Vcc - V1 )*( VOH - VOL )/{ ( Vcc - VtH )*( VtL - VOL ) } ]

>因みに使用するシュミットはTIのAHCT14でした
HCTのデータシート [2] を見ると、TTLコンパチなので VtL と VtH は低いのですね。質問文の冒頭にある 「VtH=2.1V、VtL=0.5V 」は、それぞれ Vcc = 5.5V のときの VtH のMAX値、Vcc = 4.5V のときの VtL のMIN値ですが、最悪の場合を考えると、前段(TTL)のVOHやVOLも考慮する必要があります。最悪というのは2つの場合があります。
  (1) t1 が小さすぎて c がHレベルにならない
  (2) CLOCKの周期が短すぎて、c がLレベルに戻らない
(1)とならない条件は
   tw < C*R*ln{ ( VtL - VOL )/( VOH - VOL ) }
ですが、t1 が最小となるのは VtL - VOL が最小、VOH - VOLが最大のときなので、VtL の最小値(0.5V)とVOLの最大値(0.4V)とVOHの最大値(Vcc-1.2V=3.8V)とVOLの最小値(0V)の場合で計算すればいいと思います(ややこしいですが)。
(2)とならないためには
   T - tw > t2
なので
   T - 2*tw > - C*R*ln[ (Vcc - V1 )*( VOH - VOL )/{ ( Vcc - VtH )*( VtL - VOL ) } ]
を満たせばいいわけです。それには (Vcc - V1 )*( VOH - VOL )/{ ( Vcc - VtH )*( VtL - VOL ) } の最大値(分子が最大でかつ分母が最小のとき)を計算すればいいと思います。

[2] 74AHCT14データシート(3ページV+, V-) http://focus.tij.co.jp/jp/lit/ds/symlink/sn74ahc …
    • good
    • 0

2式は合ってますが、VtH=2.1V、VtL=0.5V というのはおかしいです。


bolerogoldさんが知りたいのは入力信号が変化してからシュミット回路の出力が変化するまでの時間でしょうか。

リセット回路の構成によって違いますが、以下の回路の場合で説明します。

  Vcc
  │
  R1    B  HC14
 A├─ R2 ┬─┨>○─ C
  │    │
  ○     C
 \○    │
  └───┴─ GND

上の構成の場合、A~C点の波形は以下のようになります(スイッチを押したときにA点の電圧がゼロ、離したとき接点間がオープンにとなるものとします)。

      ←tw→
 A  ̄ ̄___ ̄ ̄ ̄ ̄ ̄

 B  ̄ ̄\       / ̄ ̄  ̄Vcc
        \    / ̄ VtH
      VtL ̄\/
            ̄ V1

         ← to→
 C        ̄ ̄ ̄
   ____     ___
      ←→  ←→
       t1   t2

スイッチが押された瞬間を t=0 としたとき、その後のB点の電圧は
  V = Vcc*exp{ -t/( C*R2 ) --- (1)
という形で変化します。スイッチが押されたとき、コンデンサCに蓄えられた電荷は抵抗R2を通して放電されるので、時定数 C*R2 でB点の電圧が下がっていくカーブです(図では直線で描いていますが実際は指数関数的変化です)。B点の電圧がLレベルのしきい値電圧 Vtl に達すると、C点の電圧はHレベルになります。スイッチが押されてから、C点の電圧が変化するまでの時間を t1 とすれば、式(1)で t = t1 のときにV = VtL となるということなので
  VtL = Vcc*exp{ -t1/( C*R2 )
   → t1 = C*R1*ln( Vcc/VtL )
となります。ln は自然対数(excel の ln( ) と同じ)です。したがって、リセット信号のパルス幅 tw が t1 より短いと、B点の電圧が Vtl まで下がりきらないので、リセット動作が起きません。つまり、確実にリセットさせるには tw > t1 としなければなりません。この t1 というのが、スイッチが押されたときからC点の電圧が変化するまでの時間になります(正確にはゲートICの伝播遅延時間を t1 に足した時間)。

一方、スイッチがOFFになると(接点が離れると)、今度はR1とR2を通してC が充電されるので、B点の電圧は下降から上昇に反転します。上昇の時定数は C*( R1+R2 )ですから、その波形は次のようになります(スイッチが離れた瞬間を t=0 とします)。
  V = ( Vcc - V1 )*【 1 - exp[ -t/( C*( R1+R2 ) } ] 】 + V1 --- (2)
V1 というのは、スイッチがOFFになった瞬間のB点の電圧で、式(1)で t=tw としたときの電圧
  V1 = Vcc*exp{ -tw/( C*R2 ) --- (3)
です。スイッチがOFFになった瞬間から、B点の電圧がHレベルのしきい値電圧VtHになるまでの時間を t2 とすれば、式(2)から
  VtH = ( Vcc - V1 )*【 1 - exp[ -t2/( C*( R1+R2 ) } ] 】 + V1
  → t2 = C*( R1 + R2 )*ln{ ( Vcc - V1 )/( Vcc - VtH ) } --- (4)
となります。式(3)を式(4)に代入すると複雑になるので、式(4)はV1のままにしておきます。この t2 というのが、スイッチを離した瞬間からC点の電圧が変化するまでの時間になります(これも正確にはゲートICの伝播遅延時間を t2 に足した時間)。

したがって出力Cのパルス幅 to は
   to = tw - t1 + t2
     = tw - C*R1*ln( Vcc/VtL ) + C*( R1 + R2 )*ln{ ( Vcc - V1 )/( Vcc - VtH ) }
       ただし tw > C*R1*ln( Vcc/VtL )、V1 = Vcc*exp{ -tw/( C*R2 ) }
となります。後段の回路で最小リセットパルス幅が決まっているとき、この to をその幅より大きくする必要があります。

シュミットICのしきい値電圧ですが、74HC14APのデータシート [1] を見ると、Vcc = 3V、Ta=25℃のときの標準値は、VtL = 1V、VtH = 1.75V となるはずです(表ではVcc=3Vの値は書かれていませんがVccに対するVtLとVtHのグラフを描いて内挿した結果)。しきい値電圧は、データシートに書かれているように、「最小」から「最大」の範囲でばらつきます。出力Cのパルス幅 to の最悪値(最小値)を計算するときには、VtL と VtH は最小値を使わなければなりません。

[1] TC74HC14AP(3ページのしきい値電圧) http://www.semicon.toshiba.co.jp/docs/datasheet/ …
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまって申し訳ありません。
大変参考になりました。
 V = Vcc*exp{ -t/( C*R2 ) --- (1)
 V = ( Vcc - V1 )*【 1 - exp[ -t/( C*( R1+R2 ) } ] 】 + V1 --- (2)
で立ち上がりと立下りの両方を考える訳ですね。
括弧内だけ上手く調整すればいいかと思ってましたが、基本を良く知らないと、上手く使いこなせないですね・・・・

下記の変形ですが、一般的なのでしょうか?
  VtL = Vcc*exp{ -t1/( C*R2 )
   → t1 = C*R1*ln( Vcc/VtL )
私の下記の変形と括弧内が合えばexcelで計算した答えは同じになりますが、私の変換方法は通常つかわないのでしょうか?(検索しても全然引っかかりませんでした)
  Eout(t) = E{1-exp(-t/CR)} ・・・ 1式
   →t= -CRloge((E-Eout(t))/E)

パルス幅に関しての説明もありがとうございました。
こちらも参考にさせていただきます。

今回この回路を使用する信号は、CLOCKとDATAなのですが、結構な距離を引き回して、DATAをA/D変換から読んできて、CLOCKで拾おうとしています。F/Fなどで同期を取らずに戻りDATAを次のCLOCKの立ち上がりで拾う為に、遅延時間の最悪値を計算し、CLOCK周波数の最高値を決めようと言う趣旨でした。ですので、信号は0or1にへばりついた状態から閾値までの時間の算出が最重要で今回の質問となりました。

リンクもありがとうございました。
因みに使用するシュミットはTIのAHCT14でした。

お礼日時:2008/09/09 00:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!