水晶の外付けコンデンサ:CL=12.5pF に 22pF を付けると月に何秒ずれるか
水晶のデータシートにある「負荷容量 CL = 12.5pF」は、C1・C2 という 2 個のコンデンサに書く値ではありません。水晶の 2 本の足から見て、基板全体がちょうど 12.5pF に見えるように C1・C2 と配線を決める、という指定です。ここを取り違えると、周波数は数 ppm~数十 ppm 動き、時計なら月に数十秒のずれになります。前回のコラムでは「なぜ 32.768kHz なのか」を見ました。今回はその水晶を基板に載せるときに実際に起きる誤差を計算します。
ピアース発振回路と負荷容量 CL:C1・C2 だけでは決まらない
水晶を発振させる回路のほぼすべてはピアース発振回路です。MCU の中の 1 個のインバータ(または相互コンダクタンス増幅器)が水晶の両端をつなぎ、XIN・XOUT の各ピンから GND へ C1・C2 の 2 個のコンデンサを付けます。この C1・C2 が、水晶にとっての「負荷」を作っています。
水晶のデータシートに書かれているCL(負荷容量)は、水晶の 2 本の足から回路を見たときに見える容量の指定値です。回路側は次の式で決まります。
CL = C1・C2 / (C1 + C2) + Cstray
Cstray は、C1・C2 以外に足から見えているすべての容量――MCU のピン容量、パッケージ、基板の配線とパッドです。C1・C2 の直列合成に Cstray を足した値が、水晶が指定する CL と一致していなければなりません。
ここでいちばん多い間違いが、CL の指定値をそのまま C1・C2 の値として買ってくることです。「CL = 12.5pF」だから C1 = C2 = 12.5pF、という発想です。Cstray を 3pF と見積もると、実際の CL は 12.5 ‖ 12.5 + 3 = 6.25 + 3 = 9.25pF。指定の 12.5pF より 3.25pF も低くなります。正しくは、C1 = C2 = C とおくと C/2 + Cstray = CL なので、C = 2 × (CL − Cstray)。CL = 12.5pF、Cstray = 3pF なら C1 = C2 = 19pF です。
Cstray はどこから来るか
Cstray は基板ごとに違うので、水晶のデータシートには書かれていません。内訳は主に 2 つです。
MCU のピン容量。XIN・XOUT ピンには、ESD 保護素子やパッド自体の容量が付いています。多くの MCU のデータシートには「発振回路の特性」の項に CXIN・CXOUT、あるいはピンの入力容量として 1〜3pF 程度の値が載っています。載っていない品種では、同系統の他のピンの入力容量(数 pF)を目安にします。
配線とパッドの容量。水晶と C1・C2 は MCU のすぐそばに置くのが定石ですが、それでもパッドと数 mm の配線で 0.3〜1pF 程度が付きます。ベタ GND の上を通す配線は、浮いた配線より容量が増えます。長さと幅が分かっていれば、配線の容量の計算機で概算できます。
両方を足すと、実務でよく使われる見積もりはCstray ≒ 2〜5pF(代表値として 3pF 前後)です。層構成やパターンで変わるので、この記事の計算はすべて Cstray = 3pF を基準に置き、範囲として 2〜5pF も添えます。本当に合っているかは、最後は実測でしか確かめられません(合わせ込みの手順は後述します)。
CL のずれが周波数をどれだけ動かすか:プリング感度
水晶の発振周波数 f は、直列共振周波数 fs と、モーショナル容量 C1m(水晶自体の等価回路の容量。C1・C2 と紛らわしいですが別物です)、シャント容量 C0、負荷容量 CL を使って次のように書けます。
f / fs = 1 + C1m / (2・(C0 + CL))
CL が指定値からずれたときの感度(プリング感度)S は、この式を CL で微分して求まります。
S = C1m / (2・(C0 + CL)²) [ppm/pF、C1m・C0・CL は pF 単位、結果を 106 倍して ppm にする]
現実的な値で node に計算させます。32.768kHz の音叉型水晶は C0 ≒ 1.0〜1.5pF(代表 1.1pF)、C1m はわずか数 fF(代表 2fF)程度です。CL = 12.5pF のとき S ≒ 5.4ppm/pF。MHz 帯の AT カット水晶は C0 ≒ 5pF、C1m ≒ 15fF 程度で、CL = 18pF のとき S ≒ 14.2ppm/pF、CL = 12pF なら S ≒ 26.0ppm/pFと、むしろ 32kHz 品より 1pF あたりの感度は高くなります。ただし AT カット水晶が使われるのは MCU クロックや通信のボーレートで、月単位の時刻ずれとして問題になるのは主に 32kHz 品です。
この S は微小変化の近似式です。CL が 1.5pF も動くような今回の例では誤差が出るので、以降の具体的な数字は近似式ではなく、f/fs の式をそのまま使って node で計算しています。
CL = 12.5pF に 22pF を付けると:node で計算する
CL = 12.5pF 指定の水晶に、C1 = C2 = 22pF を付けた場合を計算します。「CL を 2 倍した 25pF に近い、E12 系列で手に入りやすい 22pF を選んだ」という、Cstray を忘れる典型的な間違いです。C1 ‖ C2 = 22 × 22 ÷ 44 = 11pF。Cstray = 3pF を足すと、実際の CL は 14.0pF。指定の 12.5pF より 1.5pF 高くなります。
f/fs の式に CL = 12.5pF(指定)と CL = 14.0pF(実際)をそれぞれ入れて差を取ると、Δf ≒ −7.3ppm。1 か月 = 30日 × 86400秒に掛けると、約 −18.9 秒/月、つまり1 か月でおよそ 19 秒遅れます。CL が指定より大きくなる(コンデンサが大きすぎる)と発振はゆっくりになり、時計は遅れる方向にずれます。
月に約19秒:もう1つの間違いと、時計の針で見る大きさ
Cstray の見積もりを 2〜5pF の範囲で振ると、実際の CL は 13.0〜16.0pF、ずれは −2.6〜−15.1ppm、月あたり 6.8〜39.0 秒の遅れになります。「22pF を付けると月に何秒ずれるか」への答えは、代表的な条件でおよそ 19 秒/月、遅れる方向です。
もう 1 つのよくある間違い、CL 指定値をそのまま C1・C2 に使う(C1 = C2 = 12.5pF)場合も計算します。CL 実際値は 12.5 ‖ 12.5 + 3 = 9.25pF。指定より 3.25pF も低いので、Δf ≒ +23.1ppm、月あたり約 60 秒進みます。こちらのほうがずっと大きな誤差です。正しく C1 = C2 = 2 × (12.5 − 3) = 19pF を使えば、当然 Δf = 0 です。
CL の指定値で感度は何倍も変わる:6pF・7pF・9pF・12.5pF の比較
同じ 1.5pF のずれでも、水晶が指定する CL の値によって周波数誤差は大きく変わります。S = C1m/(2(C0+CL)²) の分母に CL が入っているとおり、CL の指定値が小さい水晶ほど、同じ pF のずれに対して敏感です。C0 = 1.1pF、C1m = 2fF を共通にして、ΔCL = +1.5pF(コンデンサが大きすぎた場合)を各 CL 指定値に適用し、node で計算しました。
| CL 指定値 | 感度 S | Δf(+1.5pF 時) | 秒/月 |
|---|---|---|---|
| 6pF | 19.8ppm/pF | −24.6ppm | −63.7秒 |
| 7pF | 15.2ppm/pF | −19.3ppm | −50.0秒 |
| 9pF | 9.8ppm/pF | −12.8ppm | −33.2秒 |
| 12.5pF | 5.4ppm/pF | −7.3ppm | −18.9秒 |
CL = 6pF の水晶は、CL = 12.5pF の水晶よりも同じ 1.5pF のずれに対して3.4 倍敏感です。低 CL 品を使う基板ほど、C1・C2 の選定と Cstray の見積もりを慎重にやる必要があります。逆に言えば、Cstray の見積もりに自信が持てないなら、CL の大きい水晶を選ぶほうが誤差に強い設計になります(ただし後述のとおり、CL を上げると別の代償があります)。
温度特性との比較:CL のずれと、どちらが支配的か
32.768kHz の音叉型水晶は、周波数が温度の 2 乗に比例して下がる特性を持ちます(前回の記事でも触れました)。代表的な温度係数を −0.034ppm/℃²、turnover(周波数が最大になる温度)を 25℃ として計算します。
Δf = −0.034 × (T − 25)² [ppm]
| 温度差 ΔT | 気温の目安 | Δf | 秒/月 |
|---|---|---|---|
| 5℃ | 20℃ or 30℃ | −0.85ppm | −2.2秒 |
| 10℃ | 15℃ or 35℃ | −3.40ppm | −8.8秒 |
| 15℃ | 10℃ or 40℃ | −7.65ppm | −19.8秒 |
| 20℃ | 5℃ or 45℃ | −13.60ppm | −35.3秒 |
| 25℃ | 0℃ or 50℃ | −21.25ppm | −55.1秒 |
室内で想定される ±10〜15℃ 程度の温度変化による誤差(月に 9〜20 秒)は、今回の 22pF の間違い(月に約19秒)とほぼ同じ桁です。屋外や車載のように ±25℃ 近く動く用途では、温度特性のほうが支配的(月に 55 秒)になります。つまり、CL を正しく合わせても温度ドリフトはなくなりません。CL の誤差は一度直せば直る固定オフセットですが、温度誤差は環境が変わるたびに動く誤差で、性質が違います。高精度が必要なら、温度補償付きの RTC IC(温度センサで CL 相当の校正レジスタを動かす方式)が必要です。CL 側の間違いは、それとは別に、直しておかないと損なだけの誤差です。
発振余裕:CL を上げると起動しにくくなる
発振回路が起動して発振を続けるには、回路が作る負性抵抗の大きさが、水晶の等価直列抵抗ESR(Rm)を十分に上回っている必要があります。目安として、実務では負性抵抗 ÷ ESR ≥ 5 倍を確保する、という指針がよく使われます(STマイクロエレクトロニクスの発振回路設計ガイド AN2867 など)。5 倍を割り込むと、量産のばらつきや低温・低電源電圧で発振が止まる個体が出てきます。
ピアース発振回路の負性抵抗は、おおよそ|Rneg| ∝ gm ÷ (ω² × C1 × C2) で決まります(gm はインバータの相互コンダクタンス、ω = 2πf)。C1・C2 を大きくするほど、負性抵抗は C1・C2 の積に反比例して小さくなります。
先ほどの例で確かめます。正しい C1 = C2 = 19pF に対して、間違って付けた C1 = C2 = 22pF は、C1・C2 の積が (22/19)² ≒ 1.34 倍。負性抵抗はその逆数、約75%に下がります。マージンがもともと 5 倍ぎりぎりの設計なら、3.7 倍まで下がる計算です。CL の指定値を大きく見せようとしてコンデンサを大きくすると、周波数のずれだけでなく、起動しない・低温で止まるという別の不具合の原因にもなります。
症状としては、電源投入直後に発振が立ち上がらない、室温では動くのに低温槽に入れると数個だけ発振しない、といった形で現れます。周波数のずれのようにテスタや周波数カウンタで常に見えるものではなく、再現性の低い初期不良として現れるのが厄介なところです。
低 CL 品を選ぶ理由:消費電流
発振回路は、毎サイクル C1・C2 を充放電することで電流を消費します。消費電流はおおむね周波数 × (C1 + C2) に比例します。CL の指定値が大きい水晶を選ぶと、それに合わせて C1・C2 も大きくする必要があり、消費電流が増えます。
CL = 12.5pF の水晶なら C1 = C2 ≒ 19pF、CL = 6pF の水晶なら同じ Cstray = 3pF で C1 = C2 = 2×(6−3) = 6pF。容量にして 3 倍以上の差です。コイン電池でバックアップする RTC のように、消費電流が電池寿命に直結する用途では、この差が無視できません。前回の記事で触れた「0.3〜1µA」という発振回路の消費電流は、この C1・C2 の大きさにも左右されます。
つまり CL の選び方には、低 CL 品は消費電流で有利だが、C1・C2 のずれや Cstray の見積もり誤差に敏感、高 CL 品は誤差に強いが消費電流が増え、発振余裕の面でも C1・C2 が大きくなりがち、というトレードオフがあります。低消費電流のために低 CL 品(6pF や 7pF)を選ぶなら、Cstray の見積もりと実測での合わせ込みに、それだけ手間をかける必要があります。
実機での合わせ込み手順
- ① 計算で決め打ちしない。C1 = C2 = 2×(CL − Cstray) で決めた値は出発点です。E12 系列などの標準値に丸めた時点で、すでに数 % のずれが入っています。
- ② 発振ノードを直接プローブしない。オシロスコープの一般的な 10:1 プローブでも、先端の入力容量は 10〜15pF あります。これを XIN・XOUT に直接当てると、それ自体が Cstray に数 pF〜十数 pF を足してしまい、測定した周波数は実際に基板が動くときの値と一致しません。MCU にクロック出力(MCO や CLKOUT)があれば、そちらをバッファ経由で測ります。ない場合は、影響の少ない超低容量の FET プローブを使うか、測定は最終手段として周波数のずれの方向だけを見る、にとどめます。
- ③ 長時間の平均で見る。周波数カウンタのゲート時間が短いと、数 ppm の差はカウント誤差に埋もれます。1 秒ゲートでの分解能はおよそ 1ppm(1Hz/1MHz)です。32.768kHz を直接数えるより、分周後の 1PPS 出力を GPS の 1PPS や NTP と比較するほうが、月単位のドリフトとしては素直に確認できます。
- ④ C1・C2 を対で振る。左右非対称に変えるとデューティや負性抵抗のバランスが崩れるので、基本は C1 = C2 を保ったまま 1〜2pF 刻みで両方を振り、目標周波数に近づけます。標準値の間を埋めたい場合のみ、片側だけ数 pF 追加して微調整します。
- ⑤ 温度を変えて確認する。CL のずれと温度特性は別の要因です。室温で合わせただけでは、屋外や車載での挙動は分かりません。使用温度範囲の両端で発振の立ち上がりと周波数を確認します。
- ⑥ 追い込みきれない分はレジスタで。多くの MCU の RTC には、32 秒などの区間でパルスを間引く校正レジスタがあります。C1・C2 は標準値の中から選ぶしかないので、残った ±数 ppm はハードで追わず、ソフトで補正するのが現実的です。
まとめ
CL は C1・C2 に書く数字ではなく、水晶の足から見た基板全体の容量です。CL = C1・C2/(C1+C2) + Cstray を、Cstray を見積もったうえで逆算するのが最初の一歩で、ここを間違えると月に数十秒という、時計として無視できないずれになります。CL を大きく見誤ると発振余裕も減り、消費電流も増えます。計算で決めた値はあくまで出発点で、最後は実機の周波数を正しい方法で測って追い込むところまでが設計です。
配線の浮遊容量の見積もりには配線の容量の計算機を、コンデンサの表示コードの読み方にはコンデンサコードの計算機を、周波数と周期の換算には周波数⇔波長の計算機を使ってください。
よくある質問
CL の指定値をそのまま C1・C2 のコンデンサとして使うとどうなりますか。
C1 と C2 は必ず同じ値にする必要がありますか。
Cstray を正確に測る方法はありますか。
MHz 帯の水晶にも同じ問題がありますか。
温度補償すれば CL のずれは気にしなくてよいですか。
参考にした規格・資料
- STMicroelectronics, AN2867(発振回路設計ガイド) — 負荷容量CLとCstrayの関係、負性抵抗とESRのマージン(目安5倍)の考え方
- 各水晶振動子メーカ(Epson、Micro Crystal、村田製作所など)の技術資料 — 音叉型水晶のC0・C1(モーショナル容量)の代表値、温度特性、負荷容量の指定方法
- 各MCUメーカのデータシート・リファレンスマニュアル「発振回路の特性」 — XIN/XOUTピンの入力容量、推奨C1・C2の範囲、RTC校正レジスタ