taltalpのアイコン画像

回路シミュレータで作るNE555タイマー

taltalp 2020年04月30日に作成  (2020年05月01日に更新)

はじめに

みなさんはNE555というICをご存知でしょうか。
最近はArduinoのようなマイコンを使ってLチカをすることが多いかと思いますが、
このNE555という特徴的な型番のICを使ってLチカをしたことがある人も少なくはないと思います。

NE555は通称「555タイマー」とも呼ばれ、非常に多くの回路に用いられてきました。
ICの型番としては最も有名なものと言っても過言ではないでしょう。

それでは、なぜタイマーと呼ばれるのでしょうか。

通常Lチカをする場合、LEDを1秒おきに点灯したり消灯したりします。
このような動作をさせるためには、1秒を測る回路が必要です。
NE555はこのような時間を測る一定時間に変化する信号を作るために作られました。
つまり、クロックを作るための回路なのです。

今回はNE555の動作や仕組みを、回路シミュレータLTSpiceを使って一緒に学んでいきましょう。

NE555を使った回路

LTSpiceを使ってNE555のシミュレーションをしてみましょう。
なお、LTSpiceの使い方は本題からずれるので省きます。

下図の回路は、NE555の最も有名な動作、無安定モードのものです。
LTSpiceには標準でNE555のコンポーネントが含まれています。同じ回路を作ってみましょう。
シミュレーションは1秒間の過渡解析.tran 1」を実行しました。

NE555をつかった回路

NE555のOUTピンから出力される信号を見てみましょう。(下図)
上のグラフのように一定周期のパルスが出力されています。
下のグラフはこのパルスの周波数解析をしたものです。32Hz程度のパルスが出ていることが分かります。
このように、一定周期のパルスを生成出来ることがタイマーと呼ばれる所以です。

OUTピンの波形

出力されるクロックの周波数とHighの時間、Lowの時間は次の式で求まります。

fout=1ln(2)×C1×(R1+2R2)f_{out} = \frac{1}{ln(2) \times C_1 \times (R_1 + 2R_2)}

thigh=ln(2)×C1×(R1+R2)t_{high} = ln(2) \times C_1 \times (R_1 + R_2)

tlow=ln(2)×C1×R2t_{low} = ln(2) \times C_1 \times R_2

今回の回路の場合

fout=1ln(2)×0.1μ×(50k+2×200k)=32.06Hzf_{out} = \frac{1}{ln(2) \times 0.1 \mu \times (50 \mathrm{k} + 2 \times 200 \mathrm{k})}=32.06 \mathrm{Hz}

となります。
外付けの抵抗とコンデンサの値を操作するだけで、簡単に任意の周波数、任意のデューティ比のクロックが作れてしまうことが、このICが一躍有名となった理由でしょう。
NE555はLチカやタイマー、DC-DCコンバータ、回路のシステムクロックなど、非常に幅広い場面で活用されています。

余談

デューティ比を50%以下にするにはどうすればよいでしょうか。
上記式より

Duty=R1+R2R1+2R2>12Duty = \frac{R_1 + R_2}{R_1 + 2R_2} > \frac{1}{2}

となり、50%以下を実現するためには負性抵抗が必要となってしまいます。
どのような回路にすれば実現できるか考えてみましょう。

NE555の仕組み

それでは、なぜNE555は抵抗とコンデンサだけで任意のクロックを生成することが出来るのでしょうか。
NE555の中身を見て考えていきましょう。

等価回路

ICの中身には、2個のコンパレータ、1個のSRラッチ、n-channel MOSFET(またはnpnトランジスタ)、3個の抵抗からなっています。

3個の抵抗は全て同じ抵抗値で、1/3Vcc、2/3Vccの基準電圧を生成するためにあります。
回路をよりシンプルにして、外付けの抵抗とコンデンサをつないでみましょう。

キャプションを入力できます

もうなんとなくわかった方はいるかと思いますが、NE555はC1とR1の間の電圧をコンパレータで読み取って、その電圧に応じてNMOS(スイッチ)をON/OFFし、C1を充放電しています。

波形を見ながら動作を考えていきましょう。

まずはじめに、電源を入れたときの動作です。
この時点ではC1には電荷が溜まっていないので、C1にかかる電圧は1/3Vcc以下となります。
このときの2つのコンパレータの出力はそれぞれ下図のようになり、SRラッチのS (SET) が1なので~Qには0が保持されます。
C1は時定数C1(R1+R2)で充電を開始し、電圧が上昇していきます。

電源を入れた直後

C1の電圧が1/3Vccを超えると下側のコンパレータ出力が0となります。しかし、SRラッチは値を保持しつづけるので出力値は変わらず、コンデンサへの充電が続きます。

1/3Vccを超えたとき

コンデンサの電圧が2/3Vccを超えると上側のコンパレータの出力が1となり、SRラッチのリセットがかかります。そうすることで出力が変化し、NMOSのゲートが1となってスイッチがONします。
R1とR2の間のノードは0Vとなるので、C1が放電を開始します。このときの時定数はC1xR2となります。
この放電はコンデンサの電圧が1/3Vccとなるまで続きます。

2/3Vccを超えたとき

コンデンサの電圧が1/3Vccにまで下がると、再び下側のコンパレータ出力が1となり、SRラッチは1を保持します。このときの~Qは0となりNMOSがOFFすることで、再び充電が開始されます。

1/3Vccを下回ったとき

あとはこの動作を繰り返すことでOUTから一定周期のクロックが出力されます。
非常にシンプルで面白い仕組みですね。

それでは、この動作をシミュレーションしてみましょう。
NE555の中身を市販のコンパレータ、SRラッチ、NMOSでつくった回路がこちらです。

NE555の仕組み

出力波形をNE555を使ったものと比較してみました。
多少位相のズレはありますが、同じ周波数が出ていることが分かります。

NE555との比較

コンデンサにかかる電圧は下図のようになります。
予想通り、1/3Vccと2/3Vccを行ったり来たりしていますね。

キャプションを入力できます

NE555の中身の仕組みを学んで、同じ回路を別の部品で実現することが出来ました。
シミュレーション上でも同じ動作をすることが確認出来ればとても楽しいと思います。
次はぜひこの回路をブレッドボードなどで組んで、実機で動作を確かめてみると更に楽しめるかと思います。

MOSFETで作ろう

これまで説明してきたNE555も、先程の回路で使用したコンパレータやSRラッチといったものも、これらは全てトランジスタを使って実現されています。

この章では市販のICを使わずに、市販のMOSFETと抵抗だけでNE555を作ってみましょう。
ただし、回路の詳しい仕組みはアナログCMOSの知識が必要なため、ここでは簡単な説明のみしたいと思います。
詳しく学びたい方は下記の本などを読んでみてください。

  • Behzad Razavi (2003) Design of Analog CMOS Integrated Circuits, ISBN-10: 0070529035
  • R. Jacob Baker (2010) CMOS Circuit Design, Layout, and Simulation, Third Edition, ISBN-10: 0470881321

それでは、実際に作った回路が次の図です。
PMOSにBSS84 (http://akizukidenshi.com/catalog/g/gI-04269/)
NMOSにIRLML6344 (http://akizukidenshi.com/catalog/g/gI-06049/)
を使っています。

MOSFETで作ったNE555

※ transientにuicオプション(Skip initial operating point solution)をつけました。T=0のときの値が収束せず、シミュレーションが終わらない場合はつけてみてください。

下図が出力クロックを周波数解析したものです。32Hzのクロックが出ていることが分かります。

キャプションを入力できます

実はこの回路はアナログCMOS回路を学ぶとこのように見えます。
興味を持った方はぜひ前述の本などを調べながら、この回路の仕組みを考えてみてください。

キャプションを入力できます

おわりに

現代では非常に便利なICが非常に沢山存在しています。普段の電子工作ではICをブラックボックスとして使うことがほとんどで、ICの中身に目を向けたことがなかった方も多いかと思いますが、実はこのICの中には非常に面白い回路の世界が広がっています。この記事を読んで、普段の電子工作の中で使われているICがどのような仕組みで動いているのか興味を持ったり、それをシミュレータや実機で作ったりして楽しむきっかけとなってくれれば嬉しいです。

3
taltalpのアイコン画像
アナログ回路分野を学んでいる博士課程の学生です。ADCの研究をしています。 twitter: @taltalpp
taltalp さんが 2020/04/30 に 編集 をしました。 (メッセージ: 初版)
taltalp さんが 2020/05/01 に 編集 をしました。
taltalp さんが 2020/05/01 に 編集 をしました。
ログインしてコメントを投稿する