「基板設計って、配線さえ通ればいいんでしょ?」
そう思っていた時期が私にもありました。ところが、ある現場で「基板が焼けた」というトラブルに遭遇。原因はたった一つのパワーMOSFET。データシートには余裕で収まっているはずなのに、なぜか部品が死んでいる。調べてみると、「データシートの熱抵抗値はJEDEC標準基板での値であって、あなたの基板では使えませんよ」 というオチでした。
そんな経験、ありませんか? あるいは、これから熱設計を始める方なら、これが落とし穴になるかもしれません。
今日は、そんな熱設計の基本中の基本——ジャンクション温度(Tj) を、正確かつ手軽に計算できるツールを軸に、その理論から実装、現場での使い方まで徹底的に解説します。
「チップの温度」を決める3つの熱抵抗
半導体チップそのものの温度をジャンクション温度(Tj) と呼びます。これが高すぎると、性能劣化や最悪の場合は破壊に至ります。例えば、自動車のECUに使われるパワーMOSFETは、Tjが150℃を超えると故障リスクが急上昇します。
では、Tjはどうやって決まるのか? 単純な熱の流れで考えると、以下の図式が頭に入ってきます:
チップ(発熱源) → パッケージ表面 → ヒートシンク → 周囲空気
この熱の流れやすさを表すのが熱抵抗で、単位は K/W(ケルビンパーワット)。数値が小さいほど熱が逃げやすい。
実際の熱抵抗ネットワークは、3つの直列抵抗でモデル化できます:
- θjc:ジャンクションからパッケージケースまでの熱抵抗
- θcs:ケースからヒートシンクまでの熱抵抗(放熱シートやグリスの影響)
- θsa:ヒートシンクから周囲空気までの熱抵抗
これらを足し合わせたものが θja(ジャンクション-周囲間熱抵抗) です。
「熱抵抗を制する者が、熱設計を制す」
この一言に尽きます。
数式で理解する:Tj計算の核心
基本式は驚くほどシンプルです。以下の2式だけ覚えればOK:
T_j = T_a + P \times \theta_{ja}
\theta_{ja}= \theta_{jc}+ \theta_{cs}+ \theta_{sa}
- Tj:ジャンクション温度 [℃]
- Ta:周囲温度 [℃](基板周りの空気温度)
- P:消費電力 [W](チップが発する熱量)
- θja:ジャンクション-周囲間熱抵抗 [K/W]
つまり、「周囲温度に、消費電力×全熱抵抗を足したもの」 がチップ温度です。
例えば、Ta=25℃、P=5W、θja=20 K/W なら:
Tj = 25 + 5×20 = 125℃
たったこれだけ。でも、現実の設計ではこのθjaが「自分の基板条件」でどう変わるかが難しいんです。
コードで実装する:JavaScriptでTj計算機を作る
では、この計算を実際に動くコードで実装してみましょう。今回のツールのコアロジックをJavaScriptで再現します。
/**
* ジャンクション温度計算機
* @param {number} Ta - 周囲温度 [℃]
* @param {number} P - 消費電力 [W]
* @param {number} theta_jc - ジャンクション-ケース熱抵抗 [K/W]
* @param {number} theta_cs - ケース-ヒートシンク熱抵抗 [K/W]
* @param {number} theta_sa - ヒートシンク-周囲熱抵抗 [K/W]
* @param {number} N - サーマルビア本数 (0ならビアなし)
* @returns {object} { Tj, theta_ja, 対策提案 }
*/
function calcJunctionTemp(Ta, P, theta_jc, theta_cs, theta_sa, N = 0) {
// サーマルビアによる熱抵抗低減効果(簡易モデル)
// ビア1本あたりの熱抵抗を仮定:ビア径0.3mm、長さ1.6mm、銅の熱伝導率400W/mK
const R_via_single = 0.025; // 1本当たりの熱抵抗 [K/W](目安値)
const R_via_total = (N > 0) ? R_via_single / N : Infinity; // 並列合成
// ビアがある場合、θsaに並列合成して実効熱抵抗を計算
// 実際のツールではより詳細なモデルを使うが、ここでは簡易版
let theta_sa_eff = theta_sa;
if (N > 0 && isFinite(R_via_total)) {
// ビアはヒートシンクと並列に熱を逃がすと仮定
theta_sa_eff = 1 / ((1/theta_sa) + (1/R_via_total));
}
// 全熱抵抗
const theta_ja = theta_jc + theta_cs + theta_sa_eff;
// ジャンクション温度
const Tj = Ta + P * theta_ja;
// 対策提案ロジック
let advice = '';
if (Tj > 150) {
advice = '⚠️ 危険! Tjが150℃超過。対策:θsaを下げる(ヒートシンク大型化/風速増)、またはPを低減';
} else if (Tj > 125) {
advice = '⚠️ 注意! Tjが125℃超過。放熱強化を検討(ビア増加、θcs低減)';
} else {
advice = '✅ 安全範囲内';
}
return {
Tj: Math.round(Tj * 100) / 100,
theta_ja: Math.round(theta_ja * 1000) / 1000,
theta_sa_eff: Math.round(theta_sa_eff * 1000) / 1000,
advice: advice
};
}
// 実行例:パワーMOSFET、TO-220パッケージ想定
const result = calcJunctionTemp(
25, // Ta [℃]
10, // P [W]
1.5, // θjc [K/W](データシート値)
0.5, // θcs [K/W](放熱グリス塗布時)
8.0, // θsa [K/W](小型ヒートシンク、自然対流)
8 // サーマルビア本数
);
console.log(`Tj = ${result.Tj} ℃`);
console.log(`θja = ${result.theta_ja} K/W`);
console.log(`実効θsa = ${result.theta_sa_eff} K/W`);
console.log(result.advice);
このコードをブラウザの開発者ツール(F12)で実行すれば、実際に計算できます。ポイントは:
- サーマルビアの効果:本数Nを増やすと、並列に熱抵抗が下がる
- 実効θsaの計算:ビアとヒートシンクが並列に熱を逃がすモデル
- 対策提案:Tjの値域に応じて自動でアドバイス
数値例で確かめる:実際の値で計算してみる
では、具体的な数値を入れてみましょう。
条件:
- 周囲温度:Ta = 25℃
- 消費電力:P = 8W(車載インバーターのパワーMOSFET想定)
- θjc = 1.2 K/W(データシートから)
- θcs = 0.3 K/W(放熱シート)
- θsa = 6.0 K/W(ヒートシンク、自然対流)
- サーマルビア:0本(ビアなし)
計算:
θja = 1.2 + 0.3 + 6.0 = 7.5 K/W
Tj = 25 + 8 × 7.5 = 25 + 60 = 85℃
この値なら、多くのパワー半導体の最大定格(150℃)に対して余裕があります。
では、ビアを8本追加したら?
コードを実行すると:
Tj = 78.13 ℃
θja = 6.641 K/W
実効θsa = 5.141 K/W
なんと、約7℃も下がりました! ビア効果、侮れません。
さらに、風速を上げてθsaを3.0 K/Wに改善したら?
(θsaを3.0に変更して再計算)
Tj = 61.0 ℃
θja = 4.5 K/W
85℃ → 61℃ と、約24℃も改善。これが熱設計の力です。
シミュレーターで遊ぶ:パラメータを動かして体感
実際のツールで、いくつか実験してみましょう。
実験1:消費電力Pを変えてみる
スライダーを動かすと、Tjが直線的に変化します。「Pを2倍にするとTjも2倍(の差分)になる」 ことを体感できます。
例えば、先ほどの条件(θja=7.5 K/W)で:
- P=5W → Tj=62.5℃
- P=10W → Tj=100℃
- P=15W → Tj=137.5℃
10Wから15Wのたった5W増加で、37.5℃も上昇! パワー半導体の設計では、この「たかが数ワット」が命取りになります。
実験2:サーマルビア本数Nの効果
ビア本数を0本→4本→8本→16本と増やすと、Tjがどのように下がるか?
- 0本:Tj=85.0℃
- 4本:Tj=80.5℃
- 8本:Tj=78.1℃
- 16本:Tj=76.6℃
本数を増やすほど効果は頭打ちになります。これは並列抵抗の性質で、ビアの本数が増えると合成抵抗の低減率が鈍るからです。実務では、「最初の4本で大きな効果、その後は緩やか」 という感覚を持っておくと良いでしょう。
実験3:風速vを変えてみる
ツールの「風速v」パラメータは、θsaの低減に直結します。
- 静止空気(v=0 m/s):θsa=8.0 K/W → Tj=93℃
- 弱い風(v=1 m/s):θsa≈5.0 K/W → Tj=73℃
- 強制空冷(v=3 m/s):θsa≈3.0 K/W → Tj=61℃
たった1m/sの風で20℃も改善! 筐体設計では、ファンの選定がどれだけ重要かがわかります。
現場でハマるポイント:このツールの落とし穴
せっかくの便利ツールも、誤解したまま使うと痛い目に遭います。以下のポイントは必ず押さえておきましょう。
落とし穴1:「θjaは部品固有の定数」という誤解
データシートに載っているθjaは、JEDEC標準基板(4層、2oz銅、76×114mm) での測定値です。あなたの基板がこれと異なる場合、実効的なθjaは大きく変わります。
例えば、θja=50 K/Wと書いてあるICを、2層基板(銅箔面積が標準の半分)に実装すると、実効θjaは80 K/W近くになることもあります。このツールの価値は、「自分の設計条件における実質的なθja」 を導き出せる点にあります。
落とし穴2:θsaのカタログ値をそのまま入れない
ヒートシンクのカタログには「静止空気中でθsa=10 K/W」と書いてあるかもしれません。でも、筐体内にファンがあれば、風速2m/sで4 K/Wまで下がることも珍しくありません。
ツールの「風速v」パラメータは、この効果を考慮するためのものです。「カタログ値は静止空気の値」 と覚えておきましょう。
落とし穴3:計算結果は「絶対」ではない
このツールは熱抵抗ネットワーク(ランプアップモデル) というシンプルなモデルを使っています。実際の熱流は3次元的で、部品同士の熱的干渉(カップリング)も起こります。
例えば、基板上で発熱する2個のICが接近していると、お互いを「加熱」し合って計算値より高温になります。シミュレーション結果は「設計の方向性を確認し、対策の優先順位をつけるための羅針盤」 として使いましょう。
まとめ:熱設計の3つの鉄則
- Tj計算は「Ta + P × θja」で決まる — θjaを構成する3つの熱抵抗(θjc, θcs, θsa)を理解せよ
- サーマルビアと風速は強力な武器 — ビアは最初の数本で効果大、風速1m/sで20℃改善も
- データシートのθjaは「標準条件」の値 — 自分の基板条件で再計算せよ
そして、今回紹介したツールは、これらの鉄則をリアルタイムで体感できる優れものです。
▶ PCB熱解析・ジャンクション温度 計算機 — ブラウザで即動作、登録不要
スライダーを動かすだけで、Tjがどう変わるか一目瞭然。設計の初期段階で「これ、熱的に大丈夫か?」と悩んだら、まずこのツールで簡易計算してみてください。「たかが数ワット」が「されど数ワット」 であることを、きっと実感できるはずです。
NovaSolverでは、今回紹介したもの以外にも1,600以上の工学シミュレーターを無料公開しています。熱設計だけでなく、構造解析や電磁界シミュレーションまで、設計の味方になるツールが揃っています。
「熱で泣く前に、ツールで確かめる」 — これを習慣にすれば、基板焼けのトラブルはきっと減らせます。さあ、あなたも今日から熱設計マスターへの第一歩を。