※本記事にはプロモーション(広告)が含まれています。
マイコンのリセット回路は、電源が動ける電圧まで上がりきるまで RESET 端子を Low に保つ回路で、RC だけより電圧を見張るリセット IC のほうが確実です。RC とリセット IC の比べは電源の立ち上がりの節、水晶の2つのコンデンサ C=2×(CL−Cs)は早見表から選べます。
マイコンのリセット回路と水晶(クロック)は、プログラムより先に整えておく「土台」です。ここがあいまいだと、電源を入れても動かない、ときどき固まる、時計がずれる、といった見つけにくい不具合になります。
この記事では、実在の部品のデータシートと設計資料を使って、リセット回路の選び方と、水晶のコンデンサの値の決め方を、順に計算していきます。

マイコンを動かす3点セット:電源・リセット・クロック
マイコンは、電源・リセット・クロックの3つがそろって初めて動きます。この記事は、そのうちリセットとクロックの回路を扱います。
マイコン(小さなコンピュータの部品)は、プログラムを書き込んだだけでは動きません。次の3つが、プログラムより先に必要です。
| 名前 | 役目 | この記事の例 |
|---|---|---|
| 電源 | 安定した電圧を届ける | 3.3V と、近くのコンデンサ(パスコン) |
| リセット | 電源が整うまで「待て」をかける | リセット IC TPS3839K33 |
| クロック | 動くテンポ(1秒に何回)を決める | 水晶 12MHz と 15pF ×2 |
電源とパスコンは別の記事で扱っています。ここでは、残りの2つ、リセットとクロックに絞ります。
マイコンが中で何をしているか、CPU との違いから先に知りたい人に
つまり、プログラムが正しくても、リセットとクロックが不安定だとマイコンは正しく動きません。

リセットとは:電源が整うまで「待て」をかける号令
リセットは、マイコンを止めて、プログラムの最初の行から動かし直すことです。電源を入れた直後・電圧が下がったとき・ボタンを押したときにかけます。
多くのマイコンは、RESET 端子が Low(0V 近く)の間は止まっていて、High(電源の電圧の近く)になったら、プログラムの最初の行から動き出します。
電源を入れた直後は、電圧がまだ上がりきっていません。そこでマイコンが走り出すと、途中から動いたり、おかしな値を書き込んだりします。だから、電源が整うまで RESET を Low にして待たせます。
リセットをかける3つの場面
| 場面 | 何が起きている | リセットの役目 |
|---|---|---|
| 電源を入れた直後 | 電圧がまだ上がりきっていない | 上がりきるまで待つ |
| 電圧が下がったとき | 電池の消耗や一瞬の停電(瞬断) | いったん止めて、戻るまで待つ |
| ボタンを押したとき | 固まったときに人がやり直す | 最初から動かし直す |
つまり、リセット回路の仕事は「電源が動ける電圧にある間だけ、マイコンを動かす」ことです。

RC リセット:コンデンサがたまるまで RESET を Low に保つ
RC リセットは、抵抗とコンデンサで RESET の電圧をゆっくり上げる回路です。10kΩ と 1µF なら τ=10ms で、解除まで数 ms〜20ms ほどかかります。
いちばん簡単なリセット回路は、抵抗(R)とコンデンサ(C)を1つずつ使う RC リセットです。電源を入れると、R を通ってコンデンサに電気がたまり、RESET の電圧がゆっくり上がります。しきい値(ここを超えたら High とみなす電圧)を超えたところで、リセットが解けます。
τ(タウ)は「たまり具合が約63%になる時間」です。しきい値まで上がる時間は、次の式で出せます。
ここで混乱しやすいのですが、しきい値はマイコンごとに決まった幅があります。たとえば ATmega328P(Arduino Uno にも使われているマイコン)のデータシートでは、RESET 端子のしきい値は 0.2〜0.9×VCC です。
| しきい値 | 計算 | 解除までの時間 |
|---|---|---|
| 0.2 × VDD | −10ms × ln(1 − 0.2) | 2.2ms |
| 0.5 × VDD | −10ms × ln(1 − 0.5) | 6.9ms |
| 0.9 × VDD | −10ms × ln(1 − 0.9) | 23.0ms |
同じ R と C でも、解除までの時間は 2.2ms から 23ms まで、約10倍の幅があります。RC リセットは、時間をきっちり決めたいところには向きません。
回路図のダイオードは、電源を切ったときにコンデンサの電気をすばやく電源側へ逃がす道です。これがないと、電源をすぐ入れ直したときに C がたまったままで、リセットがかかりません。
τ の求め方と、遅延・チャタリング除去での R と C の決め方を実例で
つまり、RC リセットは部品2〜3個で作れますが、解除の時間は「だいたい」しか決まりません。

電源の立ち上がりで比べる:RC リセットとリセット IC
電源が 1ms で速く上がるときは RC でも問題ありません。100ms かけてゆっくり上がると、RC は VDD がまだ約0.5V のときに解除してしまいます。
RC リセットの弱点は、電源の上がり方で見えてきます。同じ 10kΩ・1µF の RC と、リセット IC(TPS3839K33)を、電源の上がる速さを変えて比べます。解除は「RESET が VDD の半分を超えたとき」と仮定した、イメージの計算です。
| 電源の上がり方 | RC リセットの解除 | リセット IC の解除 |
|---|---|---|
| 速い(1ms で 3.3V) | 7ms(VDD 3.3V) | 201ms(VDD 3.3V) |
| ゆっくり(100ms で 3.3V) | 16ms(VDD 0.5V) | 290ms(VDD 3.3V) |
ゆっくり上がる電源では、RC の RESET は電源のすぐ後ろを追いかけるだけです。VDD が約0.5V のうちに「VDD の半分」を超えてしまい、マイコンが動けない電圧で「ドン」が出ます。
リセット IC は、VDD そのものが約2.96V を超えるまで待ち、さらに 200ms(typ)待ってから解除します。電源の上がり方に関係なく、同じ電圧の線で判断します。
つまり、RC は「時間」を、リセット IC は「電圧」を見ています。電源がゆっくり上がる回路では、RC では足りません。

RC リセットの弱点3つ:電圧が足りるかは見張れない
RC リセットは、ゆっくり上がる電源・一瞬の電圧の落ち込み・じわじわ下がる電池の3つに弱い回路です。
1. ゆっくり上がる電源
大きなコンデンサがある電源や、電流を絞った電源は、ゆっくり上がります。前の節のとおり、100ms かけて上がると VDD 約0.5V で解除されます。ATmega328P を 10MHz で動かすのに要る 2.7V(データシートの動作条件)の、ずっと手前です。
2. 一瞬の電圧の落ち込み(瞬断)
電源が 3.3V から 2.0V に 5ms だけ下がったとします。コンデンサの電気はすぐには抜けないので、RESET は約2.79V までしか下がりません。マイコンには電圧が足りないのに、リセットがかからないまま動き続けます。
3. じわじわ下がる電池
電池が少しずつ減って 2.7V を割っても、RC の RESET は電源と一緒に下がるだけで、High のままです。マイコンは足りない電圧で動き続けます。
つまり、RC は「待つ時間」を作るだけです。電圧そのものを見張るには、リセット IC が要ります。

リセット IC:電圧を見張って、足りない間は RESET を Low にする
リセット IC は、電源の電圧を見張り、決まった電圧を下回っている間は RESET を Low にする部品です。TPS3839K33 は 2.93V で判断し、戻ったら 200ms 待って解除します。
リセット IC(電圧監視 IC、スーパーバイザとも言います)は、3本足の小さな IC です。つなぐのは、電源(VDD)・GND・RESET 出力の3本だけです。例として、TI の TPS3839K33 の数字を見ます。
| 項目 | 値(typ) | 意味 |
|---|---|---|
| 見張る電圧(VIT−) | 2.93V(2.857〜2.974V) | これを下回ると RESET を Low |
| ヒステリシス | 29mV | 解除は 2.93+0.029 ≒ 2.96V |
| 解除までの待ち(td) | 200ms(120〜350ms) | 電圧が戻ってから待つ時間 |
| 下がったときの速さ | 20µs | 電圧が割れたら、すぐ Low |
| 出力の形 | プッシュプル | High も Low も IC が出す |
ヒステリシスは、判断の電圧に小さな幅を持たせる工夫です。2.93V ちょうどの付近で電圧がふらついても、Low と High が細かく切り替わらないようにしています。
データシートは、電源のインピーダンス(電流の流れにくさ)が高いとき、VDD 端子の近くに 0.1µF のコンデンサを置くことを勧めています。
つまり、リセット IC は電源の上がり方に関係なく、「電圧が足りているか」で判断します。

リセット IC の動き:割れたらすぐ止め、戻ったら待つ
リセット IC は、電源を入れたとき・瞬断・電池の減りの3つを、同じ 2.93V の線で判断します。
前の節の RC の弱点3つを、リセット IC ではどう扱うかを1つの図にまとめました(TPS3839K33 の typ の値で描いたイメージです)。
| 場面 | リセット IC の動き |
|---|---|
| 電源を入れたとき | VDD が約2.96V を超えてから 200ms 待って High |
| 5ms の瞬断(3.3V→2.0V) | 2.93V を割った時点で Low。戻ってから 200ms 待って High |
| 電池がじわじわ下がる | 2.93V を割った時点で Low。マイコンを止める |
データシートには、VDD が 0.6V 以上あれば出力が決まった値になると書かれています。電源を入れた直後のごく低い電圧でも、RESET が Low に保たれるということです。
つまり、リセット IC を1個足すだけで、RC の弱点3つがまとめて片づきます。

データシートの推奨回路の読み方:部品1つずつに役目がある
推奨回路の値は「代表的な値」です。部品ごとの役目がわかれば、自分の回路に合わせて直せます。
マイコンのデータシートやアプリケーションノート(メーカーの設計資料)には、RESET 端子の推奨回路が載っています。例として、Microchip の AVR マイコンの設計資料 AN2519 の回路を読みます。
| 部品 | 値 | 役目 |
|---|---|---|
| R(プルアップ) | 4.7kΩ | RESET を High に引き上げる。中にもあるが、ノイズの多い所では弱い |
| C | 100nF | ひげのようなノイズを GND へ逃がし、ノイズでのリセットを防ぐ |
| D(ダイオード) | VCC へ | 静電気を VCC へ逃がす。RESET 端子には VCC 側の保護が入っていない |
それぞれに、データシートの「ただし書き」があります。
RESET を引き上げる理由と、プルアップ抵抗の値の決め方がわかる
つまり、推奨回路は「そのまま写す」より「役目を読んで、自分の条件で直す」ものです。

データシートのリセットの表で見る4つの数字
リセットの表では VPOT・SRON・VRST・tRST の4つを見ます。特に SRON(電源の上がる速さの条件)を外れると、マイコン内蔵のリセットに頼れません。
多くのマイコンは、中にパワーオンリセット(POR:電源を入れたときのリセット)を持っています。ATmega328P のデータシートの表から、見るべき数字を拾います。
| 記号 | 値 | 意味 |
|---|---|---|
| VPOT | 1.1〜1.6V | 内蔵のリセットが解ける電圧。動ける電圧より低い |
| SRON | 0.01〜10V/ms | 電源の上がる速さの条件。3.3V なら 0.33ms〜330ms で上がること |
| VRST | 0.2〜0.9×VCC | RESET 端子のしきい値。RC の時間がばらつく元 |
| tRST | 2.5µs 以上 | リセットとみなす Low の幅。これより短いひげは無視される |
SRON の計算はこうです。3.3V を 10V/ms で上げると 3.3÷10=0.33ms、0.01V/ms なら 3.3÷0.01=330ms です。電源がこの範囲の速さで上がるなら、内蔵のリセットが働きます。
ただし、内蔵のリセットが解ける電圧(VPOT)は 1.1〜1.6V と、動ける電圧より低めです。足りない電圧で動き出さないように、データシートにはブラウンアウト検出(BOD:電圧が下がったらリセットする機能)が用意されています。ATmega328P は 1.8V・2.7V・4.3V(typ)から選べます。
データシートの min・typ・max と、表の下の条件の注記の読み方がわかる
つまり、データシートの表は「内蔵のリセットに任せてよいか」を決めるための材料です。

クロックの源は3種類:内蔵 RC・セラミック発振子・水晶
時計や通信のように正確さが要るなら水晶を使います。ずれの大きさは、1日あたり何秒ずれるかで考えるとわかりやすくなります。
クロック(マイコンの動くテンポ)を作る方法は、大きく3つあります。
| 種類 | 周波数の精度 | 1日のずれ | 特徴 |
|---|---|---|---|
| 内蔵 RC | ±10% | 約2.4時間 | 部品が要らない。正確さは低い |
| セラミック発振子 | ±0.5%(±5000ppm) | 約7.2分 | 速く起動する・安い |
| 水晶(クリスタル) | ±20ppm | 約1.7秒 | 正確。起動は 1〜10ms |
ppm は100万分の1です。1日は 86,400秒なので、20ppm なら 86,400×20÷1,000,000 ≒ 1.7秒ずれます。
表の内蔵 RC は ATmega328P の工場出荷の値(3V・25℃)、セラミックと水晶は AN2519 の比較表の例です。部品ごとに違うので、使う部品のデータシートで確かめます。
つまり、正確さが要らない回路は内蔵 RC で足り、時計・USB・正確な通信には水晶を使います。

水晶の回路:水晶1個とコンデンサ2個
水晶の回路は、マイコンの XIN と XOUT の間に水晶をつなぎ、両端から GND へコンデンサを1個ずつ入れる形です。
水晶は、決まった周波数で振れる部品です。マイコンの中の増幅回路と組み合わせて、クロックを作ります。例として、Raspberry Pi の設計資料(RP2040 というマイコン)の回路を使います。
| 部品 | この例の値 | 役目 |
|---|---|---|
| 水晶 | 12MHz・負荷容量 CL 10pF(Abracon ABM8-272-T3) | 周波数を決める |
| C1・C2 | 15pF ずつ | 水晶が決まった周波数で振れるための容量 |
| 直列抵抗 | 1kΩ(XOUT 側) | 水晶に強くかけすぎない(振れすぎで傷めない) |
| 見えない容量 Cs | 3pF と仮定 | 端子と配線に自然にある容量 |
ここで大事なのは、C1 と C2 のつながり方です。マイコンから見ると、C1 も C2 も GND へつながっています。でも水晶から見ると、水晶の片方の端 → C1 → GND → C2 → もう片方の端、と C1 と C2 は「直列」につながっています。
直列のコンデンサは、合わせると小さくなります。同じ 15pF が2つなら、合わせて 15÷2=7.5pF です。これに見えない容量 Cs を足したものが、水晶から見た容量になります。
つまり、水晶にとっての容量は「C1 と C2 の直列」+「見えない容量」です。

水晶の負荷容量の計算:C=2×(CL−Cs)
負荷容量の式は CL=C1×C2÷(C1+C2)+Cs です。C1=C2=C なら C=2×(CL−Cs)で、CL 10pF・Cs 3pF なら 14pF → 15pF を選びます。
C1 と C2 を同じ値 C にすると、C1×C2÷(C1+C2)=C×C÷2C=C÷2 になります。式を C について並べ替えると、次の形です。
もう1つ例を見ます。昔からある背の高い HC-49 の水晶(Abracon ABL)は、CL が 18pF のものが標準です。Cs を 5pF とすると、C=2×(18−5)=26pF → 27pF です。
コンデンサは、温度で容量が変わりにくい C0G などの温度補償用のセラミックコンデンサを選びます。容量が温度で動くと、周波数も一緒に動くからです。
水晶の横に C0G を選ぶ理由、X5R・X7R との温度特性の違いがわかる
つまり、水晶の CL から見えない容量を引いて2倍すれば、コンデンサの値が出ます。

早見表:水晶の CL と見えない容量 Cs から C1・C2 を選ぶ
答えだけ欲しい人向けの表です。値は E12 のいちばん近い値で、( )は実際の CL です。
| 水晶の CL | Cs=2pF | Cs=3pF | Cs=5pF |
|---|---|---|---|
| 8pF | 12pF(8) | 10pF(8) | 5.6pF(7.8) |
| 10pF | 15pF(9.5) | 15pF(10.5) | 10pF(10) |
| 12.5pF | 22pF(13) | 18pF(12) | 15pF(12.5) |
| 18pF | 33pF(18.5) | 33pF(19.5) | 27pF(18.5) |
| 20pF | 39pF(21.5) | 33pF(19.5) | 33pF(21.5) |
計算は C=2×(CL−Cs)を E12 の値に丸めたものです。Cs がわからないときは 3pF の列から始め、試作で周波数を測って合わせます。
マイコンのデータシートに C1・C2 の範囲が書かれていることもあります。たとえば ATmega328P は 12〜22pF です。表の値がその範囲に入るかも確かめます。
つまり、迷ったら Cs=3pF の列の値から試し、周波数を測って決めます。

コンデンサの値を間違えると:周波数がずれる・起動しない
CL 10pF の水晶に 22pF を付けると、CL が約3.5pF 大きくなり、周波数が約52ppm(目安)遅れます。時計なら1日に約4.5秒です。
よく見る 22pF を、計算せずに流用したとします。
AN2519 の比較表には、水晶の周波数は容量 1pF あたり ±15ppm ほど動く、という目安があります。これを使うと、3.5×15≒52ppm のずれです。1日なら 86,400×52÷1,000,000 ≒ 4.5秒になります。動く量は水晶ごとに違うので、あくまで目安です。
容量を大きくすると周波数は下がり(遅れ)、小さくすると上がります。
つまり、水晶のコンデンサは「だいたい」で選ばず、計算した値の近くに合わせます。

水晶の配線の注意:近く・短く・GND で囲む
水晶は、マイコンのすぐ横に置き、配線を短くし、まわりを GND で囲みます。水晶の下や横に、速い信号線を通しません。
水晶の回路は、とても小さな電流で動いています。配線が長いと、見えない容量が増えて周波数がずれ、ノイズも拾いやすくなります。AN2519 も RP2040 の資料も、同じことを勧めています。
コンデンサを「IC の近くに置く理由」を、パスコンの例から理解できる
つまり、水晶は「マイコンとセット」で、すぐ横にまとめて置きます。

測って確かめる:電源と RESET を同時に見る
オシロスコープの2チャンネルで電源と RESET を同時に見て、RESET が High になるのは電源が上がりきってからかを確かめます。
作った基板では、次の順に確かめます。
最低限ここだけ
余裕があれば
電源を何度もすばやく入れ直す、電源をゆっくり上げる、といった厳しい条件でも、毎回同じように動くかを確かめます。
水晶の周波数を測るときは注意が要ります。プローブ(測定器の先)にも容量があるので、XIN や XOUT に直接当てると負荷容量が変わり、周波数がずれたり、振れが止まったりします。マイコンのクロックを外に出す機能があれば、その端子で測ります。
つまり、まず「RESET は電源のあと」の1つを確かめれば、リセット回路の大きな失敗は防げます。

よくある失敗4つ:リセットと水晶
RESET を浮かせる・コンデンサの値の流用・水晶を遠くに置く・RESET の押し合い、の4つがよくある失敗です。
1. RESET を浮かせたまま
プルアップなしで中のプルアップだけに頼ると、ノイズの多い所でときどきリセットがかかります。4.7kΩ 以上の抵抗で引き上げます(書き込み器・デバッグ機能の条件も確かめる)。
2. コンデンサの値を流用する
前の基板の 22pF をそのまま使うと、水晶の CL が違えば周波数がずれ、起動しないこともあります。毎回 C=2×(CL−Cs)で計算します。
3. 水晶を遠くに置く
配線が長い、まわりに GND がない、すぐ横を速い信号線が通る。これらは周波数のずれやノイズの元です。近く・短く・GND で囲みます。
4. RESET の押し合い
RESET 端子が入力と出力の両方になる(双方向の)マイコンがあります。そこへ High と Low を自分で出す(プッシュプルの)リセット IC を直結すると、両方が逆の電圧を出したときに電流が流れすぎます。TPS3839 のデータシートは、間に直列抵抗を入れる例(47kΩ)を示しています。
つまり、どれも「動いたり動かなかったり」になる失敗です。作る前に4つを確かめておきます。


