Стаття
Термодинаміка · ⏱ ≈ 11 хв читання · Останнє оновлення: 23 червня 2026 р.

Цикл Карно та межі теплових двигунів

У 1824 році Саді Карно довів, що жоден тепловий двигун, який працює між двома фіксованими температурами, не може бути ефективнішим за повністю оборотний двигун — і вивів, яким саме є цей максимальний ККД. Результат вражає: він залежить лише від температур, а не від робочого тіла, конструкції двигуна чи палива. Розуміння причини розкриває найглибший зв'язок між роботою, теплотою та ентропією.

1. Теплові двигуни та другий закон

Тепловий двигун поглинає теплоту Q_h з гарячого резервуара за температури T_h, перетворює частину її на роботу W, а решту Q_c скидає до холодного резервуара за T_c. Збереження енергії дає:

Перший закон: W = Q_h − Q_c Тепловий ККД: η = W / Q_h = 1 − Q_c/Q_h Другий закон (Кельвіна-Планка): жоден двигун не може повністю перетворити теплоту на роботу в циклічному процесі — Q_c > 0 завжди.

Теорема Карно стверджує, що усі оборотні двигуни, що працюють між тими самими двома температурами, мають однаковий ККД, а будь-який необоротний двигун має строго нижчий ККД.

2. Чотири оборотні процеси

1 → 2 Ізотермічне розширення

Газ розширюється за T_h, поглинаючи Q_h. Робота W₁₂ = nRT_h·ln(V₂/V₁). Температура стала → внутрішня енергія незмінна.

2 → 3 Адіабатичне розширення

Газ розширюється без теплообміну. Температура падає з T_h до T_c. Робота W₂₃ = nCᵥ(T_h − T_c). PVᵞ = const.

3 → 4 Ізотермічне стискання

Газ стискається за T_c, віддаючи Q_c. Робота W₃₄ = −nRT_c·ln(V₃/V₄). Має відводити теплоту для підтримання температури.

4 → 1 Адіабатичне стискання

Газ стискається назад до початкового стану. Температура зростає з T_c до T_h. Робота W₄₁ = −nCᵥ(T_h − T_c).

Адіабатичні кроки взаємно скорочуються за роботою (W₂₃ + W₄₁ = 0), тож чиста робота циклу дорівнює різниці двох ізотермічних робіт.

3. PV-діаграма та робота

На діаграмі тиск-об'єм охоплена площа дорівнює чистій виконаній роботі за цикл:

Ізотерма (T стала): PV = nRT → P = nRT/V (гіпербола) Адіабата: PVᵞ = K → P = K/Vᵞ (крутіша крива, γ = Cₚ/Cᵥ) Чиста робота за цикл: W_net = W₁₂ + W₃₄ = nR(T_h − T_c) · ln(V₂/V₁) Поглинута теплота: Q_h = nRT_h · ln(V₂/V₁) Відведена теплота: Q_c = nRT_c · ln(V₃/V₄) = nRT_c · ln(V₂/V₁) (через адіабатичне обмеження: V₂/V₁ = V₃/V₄)

4. ККД Карно

Поєднуючи Q_h та Q_c, логарифм скорочується, залишаючи напрочуд чистий результат:

η_Carnot = 1 − Q_c/Q_h = 1 − T_c/T_h Температури мають бути в Кельвінах (абсолютна шкала). Приклад — парова турбіна (T_h = 600 К, T_c = 300 К): η_max = 1 − 300/600 = 0.50 = 50% Найкраща реальна парова станція досягає ~42% (необоротності знижують його). Щоб підвищити ККД: ↑ T_h (перегріта пара) → технічна межа: матеріали ↓ T_c (холодна вода конденсатора) → практична межа: довкілля

Цей результат глибокий: ККД залежить лише від відношення T_c/T_h. Ідеальний двигун за кімнатної температури й температури тіла (T_h=310 К, T_c=293 К) має максимальний ККД лише 5.5%.

5. Ентропія та TS-діаграма

Ентропія S визначається через оборотний теплообмін: dS = δQ_rev / T. Цикл Карно — це прямокутник на діаграмі температура-ентропія:

Процес ΔS 1→2 (ізотерма T_h): ΔS = +Q_h/T_h (ентропія зростає) 2→3 (адіабата): ΔS = 0 (без теплообміну) 3→4 (ізотерма T_c): ΔS = −Q_c/T_c (ентропія спадає) 4→1 (адіабата): ΔS = 0 Оборотність: Q_h/T_h = Q_c/T_c → цикл ΔS_total = 0 Площа TS-прямокутника = W_net = (T_h − T_c)·ΔS Для необоротного двигуна: Q_c/T_c > Q_h/T_h → породжується ентропія → нерівність Клаузіуса: ∮ δQ/T ≤ 0

6. Реальні двигуни: Отто, Дизель, Стірлінг

Реальні термодинамічні цикли наближаються до ідеалу Карно різними способами:

Цикл Отто

Бензиновий двигун. Дві адіабати + дві ізохори (сталий об'єм). η_Otto = 1 − r^(1−γ), r = ступінь стиснення. Типовий η ≈ 25–35%.

Цикл Дизеля

Запалення від стиснення. Дві адіабати + одна ізохора + одна ізобара. Вищий ступінь стиснення r, ніж в Отто → дещо кращий ККД ≈ 35–45%.

Цикл Стірлінга

Дві ізотерми + дві ізохори з регенератором. Теоретично досягає ККД Карно! Використовується в сонячних дзеркальних концентраторах та підводних човнах.

Цикл Ренкіна

Цикл парової електростанції. Насос → котел → турбіна → конденсатор. Реальні станції використовують повторний перегрів та регенерацію, щоб наблизитися до ККД 40–42%.

7. Симуляція на JavaScript

// Симуляція циклу Карно — ідеальний газ, n молів
const R = 8.314; // Дж/(моль·К)

function carnotCycle(n, Th, Tc, V1, gamma = 1.4) {
  // Адіабатичне обмеження: V2/V1 = (Th/Tc)^(1/(γ-1))
  const adRatio = Math.pow(Th / Tc, 1 / (gamma - 1));
  const V2 = V1 * adRatio;
  // Ізотермічне розширення дає V3 = V2*(Tc/Th)^(1/(γ-1)) ... спрощено:
  const V4 = V1;          // адіабатичне стискання повертає до V1
  const V3 = V2 * adRatio; // симетрична адіабата

  const Qh = n * R * Th * Math.log(V2 / V1);
  const Qc = n * R * Tc * Math.log(V3 / V4);
  const W  = Qh - Qc;
  const eta = 1 - Tc / Th;

  return { Qh, Qc, W, eta, V1, V2, V3, V4, Th, Tc };
}

// Генеруємо точки PV-кривої для побудови графіка
function pvCurve(type, V_start, V_end, T_or_K, n, gamma, steps = 60) {
  const pts = [];
  for (let i = 0; i <= steps; i++) {
    const V = V_start + (V_end - V_start) * i / steps;
    let P;
    if (type === 'isothermal') {
      P = n * R * T_or_K / V;
    } else { // адіабата: PVᵞ = K
      P = T_or_K / Math.pow(V, gamma);
    }
    pts.push({V, P});
  }
  return pts;
}

// Малюємо PV-діаграму на canvas
function drawPV(ctx, cycle, W, H) {
  const {Qh, Qc, Th, Tc, V1, V2, V3, V4} = cycle;
  const n = 1, gamma = 1.4;
  const P1 = n * R * Th / V1;
  const K_ad12 = P1 * Math.pow(V1, gamma); // адіабатична стала 2→3

  const allV = [V1,V2,V3,V4], allP = [P1];
  allP.push(n*R*Th/V2, n*R*Tc/V3, n*R*Tc/V4);
  const vMin = Math.min(...allV), vMax = Math.max(...allV);
  const pMin = Math.min(...allP) * 0.8, pMax = Math.max(...allP) * 1.2;

  const toX = v => 60 + (v-vMin)/(vMax-vMin) * (W-80);
  const toY = p => H-50 - (p-pMin)/(pMax-pMin) * (H-80);

  ctx.clearRect(0, 0, W, H);
  ctx.strokeStyle = '#f97316'; ctx.lineWidth = 2;
  ctx.beginPath();
  const segments = [
    pvCurve('isothermal', V1, V2, Th, n, gamma),
    pvCurve('adiabatic', V2, V3, K_ad12, n, gamma),
    pvCurve('isothermal', V3, V4, Tc, n, gamma),
    pvCurve('adiabatic', V4, V1, K_ad12*0.5, n, gamma)
  ];
  let first = true;
  for (const seg of segments) {
    for (const {V, P} of seg) {
      first ? ctx.moveTo(toX(V), toY(P)) : ctx.lineTo(toX(V), toY(P));
      first = false;
    }
  }
  ctx.closePath();
  ctx.fillStyle = '#f9731620'; ctx.fill(); ctx.stroke();
}

// Приклад використання
const cycle = carnotCycle(1, 600, 300, 0.001);
console.log(`η = ${(cycle.eta*100).toFixed(1)}%`); // η = 50.0%

8. Застосування та межі