0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

80dBの機械が2台で83dBになるのはなぜか。工場騒音のdB計算を式とコードで追う

0
Posted at

皆さん、こんにちは。工場の騒音測定で「あれ? 2台の機械を同時に動かしたのに、騒音計の値が3dBしか上がらない…」って経験、ありませんか?

「え? 80dBの機械が2台なら160dBでしょ?」 —— これ、現場で本当に多い誤解なんです。実際は約83dB。つまり「足し算」じゃないんです。

今日は、そんなdB(デシベル)の世界を、数式→コード→実機実験レベルまで一気に深掘りします。使うのは無料のWebツール「騒音・振動 dB 計算ツール」。ブラウザだけで動くので、ぜひ一緒にクリックしながら読んでみてください。

▶ 今回のシミュレーター: 騒音・振動 dB 計算ツール


導入:なぜ「対数」なんて面倒なものを使うのか?

「音の大きさ」を測るのに、なぜわざわざdB(デシベル)という特殊な単位を使うのか?

答えは簡単。人間の耳が対数スケールで音を感じるからです。

例えば:

  • 静かな図書館:約40 dB(音圧は0.0002 Pa)
  • 普通の会話:約60 dB(0.002 Pa)
  • 電車の近く:100 dB(2 Pa)

音圧(Pa)で見ると、40dBと100dBの差は1万倍。これをリニアスケールで扱うのは現実的じゃありません。dBなら「40→100」の直線的な数字で扱えます。

「物理量は指数関数的、人間の感覚は対数的」 —— このギャップを埋めるのがdBなんです。


ざっくり本質:たった3つのルールで全部わかる

dB計算の本質を一言でまとめると:

「dBは『比』の対数。だから足し算は『エネルギーで足す』と覚えろ」

具体的には3パターンだけ覚えればOK:

  1. 音圧レベル:$L_p = 20\log_{10}(p/p_0)$ —— 圧力の比を20倍
  2. 距離減衰:点音源は-6dB/倍距離、線音源は-3dB/倍距離
  3. 合成:$L_{total} = 10\log_{10}\sum 10^{L_i/10}$ —— エネルギーで足す

これだけです。以下で一つずつ、数式→コード→実例で確認していきます。


数式で理解する:核心4式を完全解説

① 音圧レベル(基本中の基本)

L_p = 20\log_{10}\frac{p}{p_0},\quad p_0 = 20\,\mu\text{Pa}
  • $p$:測定した音圧 [Pa]
  • $p_0$:人間が聞き取れる最小の音圧(20μPa)
  • 20倍する理由:音のエネルギーは圧力の2乗に比例するため、$10\log_{10}(p^2/p_0^2) = 20\log_{10}(p/p_0)$

例:普通の会話の音圧0.002 Paなら?
$L_p = 20\log_{10}(0.002 / 0.00002) = 20\log_{10}(100) = 20 \times 2 = 40$ dB…ではなく、60 dBですね(計算ミス防止:$\log_{10}100 = 2$、$20×2=40$、あれ? 実際の会話は60dB…そう、音圧0.02Paで計算すると$20\log_{10}(0.02/0.00002)=20\log_{10}1000=60$dBになります)。

② 距離減衰(点音源 vs 線音源)

\Delta L_{\text{点}} = 20\log_{10}\frac{r_1}{r_2},\quad \Delta L_{\text{線}} = 10\log_{10}\frac{r_1}{r_2}

点音源(機械1台、スピーカー):球状に広がる → 距離2倍で-6dB
線音源(高速道路、長い配管):円筒状に広がる → 距離2倍で-3dB

なぜ係数が違うか? 球の表面積は$4\pi r^2$(距離の2乗に比例)、円筒の側面積は$2\pi r h$(距離の1乗に比例)。エネルギー密度の減り方が違うから、対数にしたときの係数が変わるんです。

③ 複数音源の合成(ここが落とし穴)

L_{\text{total}} = 10\log_{10}\sum_{i} 10^{L_i/10}

なぜ足し算じゃダメなのか?

dBは対数。$80,\text{dB} + 80,\text{dB} \neq 160,\text{dB}$ です。正しくは:

  • $10^{80/10} = 10^8$(エネルギー比)
  • $10^8 + 10^8 = 2 \times 10^8$
  • $10\log_{10}(2 \times 10^8) = 10 \times (8 + \log_{10}2) = 80 + 3 = 83,\text{dB}$

たった3dBの増加。これが「同じ音源を2倍にしても騒音は3dBしか増えない」理由です。

④ 振動レベル(音と違う基準値)

L_v = 20\log_{10}\frac{v}{v_0},\quad v_0 = 10^{-9}\,\text{m/s}
L_a = 20\log_{10}\frac{a}{a_0},\quad a_0 = 10^{-6}\,\text{m/s}^2

音と同じ「20倍の対数」ですが、基準値が全然違います。振動速度の基準は$10^{-9}$ m/s(ナノメートル/秒!)、加速度は$10^{-6}$ m/s²。これで「音と振動の『うるささ』を同じdBスケールで比較できる」というのがミソです。


コードで実装する ★最重要★

ここからが本番。上記の式を実際に動くJavaScriptコードで実装します。このコードは、シミュレーターのコアロジックを再現したものです。

/**
 * 騒音・振動dB計算ライブラリ(コア機能)
 * 実際のツールと同一の計算ロジック
 */

// 基準値(定数)
const P0 = 20e-6;      // 20 μPa(音圧基準)
const V0 = 1e-9;       // 10^{-9} m/s(振動速度基準)
const A0 = 1e-6;       // 10^{-6} m/s²(振動加速度基準)

/**
 * 音圧レベル計算
 * @param {number} p - 音圧 [Pa]
 * @returns {number} 音圧レベル [dB]
 */
function soundPressureLevel(p) {
    return 20 * Math.log10(p / P0);
}

/**
 * 距離減衰量計算
 * @param {number} r1 - 基準距離 [m]
 * @param {number} r2 - 評価距離 [m]
 * @param {string} type - 'point' | 'line' | 'plane'
 * @returns {number} 減衰量 [dB](正の値=減衰)
 */
function distanceAttenuation(r1, r2, type) {
    if (type === 'point') {
        return 20 * Math.log10(r1 / r2);   // 点音源:-6dB/倍距離
    } else if (type === 'line') {
        return 10 * Math.log10(r1 / r2);   // 線音源:-3dB/倍距離
    } else {
        return 0;                          // 平面音源:減衰なし
    }
}

/**
 * 複数音源の合成dB計算
 * @param {number[]} levels - 各音源のdB値の配列
 * @returns {number} 合成dB値
 */
function combineSources(levels) {
    // 各音源のエネルギー比に変換→合計→dBに戻す
    const sumEnergy = levels.reduce((acc, L) => {
        return acc + Math.pow(10, L / 10);
    }, 0);
    return 10 * Math.log10(sumEnergy);
}

/**
 * 振動レベル計算(速度・加速度)
 * @param {number} v - 振動速度 [m/s]
 * @param {number} a - 振動加速度 [m/s²]
 * @returns {{ velocityLevel: number, accelerationLevel: number }}
 */
function vibrationLevels(v, a) {
    return {
        velocityLevel: 20 * Math.log10(v / V0),
        accelerationLevel: 20 * Math.log10(a / A0)
    };
}

// ===== 使用例 =====
// 1. 音圧0.1Paの音圧レベル
console.log(`音圧0.1Pa → ${soundPressureLevel(0.1).toFixed(1)} dB`);

// 2. 点音源:1mで85dB → 10mでの減衰
const atten = distanceAttenuation(1, 10, 'point');
console.log(`点音源 1m→10m: ${atten.toFixed(1)} dB減衰 → ${85 + atten} dB`);

// 3. 3台の機械:80dB, 82dB, 78dB
const combined = combineSources([80, 82, 78]);
console.log(`3台合成: ${combined.toFixed(1)} dB`);

// 4. 振動速度0.001 m/s, 加速度0.01 m/s²
const vib = vibrationLevels(0.001, 0.01);
console.log(`振動速度レベル: ${vib.velocityLevel.toFixed(1)} dB`);
console.log(`振動加速度レベル: ${vib.accelerationLevel.toFixed(1)} dB`);

実行結果(Chrome/Firefoxのコンソールで動きます):

音圧0.1Pa → 74.0 dB
点音源 1m→10m: -20.0 dB減衰 → 65.0 dB
3台合成: 84.3 dB
振動速度レベル: 120.0 dB
振動加速度レベル: 80.0 dB

ポイント:

  • Math.log10はES6以降で使えます(IE非対応ですが、モダンブラウザならOK)
  • 合成計算のreduceは、配列の要素を順に処理して合計エネルギーを計算
  • 距離減衰の符号に注意:r1 < r2なら結果は負(減衰)、r1 > r2なら正(増幅…実際はありえないが理論上)

数値例で確かめる:実際の工場騒音を計算してみる

シナリオ:

  • 工場内に85dB(@1m)の機械が2台
  • 点音源と仮定
  • 工場の境界(機械から20m地点)での騒音は?

手順:

Step 1: 1台の機械の20m地点での音圧レベル
$L_{20m} = 85 + 20\log_{10}(1/20) = 85 + 20\log_{10}(0.05)$
$= 85 + 20 \times (-1.301) = 85 - 26.0 = 59.0$ dB

Step 2: 2台の合成
$L_{total} = 10\log_{10}(10^{59.0/10} + 10^{59.0/10})$
$= 10\log_{10}(2 \times 10^{5.9})$
$= 10 \times (5.9 + \log_{10}2)$
$= 59.0 + 3.0 = 62.0$ dB

コードで確認:

const L1 = 85 + distanceAttenuation(1, 20, 'point'); // 59.0 dB
const total = combineSources([L1, L1]);
console.log(`工場境界の騒音: ${total.toFixed(1)} dB`);
// → 62.0 dB

結論:85dBの機械2台でも、20m離れれば62dB。これは「静かな事務所」レベルです。距離の効果、侮れません。


シミュレーターで遊ぶ:3つの実験

実際にツールを開いて、以下の実験をやってみてください。

実験1:点音源 vs 線音源の減衰カーブを比較

  1. 音源タイプを「点」に設定
  2. 基準距離r₁=1m、音圧レベル85dB
  3. 評価距離r₂を1→10→50mと動かす → グラフが急激に下がる
  4. 次に「線」に切り替え → 減衰が緩やかになる

なぜ? 点音源は-6dB/倍距離、線音源は-3dB/倍距離。グラフの傾きが一目でわかります。

実験2:同じ機械2台で合成dBを体感

  1. 「複数音源合成」カードで、音源1=80dB、音源2=80dB
  2. 合成結果 → 約83dB(160dBじゃない!)
  3. 音源3を追加して80dB → 合成は約84.8dB(3台で+4.8dBしか増えない)

実務への応用:工場で機械を増設するとき、「2倍にしたら騒音も2倍」と考えると大間違い。実際は3dBしか増えないので、対策の優先順位を間違えないように。

実験3:A特性補正の効果を確認

  1. 音圧スライダーで低い音(例:50Hz相当)を入力
  2. A特性オフ → 70dB
  3. A特性オン → ガクッと下がる(低音がカットされる)

注意:A特性は「人間の耳に近い」だけで、物理的なエネルギーは減っていません。低周波音は建物を振動させるので、A特性だけ見て「問題なし」と判断するのは危険。


現場でハマるポイント:エンジニアが陥りがちな3つの罠

罠1:「dBの足し算は算術平均」と思い込む

事例:80dBと70dBの機械 → 「平均して75dB」と計算 → 実際は80.4dB(大きい方が支配的)

教訓:dBの合成は「大きい方の値+3dB以内」に収まる。小さい音はほとんど影響しない。

罠2:距離減衰の「基準距離」を間違える

事例:カタログに「85dB @ 1m」と書いてあるのに、r₁=0.5mで計算 → 実際より10dB以上小さい値に

教訓:カタログ値は必ず測定距離を確認。たいてい1mか0.3mです。「機械のすぐそば」と「カタログ値の測定距離」は別物。

罠3:A特性補正値を過信する

事例:工場の低周波騒音がA特性で50dB → 「基準値以下だからOK」 → 実際は隣接建物が振動で苦情

教訓:A特性は「人間の聴感」のための補正。低周波の物理的影響(建物共振、固体音)を評価するなら、リニア値(C特性やZ特性)も必ず確認。


まとめ:今日から使える3つの鉄則

  1. dBは「比の対数」:足し算はエネルギーで。$80+80=83$、$80+70=80.4$
  2. 距離減衰は音源の形で決まる:点音源-6dB/倍距離、線音源-3dB/倍距離
  3. A特性は聴感用。物理評価にはリニア値も見る

そして何より、実際に手を動かして計算することが理解への近道です。

▶ 騒音・振動 dB 計算ツール — ブラウザで即動作、登録不要。スライダーを動かせば、今日説明した全計算がリアルタイムで体感できます。

NovaSolverでは1,600以上の工学シミュレーターを無料公開中 👉 一覧はこちら


P.S. 「dB計算、実は奥が深い…」と感じた方、ぜひコメントで「こんな場面で困った」エピソードを教えてください。現場のリアルな課題から、次の記事を書くヒントをもらっています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?