<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Archiwa opory hydrauliczne - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/tag/opory-hydrauliczne/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/tag/opory-hydrauliczne/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Sun, 13 Sep 2026 17:25:51 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa opory hydrauliczne - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/opory-hydrauliczne/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Wymiennik płytowy w ogrzewaniu podłogowym – jak działa i jak go dobrać?</title>
		<link>https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 23 Apr 2026 07:09:15 +0000</pubDate>
				<category><![CDATA[Błędy wykonawcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Modernizacja instalacji]]></category>
		<category><![CDATA[Modernizacja ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Wymiennik płytowy]]></category>
		<category><![CDATA[Zabezpieczenia instalacji]]></category>
		<category><![CDATA[awarie instalacji]]></category>
		<category><![CDATA[jastrych cementowy]]></category>
		<category><![CDATA[kocioł na paliwo stałe]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[opory hydrauliczne]]></category>
		<category><![CDATA[pex]]></category>
		<category><![CDATA[podłogówka]]></category>
		<category><![CDATA[pompa obiegowa]]></category>
		<category><![CDATA[przepływ przeciwprądowy]]></category>
		<category><![CDATA[rozdzielacz podłogowy]]></category>
		<category><![CDATA[separacja hydrauliczna]]></category>
		<category><![CDATA[sprzęgło hydrauliczne]]></category>
		<category><![CDATA[temperatura zasilania]]></category>
		<category><![CDATA[wymiennik płytowy]]></category>
		<category><![CDATA[zawór trójdrogowy]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=4369</guid>

					<description><![CDATA[<p>Zastanawiasz się, jak bezpiecznie połączyć nowoczesny system płaszczyznowy ze starszym kotłem stałopalnym lub gazowym, który generuje bardzo wysokie temperatury? Odpowiedzią na to wyzwanie inżynieryjne jest prawidłowo dobrany wymiennik płytowy w ogrzewaniu podłogowym. To stosunkowo niewielkie, ale absolutnie kluczowe urządzenie pełni funkcję głównego strażnika całej instalacji. Skutecznie obniża temperaturę wody zasilającej, chroniąc rury PEX przed przyspieszonym starzeniem oraz wylewkę przed pękaniem. W naszym najnowszym artykule dokładnie analizujemy, kiedy jego montaż jest konieczny, a w jakich sytuacjach (np. przy nowoczesnych pompach ciepła) można z niego zrezygnować. Poznaj zasady przepływu przeciwprądowego, naucz się samodzielnie obliczać opory hydrauliczne i zobacz na konkretnych przykładach, jak uniknąć krytycznych błędów, które mogą kosztować Cię nawet kilkadziesiąt tysięcy złotych za kucie zniszczonej posadzki.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/">Wymiennik płytowy w ogrzewaniu podłogowym – jak działa i jak go dobrać?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-phe {
    --rk-dark:#102536;
    --rk-navy:#15384d;
    --rk-blue:#078fbe;
    --rk-cyan:#25c7d8;
    --rk-cyan-soft:#e8fafd;
    --rk-orange:#ff6a3d;
    --rk-orange-soft:#fff0ea;
    --rk-green:#16836b;
    --rk-green-soft:#eaf8f3;
    --rk-yellow:#9a6900;
    --rk-yellow-soft:#fff7dc;
    --rk-red:#c7443a;
    --rk-red-soft:#fff0ee;
    --rk-purple:#6659c7;
    --rk-purple-soft:#f1efff;
    --rk-ink:#1c2d38;
    --rk-text:#465d6c;
    --rk-muted:#687f8d;
    --rk-line:#d6e5eb;
    --rk-soft:#f4f9fb;
    --rk-white:#fff;
    width:100%;
    color:var(--rk-ink);
    font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
    font-size:17px;
    line-height:1.72;
  }
  #rk-phe,
  #rk-phe *,
  #rk-phe *::before,
  #rk-phe *::after{box-sizing:border-box}
  #rk-phe [hidden]{display:none!important}
  #rk-phe img,
  #rk-phe svg{display:block;max-width:100%}
  #rk-phe button,
  #rk-phe input,
  #rk-phe select,
  #rk-phe summary{font:inherit}
  #rk-phe button{cursor:pointer;-webkit-tap-highlight-color:transparent}
  #rk-phe a{color:#007fae;font-weight:760;text-decoration-thickness:1.4px;text-underline-offset:3px}
  #rk-phe a:hover{color:#005d82}
  #rk-phe a:focus-visible,
  #rk-phe button:focus-visible,
  #rk-phe input:focus-visible,
  #rk-phe select:focus-visible,
  #rk-phe summary:focus-visible{outline:3px solid rgba(37,199,216,.5);outline-offset:3px}
  #rk-phe h2,
  #rk-phe h3,
  #rk-phe h4,
  #rk-phe p,
  #rk-phe ul,
  #rk-phe ol,
  #rk-phe blockquote{margin-top:0}
  #rk-phe h2,
  #rk-phe h3,
  #rk-phe h4{color:var(--rk-dark);line-height:1.18}
  #rk-phe h2{margin-bottom:18px;font-size:clamp(1.7rem,3.6vw,2.55rem);font-weight:920;letter-spacing:-.035em}
  #rk-phe h3{margin:28px 0 12px;font-size:clamp(1.16rem,2.2vw,1.46rem);font-weight:880;letter-spacing:-.02em}
  #rk-phe h4{margin:20px 0 8px;font-size:1.04rem}
  #rk-phe p{margin-bottom:18px;color:var(--rk-text)}
  #rk-phe strong{color:var(--rk-ink)}
  #rk-phe ul,
  #rk-phe ol{margin-bottom:22px;padding-left:1.3em;color:var(--rk-text)}
  #rk-phe li{margin-bottom:8px}
  #rk-phe section[id]{scroll-margin-top:24px}
  #rk-phe .rk-shell{width:min(100%,1280px);margin:0 auto;border:1px solid var(--rk-line);border-radius:28px;background:var(--rk-white);box-shadow:0 22px 70px rgba(16,37,54,.09)}

  #rk-phe .rk-hero{position:relative;isolation:isolate;overflow:hidden;padding:clamp(36px,6vw,76px) clamp(24px,6vw,74px) clamp(30px,5vw,58px);border-radius:27px 27px 0 0;background:radial-gradient(circle at 8% 118%,rgba(255,106,61,.22),transparent 38%),linear-gradient(128deg,#102536 0%,#123d51 55%,#0c6971 100%)}
  #rk-phe .rk-hero::before,
  #rk-phe .rk-hero::after{position:absolute;z-index:-1;border:clamp(22px,4vw,48px) solid rgba(255,255,255,.055);border-radius:50%;content:"";pointer-events:none}
  #rk-phe .rk-hero::before{right:-115px;bottom:-185px;width:390px;height:390px}
  #rk-phe .rk-hero::after{right:125px;bottom:-238px;width:290px;height:290px}
  #rk-phe .rk-kicker,
  #rk-phe .rk-eyebrow{display:block;margin-bottom:13px;color:var(--rk-orange);font-size:.76rem;font-weight:900;letter-spacing:.13em;line-height:1.35;text-transform:uppercase}
  #rk-phe .rk-hero-title{max-width:1120px;margin:0 0 20px;color:#fff!important;font-size:clamp(2.05rem,5.1vw,4.35rem);font-weight:950;line-height:.99;letter-spacing:-.06em}
  #rk-phe .rk-hero-title span{color:#63e5f2!important}
  #rk-phe .rk-lead{max-width:1060px;margin-bottom:24px;color:#dceef2!important;font-size:clamp(1.03rem,2vw,1.31rem);line-height:1.62}
  #rk-phe .rk-tags,
  #rk-phe .rk-byline{display:flex;flex-wrap:wrap;gap:10px 12px}
  #rk-phe .rk-tag{display:inline-flex;align-items:center;min-height:36px;padding:6px 15px;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:rgba(255,255,255,.07);color:#fff!important;font-size:.78rem;font-weight:850}
  #rk-phe .rk-byline{margin-top:23px;color:#e2f1f4!important;font-size:.82rem;font-weight:760}
  #rk-phe .rk-byline span,
  #rk-phe .rk-byline strong,
  #rk-phe .rk-byline a{color:#fff!important}
  #rk-phe .rk-hero-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:34px}
  #rk-phe .rk-hero-metric{min-width:0;padding:22px;border:1px solid rgba(255,255,255,.19);border-radius:19px;background:rgba(255,255,255,.075);backdrop-filter:blur(3px)}
  #rk-phe .rk-hero-metric b{display:block;margin-bottom:7px;color:#fff!important;font-size:1rem;line-height:1.35}
  #rk-phe .rk-hero-metric span{display:block;color:#dceef2!important;font-size:.91rem;line-height:1.55}

  #rk-phe .rk-nav{padding:22px clamp(18px,4vw,48px) 24px;border-bottom:1px solid var(--rk-line);background:#f4fafc}
  #rk-phe .rk-nav-label{display:block;margin-bottom:11px;color:var(--rk-dark);font-size:.74rem;font-weight:950;letter-spacing:.12em;text-transform:uppercase}
  #rk-phe .rk-nav-track{display:flex;flex-wrap:wrap;gap:8px;overflow:visible}
  #rk-phe .rk-nav a{display:inline-flex;align-items:center;min-height:34px;padding:6px 11px;border:1px solid #c9e0e8;border-radius:999px;background:#fff;color:#345264;font-size:.75rem;font-weight:820;line-height:1.25;text-decoration:none;white-space:normal}
  #rk-phe .rk-nav a:hover{border-color:#7fc8d8;background:var(--rk-cyan-soft);color:#075d78}

  #rk-phe .rk-section{padding:clamp(42px,7vw,78px) clamp(22px,6vw,72px);border-bottom:1px solid var(--rk-line)}
  #rk-phe .rk-section:last-child{border-bottom:0}
  #rk-phe .rk-section-soft{background:var(--rk-soft)}
  #rk-phe .rk-section-dark{background:var(--rk-dark)}
  #rk-phe .rk-section-dark h2,
  #rk-phe .rk-section-dark h3,
  #rk-phe .rk-section-dark p,
  #rk-phe .rk-section-dark li{color:#fff}
  #rk-phe .rk-intro{max-width:980px;font-size:1.06rem}
  #rk-phe .rk-answer{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);gap:24px;align-items:stretch}
  #rk-phe .rk-answer-main{padding:28px;border:1px solid #b9e4eb;border-radius:22px;background:linear-gradient(135deg,#e7fbfd,#f7ffff)}
  #rk-phe .rk-answer-main p:last-child{margin-bottom:0}
  #rk-phe .rk-verdict{display:grid;gap:13px}
  #rk-phe .rk-verdict-item{padding:18px;border:1px solid var(--rk-line);border-radius:17px;background:#fff}
  #rk-phe .rk-verdict-item b{display:block;margin-bottom:5px}
  #rk-phe .rk-verdict-item span{display:block;color:var(--rk-text);font-size:.9rem;line-height:1.55}
  #rk-phe .rk-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
  #rk-phe .rk-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
  #rk-phe .rk-grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
  #rk-phe .rk-card{min-width:0;padding:23px;border:1px solid var(--rk-line);border-radius:20px;background:#fff}
  #rk-phe .rk-card h3,
  #rk-phe .rk-card h4{margin-top:0}
  #rk-phe .rk-card p:last-child,
  #rk-phe .rk-card ul:last-child{margin-bottom:0}
  #rk-phe .rk-card-accent{border-color:#bce6ed;background:var(--rk-cyan-soft)}
  #rk-phe .rk-card-warn{border-color:#f1d492;background:var(--rk-yellow-soft)}
  #rk-phe .rk-card-green{border-color:#bfe5d8;background:var(--rk-green-soft)}
  #rk-phe .rk-card-red{border-color:#e5b5ae;background:var(--rk-red-soft)}
  #rk-phe .rk-note{margin:24px 0;padding:20px 22px;border-left:5px solid var(--rk-cyan);border-radius:0 16px 16px 0;background:var(--rk-cyan-soft)}
  #rk-phe .rk-note.warn{border-color:#e0a12b;background:var(--rk-yellow-soft)}
  #rk-phe .rk-note.error{border-color:var(--rk-red);background:var(--rk-red-soft)}
  #rk-phe .rk-note p:last-child{margin-bottom:0}
  #rk-phe .rk-formula{margin:22px 0;padding:18px 22px;border:1px solid #bfdfe7;border-radius:16px;background:#f8fdff;color:var(--rk-dark);font-weight:830;text-align:center;overflow-wrap:anywhere}

  #rk-phe .rk-number-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;counter-reset:rkstep}
  #rk-phe .rk-number-card{display:flex;align-items:flex-start;gap:16px;min-width:0;padding:21px;border:1px solid var(--rk-line);border-radius:18px;background:#fff;counter-increment:rkstep}
  #rk-phe .rk-number{display:grid;place-items:center;flex:0 0 48px;width:48px;height:48px;margin:0;padding:0;border-radius:50%;background:#d8f4f8;color:#135671;font-size:1rem;font-weight:950;line-height:1;text-align:center;transform:none}
  #rk-phe .rk-number::before{display:block;content:counter(rkstep);line-height:1}
  #rk-phe .rk-number-copy{min-width:0}
  #rk-phe .rk-number-copy h3{margin:2px 0 7px;font-size:1.02rem}
  #rk-phe .rk-number-copy p{margin:0;font-size:.91rem;line-height:1.58}

  #rk-phe .rk-tool{margin-top:28px;padding:clamp(20px,4vw,34px);border:1px solid #bedee8;border-radius:24px;background:#f8fcfd;box-shadow:0 14px 40px rgba(16,37,54,.06)}
  #rk-phe .rk-tool-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:25px}
  #rk-phe .rk-tool-head h3{margin:0 0 8px}
  #rk-phe .rk-tool-head p{margin:0;max-width:790px;font-size:.91rem}
  #rk-phe .rk-badge{display:inline-flex;align-items:center;min-height:32px;padding:5px 11px;border-radius:999px;background:var(--rk-cyan-soft);color:#09647e;font-size:.72rem;font-weight:900;white-space:nowrap}
  #rk-phe .rk-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
  #rk-phe .rk-control{min-width:0}
  #rk-phe .rk-control label{display:block;margin-bottom:7px;color:var(--rk-dark);font-size:.82rem;font-weight:850;line-height:1.35}
  #rk-phe .rk-control small{display:block;margin-top:5px;color:var(--rk-muted);font-size:.72rem;line-height:1.42}
  #rk-phe .rk-input-wrap{display:flex;align-items:stretch;width:100%;border:1px solid #bdd5df;border-radius:12px;background:#fff;overflow:hidden}
  #rk-phe .rk-input-wrap:focus-within{border-color:var(--rk-blue);box-shadow:0 0 0 3px rgba(7,143,190,.12)}
  #rk-phe .rk-input-wrap input,
  #rk-phe .rk-input-wrap select{width:100%;min-width:0;padding:11px 12px;border:0;background:#fff;color:var(--rk-ink);font-weight:760;outline:0}
  #rk-phe .rk-input-wrap span{display:grid;place-items:center;flex:0 0 auto;padding:0 11px;border-left:1px solid var(--rk-line);background:#edf5f7;color:#536d7b;font-size:.76rem;font-weight:820;white-space:nowrap}
  #rk-phe .rk-subhead{grid-column:1/-1;margin:10px 0 -2px;padding-top:10px;border-top:1px solid var(--rk-line);color:var(--rk-dark);font-size:.78rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}
  #rk-phe .rk-reset{align-self:flex-start;padding:8px 13px;border:1px solid #bfd6df;border-radius:999px;background:#fff;color:#345264;font-size:.75rem;font-weight:850}
  #rk-phe .rk-reset:hover{background:var(--rk-cyan-soft)}
  #rk-phe .rk-results{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:24px}
  #rk-phe .rk-result{min-width:0;padding:18px;border:1px solid var(--rk-line);border-radius:17px;background:#fff}
  #rk-phe .rk-result b{display:block;margin-bottom:5px;color:var(--rk-dark);font-size:clamp(1.12rem,2.6vw,1.55rem);line-height:1.2;overflow-wrap:anywhere}
  #rk-phe .rk-result span{display:block;color:var(--rk-muted);font-size:.75rem;font-weight:760;line-height:1.42}
  #rk-phe .rk-result.primary{border-color:#7fd0dc;background:linear-gradient(135deg,#e8fbfd,#fff)}
  #rk-phe .rk-result.good{border-color:#a9dccb;background:var(--rk-green-soft)}
  #rk-phe .rk-result.warn{border-color:#efcf89;background:var(--rk-yellow-soft)}
  #rk-phe .rk-result.bad{border-color:#e5aaa5;background:var(--rk-red-soft)}
  #rk-phe .rk-result-wide{grid-column:span 2}
  #rk-phe .rk-driver{margin-top:16px;padding:18px 20px;border:1px solid #c6dde5;border-radius:17px;background:#fff}
  #rk-phe .rk-driver b{display:block;margin-bottom:6px}
  #rk-phe .rk-driver p{margin:0;font-size:.88rem;line-height:1.55}

  #rk-phe .rk-tabs{display:flex;flex-wrap:wrap;gap:9px;margin:22px 0 16px}
  #rk-phe .rk-tab{min-height:42px;padding:9px 15px;border:1px solid #bcd8e1;border-radius:12px;background:#fff;color:#28495b;font-size:.79rem;font-weight:880}
  #rk-phe .rk-tab[aria-pressed="true"]{border-color:var(--rk-blue);background:var(--rk-blue);color:#fff}
  #rk-phe .rk-flow-status{margin:0 0 20px;padding:14px 18px;border-radius:14px;background:#edf8fb;color:#315564;font-size:.9rem}
  #rk-phe .rk-flow{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
  #rk-phe .rk-flow-card{position:relative;min-width:0;padding:18px 14px;border:1px solid var(--rk-line);border-radius:18px;background:#fff}
  #rk-phe .rk-flow-card:not(:last-child)::after{position:absolute;top:29px;right:-13px;z-index:2;width:24px;color:var(--rk-orange);font-size:1.35rem;font-weight:950;line-height:1;text-align:center;content:attr(data-arrow)}
  #rk-phe .rk-flow-icon{display:grid;place-items:center;width:44px;height:44px;margin-bottom:13px;border-radius:50%;background:var(--rk-cyan-soft);color:#08769a;font-size:1.15rem;font-weight:950;line-height:1}
  #rk-phe .rk-flow-card h3{margin:0 0 8px;font-size:.98rem}
  #rk-phe .rk-flow-card p{margin:0;font-size:.78rem;line-height:1.52}
  #rk-phe .rk-flow-mini{display:block;margin-top:9px;padding:7px;border-radius:9px;background:#f2f7f9;color:#44606e;font-size:.72rem;line-height:1.4}
  #rk-phe .rk-pass-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:20px}
  #rk-phe .rk-pass-card{padding:19px;border:1px solid var(--rk-line);border-radius:17px;background:#fff}
  #rk-phe .rk-pass-card b{display:block;margin-bottom:7px}
  #rk-phe .rk-pass-card p{margin:0;font-size:.84rem;line-height:1.55}

  #rk-phe .rk-chart-card{margin-top:20px;padding:18px;border:1px solid var(--rk-line);border-radius:20px;background:#fff}
  #rk-phe .rk-chart-wrap{width:100%;min-height:360px;overflow:hidden}
  #rk-phe .rk-chart-wrap svg{width:100%;height:auto;min-height:330px}
  #rk-phe .rk-chart-legend{display:flex;flex-wrap:wrap;gap:10px 18px;margin-top:12px;color:var(--rk-text);font-size:.78rem;font-weight:780}
  #rk-phe .rk-legend{display:inline-flex;align-items:center;gap:7px}
  #rk-phe .rk-legend::before{width:24px;height:4px;border-radius:9px;background:var(--rk-orange);content:""}
  #rk-phe .rk-legend.cold::before{background:var(--rk-blue)}
  #rk-phe .rk-legend.zero::before{height:2px;background:#8195a0}
  #rk-phe .rk-chart-note{margin:13px 0 0;font-size:.78rem;line-height:1.5}

  #rk-phe .rk-table-wrap{width:100%;margin:24px 0;border:1px solid var(--rk-line);border-radius:20px;overflow:hidden;background:#fff}
  #rk-phe table{width:100%;border-collapse:collapse;table-layout:fixed}
  #rk-phe th,
  #rk-phe td{padding:15px 16px;border-right:1px solid var(--rk-line);border-bottom:1px solid var(--rk-line);vertical-align:top;text-align:left;overflow-wrap:anywhere}
  #rk-phe th:last-child,
  #rk-phe td:last-child{border-right:0}
  #rk-phe tr:last-child td{border-bottom:0}
  #rk-phe thead th{background:var(--rk-navy);color:#fff;font-size:.82rem;font-weight:900}
  #rk-phe tbody td{color:var(--rk-text);font-size:.86rem;line-height:1.55}
  #rk-phe tbody tr:nth-child(even){background:#f7fafb}
  #rk-phe .rk-table-summary{width:100%;padding:15px 18px;border-bottom:1px solid var(--rk-line);background:#edf8fb;color:#294b5d;font-size:.83rem;font-weight:760;line-height:1.55}

  #rk-phe .rk-cta{position:relative;isolation:isolate;overflow:hidden;margin-top:30px;padding:clamp(27px,5vw,44px);border-radius:22px;background:linear-gradient(125deg,#102536,#174a5d 70%,#0a7077);color:#fff;box-shadow:0 18px 45px rgba(16,37,54,.16)}
  #rk-phe .rk-cta::after{position:absolute;z-index:-1;right:-70px;bottom:-110px;width:270px;height:270px;border:34px solid rgba(255,255,255,.06);border-radius:50%;content:""}
  #rk-phe .rk-cta .rk-eyebrow{color:#ff9a78}
  #rk-phe .rk-cta-title{max-width:920px;margin:0 0 12px;color:#fff!important;font-size:clamp(1.45rem,3.5vw,2.35rem);font-weight:930;line-height:1.13;letter-spacing:-.035em}
  #rk-phe .rk-cta p{max-width:950px;color:#dceef2!important}
  #rk-phe .rk-cta-button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:11px 20px;border-radius:12px;background:var(--rk-orange);color:#fff!important;font-size:.84rem;font-weight:900;text-align:center;text-decoration:none;box-shadow:0 8px 20px rgba(0,0,0,.16)}
  #rk-phe .rk-cta-button:hover{background:#e8572f;color:#fff!important}

  #rk-phe .rk-sources{margin-bottom:22px}
  #rk-phe .rk-sources li{margin-bottom:11px}
  #rk-phe .rk-responsibility{padding:20px 22px;border:1px solid var(--rk-line);border-radius:17px;background:#f8fbfc}
  #rk-phe .rk-responsibility p{margin-bottom:9px;font-size:.82rem;line-height:1.55}
  #rk-phe .rk-responsibility p:last-child{margin-bottom:0}
  #rk-phe .rk-faq{display:grid;gap:12px}
  #rk-phe .rk-faq details{border:1px solid var(--rk-line);border-radius:15px;background:#fff}
  #rk-phe .rk-faq summary{position:relative;padding:18px 52px 18px 19px;color:var(--rk-dark);font-weight:860;line-height:1.45;cursor:pointer;list-style:none}
  #rk-phe .rk-faq summary::-webkit-details-marker{display:none}
  #rk-phe .rk-faq summary::after{position:absolute;top:17px;right:18px;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--rk-cyan-soft);color:#0a7695;font-size:1.1rem;font-weight:900;line-height:1;content:"+"}
  #rk-phe .rk-faq details[open] summary::after{content:"−"}
  #rk-phe .rk-faq-answer{padding:0 19px 18px}
  #rk-phe .rk-faq-answer p{margin:0;font-size:.91rem}

  #rk-phe .rk-author{overflow:hidden;border:1px solid rgba(255,255,255,.15);border-radius:25px;background:linear-gradient(120deg,#102f42,#174e5d);color:#fff}
  #rk-phe .rk-author-head{display:flex;justify-content:space-between;gap:24px;align-items:flex-end;padding:34px 42px 29px;border-bottom:1px solid rgba(255,255,255,.13)}
  #rk-phe .rk-author-head .rk-eyebrow{color:#65e8f3}
  #rk-phe .rk-author-head h2{margin:0 0 10px;color:#fff!important}
  #rk-phe .rk-author-head p{max-width:810px;margin:0;color:#e0f0f3!important}
  #rk-phe .rk-author-mark{display:inline-flex;align-items:center;min-height:42px;padding:8px 14px;border:1px solid rgba(255,255,255,.2);border-radius:999px;color:#fff;font-size:.72rem;font-weight:900;white-space:nowrap}
  #rk-phe .rk-author-layout{display:grid;grid-template-columns:310px minmax(0,1fr)}
  #rk-phe .rk-author-side{padding:38px 32px;border-right:1px solid rgba(255,255,255,.13);text-align:center}
  #rk-phe .rk-author-photo{width:144px;height:144px;margin:0 auto 19px;padding:7px;border-radius:50%;background:rgba(255,255,255,.14)}
  #rk-phe .rk-author-photo img{width:100%;height:100%;border-radius:50%;object-fit:cover}
  #rk-phe .rk-author-name{font-size:1.22rem;font-weight:920}
  #rk-phe .rk-author-name a{color:#fff;text-decoration:none}
  #rk-phe .rk-author-role{margin:8px 0 20px;color:#dceef2!important;font-size:.83rem;line-height:1.5}
  #rk-phe .rk-author-social-label,
  #rk-phe .rk-author-mini-label{margin-bottom:10px;color:#64e6f2;font-size:.68rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase}
  #rk-phe .rk-author-social{display:flex;justify-content:center;gap:10px}
  #rk-phe .rk-author-social a{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.12);color:#fff}
  #rk-phe .rk-author-social svg{width:20px;height:20px;fill:currentColor}
  #rk-phe .rk-author-main{padding:38px 42px}
  #rk-phe .rk-author-quote{position:relative;margin:0 0 28px;padding:11px 0 0 57px;border:0}
  #rk-phe .rk-author-quote::before{position:absolute;top:-8px;left:0;color:#64e6f2;font-size:4rem;font-weight:950;line-height:1;content:"“"}
  #rk-phe .rk-author-quote p{margin:0;color:#fff!important;font-size:clamp(1.05rem,2vw,1.3rem);font-weight:830;font-style:italic;line-height:1.65}
  #rk-phe .rk-author-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
  #rk-phe .rk-author-card{min-width:0;padding:20px;border-radius:16px;background:rgba(255,255,255,.085)}
  #rk-phe .rk-author-card b{display:block;margin-bottom:8px;color:#63e5f2;font-size:.81rem}
  #rk-phe .rk-author-card p{margin:0;color:#e0f0f3!important;font-size:.76rem;line-height:1.55}
  #rk-phe .rk-author-mini-label{margin-top:25px}
  #rk-phe .rk-portals{display:flex;flex-wrap:wrap;gap:10px}
  #rk-phe .rk-portals a{display:inline-flex;align-items:center;min-height:38px;padding:7px 13px;border:1px solid rgba(255,255,255,.18);border-radius:999px;color:#fff;font-size:.72rem;text-decoration:none}

  @media (max-width:980px){
    #rk-phe .rk-answer{grid-template-columns:1fr}
    #rk-phe .rk-grid-3,
    #rk-phe .rk-grid-4{grid-template-columns:1fr 1fr}
    #rk-phe .rk-controls{grid-template-columns:repeat(2,minmax(0,1fr))}
    #rk-phe .rk-results{grid-template-columns:repeat(2,minmax(0,1fr))}
    #rk-phe .rk-flow{grid-template-columns:1fr}
    #rk-phe .rk-flow-card{display:grid;grid-template-columns:48px minmax(0,1fr);column-gap:13px;align-items:start}
    #rk-phe .rk-flow-icon{grid-row:1/4;margin:0}
    #rk-phe .rk-flow-card:not(:last-child)::after{top:auto;right:auto;bottom:-17px;left:25px;transform:rotate(90deg)}
    #rk-phe .rk-author-layout{grid-template-columns:250px minmax(0,1fr)}
    #rk-phe .rk-author-cards{grid-template-columns:1fr}
  }
  @media (max-width:760px){
    #rk-phe{font-size:16px}
    #rk-phe .rk-shell{border-radius:20px}
    #rk-phe .rk-hero{border-radius:19px 19px 0 0}
    #rk-phe .rk-hero-metrics,
    #rk-phe .rk-grid-2,
    #rk-phe .rk-grid-3,
    #rk-phe .rk-grid-4,
    #rk-phe .rk-number-grid,
    #rk-phe .rk-pass-grid{grid-template-columns:1fr}
    #rk-phe .rk-controls{grid-template-columns:1fr}
    #rk-phe .rk-results{grid-template-columns:1fr}
    #rk-phe .rk-result-wide{grid-column:auto}
    #rk-phe .rk-tool-head{display:block}
    #rk-phe .rk-tool-head .rk-reset{margin-top:14px}
    #rk-phe .rk-chart-wrap{min-height:290px}
    #rk-phe .rk-chart-wrap svg{min-height:270px}
    #rk-phe .rk-table-wrap{border:0;border-radius:0;background:transparent;overflow:visible}
    #rk-phe .rk-table-summary{margin-bottom:12px;border:1px solid var(--rk-line);border-radius:14px;background:#edf8fb}
    #rk-phe table,
    #rk-phe thead,
    #rk-phe tbody,
    #rk-phe tr,
    #rk-phe th,
    #rk-phe td{display:block;width:100%}
    #rk-phe thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
    #rk-phe tbody{display:grid;gap:12px}
    #rk-phe tbody tr{padding:9px 14px;border:1px solid var(--rk-line);border-radius:15px;background:#fff!important}
    #rk-phe tbody td{display:grid;grid-template-columns:minmax(110px,42%) minmax(0,1fr);gap:12px;padding:9px 0;border:0;border-bottom:1px dashed #dbe7eb;font-size:.82rem}
    #rk-phe tbody td:last-child{border-bottom:0}
    #rk-phe tbody td::before{content:attr(data-label);color:var(--rk-dark);font-size:.73rem;font-weight:900;line-height:1.45}
    #rk-phe .rk-author-head{display:block;padding:28px 24px}
    #rk-phe .rk-author-mark{margin-top:18px}
    #rk-phe .rk-author-layout{grid-template-columns:1fr}
    #rk-phe .rk-author-side{border-right:0;border-bottom:1px solid rgba(255,255,255,.13)}
    #rk-phe .rk-author-main{padding:30px 24px}
    #rk-phe .rk-author-quote{padding-left:42px}
    #rk-phe .rk-cta-button{width:100%}
  }
  @media (max-width:460px){
    #rk-phe .rk-section{padding-left:17px;padding-right:17px}
    #rk-phe .rk-hero{padding-left:20px;padding-right:20px}
    #rk-phe .rk-nav{padding-left:15px;padding-right:15px}
    #rk-phe .rk-nav a{font-size:.69rem}
    #rk-phe .rk-number-card{gap:12px;padding:17px}
    #rk-phe .rk-number{flex-basis:42px;width:42px;height:42px}
    #rk-phe tbody td{grid-template-columns:1fr;gap:3px}
  }
  @media (prefers-reduced-motion:reduce){
    #rk-phe *,#rk-phe *::before,#rk-phe *::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}
  }
</style>

<div id="rk-phe">
  <article class="rk-shell" aria-label="Wymiennik płytowy w ogrzewaniu podłogowym — poradnik, grafika i kalkulatory">
    <header class="rk-hero">
      <span class="rk-kicker">Separacja obiegów bez upraszczania hydrauliki</span>
      <div class="rk-hero-title">Wymiennik płytowy w <span>ogrzewaniu podłogowym</span></div>
      <p class="rk-lead">Wymiennik przekazuje ciepło przez stalowe płyty i rozdziela dwa media, ale sam nie ustala temperatury zasilania podłogówki. Zobacz, kiedy separacja ma techniczne uzasadnienie, policz przepływy, LMTD i wymagane UA, a następnie sprawdź opory pomp oraz dodatkowy koszt pracy całego układu.</p>
      <div class="rk-tags" aria-label="Zakres poradnika">
        <span class="rk-tag">zasada działania</span>
        <span class="rk-tag">kalkulator LMTD</span>
        <span class="rk-tag">dwa obiegi</span>
        <span class="rk-tag">straty ciśnienia</span>
        <span class="rk-tag">koszt pomp</span>
      </div>
      <div class="rk-byline">
        <span>Autor: <a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></span>
        <span>Czas czytania: około 27 minut</span>
        <span>Aktualizacja techniczna: 13 września 2026 r.</span>
      </div>
      <div class="rk-hero-metrics">
        <div class="rk-hero-metric"><b>Przekazuje energię</b><span>Ciepło przechodzi przez cienkie płyty, ale ciecze z obu stron nie powinny się mieszać.</span></div>
        <div class="rk-hero-metric"><b>Nie reguluje temperatury</b><span>Temperaturę wtórnego obiegu ustalają źródło, automatyka, przepływy lub osobny układ mieszający.</span></div>
        <div class="rk-hero-metric"><b>Wymaga dwóch bilansów</b><span>Każda strona ma własny przepływ, opory, pompę, zabezpieczenia i warunki pracy.</span></div>
      </div>
    </header>

    <nav class="rk-nav" aria-label="Na skróty">
      <span class="rk-nav-label">Na skróty — wszystkie części poradnika</span>
      <div class="rk-nav-track">
        <a href="#rk-phe-answer">Odpowiedź w skrócie</a>
        <a href="#rk-phe-operation">Zasada działania</a>
        <a href="#rk-phe-separation">Co jest rozdzielone?</a>
        <a href="#rk-phe-graphic">Grafika interaktywna</a>
        <a href="#rk-phe-limits">Czego nie reguluje?</a>
        <a href="#rk-phe-when">Kiedy może być potrzebny?</a>
        <a href="#rk-phe-when-not">Kiedy może przeszkadzać?</a>
        <a href="#rk-phe-comparison">Wymiennik czy inne urządzenie?</a>
        <a href="#rk-phe-inputs">Dane do doboru</a>
        <a href="#rk-phe-thermal-tool">Kalkulator cieplno-hydrauliczny</a>
        <a href="#rk-phe-reading">Jak czytać wynik?</a>
        <a href="#rk-phe-hydraulics">Przepływy i pompy</a>
        <a href="#rk-phe-control">Regulacja i zabezpieczenia</a>
        <a href="#rk-phe-heat-pump">Pompa ciepła</a>
        <a href="#rk-phe-solid-fuel">Kocioł na paliwo stałe</a>
        <a href="#rk-phe-cost-tool">Kalkulator kosztów</a>
        <a href="#rk-phe-maintenance">Zabrudzenie i serwis</a>
        <a href="#rk-phe-errors">Najczęstsze błędy</a>
        <a href="#rk-phe-commissioning">Uruchomienie instalacji</a>
        <a href="#rk-phe-conclusion">Wnioski</a>
        <a href="#rk-phe-sources">Źródła</a>
        <a href="#rk-phe-faq">FAQ</a>
        <a href="#rk-phe-author">Autor</a>
      </div>
    </nav>

    <section class="rk-section" id="rk-phe-answer">
      <span class="rk-eyebrow">Najkrótsza poprawna odpowiedź</span>
      <h2>Wymiennik płytowy w podłogówce — odpowiedź w skrócie</h2>
      <div class="rk-answer" id="rk-phe-direct-answer">
        <div class="rk-answer-main">
          <p><strong>Wymiennik płytowy przekazuje ciepło między dwoma oddzielonymi obiegami, nie dopuszczając w normalnych warunkach do mieszania ich mediów.</strong> Może rozdzielić instalację otwartą od zamkniętej, wodę od roztworu glikolu albo nową podłogówkę od starego, zanieczyszczonego obiegu.</p>
          <p>Nie jest jednak regulatorem temperatury. To, że po stronie pierwotnej płynie woda o temperaturze 70°C, a podłogówka ma pracować przy 35–40°C, nie oznacza, że dowolny wymiennik automatycznie wykona takie zadanie. Potrzebne są właściwe przepływy, powierzchnia wymiany, automatyka źródła lub układ mieszający oraz niezależne zabezpieczenie przed przekroczeniem dopuszczalnej temperatury.</p>
          <p>O potrzebie zastosowania wymiennika decyduje <strong>funkcja separacji</strong>, a nie sama wysoka temperatura źródła. Jeżeli oba obiegi mogą pracować z tym samym medium i ciśnieniem, czasem korzystniejszy jest układ bezpośredni, <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgło hydrauliczne</a>, <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor ciepła</a> lub prawidłowo zaprojektowany <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zawór mieszający</a>.</p>
        </div>
        <div class="rk-verdict" aria-label="Trzy najważniejsze wnioski">
          <div class="rk-verdict-item"><b>Tak — pełna separacja</b><span>Woda, glikol, ciśnienie i zanieczyszczenia pozostają po swoich stronach wymiennika.</span></div>
          <div class="rk-verdict-item"><b>Nie — automatyczna regulacja</b><span>Wymiennik nie jest zaworem i nie utrzymuje sam zadanej temperatury zasilania.</span></div>
          <div class="rk-verdict-item"><b>Dobór — dla konkretnego punktu</b><span>Moc z nazwy handlowej i liczba płyt nie zastępują temperatur, przepływów oraz strat ciśnienia.</span></div>
        </div>
      </div>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-operation">
      <span class="rk-eyebrow">Ciepło przechodzi, media pozostają osobno</span>
      <h2>Jak działa wymiennik płytowy w ogrzewaniu podłogowym?</h2>
      <p class="rk-intro">W lutowanym wymienniku płytowym cienkie, profilowane płyty tworzą naprzemienne kanały. Medium strony pierwotnej przepływa co drugim kanałem, a medium strony wtórnej kanałami sąsiednimi. Ciepło przechodzi przez metalową przegrodę na drodze konwekcja–przewodzenie–konwekcja, lecz obie ciecze pozostają fizycznie rozdzielone.</p>
      <div class="rk-grid-3">
        <div class="rk-card"><h3>Strona pierwotna</h3><p>To obieg połączony ze źródłem ciepła lub istniejącą instalacją. Ma własny przepływ, ciśnienie robocze, medium, zabezpieczenia i zwykle własną pompę.</p></div>
        <div class="rk-card rk-card-accent"><h3>Pakiet płyt</h3><p>Profil płyt zwiększa powierzchnię kontaktu i intensyfikuje wymianę ciepła. Ten sam profil powoduje jednak opór hydrauliczny, który musi zostać odczytany dla konkretnego przepływu.</p></div>
        <div class="rk-card"><h3>Strona wtórna</h3><p>To zamknięty obieg rozdzielacza i <a href="https://projekt-ogrzewania.pl/petla-grzewcza/">pętli grzewczych</a>. Jego przepływ wynika z mocy oraz przyjętej różnicy między zasilaniem a powrotem.</p></div>
      </div>
      <div class="rk-formula">Q = U · A · ΔT<sub>lm</sub> &nbsp;&nbsp;oraz&nbsp;&nbsp; Q = ρ · V̇ · c<sub>p</sub> · ΔT</div>
      <p>Pierwsze równanie łączy przekazywaną moc z całkowitym współczynnikiem przenikania, powierzchnią płyt i średnią logarytmiczną różnicą temperatur. Drugie opisuje energię przenoszoną przez przepływ medium. W praktyce oba warunki muszą zostać spełnione jednocześnie. Pojęcie średniej logarytmicznej różnicy temperatur i bilans strumienia ciepła opisuje materiał dydaktyczny <a href="https://web.mit.edu/16.unified/www/FALL/thermodynamics/notes/node131.html" target="_blank" rel="nofollow noopener noreferrer">MIT — Heat Exchangers</a>.</p>
      <div class="rk-note"><p><strong>Dlaczego przeciwprąd?</strong> W typowym wymienniku oba media są prowadzone w przeciwnych kierunkach, dzięki czemu użyteczna różnica temperatur utrzymuje się na całej długości płyt. Nie oznacza to „100% odzysku” ani stałej przewagi procentowej — efekt zależy od UA, strumieni pojemności cieplnej i temperatur wejściowych.</p></div>
    </section>

    <section class="rk-section" id="rk-phe-separation">
      <span class="rk-eyebrow">Cztery różne funkcje instalacji</span>
      <h2>Co przechodzi przez wymiennik, a co pozostaje rozdzielone?</h2>
      <p>Określenie „separacja hydrauliczna” bywa mylone z regulacją temperatury. Wymiennik rzeczywiście tworzy dwa niezależne obiegi, ale nie wykonuje wszystkich zadań hydraulicznych i regulacyjnych za inne urządzenia.</p>
      <div class="rk-table-wrap">
        <div class="rk-table-summary">Najważniejsze rozróżnienie: przez nieuszkodzony wymiennik przechodzi energia cieplna, a nie medium robocze.</div>
        <table aria-label="Co przechodzi przez wymiennik płytowy">
          <thead><tr><th>Wielkość lub zjawisko</th><th>Czy przechodzi na drugą stronę?</th><th>Co to oznacza w instalacji?</th></tr></thead>
          <tbody>
            <tr><td data-label="Wielkość"><strong>Energia cieplna</strong></td><td data-label="Przechodzi?">Tak</td><td data-label="Znaczenie">Ciepło jest przekazywane przez metalowe płyty zgodnie z aktualną różnicą temperatur.</td></tr>
            <tr><td data-label="Wielkość"><strong>Woda lub glikol</strong></td><td data-label="Przechodzi?">Nie</td><td data-label="Znaczenie">Każda strona może mieć inne medium, o ile dopuszcza je konstrukcja i dobór urządzenia.</td></tr>
            <tr><td data-label="Wielkość"><strong>Ciśnienie statyczne</strong></td><td data-label="Przechodzi?">Nie</td><td data-label="Znaczenie">Każdy obieg wymaga własnego sposobu stabilizacji ciśnienia i zabezpieczenia.</td></tr>
            <tr><td data-label="Wielkość"><strong>Zanieczyszczenia i tlen</strong></td><td data-label="Przechodzi?">Nie przez płyty</td><td data-label="Znaczenie">Nowy obieg może zostać odseparowany od starego medium, lecz jego własna jakość wody nadal ma znaczenie.</td></tr>
            <tr><td data-label="Wielkość"><strong>Temperatura zadana</strong></td><td data-label="Przechodzi?">Nie jest kopiowana</td><td data-label="Znaczenie">Temperatury wyjściowe wynikają z bilansu, UA i przepływów; nie z samego istnienia wymiennika.</td></tr>
            <tr><td data-label="Wielkość"><strong>Przepływ objętościowy</strong></td><td data-label="Przechodzi?">Nie</td><td data-label="Znaczenie">Strony mogą mieć różne przepływy i różne ΔT, mimo przekazywania tej samej mocy.</td></tr>
          </tbody>
        </table>
      </div>
      <p>Jeżeli jedna strona jest układem otwartym, druga strona nie staje się przez to układem otwartym. Musi jednak otrzymać własne <a href="https://projekt-ogrzewania.pl/naczynie-wzbiorcze/">naczynie wzbiorcze</a>, zawór bezpieczeństwa, odpowietrzenie, uzupełnianie medium i kontrolę ciśnienia odpowiednią dla zaprojektowanego obiegu.</p>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-graphic">
      <span class="rk-eyebrow">Modułowa grafika edukacyjna</span>
      <h2>Interaktywna grafika: jeden obieg czy dwa obiegi z wymiennikiem?</h2>
      <p>Przełącz widok, aby zobaczyć, co zmienia dodanie wymiennika. Moduł pokazuje funkcje elementów, a nie schemat wykonawczy konkretnej kotłowni. Na telefonie wszystkie części ustawiają się pionowo, dlatego opisy i kierunki przepływu pozostają czytelne.</p>
      <div class="rk-tool" id="rk-phe-graphic-tool">
        <div class="rk-tool-head">
          <div><h3>Droga energii i granica między obiegami</h3><p>Każdy widok odpowiada na inne pytanie: gdzie płynie wspólne medium, gdzie następuje pełna separacja oraz dlaczego temperatury po obu stronach zmieniają się w przeciwprądzie.</p></div>
          <span class="rk-badge">grafika interaktywna</span>
        </div>
        <div class="rk-tabs" role="group" aria-label="Wybór widoku grafiki">
          <button type="button" class="rk-tab rk-flow-tab" data-mode="direct" aria-pressed="false">Jeden wspólny obieg</button>
          <button type="button" class="rk-tab rk-flow-tab" data-mode="separated" aria-pressed="true">Dwa obiegi z wymiennikiem</button>
          <button type="button" class="rk-tab rk-flow-tab" data-mode="counter" aria-pressed="false">Przeciwprąd i temperatury</button>
        </div>
        <p class="rk-flow-status" id="rk-phe-flow-status" aria-live="polite">Energia przechodzi przez płyty, ale obieg źródła i obieg podłogówki mają oddzielne media, ciśnienia oraz przepływy.</p>
        <div class="rk-flow" id="rk-phe-flow-cards">
          <div class="rk-flow-card" data-arrow="→"><span class="rk-flow-icon" id="rk-phe-flow-icon-1" aria-hidden="true">A</span><h3 id="rk-phe-flow-title-1">Źródło ciepła</h3><p id="rk-phe-flow-text-1">Wytwarza ciepło i pracuje w warunkach obiegu pierwotnego.</p><span class="rk-flow-mini" id="rk-phe-flow-mini-1">medium A · ciśnienie A</span></div>
          <div class="rk-flow-card" data-arrow="→"><span class="rk-flow-icon" id="rk-phe-flow-icon-2" aria-hidden="true">P1</span><h3 id="rk-phe-flow-title-2">Pompa pierwotna</h3><p id="rk-phe-flow-text-2">Zapewnia przepływ przez źródło, rurociągi i pierwszą stronę wymiennika.</p><span class="rk-flow-mini" id="rk-phe-flow-mini-2">V̇A z mocy i ΔTA</span></div>
          <div class="rk-flow-card" data-arrow="→"><span class="rk-flow-icon" id="rk-phe-flow-icon-3" aria-hidden="true">HX</span><h3 id="rk-phe-flow-title-3">Wymiennik płytowy</h3><p id="rk-phe-flow-text-3">Przekazuje energię przez płyty bez mieszania obu mediów.</p><span class="rk-flow-mini" id="rk-phe-flow-mini-3">granica obiegów</span></div>
          <div class="rk-flow-card" data-arrow="→"><span class="rk-flow-icon" id="rk-phe-flow-icon-4" aria-hidden="true">P2</span><h3 id="rk-phe-flow-title-4">Pompa i regulacja</h3><p id="rk-phe-flow-text-4">Budują przepływ wtórny i współpracują z regulacją temperatury.</p><span class="rk-flow-mini" id="rk-phe-flow-mini-4">V̇B z mocy i ΔTB</span></div>
          <div class="rk-flow-card"><span class="rk-flow-icon" id="rk-phe-flow-icon-5" aria-hidden="true">B</span><h3 id="rk-phe-flow-title-5">Podłogówka</h3><p id="rk-phe-flow-text-5">Rozdzielacz przekazuje wodę do pętli obiegu wtórnego.</p><span class="rk-flow-mini" id="rk-phe-flow-mini-5">medium B · ciśnienie B</span></div>
        </div>
        <div class="rk-pass-grid">
          <div class="rk-pass-card"><b>Co przechodzi?</b><p id="rk-phe-pass-yes">Energia cieplna — zależnie od różnicy temperatur, UA i przepływów.</p></div>
          <div class="rk-pass-card"><b>Co nie przechodzi?</b><p id="rk-phe-pass-no">Woda lub glikol, ciśnienie robocze, zanieczyszczenia oraz sam przepływ objętościowy.</p></div>
        </div>
      </div>
      <p>Wymiennik może więc ochronić nową instalację przed medium starego obiegu, ale nie zwalnia z zadbania o <a href="https://projekt-ogrzewania.pl/czym-napelnic-instalacje-ogrzewania-podlogowego/">prawidłowe napełnienie podłogówki</a>, odpowietrzenie ani uzdatnienie wody po stronie wtórnej.</p>
    </section>

    <section class="rk-section" id="rk-phe-limits">
      <span class="rk-eyebrow">Najważniejsze sprostowanie starego wpisu</span>
      <h2>Czego wymiennik płytowy nie reguluje i przed czym sam nie zabezpiecza?</h2>
      <div class="rk-grid-4">
        <div class="rk-card rk-card-warn"><h3>Temperatura zasilania</h3><p>Wymiennik nie ma wartości zadanej. Bez właściwego sterowania temperatura wtórna zmienia się wraz ze źródłem, przepływami i odbiorem ciepła.</p></div>
        <div class="rk-card"><h3>Przepływ w pętlach</h3><p>Nie równoważy rozdzielacza i nie ustawia <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrów</a>. Wymagane przepływy wynikają z obciążeń pomieszczeń i długości pętli.</p></div>
        <div class="rk-card"><h3>Minimalny przepływ źródła</h3><p>Nie gwarantuje warunków wymaganych przez kocioł albo pompę ciepła. Obieg pierwotny musi zostać obliczony niezależnie.</p></div>
        <div class="rk-card rk-card-red"><h3>Temperatura graniczna</h3><p>Do ochrony podłogi potrzebne są prawidłowa regulacja i niezależne zabezpieczenie reagujące na temperaturę, a nie sama metalowa przegroda.</p></div>
      </div>
      <p>Wysokotemperaturowe źródło można połączyć z niskotemperaturowym odbiornikiem również bez wymiennika, jeżeli układ jest zgodny pod względem medium i ciśnienia oraz ma poprawnie zaprojektowane mieszanie albo regulację źródła. Zasady ograniczania temperatury omawia osobny poradnik o <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalnej temperaturze zasilania podłogówki</a>.</p>
      <div class="rk-note error"><p><strong>Nie należy dobierać wymiennika jako „bezpiecznika na gorącą wodę”.</strong> Jeżeli automatyka lub zawór dopuści niewłaściwe warunki po stronie wtórnej, prawidłowo działający wymiennik nadal będzie przekazywał ciepło.</p></div>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-when">
      <span class="rk-eyebrow">Najpierw funkcja, później urządzenie</span>
      <h2>Kiedy wymiennik płytowy może być potrzebny w podłogówce?</h2>
      <p>Wymiennik ma sens wtedy, gdy istnieje konkretna potrzeba oddzielenia obiegów. Nie należy zaczynać od pytania „ile płyt?”, lecz od ustalenia, dlaczego media nie mogą pracować we wspólnym układzie.</p>
      <div class="rk-grid-2">
        <div class="rk-card rk-card-accent"><h3>Instalacja otwarta i zamknięta</h3><p>W starszej kotłowni źródło może pracować w obiegu otwartym, a nowa podłogówka w zamkniętym. Wymiennik tworzy fizyczną granicę, ale oba obiegi nadal muszą mieć komplet własnych zabezpieczeń zgodnych z projektem oraz instrukcjami urządzeń.</p></div>
        <div class="rk-card"><h3>Dwa różne media</h3><p>Przykładem jest krótki obieg z roztworem niezamarzającym i oddzielny wodny obieg budynku. Trzeba uwzględnić rzeczywiste właściwości <a href="https://projekt-ogrzewania.pl/glikol-w-ogrzewaniu-podlogowym-prawda-i-mity-ktore-musi-znac-kazdy-inwestor/">glikolu w instalacji</a>, ponieważ zmienia przepływ, opory i wymianę ciepła.</p></div>
        <div class="rk-card"><h3>Stara instalacja i nowy obieg</h3><p>Separacja może ograniczyć przenoszenie zanieczyszczeń ze starego zładu do nowych pętli. Nie zastępuje jednak płukania, filtracji ani <a href="https://projekt-ogrzewania.pl/separator-zanieczyszczen-i-powietrza-w-ogrzewaniu-podlogowym-dobor-schemat-montazu-spadek-cisnienia-i-normy/">separatora zanieczyszczeń i powietrza</a> po właściwej stronie.</p></div>
        <div class="rk-card"><h3>Wymóg konkretnego układu</h3><p>Producent źródła, administrator sieci lub dokumentacja modernizacji może wymagać fizycznego rozdzielenia mediów. Taki warunek trzeba sprawdzić dla konkretnego urządzenia — nie przenosić automatycznie na wszystkie instalacje.</p></div>
      </div>
      <p>Przy <a href="https://projekt-ogrzewania.pl/kotly-na-paliwa-stale-w-ogrzewaniu-podlogowym/">kotle na paliwo stałe i ogrzewaniu podłogowym</a> decyzja zależy m.in. od konstrukcji kotłowni, wymaganej ochrony powrotu, bufora, rodzaju zabezpieczenia źródła i dopuszczalnego układu pracy. Sama nazwa paliwa nie rozstrzyga jeszcze schematu.</p>
    </section>

    <section class="rk-section" id="rk-phe-when-not">
      <span class="rk-eyebrow">Każda przegroda ma cenę techniczną</span>
      <h2>Kiedy wymiennik może być zbędny albo pogarszać warunki pracy?</h2>
      <p>W nowej, czystej instalacji zamkniętej, w której źródło i podłogówka mogą pracować na tym samym medium oraz ciśnieniu, wymiennik często nie wnosi potrzebnej funkcji. Dodaje natomiast kolejne opory, drugi obieg pompowy i różnicę temperatur niezbędną do przekazywania ciepła.</p>
      <div class="rk-grid-3">
        <div class="rk-card rk-card-warn"><h3>Dodatkowe podejście temperaturowe</h3><p>Temperatura źródła musi być wyższa od wymaganej temperatury wtórnej. Im mniejsza różnica na końcu wymiennika, tym większego UA zwykle potrzeba.</p></div>
        <div class="rk-card"><h3>Dodatkowy opór</h3><p>Każda strona wymiennika ma charakterystykę Δp zależną od przepływu i właściwości medium. Opór musi znaleźć się w obliczeniach właściwej pompy.</p></div>
        <div class="rk-card"><h3>Więcej elementów</h3><p>Dochodzi druga pompa, armatura, odpowietrzenie, naczynie, sterowanie oraz miejsca wymagające uruchomienia i późniejszej kontroli.</p></div>
      </div>
      <p>Ma to szczególne znaczenie przy <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekcie podłogówki z pompą ciepła</a>. Jeżeli separacja wymusza podniesienie temperatury zasilania źródła, może zmienić jego sezonową efektywność. Skali tej zmiany nie wolno przyjmować jako jednego procentu dla wszystkich urządzeń — trzeba oprzeć ją na danych konkretnej pompy i punkcie pracy.</p>
      <div class="rk-note warn"><p><strong>Wymiennik nie jest urządzeniem obowiązkowym tylko dlatego, że źródło potrafi wytworzyć więcej niż 55°C.</strong> O temperaturze dostarczanej do podłogi decyduje cały układ regulacji, a o separacji — zgodność mediów, ciśnień i wymagań urządzeń.</p></div>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-comparison">
      <span class="rk-eyebrow">Urządzenia nie są zamiennikami jednej funkcji</span>
      <h2>Wymiennik, sprzęgło, bufor czy zawór mieszający?</h2>
      <p>Te elementy mogą występować osobno albo razem, ale rozwiązują inne problemy. Najczęstszy błąd polega na traktowaniu każdego z nich jako sposobu „na obniżenie temperatury”.</p>
      <div class="rk-table-wrap">
        <div class="rk-table-summary">Wybierz funkcję, której faktycznie wymaga instalacja — nie nazwę najpopularniejszego elementu kotłowni.</div>
        <table aria-label="Porównanie wymiennika, sprzęgła, bufora i zaworu mieszającego">
          <thead><tr><th>Element</th><th>Oddziela media?</th><th>Rozdziela przepływy?</th><th>Magazynuje ciepło?</th><th>Reguluje temperaturę?</th></tr></thead>
          <tbody>
            <tr><td data-label="Element"><strong>Wymiennik płytowy</strong></td><td data-label="Media">Tak, fizycznie</td><td data-label="Przepływy">Tak — dwa obiegi</td><td data-label="Magazyn">Praktycznie nie</td><td data-label="Regulacja">Nie samodzielnie</td></tr>
            <tr><td data-label="Element"><strong>Sprzęgło hydrauliczne</strong></td><td data-label="Media">Nie</td><td data-label="Przepływy">Tak, przy wspólnym medium</td><td data-label="Magazyn">Nie jest jego główną funkcją</td><td data-label="Regulacja">Nie samodzielnie</td></tr>
            <tr><td data-label="Element"><strong>Bufor ciepła</strong></td><td data-label="Media">Zwykle nie</td><td data-label="Przepływy">Może, zależnie od wpięcia</td><td data-label="Tak</td><td data-label="Nie samodzielnie</td></tr>
            <tr><td data-label="Element"><strong>Zawór mieszający</strong></td><td data-label="Media">Nie</td><td data-label="Przepływy">Steruje podziałem i mieszaniem</td><td data-label="Nie</td><td data-label="Tak, z napędem i automatyką</td></tr>
          </tbody>
        </table>
      </div>
      <p><a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">Sprzęgło hydrauliczne w podłogówce</a> rozdziela hydraulicznie obiegi, ale zachowuje wspólne medium. <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">Bufor w ogrzewaniu podłogowym</a> dodaje zład i może pełnić funkcję rozdziału przepływów. Zawór mieszający reguluje temperaturę przez mieszanie, lecz nie oddziela wody ani ciśnienia.</p>
    </section>

    <section class="rk-section" id="rk-phe-inputs">
      <span class="rk-eyebrow">Dobór zaczyna się od danych</span>
      <h2>Jakie dane są potrzebne do doboru wymiennika płytowego?</h2>
      <p>Hasło „wymiennik 30 kW” nie opisuje jednego, niezmiennego punktu pracy. Ten sam model przeniesie inną moc przy 80/60–40/30°C, a inną przy 45/38–35/30°C. Do sprawdzenia konkretnego urządzenia potrzebny jest pełny zestaw danych dla obu stron.</p>
      <div class="rk-number-grid" aria-label="Osiem danych potrzebnych do doboru wymiennika">
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Projektowa moc</h3><p>Moc przekazywana w punkcie obliczeniowym, wynikająca z bilansu odbiorników i <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowego obciążenia cieplnego OZC</a>.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Temperatury strony A</h3><p>Temperatura wejściowa i wyjściowa obiegu źródła przy tej samej projektowej mocy.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Temperatury strony B</h3><p>Wymagane zasilanie i powrót podłogówki, ustalone na podstawie mocy, konstrukcji i okładziny.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Rodzaj obu mediów</h3><p>Woda, rodzaj oraz stężenie glikolu, zakres temperatur i dane właściwości cieplnych.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Wymagane przepływy</h3><p>Osobno dla każdej strony, ponieważ ich różnice temperatur i pojemności cieplne mogą być inne.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Dopuszczalne straty ciśnienia</h3><p>Budżet oporów dla wymiennika po stronie A i B, zgodny z dostępnym sprężem pomp.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Rezerwa na zabrudzenie</h3><p>Warunki jakości wody, filtracji i serwisu zamiast jednego stałego procentu doliczanego do mocy.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Ograniczenia urządzenia</h3><p>Dopuszczalne ciśnienie, temperatura, materiał płyt i lutu, króćce oraz wymagania producenta.</p></div></div>
      </div>
      <p>Projektowa moc nie powinna być automatycznie zwiększana o 15–20%. Jeżeli wymagana jest rezerwa, trzeba określić, co ma pokrywać i czy źródło, odbiorniki oraz hydraulika również mogą pracować w takim punkcie. Podstawą pozostają <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">obliczenia strat ciepła budynku</a>, a nie powierzchnia domu pomnożona przez orientacyjny wskaźnik.</p>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-thermal-tool">
      <span class="rk-eyebrow">Główne narzędzie techniczne</span>
      <h2>Kalkulator wymiennika: przepływy, LMTD, UA i opory obu obiegów</h2>
      <p>Wprowadź jeden spójny punkt pracy. Kalkulator oblicza przepływ potrzebny po każdej stronie, różnice końcowe, LMTD i wymagane UA. Po podaniu katalogowych oporów wybranego wymiennika oraz pozostałych oporów pokazuje również orientacyjną wysokość podnoszenia dla obu pomp.</p>
      <div class="rk-tool" id="rk-phe-thermal-calculator">
        <div class="rk-tool-head">
          <div><h3>Dane cieplne i hydrauliczne strony A oraz B</h3><p>Wartości początkowe są wyłącznie przykładem. Właściwości mieszanin glikolowych są orientacyjne — finalny dobór wykonaj na danych producenta dla rzeczywistego stężenia i temperatur.</p></div>
          <button type="button" class="rk-reset" id="rk-phe-thermal-reset">Przywróć przykład</button>
        </div>
        <div class="rk-controls">
          <div class="rk-subhead">Wspólna moc przekazywana</div>
          <div class="rk-control"><label for="rk-phe-power">Projektowa moc wymiennika</label><div class="rk-input-wrap"><input id="rk-phe-power" type="number" min="0.1" max="200" step="0.1" value="10" inputmode="decimal"><span>kW</span></div><small>Moc dla bieżącego punktu temperatur.</small></div>

          <div class="rk-subhead">Strona A — obieg gorący / pierwotny</div>
          <div class="rk-control"><label for="rk-phe-hot-in">Temperatura wejściowa A</label><div class="rk-input-wrap"><input id="rk-phe-hot-in" type="number" min="-20" max="150" step="0.5" value="70" inputmode="decimal"><span>°C</span></div><small>Gorące medium wpływające do wymiennika.</small></div>
          <div class="rk-control"><label for="rk-phe-hot-out">Temperatura wyjściowa A</label><div class="rk-input-wrap"><input id="rk-phe-hot-out" type="number" min="-20" max="150" step="0.5" value="55" inputmode="decimal"><span>°C</span></div><small>Musi być niższa od wejściowej dla trybu grzania.</small></div>
          <div class="rk-control"><label for="rk-phe-hot-fluid">Medium strony A</label><div class="rk-input-wrap"><select id="rk-phe-hot-fluid"><option value="1.163" selected>Woda</option><option value="1.070">Glikol propylenowy ok. 20%</option><option value="1.020">Glikol propylenowy ok. 30%</option><option value="0.970">Glikol propylenowy ok. 40%</option></select></div><small>Orientacyjna objętościowa pojemność cieplna.</small></div>
          <div class="rk-control"><label for="rk-phe-hot-hx-dp">Opór wymiennika A</label><div class="rk-input-wrap"><input id="rk-phe-hot-hx-dp" type="number" min="0" max="200" step="0.5" value="12" inputmode="decimal"><span>kPa</span></div><small>Z karty modelu przy obliczonym przepływie.</small></div>
          <div class="rk-control"><label for="rk-phe-hot-other-dp">Pozostałe opory obiegu A</label><div class="rk-input-wrap"><input id="rk-phe-hot-other-dp" type="number" min="0" max="300" step="0.5" value="8" inputmode="decimal"><span>kPa</span></div><small>Źródło, rury, armatura i zawory na drodze krytycznej.</small></div>

          <div class="rk-subhead">Strona B — obieg ogrzewania podłogowego</div>
          <div class="rk-control"><label for="rk-phe-cold-in">Temperatura wejściowa B</label><div class="rk-input-wrap"><input id="rk-phe-cold-in" type="number" min="-20" max="100" step="0.5" value="30" inputmode="decimal"><span>°C</span></div><small>Powrót podłogówki wpływający do wymiennika.</small></div>
          <div class="rk-control"><label for="rk-phe-cold-out">Temperatura wyjściowa B</label><div class="rk-input-wrap"><input id="rk-phe-cold-out" type="number" min="-20" max="100" step="0.5" value="38" inputmode="decimal"><span>°C</span></div><small>Zasilanie wychodzące w stronę rozdzielacza.</small></div>
          <div class="rk-control"><label for="rk-phe-cold-fluid">Medium strony B</label><div class="rk-input-wrap"><select id="rk-phe-cold-fluid"><option value="1.163" selected>Woda</option><option value="1.070">Glikol propylenowy ok. 20%</option><option value="1.020">Glikol propylenowy ok. 30%</option><option value="0.970">Glikol propylenowy ok. 40%</option></select></div><small>Do ostatecznego doboru użyj danych konkretnej mieszaniny.</small></div>
          <div class="rk-control"><label for="rk-phe-cold-hx-dp">Opór wymiennika B</label><div class="rk-input-wrap"><input id="rk-phe-cold-hx-dp" type="number" min="0" max="200" step="0.5" value="16" inputmode="decimal"><span>kPa</span></div><small>Z karty modelu przy obliczonym przepływie.</small></div>
          <div class="rk-control"><label for="rk-phe-cold-other-dp">Pozostałe opory obiegu B</label><div class="rk-input-wrap"><input id="rk-phe-cold-other-dp" type="number" min="0" max="300" step="0.5" value="25" inputmode="decimal"><span>kPa</span></div><small>Krytyczna pętla, rozdzielacz, rury i armatura.</small></div>
        </div>

        <div class="rk-results" aria-live="polite">
          <div class="rk-result"><b id="rk-phe-hot-flow">—</b><span>wymagany przepływ strony A</span></div>
          <div class="rk-result"><b id="rk-phe-cold-flow">—</b><span>wymagany przepływ strony B</span></div>
          <div class="rk-result"><b id="rk-phe-hot-approach">—</b><span>różnica na gorącym końcu: A wej. − B wyj.</span></div>
          <div class="rk-result"><b id="rk-phe-cold-approach">—</b><span>różnica na zimnym końcu: A wyj. − B wej.</span></div>
          <div class="rk-result primary"><b id="rk-phe-lmtd">—</b><span>średnia logarytmiczna różnica temperatur LMTD</span></div>
          <div class="rk-result primary"><b id="rk-phe-ua">—</b><span>minimalne wymagane UA dla wpisanego punktu</span></div>
          <div class="rk-result"><b id="rk-phe-hot-head">—</b><span>suma oporów i wysokość podnoszenia strony A</span></div>
          <div class="rk-result"><b id="rk-phe-cold-head">—</b><span>suma oporów i wysokość podnoszenia strony B</span></div>
        </div>
        <div class="rk-driver" id="rk-phe-thermal-driver"><b>Ocena wprowadzonego punktu</b><p id="rk-phe-thermal-message">—</p></div>

        <div class="rk-chart-card">
          <div class="rk-chart-wrap"><svg id="rk-phe-temperature-chart" viewBox="0 0 900 410" role="img" aria-labelledby="rk-phe-temp-title rk-phe-temp-desc"><title id="rk-phe-temp-title">Profile temperatur w przeciwprądowym wymienniku płytowym</title><desc id="rk-phe-temp-desc">Wykres aktualizuje temperatury strony gorącej i chłodniejszej po zmianie danych kalkulatora.</desc></svg></div>
          <div class="rk-chart-legend"><span class="rk-legend">Strona A — medium gorące, przepływ od lewej</span><span class="rk-legend cold">Strona B — medium ogrzewane, przepływ od prawej</span></div>
          <p class="rk-chart-note" id="rk-phe-temperature-note">Linie są edukacyjnym profilem między czterema temperaturami granicznymi. Rzeczywisty przebieg zależy od konstrukcji wymiennika i strumieni pojemności cieplnej.</p>
        </div>
      </div>
      <noscript><div class="rk-note warn"><p>Do działania kalkulatora i wykresu potrzebna jest obsługa JavaScript. Treść poradnika pozostaje dostępna bez skryptów.</p></div></noscript>
    </section>

    <section class="rk-section" id="rk-phe-reading">
      <span class="rk-eyebrow">Wynik to punkt doboru, nie nazwa produktu</span>
      <h2>Jak interpretować LMTD, podejście temperaturowe i wymagane UA?</h2>
      <div class="rk-grid-3">
        <div class="rk-card rk-card-accent"><h3>LMTD</h3><p>Średnia logarytmiczna różnica temperatur opisuje napęd cieplny na całej długości wymiennika. Nie jest ani sprawnością, ani temperaturą zasilania.</p></div>
        <div class="rk-card"><h3>Podejście temperaturowe</h3><p>To różnica temperatur między mediami na danym końcu. Bardzo mała wartość jest możliwa tylko przy odpowiednio dużym UA i właściwych przepływach.</p></div>
        <div class="rk-card"><h3>UA</h3><p>Iloczyn całkowitego współczynnika przenikania i powierzchni. Kalkulator wyznacza wymagane UA, ale nie zna geometrii ani rzeczywistego współczynnika konkretnego modelu.</p></div>
      </div>
      <h3>Dlaczego kalkulator nie podaje liczby płyt?</h3>
      <p>Dwie konstrukcje z taką samą liczbą płyt mogą mieć inną powierzchnię, profil kanałów, szerokość szczeliny, opory i dopuszczalne media. Dlatego liczba płyt bez oznaczenia modelu nie jest parametrem projektowym. Wynik trzeba przenieść do programu producenta albo tabel dla konkretnych temperatur, przepływów, mediów i dopuszczalnego Δp.</p>
      <div class="rk-note"><p><strong>Przykład interpretacji:</strong> jeżeli kalkulator pokazuje 1,08 m³/h po stronie podłogówki, nie oznacza to, że każda pętla ma otrzymać taki przepływ. Jest to suma dla obiegu wtórnego. Podział na rozdzielaczu wynika z mocy poszczególnych pomieszczeń, co szerzej wyjaśnia poradnik o <a href="https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/">obiegu grzewczym w wodnej podłogówce</a>.</p></div>

      <div class="rk-cta">
        <span class="rk-eyebrow">Od wyniku kalkulatora do działającego układu</span>
        <div class="rk-cta-title">Wymiennik rozdziela obiegi. Projekt musi jeszcze połączyć temperatury, przepływy i pompy.</div>
        <p>Kalkulator pokazuje bilans cieplny, LMTD, wymagane przepływy, UA i orientacyjne opory. Nie wyznacza charakterystyki konkretnego wymiennika, pomp, zabezpieczeń, regulacji ani parametrów pętli. Te elementy trzeba policzyć razem dla źródła i całej podłogówki.</p>
        <a class="rk-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów indywidualny projekt ogrzewania podłogowego</a>
      </div>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-hydraulics">
      <span class="rk-eyebrow">Dwa zamknięte bilanse przepływu</span>
      <h2>Przepływy, straty ciśnienia i dwie pompy obiegowe</h2>
      <p>Po dodaniu wymiennika przepływ strony pierwotnej nie przechodzi do podłogówki. Pompa A pokonuje opory swojego obiegu, a pompa B — opory wymiennika po stronie wtórnej, armatury, magistrali, rozdzielacza i krytycznej pętli. Obu wysokości podnoszenia nie dodaje się do jednej pompy.</p>
      <div class="rk-formula">V̇ [m³/h] = Q [kW] ÷ (C<sub>v</sub> [kWh/(m³·K)] · ΔT [K]) &nbsp;&nbsp; | &nbsp;&nbsp; H [m H₂O] ≈ Δp [kPa] ÷ 9,81</div>
      <div class="rk-table-wrap">
        <div class="rk-table-summary">Każda pompa pracuje w punkcie przecięcia własnej charakterystyki z charakterystyką własnego obiegu.</div>
        <table aria-label="Zakres oporów obu pomp obiegowych">
          <thead><tr><th>Obieg</th><th>Co wyznacza przepływ?</th><th>Jakie opory należy zsumować?</th><th>Czego nie należy robić?</th></tr></thead>
          <tbody>
            <tr><td data-label="Obieg"><strong>Strona A</strong></td><td data-label="Przepływ">Moc, ΔT strony A i właściwości jej medium</td><td data-label="Opory">Źródło, strona A wymiennika, rury i armatura zamkniętej drogi</td><td data-label="Błąd">Nie dodawać oporów pętli podłogowych</td></tr>
            <tr><td data-label="Obieg"><strong>Strona B</strong></td><td data-label="Przepływ">Suma mocy podłogówki, jej ΔT i medium strony B</td><td data-label="Opory">Strona B wymiennika, rury, armatura, rozdzielacz i krytyczna pętla</td><td data-label="Błąd">Nie mnożyć oporu jednej pętli przez liczbę pętli równoległych</td></tr>
          </tbody>
        </table>
      </div>
      <p>Oznaczenie „25-60” nie jest wynikiem doboru, lecz nazwą rodziny pomp o określonych możliwościach. Potrzebny jest punkt Q–H, dostępne tryby regulacji i sprawdzenie minimalnych przepływów. Zobacz osobno, jak działa <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa w ogrzewaniu podłogowym</a> oraz jak korzystać z <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulatora doboru pompy Q–H</a>.</p>
      <p>Straty wymiennika podane w karcie katalogowej trzeba odczytać przy przepływie i medium bliskim obliczeniowym. Jeżeli zmienisz wodę na glikol albo zwiększysz przepływ, Δp także się zmieni. Na wynik wpływają ponadto <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnice rur w ogrzewaniu podłogowym</a> i średnica magistrali zasilającej rozdzielacze.</p>
    </section>

    <section class="rk-section" id="rk-phe-control">
      <span class="rk-eyebrow">Wymiana ciepła nie jest automatyką</span>
      <h2>Jak regulować i zabezpieczyć temperaturę za wymiennikiem?</h2>
      <p>Temperatura wtórna może być sterowana na kilka sposobów. Właściwy wariant zależy od źródła, zakresu jego modulacji, wymaganej temperatury powrotu, pojemności układu i sposobu pracy odbiorników. Nie istnieje jedna uniwersalna logika „poniżej 35°C otwórz, powyżej zamknij”.</p>
      <div class="rk-grid-3">
        <div class="rk-card"><h3>Regulacja źródła</h3><p>Jeżeli źródło może stabilnie pracować z temperaturą potrzebną przed wymiennikiem, automatyka pogodowa może korygować ją wraz z temperaturą zewnętrzną. Każdy kelwin podejścia wymiennika trzeba dodać do wymagania strony wtórnej.</p></div>
        <div class="rk-card rk-card-accent"><h3>Układ mieszający</h3><p>Przy źródle utrzymującym wyższe parametry zawór z siłownikiem może regulować temperaturę obiegu. Miejsce zaworu i czujników wynika ze schematu, a nie z zasady „zawsze za wymiennikiem”.</p></div>
        <div class="rk-card rk-card-warn"><h3>Niezależne ograniczenie</h3><p>Ogranicznik lub termostat bezpieczeństwa powinien zatrzymać dopływ energii albo pompę zgodnie z projektem, gdy regulacja podstawowa nie utrzyma dopuszczalnej temperatury.</p></div>
      </div>
      <p>Krzywa pogodowa powinna uwzględniać wymagania budynku, odbiorników i podejście wymiennika. Zobacz, jak działa <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywa grzewcza podłogówki</a> oraz czym różni się <a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/">sterowanie pogodowe</a> od doraźnego zamykania stref.</p>
      <div class="rk-note warn"><p><strong>Czujnik musi mierzyć właściwe miejsce.</strong> Temperatura za wymiennikiem bez informacji o przepływie, temperaturze powrotu i stanie pomp nie opisuje całego procesu. Zabezpieczenie powinno działać także przy błędzie komunikacji lub awarii elementu wykonawczego.</p></div>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-heat-pump">
      <span class="rk-eyebrow">Separacja ma wpływ na punkt pracy</span>
      <h2>Wymiennik płytowy z pompą ciepła — kiedy ma sens?</h2>
      <p>W typowej nowej instalacji zamkniętej <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompa ciepła</a> może często zasilać wodną podłogówkę bezpośrednio. Wymiennik warto rozważyć dopiero wtedy, gdy rozwiązuje konkretny problem: oddziela glikol, obieg zewnętrzny, instalację o innej jakości medium albo układy wymagające fizycznej separacji.</p>
      <div class="rk-grid-2">
        <div class="rk-card rk-card-green"><h3>Możliwe uzasadnienie</h3><ul><li>oddzielenie krótkiego obiegu niezamarzającego od wody w budynku,</li><li>ochrona nowego źródła przed medium starej instalacji,</li><li>wymóg producenta albo projektowanej topologii,</li><li>separacja obiegów o różnych dopuszczalnych ciśnieniach.</li></ul></div>
        <div class="rk-card rk-card-warn"><h3>Koszt techniczny</h3><ul><li>dodatkowa różnica temperatur między źródłem a podłogówką,</li><li>straty ciśnienia po obu stronach,</li><li>dodatkowa pompa i energia pomocnicza,</li><li>ryzyko zabrudzenia i potrzeba kontroli przepływu.</li></ul></div>
      </div>
      <p>Podłogówka korzysta z możliwości pracy przy niskiej temperaturze. Artykuł o <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">niskiej temperaturze zasilania pompy ciepła</a> wyjaśnia, dlaczego nie należy bez potrzeby podnosić parametrów źródła. Kalkulator kosztów poniżej nie zakłada stałego spadku COP — pozwala wpisać osobny SCOP wariantu bez wymiennika i z wymiennikiem.</p>
    </section>

    <section class="rk-section" id="rk-phe-solid-fuel">
      <span class="rk-eyebrow">Modernizacja wymaga analizy całej kotłowni</span>
      <h2>Wymiennik przy kotle na paliwo stałe i starszej instalacji</h2>
      <p>W starszych instalacjach wymiennik jest często stosowany do połączenia chronionego obiegu źródła z nową instalacją zamkniętą. Nie wolno jednak sprowadzać projektu do samego wymiennika. Kocioł może wymagać ochrony temperatury powrotu, odpowiedniego zładu, bufora i określonego sposobu zabezpieczenia przed przegrzaniem.</p>
      <div class="rk-grid-3">
        <div class="rk-card"><h3>Strona kotłowa</h3><p>Należy sprawdzić dopuszczalny układ pracy kotła, wymagany przepływ, zabezpieczenia, ochronę powrotu i zachowanie przy braku zasilania elektrycznego.</p></div>
        <div class="rk-card rk-card-accent"><h3>Przeniesienie mocy</h3><p>Wymiennik musi przenieść projektową moc przy realnych temperaturach, również wtedy, gdy źródło i odbiorniki nie pracują w katalogowym punkcie.</p></div>
        <div class="rk-card"><h3>Strona podłogowa</h3><p>Potrzebuje własnej stabilizacji ciśnienia, zaworu bezpieczeństwa, pompy, odpowietrzenia, regulacji i zabezpieczenia temperatury.</p></div>
      </div>
      <p>Jeżeli kocioł ma współpracować z buforem, kolejność elementów i punkty włączenia pomp powinny wynikać ze schematu hydraulicznego. Większy <a href="https://projekt-ogrzewania.pl/wiekszy-czy-mniejszy-zlad-wody-w-ogrzewaniu-podlogowym/">zład wody w instalacji</a> może realizować inną funkcję niż wymiennik. Nie można więc uznać, że jeden element automatycznie zastępuje drugi.</p>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-cost-tool">
      <span class="rk-eyebrow">Koszt wynika z całego dodatkowego obiegu</span>
      <h2>Kalkulator kosztów eksploatacji wymiennika i separacji obiegów</h2>
      <p>Sam wymiennik nie pobiera prądu i nie ma stałej „straty 5%”. Dodatkowy koszt może wynikać ze zmiany sprawności źródła, energii dwóch pomp, większych oporów, serwisu oraz nakładu na kompletny zespół separacji. Kalkulator porównuje układ bezpośredni z układem rozdzielonym przy tej samej ilości użytecznego ciepła.</p>
      <div class="rk-tool" id="rk-phe-cost-calculator">
        <div class="rk-tool-head">
          <div><h3>Dodatkowy koszt źródła, pomp i kompletnej separacji</h3><p>Wartości startowe są przykładem dla pompy ciepła. Wpisz własne ceny, rzeczywiste moce elektryczne pomp i sezonowe współczynniki dla porównywanych wariantów.</p></div>
          <button type="button" class="rk-reset" id="rk-phe-cost-reset">Przywróć przykład</button>
        </div>
        <div class="rk-controls">
          <div class="rk-subhead">Ciepło i źródło</div>
          <div class="rk-control"><label for="rk-phe-cost-heat">Użyteczne ciepło roczne</label><div class="rk-input-wrap"><input id="rk-phe-cost-heat" type="number" min="0" max="200000" step="100" value="12000" inputmode="decimal"><span>kWh/rok</span></div><small>Ta sama ilość oddana do budynku w obu wariantach.</small></div>
          <div class="rk-control"><label for="rk-phe-source-type">Rodzaj źródła</label><div class="rk-input-wrap"><select id="rk-phe-source-type"><option value="heatpump" selected>Pompa ciepła — współczynnik SCOP</option><option value="gas">Kocioł gazowy — sprawność sezonowa</option><option value="electric">Źródło elektryczne — sprawność</option><option value="solid">Kocioł na paliwo stałe — sprawność sezonowa</option></select></div><small>Wybór zmienia opis współczynnika, nie narzuca ceny paliwa.</small></div>
          <div class="rk-control"><label for="rk-phe-factor-direct" id="rk-phe-factor-direct-label">SCOP bez wymiennika</label><div class="rk-input-wrap"><input id="rk-phe-factor-direct" type="number" min="0.3" max="8" step="0.01" value="3.80" inputmode="decimal"><span id="rk-phe-factor-direct-unit">—</span></div><small id="rk-phe-factor-direct-help">Sezonowy współczynnik całego wariantu bez separacji.</small></div>
          <div class="rk-control"><label for="rk-phe-factor-separated" id="rk-phe-factor-separated-label">SCOP z wymiennikiem</label><div class="rk-input-wrap"><input id="rk-phe-factor-separated" type="number" min="0.3" max="8" step="0.01" value="3.60" inputmode="decimal"><span id="rk-phe-factor-separated-unit">—</span></div><small id="rk-phe-factor-separated-help">Wpisz wartość dla wyższej temperatury źródła i rzeczywistego sterowania.</small></div>
          <div class="rk-control"><label for="rk-phe-source-price">Cena energii źródła</label><div class="rk-input-wrap"><input id="rk-phe-source-price" type="number" min="0" max="10" step="0.01" value="1.00" inputmode="decimal"><span>zł/kWh</span></div><small>Dla prądu albo energii chemicznej paliwa — zgodnie z wpisanym współczynnikiem.</small></div>
          <div class="rk-control"><label for="rk-phe-electricity-price">Cena energii elektrycznej pomp</label><div class="rk-input-wrap"><input id="rk-phe-electricity-price" type="number" min="0" max="10" step="0.01" value="1.00" inputmode="decimal"><span>zł/kWh</span></div><small>Łączna zmienna stawka właściwa dla czasu pracy.</small></div>

          <div class="rk-subhead">Pompy obiegowe</div>
          <div class="rk-control"><label for="rk-phe-direct-pump">Pompa w układzie bezpośrednim</label><div class="rk-input-wrap"><input id="rk-phe-direct-pump" type="number" min="0" max="1000" step="1" value="35" inputmode="decimal"><span>W</span></div><small>Średni pobór w godzinach przyjętych do kalkulacji.</small></div>
          <div class="rk-control"><label for="rk-phe-primary-pump">Pompa strony A</label><div class="rk-input-wrap"><input id="rk-phe-primary-pump" type="number" min="0" max="1000" step="1" value="35" inputmode="decimal"><span>W</span></div><small>Nie moc maksymalna z tabliczki, jeśli pracuje modulacyjnie.</small></div>
          <div class="rk-control"><label for="rk-phe-secondary-pump">Pompa strony B</label><div class="rk-input-wrap"><input id="rk-phe-secondary-pump" type="number" min="0" max="1000" step="1" value="45" inputmode="decimal"><span>W</span></div><small>Średni pobór w analizowanym profilu pracy.</small></div>
          <div class="rk-control"><label for="rk-phe-pump-hours">Czas pracy pomp</label><div class="rk-input-wrap"><input id="rk-phe-pump-hours" type="number" min="0" max="8760" step="50" value="3500" inputmode="decimal"><span>h/rok</span></div><small>Wspólny czas dla uproszczonego porównania.</small></div>

          <div class="rk-subhead">Nakład, utrzymanie i okres</div>
          <div class="rk-control"><label for="rk-phe-separation-capex">Dodatkowy nakład na separację</label><div class="rk-input-wrap"><input id="rk-phe-separation-capex" type="number" min="0" max="200000" step="100" value="3500" inputmode="decimal"><span>zł</span></div><small>Wymiennik, pompa, armatura, zabezpieczenia, sterowanie i montaż ponad wariant bazowy.</small></div>
          <div class="rk-control"><label for="rk-phe-service-cost">Dodatkowe utrzymanie</label><div class="rk-input-wrap"><input id="rk-phe-service-cost" type="number" min="0" max="20000" step="10" value="150" inputmode="decimal"><span>zł/rok</span></div><small>Rezerwa na kontrolę, czyszczenie i elementy dodatkowego obiegu.</small></div>
          <div class="rk-control"><label for="rk-phe-cost-years">Okres analizy</label><div class="rk-input-wrap"><select id="rk-phe-cost-years"><option value="5">5 lat</option><option value="10">10 lat</option><option value="15" selected>15 lat</option><option value="20">20 lat</option><option value="25">25 lat</option></select></div><small>Wykres obejmuje nakład w roku 0 i koszty kolejnych lat.</small></div>
          <div class="rk-control"><label for="rk-phe-price-growth">Wzrost cen energii</label><div class="rk-input-wrap"><input id="rk-phe-price-growth" type="number" min="-10" max="20" step="0.1" value="2.0" inputmode="decimal"><span>%/rok</span></div><small>Edytowalny scenariusz, nie prognoza.</small></div>
        </div>

        <div class="rk-results" aria-live="polite">
          <div class="rk-result"><b id="rk-phe-source-direct-energy">—</b><span>energia źródła bez wymiennika / rok</span></div>
          <div class="rk-result"><b id="rk-phe-source-separated-energy">—</b><span>energia źródła z wymiennikiem / rok</span></div>
          <div class="rk-result"><b id="rk-phe-extra-pump-energy">—</b><span>różnica energii pomp / rok</span></div>
          <div class="rk-result"><b id="rk-phe-cost-direct-year">—</b><span>koszt energii wariantu bezpośredniego w 1. roku</span></div>
          <div class="rk-result"><b id="rk-phe-cost-separated-year">—</b><span>koszt energii i utrzymania separacji w 1. roku</span></div>
          <div class="rk-result primary"><b id="rk-phe-cost-difference-year">—</b><span>różnica kosztu eksploatacji w 1. roku</span></div>
          <div class="rk-result"><b id="rk-phe-tco-direct">—</b><span>koszt wariantu bazowego w okresie</span></div>
          <div class="rk-result primary"><b id="rk-phe-tco-separated">—</b><span>koszt wariantu z separacją wraz z dodatkowym nakładem</span></div>
          <div class="rk-result rk-result-wide"><b id="rk-phe-tco-difference">—</b><span>łączna różnica kosztu po wybranym okresie</span></div>
          <div class="rk-result rk-result-wide"><b id="rk-phe-cost-driver">—</b><span>największa składowa różnicy w pierwszym roku</span></div>
        </div>
        <div class="rk-driver"><b>Jak czytać porównanie?</b><p id="rk-phe-cost-message">—</p></div>

        <div class="rk-chart-card">
          <div class="rk-chart-wrap"><svg id="rk-phe-cost-chart" viewBox="0 0 900 410" role="img" aria-labelledby="rk-phe-cost-chart-title rk-phe-cost-chart-desc"><title id="rk-phe-cost-chart-title">Skumulowana różnica kosztu układu z wymiennikiem</title><desc id="rk-phe-cost-chart-desc">Wykres pokazuje dodatkowy albo niższy skumulowany koszt separacji w kolejnych latach.</desc></svg></div>
          <div class="rk-chart-legend"><span class="rk-legend">Skumulowana różnica: układ z wymiennikiem minus układ bezpośredni</span><span class="rk-legend zero">Poziom 0 zł</span></div>
          <p class="rk-chart-note" id="rk-phe-cost-chart-note">Wartość dodatnia oznacza wyższy koszt wariantu z separacją, a ujemna — niższy koszt przy wprowadzonych założeniach.</p>
        </div>

        <div class="rk-table-wrap">
          <div class="rk-table-summary" id="rk-phe-cost-table-summary">Koszt skumulowany obu wariantów i różnica w wybranych latach.</div>
          <table aria-label="Koszt skumulowany instalacji bez wymiennika i z wymiennikiem">
            <thead><tr><th>Rok</th><th>Bez wymiennika</th><th>Z wymiennikiem</th><th>Różnica</th></tr></thead>
            <tbody id="rk-phe-cost-table"></tbody>
          </table>
        </div>
      </div>
      <p>Wymagania dotyczące efektywności energetycznej pomp obiegowych i powiązanych metod wyznaczania EEI opisują materiały <a href="https://single-market-economy.ec.europa.eu/single-market/goods/european-standards/harmonised-standards/ecodesign-and-energy-labelling-circulators_en" target="_blank" rel="nofollow noopener noreferrer">Komisji Europejskiej dotyczące ekoprojektu pomp obiegowych</a>. Do kalkulatora należy jednak wpisać średni pobór rzeczywistego urządzenia w swoim punkcie pracy, a nie samą wartość EEI.</p>
      <noscript><div class="rk-note warn"><p>Do działania kalkulatora kosztów i wykresu potrzebna jest obsługa JavaScript. Założenia oraz ograniczenia narzędzia pozostają opisane w treści.</p></div></noscript>
    </section>

    <section class="rk-section" id="rk-phe-maintenance">
      <span class="rk-eyebrow">Spadek mocy często zaczyna się od oporu</span>
      <h2>Zabrudzenie wymiennika, jakość wody i konserwacja</h2>
      <p>Osad na płytach tworzy dodatkowy opór cieplny, a zwężenie kanałów zwiększa stratę ciśnienia. W efekcie ta sama pompa może zapewniać mniejszy przepływ, a wymiennik przekazywać mniejszą moc. Nie wolno wtedy automatycznie zwiększać biegu pompy bez ustalenia przyczyny.</p>
      <div class="rk-grid-3">
        <div class="rk-card"><h3>Objawy po stronie cieplnej</h3><p>Przy podobnych warunkach źródła temperatura wtórna jest niższa, rośnie wymagane podejście, a instalacja nie osiąga wcześniejszej mocy.</p></div>
        <div class="rk-card"><h3>Objawy po stronie hydraulicznej</h3><p>Maleje przepływ, rośnie różnica ciśnień, pompa pracuje bliżej ograniczenia albo pojawiają się hałas i problemy z równoważeniem.</p></div>
        <div class="rk-card rk-card-accent"><h3>Weryfikacja</h3><p>Porównuje się temperatury, przepływy i spadki ciśnienia po obu stronach z wartościami z uruchomienia oraz kartą konkretnego modelu.</p></div>
      </div>
      <h3>Czy wymiennik płytowy trzeba czyścić co kilka lat?</h3>
      <p>Nie ma jednego terminu odpowiedniego dla każdej instalacji. Częstotliwość zależy od jakości medium, uzupełniania wody, materiałów, temperatury, filtracji i zaleceń producenta. W obiegu zamkniętym napełnionym poprawnie warunki mogą być zupełnie inne niż w układzie często uzupełnianym twardą wodą.</p>
      <p>Wymiennik lutowany czyści się metodą dopuszczoną przez producenta i z użyciem środka zgodnego z materiałem płyt oraz lutu. Przed płukaniem trzeba potwierdzić, czy problemem rzeczywiście jest osad, a nie zapowietrzenie, zamknięty zawór albo niewłaściwy punkt pracy pompy. Pomocna może być diagnostyka <a href="https://projekt-ogrzewania.pl/objawy-zapowietrzenia-ogrzewania-podlogowego/">objawów zapowietrzenia podłogówki</a>.</p>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-errors">
      <span class="rk-eyebrow">Błąd jednej strony zmienia cały punkt pracy</span>
      <h2>Najczęstsze błędy przy wymienniku płytowym do podłogówki</h2>
      <div class="rk-number-grid" aria-label="Najczęstsze błędy przy wymienniku płytowym">
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Dobór po liczbie płyt</h3><p>Bez geometrii, temperatur, mediów i przepływów liczba płyt nie mówi, czy urządzenie osiągnie wymagany punkt.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Dobór po „mocy maksymalnej”</h3><p>Moc katalogowa dotyczy określonych parametrów. Przy mniejszej różnicy temperatur rzeczywista zdolność przekazywania ciepła może być inna.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Brak kontroli temperatury</h3><p>Traktowanie wymiennika jak zaworu regulacyjnego pozostawia podłogówkę bez prawidłowej automatyki i ograniczenia.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Jedna pompa dla dwóch obiegów</h3><p>Po fizycznym rozdzieleniu mediów pompa jednej strony nie wymusza przepływu po drugiej stronie płyt.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Pominięcie oporu wymiennika</h3><p>Spadek ciśnienia musi zostać uwzględniony osobno dla każdej strony i dla rzeczywistego przepływu.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Zamiana przepływu sumarycznego na pętlę</h3><p>Przepływ obiegu B jest sumą pracujących gałęzi. Każda pętla wymaga własnej nastawy wynikającej z jej mocy.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Brak zabezpieczeń strony wtórnej</h3><p>Oddzielony obieg nie dziedziczy naczynia ani zaworu bezpieczeństwa strony pierwotnej.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Brak pomiarów przy uruchomieniu</h3><p>Bez temperatur, przepływów i ciśnień odniesienia trudno później odróżnić zabrudzenie od błędnej regulacji.</p></div></div>
      </div>
      <p>Do tej listy dochodzą typowe <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">błędy montażu ogrzewania podłogowego</a>: niewłaściwe długości pętli, przypadkowe rozstawy, źle dobrane średnice i brak próby szczelności. Wymiennik nie kompensuje takich problemów.</p>
    </section>

    <section class="rk-section" id="rk-phe-commissioning">
      <span class="rk-eyebrow">Pomiar zamiast oceny „rura jest ciepła”</span>
      <h2>Jak sprawdzić wymiennik i oba obiegi podczas uruchomienia?</h2>
      <p>Uruchomienie powinno potwierdzić założony punkt pracy, a nie tylko obecność ciepła. Wyniki warto zapisać, ponieważ tworzą bazę do późniejszego serwisu i oceny ewentualnego zabrudzenia.</p>
      <div class="rk-number-grid" aria-label="Procedura sprawdzenia wymiennika podczas uruchomienia">
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Sprawdź kierunki przepływu</h3><p>Potwierdź króćce, przeciwprąd i kierunek pracy obu pomp według dokumentacji urządzenia.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Napełnij obiegi oddzielnie</h3><p>Ustal właściwe medium, ciśnienie napełnienia, odpowietrzenie i działanie zabezpieczeń każdej strony.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Uruchom przepływy</h3><p>Zweryfikuj przepływ strony A oraz sumę przepływów strony B przy otwartych obiegach przewidzianych do testu.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Zmierz cztery temperatury</h3><p>Zapisz wejście i wyjście strony gorącej oraz wejście i wyjście strony wtórnej po ustabilizowaniu pracy.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Porównaj bilans mocy</h3><p>Oblicz moc z przepływu i ΔT po obu stronach. Niewielkie różnice pomiarowe są normalne, ale duża rozbieżność wymaga diagnostyki.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Sprawdź opory i pompy</h3><p>Porównaj punkt Q–H z nastawą pomp, zaworami oraz danymi wymiennika przy aktualnym medium.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Przetestuj regulację</h3><p>Zmień zapotrzebowanie i sprawdź reakcję źródła, mieszania, czujników oraz ograniczenia temperatury.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Zapisz stan odniesienia</h3><p>Zachowaj temperatury, przepływy, ciśnienia, nastawy i pobór pomp do kolejnych przeglądów.</p></div></div>
      </div>
      <p>Przed przykryciem instalacji należy również wykonać właściwą <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próbę szczelności ogrzewania podłogowego</a>. Próba pętli nie zastępuje jednak osobnego sprawdzenia szczelności, ciśnienia i połączeń zespołu wymiennika.</p>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-conclusion">
      <span class="rk-eyebrow">Wniosek projektowy</span>
      <h2>Czy warto stosować wymiennik płytowy w ogrzewaniu podłogowym?</h2>
      <div class="rk-answer" id="rk-phe-conclusion-answer">
        <div class="rk-answer-main">
          <p><strong>Tak — jeżeli instalacja rzeczywiście wymaga fizycznej separacji mediów, ciśnień albo starego i nowego obiegu.</strong> W takim przypadku prawidłowo dobrany wymiennik jest skutecznym elementem całego rozwiązania.</p>
          <p><strong>Nie — jeżeli ma jedynie „zbić temperaturę”, a oba obiegi mogą bezpiecznie pracować razem.</strong> Temperaturę należy regulować źródłem lub odpowiednim układem mieszającym. Dodanie wymiennika bez funkcjonalnej potrzeby zwiększa liczbę elementów, opory i koszt eksploatacji.</p>
          <p>Dobór powinien obejmować moc z obliczeń, cztery temperatury, oba media, przepływy, dopuszczalne straty ciśnienia, charakterystyki pomp i automatykę. Dopiero z takimi danymi można zweryfikować konkretny model urządzenia.</p>
        </div>
        <div class="rk-verdict">
          <div class="rk-verdict-item"><b>Najpierw OZC i odbiorniki</b><span>Ustal wymaganą moc oraz temperaturę podłogówki dla rzeczywistej powierzchni czynnej.</span></div>
          <div class="rk-verdict-item"><b>Potem punkt wymiennika</b><span>Sprawdź LMTD, UA, przepływy, media i Δp konkretnego modelu.</span></div>
          <div class="rk-verdict-item"><b>Na końcu cały układ</b><span>Dobierz pompy, zabezpieczenia, regulację, naczynia i nastawy rozdzielacza.</span></div>
        </div>
      </div>

      <div class="rk-cta">
        <span class="rk-eyebrow">Projekt zamiast doboru pojedynczego elementu</span>
        <div class="rk-cta-title">Podłogówka musi zadziałać jako jeden układ — od źródła po najdalszą pętlę.</div>
        <p>W projekcie łączymy obciążenie każdego pomieszczenia, powierzchnię czynną, temperaturę zasilania, rozstaw i długość pętli, przepływy, opory, rozdzielacze oraz źródło ciepła. Jeżeli wymiennik jest potrzebny, jego parametry i obie pompy muszą zostać włączone do tego samego bilansu.</p>
        <a class="rk-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt instalacji ogrzewania podłogowego</a>
      </div>
    </section>

    <section class="rk-section" id="rk-phe-sources">
      <span class="rk-eyebrow">Materiały publiczne i podstawa obliczeń</span>
      <h2>Źródła oficjalne i materiały techniczne</h2>
      <ul class="rk-sources">
        <li><a href="https://web.mit.edu/16.unified/www/FALL/thermodynamics/notes/node131.html" target="_blank" rel="nofollow noopener noreferrer">Massachusetts Institute of Technology — Heat Exchangers</a>: bilans energii, współczynnik przenikania, przeciwprąd i średnia logarytmiczna różnica temperatur.</li>
        <li><a href="https://single-market-economy.ec.europa.eu/single-market/goods/european-standards/harmonised-standards/ecodesign-and-energy-labelling-circulators_en" target="_blank" rel="nofollow noopener noreferrer">Komisja Europejska — Ecodesign and energy labelling: circulators</a>: przepisy i zestawienie norm dotyczących efektywności energetycznej pomp obiegowych.</li>
        <li><a href="https://eur-lex.europa.eu/legal-content/PL/TXT/?uri=CELEX:32009R0641" target="_blank" rel="nofollow noopener noreferrer">EUR-Lex — rozporządzenie Komisji (WE) nr 641/2009</a>: wymagania ekoprojektu dla pomp bezdławnicowych.</li>
        <li><a href="https://energy.ec.europa.eu/topics/energy-efficiency/heat-pumps_en" target="_blank" rel="nofollow noopener noreferrer">Komisja Europejska — Heat pumps</a>: zasada działania i rola efektywności pomp ciepła w ogrzewaniu budynków.</li>
      </ul>
      <p>W projekcie instalacji płaszczyznowej należy dodatkowo stosować właściwe wydania norm i dokumentacji technicznej, w tym zakres obliczeń obciążenia cieplnego, projektowania ogrzewania podłogowego, zabezpieczeń źródła oraz instrukcje producentów wymiennika, pomp i automatyki. Zobacz również omówienie <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">PN-EN 12831 dla obciążenia cieplnego</a> i <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">EN 1264 dla ogrzewania podłogowego</a>.</p>
      <div class="rk-responsibility">
        <p><strong>Stan źródeł:</strong> odnośniki sprawdzono 13 września 2026 r. Strony publiczne nie zastępują pełnej dokumentacji konkretnego urządzenia ani aktualnej treści norm.</p>
        <p><strong>Wartości początkowe:</strong> temperatury, ceny, SCOP, sprawności, opory, moce pomp i koszty w kalkulatorach są edytowalnymi przykładami, a nie zaleceniami dla dowolnego domu.</p>
        <p><strong>Odpowiedzialność:</strong> artykuł i narzędzia mają charakter edukacyjny. Nie są projektem wykonawczym, doborem handlowym, instrukcją zabezpieczenia kotła ani prognozą cen energii.</p>
      </div>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-faq">
      <span class="rk-eyebrow">Najczęstsze pytania inwestorów i instalatorów</span>
      <h2>FAQ: wymiennik płytowy w ogrzewaniu podłogowym</h2>
      <div class="rk-faq">
        <details><summary>Czy wymiennik płytowy obniża temperaturę wody?</summary><div class="rk-faq-answer"><p>Wymiennik nie reguluje temperatury do zadanej wartości. Temperatury wyjściowe wynikają z temperatur wejściowych, przepływów, właściwości mediów i UA. Stabilną temperaturę podłogówki zapewnia odpowiednio zaprojektowana regulacja oraz zabezpieczenie.</p></div></details>
        <details><summary>Czy zawór mieszający może zastąpić wymiennik?</summary><div class="rk-faq-answer"><p>Tylko w funkcji regulowania temperatury, jeśli nie jest potrzebne fizyczne oddzielenie mediów i ciśnień. Zawór miesza przepływy we wspólnym obiegu, a wymiennik tworzy dwa osobne obiegi.</p></div></details>
        <details><summary>Jak dobrać moc wymiennika płytowego do podłogówki?</summary><div class="rk-faq-answer"><p>Trzeba znać projektową moc, cztery temperatury, oba media, wymagane przepływy i dopuszczalne straty ciśnienia. Moc z nazwy handlowej lub sama liczba płyt nie wystarczają do doboru konkretnego modelu.</p></div></details>
        <details><summary>Jaki przepływ powinien być przez wymiennik płytowy?</summary><div class="rk-faq-answer"><p>Przepływ każdej strony wynika z przekazywanej mocy, różnicy temperatur i objętościowej pojemności cieplnej medium. Strony mogą mieć różne przepływy, mimo że w stanie ustalonym przekazują zbliżoną moc.</p></div></details>
        <details><summary>Dlaczego przy wymienniku najczęściej potrzebne są dwie pompy?</summary><div class="rk-faq-answer"><p>Płyty fizycznie rozdzielają media, dlatego pompa strony pierwotnej nie wywołuje przepływu po stronie wtórnej. Każda pompa musi pokonać opory własnego, zamkniętego obiegu.</p></div></details>
        <details><summary>Jaka różnica temperatur na końcu wymiennika jest prawidłowa?</summary><div class="rk-faq-answer"><p>Nie ma jednej wartości dla wszystkich instalacji. Mniejsze podejście temperaturowe wymaga zwykle większego UA, a jego wykonalność trzeba sprawdzić dla konkretnego modelu, przepływów, mediów i dopuszczalnego spadku ciśnienia.</p></div></details>
        <details><summary>Czy wymiennik płytowy jest potrzebny przy pompie ciepła?</summary><div class="rk-faq-answer"><p>Nie automatycznie. Może być uzasadniony koniecznością oddzielenia glikolu, starej instalacji, innego ciśnienia lub wymaganiem producenta. W nowej wspólnej instalacji wodnej może niepotrzebnie zwiększać temperaturę źródła, opory i zużycie pomp.</p></div></details>
        <details><summary>Czy kocioł na paliwo stałe zawsze wymaga wymiennika?</summary><div class="rk-faq-answer"><p>Nie można odpowiedzieć wyłącznie na podstawie rodzaju paliwa. Trzeba sprawdzić konstrukcję kotłowni, układ otwarty lub zamknięty, wymagania producenta, zabezpieczenia, ochronę powrotu, bufor i sposób regulacji podłogówki.</p></div></details>
        <details><summary>Czy wymiennik lutowany wymaga regularnego czyszczenia?</summary><div class="rk-faq-answer"><p>Częstotliwość zależy od jakości medium, uzupełniania wody, filtracji, temperatury i zaleceń producenta. Czyszczenie powinno wynikać z pomiarów lub objawów, a użyta metoda musi być zgodna z materiałem płyt i lutu.</p></div></details>
        <details><summary>Czy kalkulatory dobierają gotowy wymiennik i pompy?</summary><div class="rk-faq-answer"><p>Nie. Kalkulator cieplno-hydrauliczny wyznacza punkt pracy, a kalkulator kosztów porównuje wpisane założenia. Konkretny wymiennik trzeba sprawdzić w danych producenta, a pompy dobrać z charakterystyk Q–H całych obiegów.</p></div></details>
      </div>
    </section>

    <section class="rk-section rk-section-dark" id="rk-phe-author" aria-labelledby="rk-phe-author-heading">
      <div class="rk-author">
        <div class="rk-author-head">
          <div>
            <span class="rk-eyebrow">E-E-A-T i odpowiedzialność za treść</span>
            <h2 id="rk-phe-author-heading">Autor i weryfikacja merytoryczna</h2>
            <p>Treść przygotowana z perspektywy projektowania cieplnego, hydrauliki obu obiegów i rzeczywistego uruchomienia wodnego ogrzewania podłogowego.</p>
          </div>
          <span class="rk-author-mark">Aktualizacja: 13.09.2026</span>
        </div>
        <div class="rk-author-layout">
          <aside class="rk-author-side">
            <div class="rk-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji grzewczych" width="132" height="132" loading="lazy" decoding="async"></div>
            <div class="rk-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
            <p class="rk-author-role">Projektant instalacji sanitarnych i specjalista HVAC</p>
            <div class="rk-author-social-label">Profile branżowe</div>
            <div class="rk-author-social" aria-label="Profile branżowe Roberta Kucharskiego">
              <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="nofollow noopener noreferrer" aria-label="LinkedIn Roberta Kucharskiego"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5.2 3.4A2.2 2.2 0 1 1 5.2 7.8a2.2 2.2 0 0 1 0-4.4ZM3.3 9h3.8v11.7H3.3V9Zm6.1 0h3.6v1.6h.1c.5-1 1.8-2.1 3.7-2.1 4 0 4.7 2.6 4.7 6v6.2h-3.8v-5.5c0-1.3 0-3-1.9-3s-2.2 1.4-2.2 2.9v5.6H9.8V9Z"/></svg></a>
              <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer" aria-label="Facebook Projekt Ogrzewania"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M13.7 21v-8h2.7l.4-3.1h-3.1V8c0-.9.3-1.5 1.6-1.5H17V3.7c-.3 0-1.3-.1-2.5-.1-2.5 0-4.2 1.5-4.2 4.3v2H7.5V13h2.8v8h3.4Z"/></svg></a>
              <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer" aria-label="Profil X Projekt HVAC"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 3h4.6l4.2 5.6L17.8 3H20l-6.2 7.1L20.7 21h-4.6l-4.7-6.3L5.9 21H3.7l6.7-7.7L4 3Zm3.5 1.7 9.4 14.6h1.9L9.4 4.7H7.5Z"/></svg></a>
            </div>
          </aside>
          <div class="rk-author-main">
            <blockquote class="rk-author-quote"><p>Moim zdaniem wymiennika płytowego nie dobiera się po samej mocy ani liczbie płyt. Najpierw ustalam rzeczywiste temperatury, przepływy i dopuszczalne opory po obu stronach, a następnie sprawdzam konkretny model w danych producenta.</p></blockquote>
            <div class="rk-author-cards">
              <div class="rk-author-card"><b>Praktyka projektowa</b><p>Analiza OZC, powierzchni czynnej, temperatur, pętli, przepływów, rozdzielaczy, źródeł ciepła i automatyki.</p></div>
              <div class="rk-author-card"><b>Metoda</b><p>Oddzielny bilans strony pierwotnej i wtórnej, cztery temperatury, LMTD, wymagane UA, opory i charakterystyki pomp.</p></div>
              <div class="rk-author-card"><b>Zakres aktualizacji</b><p>Usunięto kategoryczne reguły, symulator degradacji i dobór po liczbie płyt; dodano grafikę, dwa kalkulatory, wykresy i ograniczenia.</p></div>
            </div>
            <div class="rk-author-mini-label">Portale autora</div>
            <div class="rk-portals">
              <a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a>
              <a href="https://remont.biz.pl/" target="_blank" rel="nofollow noopener noreferrer">Remont.biz.pl</a>
              <a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a>
            </div>
          </div>
        </div>
      </div>
    </section>

  </article>
</div>

<script>
(function(){
  "use strict";

  var root = document.getElementById("rk-phe");
  if (!root) return;

  function byId(id){ return document.getElementById(id); }
  function readNumber(id){
    var el = byId(id);
    if (!el) return NaN;
    var value = parseFloat(String(el.value).replace(",","."));
    return Number.isFinite(value) ? value : NaN;
  }
  function write(id,value){
    var el = byId(id);
    if (el) el.textContent = value;
  }
  function clamp(value,min,max){ return Math.min(max,Math.max(min,value)); }
  function formatNumber(value,digits){
    if (!Number.isFinite(value)) return "—";
    return value.toLocaleString("pl-PL",{minimumFractionDigits:digits,maximumFractionDigits:digits});
  }
  function formatMoney(value){
    if (!Number.isFinite(value)) return "—";
    return Math.round(value).toLocaleString("pl-PL") + " zł";
  }
  function formatSignedMoney(value){
    if (!Number.isFinite(value)) return "—";
    if (Math.abs(value) < 0.5) return "0 zł";
    return (value > 0 ? "+" : "−") + Math.round(Math.abs(value)).toLocaleString("pl-PL") + " zł";
  }
  function setResultState(id,state){
    var output = byId(id);
    if (!output || !output.parentElement) return;
    output.parentElement.classList.remove("good","warn","bad");
    if (state) output.parentElement.classList.add(state);
  }
  function svgText(value){
    var encoder=document.createElement("span");
    encoder.textContent=String(value);
    return encoder.innerHTML;
  }

  /* Modułowa grafika edukacyjna */
  var flowModes = {
    direct:{
      status:"Źródło i podłogówka pracują ze wspólnym medium oraz wspólnym ciśnieniem statycznym. Regulacja temperatury nadal może wymagać automatyki lub mieszania.",
      yes:"Wspólne medium przenosi energię i przepływa przez elementy jednego obiegu.",
      no:"Nie ma fizycznej granicy oddzielającej jakość wody ani ciśnienie części źródłowej od odbiorczej.",
      arrows:["→","→","→","→"],
      cards:[
        ["Ź","Źródło ciepła","Wytwarza ciepło zgodnie ze swoją regulacją i ograniczeniami.","temperatura źródła"],
        ["P","Pompa obiegowa","Wymusza przepływ w zamkniętej drodze wspólnego obiegu.","jeden bilans Q–H"],
        ["H₂O","Wspólne medium","Ta sama woda znajduje się po stronie źródła i rozdzielacza.","wspólne ciśnienie"],
        ["R","Rozdzielacz","Dzieli przepływ pomiędzy równoległe pętle i umożliwia ich równoważenie.","suma przepływów pętli"],
        ["OP","Podłogówka","Oddaje ciepło do pomieszczeń przy parametrach wynikających z projektu.","powrót do źródła"]
      ]
    },
    separated:{
      status:"Energia przechodzi przez płyty, ale obieg źródła i obieg podłogówki mają oddzielne media, ciśnienia oraz przepływy.",
      yes:"Energia cieplna — zależnie od różnicy temperatur, UA i przepływów.",
      no:"Woda lub glikol, ciśnienie robocze, zanieczyszczenia oraz sam przepływ objętościowy.",
      arrows:["→","→","→","→"],
      cards:[
        ["A","Źródło ciepła","Wytwarza ciepło i pracuje w warunkach obiegu pierwotnego.","medium A · ciśnienie A"],
        ["P1","Pompa pierwotna","Zapewnia przepływ przez źródło, rurociągi i pierwszą stronę wymiennika.","V̇A z mocy i ΔTA"],
        ["HX","Wymiennik płytowy","Przekazuje energię przez płyty bez mieszania obu mediów.","granica obiegów"],
        ["P2","Pompa i regulacja","Budują przepływ wtórny i współpracują z regulacją temperatury.","V̇B z mocy i ΔTB"],
        ["B","Podłogówka","Rozdzielacz przekazuje wodę do pętli obiegu wtórnego.","medium B · ciśnienie B"]
      ]
    },
    counter:{
      status:"Na rysunku medium A płynie z lewej na prawą, a medium B z prawej na lewą. Profile temperatur trzeba porównywać na tych samych końcach wymiennika.",
      yes:"Ciepło płynie lokalnie od cieplejszej strony A do chłodniejszej strony B na całej długości płyt.",
      no:"Temperatura wejściowa jednej strony nie jest kopiowana jako temperatura wyjściowa drugiej strony.",
      arrows:["→","→","←","←"],
      cards:[
        ["70°","A wpływa","Gorące medium pierwotne wpływa przy przykładowej temperaturze 70°C.","kierunek A →"],
        ["55°","A wypływa","Po oddaniu mocy medium A wypływa chłodniejsze, przykładowo 55°C.","ΔTA = 15 K"],
        ["HX","Przekaz przez płyty","Lokalna różnica temperatur napędza przekazywanie energii.","Q = UA · LMTD"],
        ["38°","B wypływa","Ogrzane medium wtórne opuszcza wymiennik, przykładowo przy 38°C.","ΔTB = 8 K"],
        ["30°","B wpływa","Powrót podłogówki wpływa z przeciwnej strony przy przykładowej temperaturze 30°C.","kierunek B ←"]
      ]
    }
  };

  function renderFlow(mode){
    var data = flowModes[mode] || flowModes.separated;
    write("rk-phe-flow-status",data.status);
    write("rk-phe-pass-yes",data.yes);
    write("rk-phe-pass-no",data.no);
    var cards = root.querySelectorAll("#rk-phe-flow-cards .rk-flow-card");
    data.cards.forEach(function(card,index){
      write("rk-phe-flow-icon-"+(index+1),card[0]);
      write("rk-phe-flow-title-"+(index+1),card[1]);
      write("rk-phe-flow-text-"+(index+1),card[2]);
      write("rk-phe-flow-mini-"+(index+1),card[3]);
      if (cards[index]){
        if (index < 4) cards[index].setAttribute("data-arrow",data.arrows[index]);
      }
    });
    root.querySelectorAll(".rk-flow-tab").forEach(function(button){
      button.setAttribute("aria-pressed",button.getAttribute("data-mode") === mode ? "true" : "false");
    });
  }

  root.querySelectorAll(".rk-flow-tab").forEach(function(button){
    button.addEventListener("click",function(){ renderFlow(button.getAttribute("data-mode")); });
  });

  /* Kalkulator cieplno-hydrauliczny */
  var thermalDefaults = {
    "rk-phe-power":"10",
    "rk-phe-hot-in":"70",
    "rk-phe-hot-out":"55",
    "rk-phe-hot-fluid":"1.163",
    "rk-phe-hot-hx-dp":"12",
    "rk-phe-hot-other-dp":"8",
    "rk-phe-cold-in":"30",
    "rk-phe-cold-out":"38",
    "rk-phe-cold-fluid":"1.163",
    "rk-phe-cold-hx-dp":"16",
    "rk-phe-cold-other-dp":"25"
  };

  function clearThermalOutputs(){
    ["rk-phe-hot-flow","rk-phe-cold-flow","rk-phe-hot-approach","rk-phe-cold-approach","rk-phe-lmtd","rk-phe-ua","rk-phe-hot-head","rk-phe-cold-head"].forEach(function(id){ write(id,"—"); setResultState(id,""); });
  }

  function renderTemperatureChart(values){
    var svg = byId("rk-phe-temperature-chart");
    if (!svg) return;
    if (!values){
      svg.innerHTML = '<title id="rk-phe-temp-title">Profile temperatur w przeciwprądowym wymienniku płytowym</title><desc id="rk-phe-temp-desc">Nie można narysować wykresu dla niespójnych danych.</desc><rect x="0" y="0" width="900" height="410" rx="18" fill="#f8fcfd"/><text x="450" y="205" text-anchor="middle" fill="#c7443a" font-size="18" font-weight="800">Popraw temperatury, aby wyświetlić wykres</text>';
      return;
    }
    var w=900,h=410,left=76,right=36,top=36,bottom=62;
    var plotW=w-left-right,plotH=h-top-bottom;
    var minRaw=Math.min(values.hotIn,values.hotOut,values.coldIn,values.coldOut);
    var maxRaw=Math.max(values.hotIn,values.hotOut,values.coldIn,values.coldOut);
    var minT=Math.floor((minRaw-5)/5)*5;
    var maxT=Math.ceil((maxRaw+5)/5)*5;
    if (maxT-minT<10){ maxT=minT+10; }
    function x(t){ return left+t*plotW; }
    function y(temp){ return top+(maxT-temp)/(maxT-minT)*plotH; }
    var parts=[];
    parts.push('<title id="rk-phe-temp-title">Profile temperatur w przeciwprądowym wymienniku płytowym</title>');
    parts.push('<desc id="rk-phe-temp-desc">Strona A płynie od lewej do prawej, a strona B od prawej do lewej. Różnice końcowe wynoszą '+svgText(formatNumber(values.approachHot,1))+' i '+svgText(formatNumber(values.approachCold,1))+' kelwina.</desc>');
    parts.push('<rect x="0" y="0" width="900" height="410" rx="18" fill="#ffffff"/>');
    for(var i=0;i<=5;i++){
      var temp=minT+(maxT-minT)*i/5;
      var yy=y(temp);
      parts.push('<line x1="'+left+'" y1="'+yy+'" x2="'+(w-right)+'" y2="'+yy+'" stroke="#dce8ed" stroke-width="1"/>');
      parts.push('<text x="'+(left-12)+'" y="'+(yy+5)+'" text-anchor="end" fill="#607783" font-size="13">'+svgText(formatNumber(temp,0))+'°C</text>');
    }
    parts.push('<line x1="'+left+'" y1="'+top+'" x2="'+left+'" y2="'+(h-bottom)+'" stroke="#8ca1ab" stroke-width="1.5"/>');
    parts.push('<line x1="'+left+'" y1="'+(h-bottom)+'" x2="'+(w-right)+'" y2="'+(h-bottom)+'" stroke="#8ca1ab" stroke-width="1.5"/>');
    var hotPoints=[],coldPoints=[];
    for(var s=0;s<=20;s++){
      var t=s/20;
      var hot=values.hotIn+(values.hotOut-values.hotIn)*t;
      var cold=values.coldOut+(values.coldIn-values.coldOut)*t;
      hotPoints.push(x(t)+","+y(hot));
      coldPoints.push(x(t)+","+y(cold));
    }
    parts.push('<polyline points="'+hotPoints.join(" ")+'" fill="none" stroke="#ff6a3d" stroke-width="6" stroke-linecap="round" stroke-linejoin="round" vector-effect="non-scaling-stroke"/>');
    parts.push('<polyline points="'+coldPoints.join(" ")+'" fill="none" stroke="#078fbe" stroke-width="6" stroke-linecap="round" stroke-linejoin="round" vector-effect="non-scaling-stroke"/>');
    [[0,values.hotIn,"#ff6a3d"],[1,values.hotOut,"#ff6a3d"],[0,values.coldOut,"#078fbe"],[1,values.coldIn,"#078fbe"]].forEach(function(point){
      parts.push('<circle cx="'+x(point[0])+'" cy="'+y(point[1])+'" r="7" fill="'+point[2]+'" stroke="#fff" stroke-width="3" vector-effect="non-scaling-stroke"/>');
    });
    parts.push('<text x="'+(left+10)+'" y="'+(y(values.hotIn)-13)+'" fill="#b83f1d" font-size="14" font-weight="800">A wej. '+svgText(formatNumber(values.hotIn,1))+'°C</text>');
    parts.push('<text x="'+(w-right-10)+'" y="'+(y(values.hotOut)-13)+'" text-anchor="end" fill="#b83f1d" font-size="14" font-weight="800">A wyj. '+svgText(formatNumber(values.hotOut,1))+'°C</text>');
    parts.push('<text x="'+(left+10)+'" y="'+(y(values.coldOut)+25)+'" fill="#006e99" font-size="14" font-weight="800">B wyj. '+svgText(formatNumber(values.coldOut,1))+'°C</text>');
    parts.push('<text x="'+(w-right-10)+'" y="'+(y(values.coldIn)+25)+'" text-anchor="end" fill="#006e99" font-size="14" font-weight="800">B wej. '+svgText(formatNumber(values.coldIn,1))+'°C</text>');
    parts.push('<text x="'+left+'" y="'+(h-24)+'" fill="#607783" font-size="13">gorący koniec · ΔT '+svgText(formatNumber(values.approachHot,1))+' K</text>');
    parts.push('<text x="'+(w-right)+'" y="'+(h-24)+'" text-anchor="end" fill="#607783" font-size="13">zimny koniec · ΔT '+svgText(formatNumber(values.approachCold,1))+' K</text>');
    parts.push('<text x="'+(w/2)+'" y="'+(h-24)+'" text-anchor="middle" fill="#102536" font-size="14" font-weight="900">LMTD '+svgText(formatNumber(values.lmtd,1))+' K</text>');
    svg.innerHTML=parts.join("");
  }

  function calculateThermal(){
    var q=readNumber("rk-phe-power");
    var hotIn=readNumber("rk-phe-hot-in");
    var hotOut=readNumber("rk-phe-hot-out");
    var coldIn=readNumber("rk-phe-cold-in");
    var coldOut=readNumber("rk-phe-cold-out");
    var hotCv=readNumber("rk-phe-hot-fluid");
    var coldCv=readNumber("rk-phe-cold-fluid");
    var hotHxDp=readNumber("rk-phe-hot-hx-dp");
    var hotOtherDp=readNumber("rk-phe-hot-other-dp");
    var coldHxDp=readNumber("rk-phe-cold-hx-dp");
    var coldOtherDp=readNumber("rk-phe-cold-other-dp");
    var dHot=hotIn-hotOut;
    var dCold=coldOut-coldIn;
    var approachHot=hotIn-coldOut;
    var approachCold=hotOut-coldIn;
    var values=[q,hotIn,hotOut,coldIn,coldOut,hotCv,coldCv,hotHxDp,hotOtherDp,coldHxDp,coldOtherDp];
    var thermalChecks=[
      values.every(Number.isFinite),
      q>0,
      hotCv>0,
      coldCv>0,
      dHot>0,
      dCold>0,
      approachHot>0,
      approachCold>0,
      hotHxDp>=0,
      hotOtherDp>=0,
      coldHxDp>=0,
      coldOtherDp>=0
    ];
    var valid=thermalChecks.every(function(check){return check;});
    if(!valid){
      clearThermalOutputs();
      write("rk-phe-thermal-message","Dla trybu grzania temperatura A musi maleć, temperatura B rosnąć, a strona A musi być cieplejsza od strony B na obu końcach wymiennika. Uzupełnij również nieujemne opory.");
      renderTemperatureChart(null);
      return;
    }
    var lmtd;
    if(Math.abs(approachHot-approachCold)<0.000001){ lmtd=approachHot; }
    else { lmtd=(approachHot-approachCold)/Math.log(approachHot/approachCold); }
    if(!Number.isFinite(lmtd) || lmtd<=0){
      clearThermalOutputs();
      write("rk-phe-thermal-message","Nie można obliczyć dodatniego LMTD dla podanych temperatur. Sprawdź kierunki i cztery wartości graniczne.");
      renderTemperatureChart(null);
      return;
    }
    var hotFlow=q/(hotCv*dHot);
    var coldFlow=q/(coldCv*dCold);
    var ua=q*1000/lmtd;
    var hotDp=hotHxDp+hotOtherDp;
    var coldDp=coldHxDp+coldOtherDp;
    var hotHead=hotDp/9.80665;
    var coldHead=coldDp/9.80665;
    write("rk-phe-hot-flow",formatNumber(hotFlow,2)+" m³/h");
    write("rk-phe-cold-flow",formatNumber(coldFlow,2)+" m³/h");
    write("rk-phe-hot-approach",formatNumber(approachHot,1)+" K");
    write("rk-phe-cold-approach",formatNumber(approachCold,1)+" K");
    write("rk-phe-lmtd",formatNumber(lmtd,1)+" K");
    write("rk-phe-ua",formatNumber(ua,0)+" W/K");
    write("rk-phe-hot-head",formatNumber(hotDp,1)+" kPa · "+formatNumber(hotHead,2)+" m");
    write("rk-phe-cold-head",formatNumber(coldDp,1)+" kPa · "+formatNumber(coldHead,2)+" m");
    var minApproach=Math.min(approachHot,approachCold);
    var state="good";
    var message="Temperatury tworzą możliwy do obliczenia punkt przeciwprądowy. Przekaż producentowi moc, cztery temperatury, przepływy, media, wymagane UA i dopuszczalne opory — nie samą liczbę płyt.";
    if(minApproach<2){
      state="bad";
      message="Najmniejsze podejście jest mniejsze niż 2 K. Taki punkt może wymagać bardzo dużego UA i dokładnego sprawdzenia w programie producenta; nie zakładaj, że standardowy model go osiągnie.";
    }else if(minApproach<5){
      state="warn";
      message="Najmniejsze podejście jest poniżej 5 K. Punkt może być wykonalny, ale dobór będzie wrażliwy na powierzchnię, przepływy, zabrudzenie i dopuszczalny spadek ciśnienia.";
    }
    ["rk-phe-hot-approach","rk-phe-cold-approach","rk-phe-lmtd","rk-phe-ua"].forEach(function(id){ setResultState(id,state); });
    write("rk-phe-thermal-message",message);
    renderTemperatureChart({hotIn:hotIn,hotOut:hotOut,coldIn:coldIn,coldOut:coldOut,approachHot:approachHot,approachCold:approachCold,lmtd:lmtd});
  }

  Object.keys(thermalDefaults).forEach(function(id){
    var el=byId(id);
    if(el){ el.addEventListener("input",calculateThermal); el.addEventListener("change",calculateThermal); }
  });
  var thermalReset=byId("rk-phe-thermal-reset");
  if(thermalReset){
    thermalReset.addEventListener("click",function(){
      Object.keys(thermalDefaults).forEach(function(id){ if(byId(id)) byId(id).value=thermalDefaults[id]; });
      calculateThermal();
    });
  }

  /* Kalkulator kosztów dodatkowej separacji */
  var costDefaults = {
    "rk-phe-cost-heat":"12000",
    "rk-phe-source-type":"heatpump",
    "rk-phe-factor-direct":"3.80",
    "rk-phe-factor-separated":"3.60",
    "rk-phe-source-price":"1.00",
    "rk-phe-electricity-price":"1.00",
    "rk-phe-direct-pump":"35",
    "rk-phe-primary-pump":"35",
    "rk-phe-secondary-pump":"45",
    "rk-phe-pump-hours":"3500",
    "rk-phe-separation-capex":"3500",
    "rk-phe-service-cost":"150",
    "rk-phe-cost-years":"15",
    "rk-phe-price-growth":"2.0"
  };
  var factorPresets={
    heatpump:{direct:"3.80",separated:"3.60",name:"SCOP",helpDirect:"Sezonowy współczynnik całego wariantu bez separacji.",helpSeparated:"Wpisz SCOP dla wyższej temperatury źródła i rzeczywistego sterowania."},
    gas:{direct:"0.94",separated:"0.92",name:"Sprawność sezonowa",helpDirect:"Wpisz sprawność jako liczbę dziesiętną, np. 0,94.",helpSeparated:"Uwzględnij temperatury, powrót, taktowanie i energię pomocniczą zgodnie z przyjętą granicą bilansu."},
    electric:{direct:"0.99",separated:"0.98",name:"Sprawność sezonowa",helpDirect:"Wpisz sprawność przekazania energii do obiegu jako liczbę dziesiętną.",helpSeparated:"Nie odejmuj drugi raz energii pomp — jest liczona w osobnych polach."},
    solid:{direct:"0.82",separated:"0.80",name:"Sprawność sezonowa",helpDirect:"Wpisz sezonową sprawność źródła i całej przyjętej granicy bilansu.",helpSeparated:"Uwzględnij rzeczywisty sposób pracy kotła, bufora i temperatury powrotu."}
  };

  function updateFactorLabels(usePreset){
    var type=byId("rk-phe-source-type") ? byId("rk-phe-source-type").value : "heatpump";
    var preset=factorPresets[type] || factorPresets.heatpump;
    write("rk-phe-factor-direct-label",preset.name+" bez wymiennika");
    write("rk-phe-factor-separated-label",preset.name+" z wymiennikiem");
    write("rk-phe-factor-direct-help",preset.helpDirect);
    write("rk-phe-factor-separated-help",preset.helpSeparated);
    if(usePreset){
      byId("rk-phe-factor-direct").value=preset.direct;
      byId("rk-phe-factor-separated").value=preset.separated;
    }
  }

  function niceStep(span){
    if(!Number.isFinite(span) || span<=0) return 1;
    var raw=span/5;
    var power=Math.pow(10,Math.floor(Math.log10(raw)));
    var value=raw/power;
    var nice=value<=1 ? 1 : value<=2 ? 2 : value<=5 ? 5 : 10;
    return nice*power;
  }

  function renderCostChart(data){
    var svg=byId("rk-phe-cost-chart");
    if(!svg) return;
    if(!data || !data.length){
      svg.innerHTML='<title id="rk-phe-cost-chart-title">Skumulowana różnica kosztu układu z wymiennikiem</title><desc id="rk-phe-cost-chart-desc">Nie można narysować wykresu.</desc><rect width="900" height="410" rx="18" fill="#fff"/><text x="450" y="205" text-anchor="middle" fill="#c7443a" font-size="18" font-weight="800">Uzupełnij poprawne dane kosztowe</text>';
      return;
    }
    var w=900,h=410,left=90,right=34,top=34,bottom=60;
    var plotW=w-left-right,plotH=h-top-bottom;
    var vals=data.map(function(d){return d.diff;}); vals.push(0);
    var min=Math.min.apply(null,vals),max=Math.max.apply(null,vals);
    if(min===max){ min-=1000; max+=1000; }
    var step=niceStep(max-min);
    min=Math.floor(min/step)*step;
    max=Math.ceil(max/step)*step;
    if(min===max) max=min+step;
    function x(year){ return left+(year/data[data.length-1].year)*plotW; }
    function y(value){ return top+(max-value)/(max-min)*plotH; }
    var parts=[];
    parts.push('<title id="rk-phe-cost-chart-title">Skumulowana różnica kosztu układu z wymiennikiem</title>');
    parts.push('<desc id="rk-phe-cost-chart-desc">Wartość dodatnia oznacza wyższy koszt wariantu z wymiennikiem, a ujemna niższy koszt.</desc>');
    parts.push('<rect width="900" height="410" rx="18" fill="#fff"/>');
    for(var i=0;i<=5;i++){
      var val=min+(max-min)*i/5,yy=y(val);
      parts.push('<line x1="'+left+'" y1="'+yy+'" x2="'+(w-right)+'" y2="'+yy+'" stroke="#dce8ed" stroke-width="1"/>');
      parts.push('<text x="'+(left-12)+'" y="'+(yy+5)+'" text-anchor="end" fill="#607783" font-size="12">'+svgText(Math.round(val).toLocaleString("pl-PL"))+' zł</text>');
    }
    var zeroY=y(0);
    parts.push('<line x1="'+left+'" y1="'+zeroY+'" x2="'+(w-right)+'" y2="'+zeroY+'" stroke="#8195a0" stroke-width="2" stroke-dasharray="8 7" vector-effect="non-scaling-stroke"/>');
    var pts=data.map(function(d){return x(d.year)+","+y(d.diff);});
    var areaPts=[x(0)+","+zeroY].concat(pts).concat([x(data[data.length-1].year)+","+zeroY]);
    parts.push('<polygon points="'+areaPts.join(" ")+'" fill="rgba(255,106,61,.10)"/>');
    parts.push('<polyline points="'+pts.join(" ")+'" fill="none" stroke="#ff6a3d" stroke-width="5" stroke-linecap="round" stroke-linejoin="round" vector-effect="non-scaling-stroke"/>');
    data.forEach(function(d,index){
      if(index===0 || index===data.length-1 || d.year%5===0){
        parts.push('<circle cx="'+x(d.year)+'" cy="'+y(d.diff)+'" r="5" fill="#ff6a3d" stroke="#fff" stroke-width="2" vector-effect="non-scaling-stroke"/>');
        parts.push('<text x="'+x(d.year)+'" y="'+(h-26)+'" text-anchor="middle" fill="#607783" font-size="12">'+d.year+'</text>');
      }
    });
    parts.push('<text x="'+left+'" y="18" fill="#102536" font-size="13" font-weight="900">różnica skumulowana</text>');
    parts.push('<text x="'+(w-right)+'" y="'+(h-26)+'" text-anchor="end" fill="#607783" font-size="12">rok</text>');
    svg.innerHTML=parts.join("");
  }

  function renderCostTable(rows,years){
    var tbody=byId("rk-phe-cost-table");
    if(!tbody) return;
    var picks=[0,1,5,10,15,20,25].filter(function(y){return y<=years;});
    if(picks.indexOf(years)===-1) picks.push(years);
    picks.sort(function(a,b){return a-b;});
    tbody.innerHTML=picks.map(function(year){
      var row=rows[year];
      return '<tr><td data-label="Rok"><strong>'+year+'</strong></td><td data-label="Bez wymiennika">'+svgText(formatMoney(row.direct))+'</td><td data-label="Z wymiennikiem">'+svgText(formatMoney(row.separated))+'</td><td data-label="Różnica">'+svgText(formatSignedMoney(row.diff))+'</td></tr>';
    }).join("");
  }

  function clearCostOutputs(){
    ["rk-phe-source-direct-energy","rk-phe-source-separated-energy","rk-phe-extra-pump-energy","rk-phe-cost-direct-year","rk-phe-cost-separated-year","rk-phe-cost-difference-year","rk-phe-tco-direct","rk-phe-tco-separated","rk-phe-tco-difference","rk-phe-cost-driver"].forEach(function(id){write(id,"—");setResultState(id,"");});
    write("rk-phe-cost-message","Uzupełnij dodatnie współczynniki źródła, nieujemne koszty oraz prawidłowy okres analizy.");
    var tbody=byId("rk-phe-cost-table"); if(tbody) tbody.innerHTML="";
    renderCostChart(null);
  }

  function calculateCosts(){
    var heat=readNumber("rk-phe-cost-heat");
    var factorDirect=readNumber("rk-phe-factor-direct");
    var factorSeparated=readNumber("rk-phe-factor-separated");
    var sourcePrice=readNumber("rk-phe-source-price");
    var electricityPrice=readNumber("rk-phe-electricity-price");
    var directPump=readNumber("rk-phe-direct-pump");
    var primaryPump=readNumber("rk-phe-primary-pump");
    var secondaryPump=readNumber("rk-phe-secondary-pump");
    var hours=readNumber("rk-phe-pump-hours");
    var capex=readNumber("rk-phe-separation-capex");
    var service=readNumber("rk-phe-service-cost");
    var years=Math.round(readNumber("rk-phe-cost-years"));
    var growth=readNumber("rk-phe-price-growth")/100;
    var inputs=[heat,factorDirect,factorSeparated,sourcePrice,electricityPrice,directPump,primaryPump,secondaryPump,hours,capex,service,years,growth];
    var costChecks=[
      inputs.every(Number.isFinite),
      heat>=0,
      factorDirect>0,
      factorSeparated>0,
      sourcePrice>=0,
      electricityPrice>=0,
      directPump>=0,
      primaryPump>=0,
      secondaryPump>=0,
      hours>=0,
      hours<=8760,
      capex>=0,
      service>=0,
      years>=1,
      years<=50,
      growth>-1
    ];
    var valid=costChecks.every(function(check){return check;});
    if(!valid){ clearCostOutputs(); return; }
    var sourceDirectEnergy=heat/factorDirect;
    var sourceSeparatedEnergy=heat/factorSeparated;
    var directPumpEnergy=directPump*hours/1000;
    var separatedPumpEnergy=(primaryPump+secondaryPump)*hours/1000;
    var extraPumpEnergy=separatedPumpEnergy-directPumpEnergy;
    var sourceDirectCost1=sourceDirectEnergy*sourcePrice;
    var sourceSeparatedCost1=sourceSeparatedEnergy*sourcePrice;
    var pumpDirectCost1=directPumpEnergy*electricityPrice;
    var pumpSeparatedCost1=separatedPumpEnergy*electricityPrice;
    var directYear1=sourceDirectCost1+pumpDirectCost1;
    var separatedYear1=sourceSeparatedCost1+pumpSeparatedCost1+service;
    var diffYear1=separatedYear1-directYear1;
    var rows=[{year:0,direct:0,separated:capex,diff:capex}];
    var directTotal=0,separatedTotal=capex;
    for(var year=1;year<=years;year++){
      var priceFactor=Math.pow(1+growth,year-1);
      var directAnnual=(sourceDirectCost1+pumpDirectCost1)*priceFactor;
      var separatedAnnual=(sourceSeparatedCost1+pumpSeparatedCost1)*priceFactor+service;
      directTotal+=directAnnual;
      separatedTotal+=separatedAnnual;
      rows.push({year:year,direct:directTotal,separated:separatedTotal,diff:separatedTotal-directTotal});
    }
    var totalDiff=separatedTotal-directTotal;
    var sourceComponent=sourceSeparatedCost1-sourceDirectCost1;
    var pumpComponent=pumpSeparatedCost1-pumpDirectCost1;
    var components=[{name:"zmiana energii źródła",value:sourceComponent},{name:"różnica energii pomp",value:pumpComponent},{name:"dodatkowe utrzymanie",value:service}];
    components.sort(function(a,b){return Math.abs(b.value)-Math.abs(a.value);});
    write("rk-phe-source-direct-energy",formatNumber(sourceDirectEnergy,0)+" kWh");
    write("rk-phe-source-separated-energy",formatNumber(sourceSeparatedEnergy,0)+" kWh");
    write("rk-phe-extra-pump-energy",(extraPumpEnergy>=0?"+":"−")+formatNumber(Math.abs(extraPumpEnergy),0)+" kWh");
    write("rk-phe-cost-direct-year",formatMoney(directYear1));
    write("rk-phe-cost-separated-year",formatMoney(separatedYear1));
    write("rk-phe-cost-difference-year",formatSignedMoney(diffYear1));
    write("rk-phe-tco-direct",formatMoney(directTotal));
    write("rk-phe-tco-separated",formatMoney(separatedTotal));
    write("rk-phe-tco-difference",formatSignedMoney(totalDiff));
    write("rk-phe-cost-driver",components[0].name+": "+formatSignedMoney(components[0].value)+" / rok");
    var state=totalDiff>0.5?"warn":totalDiff<-0.5?"good":"";
    setResultState("rk-phe-cost-difference-year",diffYear1>0.5?"warn":diffYear1<-0.5?"good":"");
    setResultState("rk-phe-tco-difference",state);
    var message;
    if(totalDiff>0.5){
      message="Przy wpisanych założeniach układ z wymiennikiem kosztuje po "+years+" latach o "+formatMoney(totalDiff)+" więcej. To nie dowodzi, że separacja jest zbędna — pokazuje cenę funkcji, jeśli jest technicznie wymagana.";
    }else if(totalDiff<-0.5){
      message="Przy wpisanych założeniach układ z wymiennikiem kosztuje po "+years+" latach o "+formatMoney(Math.abs(totalDiff))+" mniej. Sprawdź, z czego wynika poprawa współczynnika źródła lub poboru pomp; sam wymiennik nie tworzy oszczędności energii.";
    }else{
      message="Przy wpisanych założeniach różnica kosztu po "+years+" latach jest pomijalna. Warto sprawdzić kilka scenariuszy sprawności, godzin pracy i cen energii.";
    }
    write("rk-phe-cost-message",message);
    renderCostChart(rows.map(function(r){return {year:r.year,diff:r.diff};}));
    renderCostTable(rows,years);
    write("rk-phe-cost-table-summary","Koszt skumulowany przez "+years+" lat; wariant z wymiennikiem obejmuje dodatkowy nakład "+formatMoney(capex)+" w roku 0.");
  }

  Object.keys(costDefaults).forEach(function(id){
    var el=byId(id);
    if(!el) return;
    if(id==="rk-phe-source-type"){
      el.addEventListener("change",function(){updateFactorLabels(true);calculateCosts();});
    }else{
      el.addEventListener("input",calculateCosts);
      el.addEventListener("change",calculateCosts);
    }
  });
  var costReset=byId("rk-phe-cost-reset");
  if(costReset){
    costReset.addEventListener("click",function(){
      Object.keys(costDefaults).forEach(function(id){if(byId(id))byId(id).value=costDefaults[id];});
      updateFactorLabels(false);
      calculateCosts();
    });
  }

  renderFlow("separated");
  calculateThermal();
  updateFactorLabels(false);
  calculateCosts();
})();
</script>

<script type="application/ld+json">
{
  "@context":"https://schema.org",
  "@graph":[
    {
      "@type":"WebSite",
      "@id":"https://projekt-ogrzewania.pl/#website",
      "url":"https://projekt-ogrzewania.pl/",
      "name":"Projekt Ogrzewania",
      "inLanguage":"pl-PL",
      "publisher":{"@id":"https://projekt-ogrzewania.pl/#organization"},
      "potentialAction":{
        "@type":"SearchAction",
        "target":{"@type":"EntryPoint","urlTemplate":"https://projekt-ogrzewania.pl/?s={search_term_string}"},
        "query-input":"required name=search_term_string"
      }
    },
    {
      "@type":"Organization",
      "@id":"https://projekt-ogrzewania.pl/#organization",
      "name":"Projekt Ogrzewania",
      "url":"https://projekt-ogrzewania.pl/",
      "logo":{"@id":"https://projekt-ogrzewania.pl/#logo"},
      "founder":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "sameAs":[
        "https://www.facebook.com/projektogrzewaniapl",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type":"Organization",
      "@id":"https://remont.biz.pl/#organization",
      "name":"Remont.biz.pl",
      "url":"https://remont.biz.pl/",
      "founder":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type":"Organization",
      "@id":"https://sobir.pl/#organization",
      "name":"Sobir.pl",
      "url":"https://sobir.pl/",
      "founder":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type":"ImageObject",
      "@id":"https://projekt-ogrzewania.pl/#logo",
      "url":"https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg",
      "contentUrl":"https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg",
      "width":1024,
      "height":1024,
      "caption":"Projekt Ogrzewania"
    },
    {
      "@type":"ImageObject",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#primaryimage",
      "url":"https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym.webp",
      "contentUrl":"https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym.webp",
      "width":900,
      "height":900,
      "encodingFormat":"image/webp",
      "caption":"Wymiennik płytowy w ogrzewaniu podłogowym — zasada działania, dobór i koszty"
    },
    {
      "@type":"Person",
      "@id":"https://projekt-ogrzewania.pl/#robert-kucharski",
      "name":"Robert Kucharski",
      "url":"https://projekt-ogrzewania.pl/author/admin3399/",
      "image":"https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle":"Projektant instalacji sanitarnych i specjalista HVAC",
      "worksFor":{"@id":"https://projekt-ogrzewania.pl/#organization"},
      "affiliation":[
        {"@id":"https://remont.biz.pl/#organization"},
        {"@id":"https://sobir.pl/#organization"}
      ],
      "knowsAbout":[
        "ogrzewanie podłogowe",
        "wymienniki płytowe",
        "hydraulika instalacji",
        "pompy obiegowe",
        "obliczenia OZC",
        "średnia logarytmiczna różnica temperatur LMTD",
        "dobór źródeł ciepła",
        "automatyka ogrzewania",
        "pompy ciepła",
        "kotły na paliwo stałe"
      ],
      "sameAs":[
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type":"BreadcrumbList",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#breadcrumb",
      "itemListElement":[
        {"@type":"ListItem","position":1,"name":"Strona główna","item":"https://projekt-ogrzewania.pl/"},
        {"@type":"ListItem","position":2,"name":"Blog","item":"https://projekt-ogrzewania.pl/blog/"},
        {"@type":"ListItem","position":3,"name":"Wymiennik płytowy w ogrzewaniu podłogowym","item":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/"}
      ]
    },
    {
      "@type":"WebPage",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#webpage",
      "url":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/",
      "name":"Wymiennik płytowy w ogrzewaniu podłogowym – jak działa i jak go dobrać?",
      "description":"Jak działa wymiennik płytowy do podłogówki? Policz przepływy, LMTD, opory i koszty pracy pomp. Sprawdź, kiedy rzeczywiście potrzebna jest separacja obiegów.",
      "inLanguage":"pl-PL",
      "isPartOf":{"@id":"https://projekt-ogrzewania.pl/#website"},
      "breadcrumb":{"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#breadcrumb"},
      "primaryImageOfPage":{"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#primaryimage"},
      "datePublished":"2026-04-23T07:09:15+00:00",
      "dateModified":"2026-09-13T00:00:00+00:00",
      "author":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "reviewedBy":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "mainEntity":{"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#article"},
      "speakable":{"@type":"SpeakableSpecification","cssSelector":["#rk-phe-direct-answer","#rk-phe-conclusion-answer"]}
    },
    {
      "@type":"TechArticle",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#article",
      "headline":"Wymiennik płytowy w ogrzewaniu podłogowym – jak działa i jak go dobrać?",
      "alternativeHeadline":"Wymiennik płytowy do podłogówki — zasada działania, LMTD, przepływy, opory i koszt separacji",
      "description":"Techniczne wyjaśnienie działania i doboru wymiennika płytowego wraz z grafiką dwóch obiegów, kalkulatorem LMTD i UA, wykresem temperatur oraz kalkulatorem kosztów separacji.",
      "image":{"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#primaryimage"},
      "mainEntityOfPage":{"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#webpage"},
      "author":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher":{"@id":"https://projekt-ogrzewania.pl/#organization"},
      "datePublished":"2026-04-23T07:09:15+00:00",
      "dateModified":"2026-09-13T00:00:00+00:00",
      "inLanguage":"pl-PL",
      "articleSection":[
        "Wymienniki płytowe",
        "Ogrzewanie podłogowe",
        "Instalacje hydrauliczne",
        "Pompy obiegowe",
        "Modernizacja ogrzewania",
        "Kalkulatory"
      ],
      "keywords":[
        "wymiennik płytowy w ogrzewaniu podłogowym",
        "jak działa wymiennik płytowy do podłogówki",
        "jak dobrać wymiennik płytowy do ogrzewania podłogowego",
        "wymiennik płytowy do podłogówki jaka moc",
        "jaki przepływ przez wymiennik płytowy",
        "spadek ciśnienia na wymienniku płytowym",
        "LMTD wymiennika płytowego kalkulator",
        "czy wymiennik płytowy obniża temperaturę",
        "wymiennik płytowy a zawór mieszający",
        "wymiennik płytowy a sprzęgło hydrauliczne",
        "wymiennik płytowy z pompą ciepła",
        "wymiennik płytowy do kotła na paliwo stałe",
        "koszt eksploatacji wymiennika płytowego"
      ],
      "about":[
        {"@type":"Thing","name":"Wymiennik płytowy"},
        {"@type":"Thing","name":"Ogrzewanie podłogowe"},
        {"@type":"Thing","name":"Separacja hydrauliczna"},
        {"@type":"Thing","name":"Pompa obiegowa"},
        {"@type":"Thing","name":"Przeciwprąd"}
      ],
      "mentions":[
        {"@type":"DefinedTerm","name":"LMTD","description":"Średnia logarytmiczna różnica temperatur w wymienniku"},
        {"@type":"DefinedTerm","name":"UA","description":"Iloczyn całkowitego współczynnika przenikania ciepła i powierzchni wymiany"},
        {"@type":"DefinedTerm","name":"Podejście temperaturowe","description":"Różnica temperatur pomiędzy mediami na określonym końcu wymiennika"},
        {"@type":"DefinedTerm","name":"Strona pierwotna","description":"Obieg źródła ciepła po jednej stronie wymiennika"},
        {"@type":"DefinedTerm","name":"Strona wtórna","description":"Oddzielony obieg ogrzewania podłogowego"}
      ],
      "hasPart":[
        {"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#thermal-calculator"},
        {"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#cost-calculator"},
        {"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#interactive-graphic"},
        {"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#howto"},
        {"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#selection-inputs"},
        {"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#faq-schema"}
      ],
      "citation":[
        "https://web.mit.edu/16.unified/www/FALL/thermodynamics/notes/node131.html",
        "https://single-market-economy.ec.europa.eu/single-market/goods/european-standards/harmonised-standards/ecodesign-and-energy-labelling-circulators_en",
        "https://eur-lex.europa.eu/legal-content/PL/TXT/?uri=CELEX:32009R0641",
        "https://energy.ec.europa.eu/topics/energy-efficiency/heat-pumps_en"
      ]
    },
    {
      "@type":"WebApplication",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#thermal-calculator",
      "name":"Kalkulator wymiennika płytowego: przepływy, LMTD, UA i opory",
      "url":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#rk-phe-thermal-calculator",
      "description":"Oblicza przepływy strony pierwotnej i wtórnej, różnice końcowe, LMTD, wymagane UA, sumy oporów oraz orientacyjne wysokości podnoszenia obu pomp.",
      "applicationCategory":"UtilitiesApplication",
      "applicationSubCategory":"Plate heat exchanger thermal and hydraulic calculator",
      "operatingSystem":"Any",
      "browserRequirements":"JavaScript",
      "isAccessibleForFree":true,
      "inLanguage":"pl-PL",
      "creator":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "offers":{"@type":"Offer","price":"0","priceCurrency":"PLN"},
      "featureList":[
        "projektowa moc wymiennika",
        "cztery temperatury graniczne",
        "woda i orientacyjne mieszaniny glikolu",
        "przepływ strony A i B",
        "podejście temperaturowe na obu końcach",
        "średnia logarytmiczna różnica temperatur LMTD",
        "wymagane UA",
        "opory wymiennika i pozostałej instalacji",
        "wysokość podnoszenia każdej pompy",
        "walidacja niemożliwych temperatur",
        "interaktywny wykres profili temperatur"
      ]
    },
    {
      "@type":"WebApplication",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#cost-calculator",
      "name":"Kalkulator dodatkowych kosztów wymiennika i separacji obiegów",
      "url":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#rk-phe-cost-calculator",
      "description":"Porównuje energię źródła, energię pomp, koszt pierwszego roku i koszt skumulowany instalacji bez wymiennika oraz z kompletnym zespołem separacji.",
      "applicationCategory":"FinanceApplication",
      "applicationSubCategory":"Heating system operating cost calculator",
      "operatingSystem":"Any",
      "browserRequirements":"JavaScript",
      "isAccessibleForFree":true,
      "inLanguage":"pl-PL",
      "creator":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "offers":{"@type":"Offer","price":"0","priceCurrency":"PLN"},
      "featureList":[
        "wspólne użyteczne ciepło obu wariantów",
        "SCOP lub sprawność sezonowa źródła",
        "cena energii źródła i pomp",
        "średnia moc pomp obiegowych",
        "czas pracy pomp",
        "dodatkowy nakład inwestycyjny",
        "dodatkowe utrzymanie",
        "scenariusz wzrostu cen energii",
        "koszt skumulowany od 5 do 25 lat",
        "wykres i tabela różnicy kosztów",
        "identyfikacja największej składowej różnicy"
      ]
    },
    {
      "@type":"LearningResource",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#interactive-graphic",
      "name":"Interaktywna grafika działania wymiennika płytowego",
      "url":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#rk-phe-graphic-tool",
      "description":"Porównuje wspólny obieg, dwa obiegi oddzielone wymiennikiem oraz kierunki i temperatury w przepływie przeciwprądowym.",
      "learningResourceType":"Interactive graphic",
      "educationalUse":"Explanation and comparison",
      "interactivityType":"active",
      "isAccessibleForFree":true,
      "inLanguage":"pl-PL",
      "author":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "about":{"@type":"Thing","name":"Plate heat exchanger"}
    },
    {
      "@type":"HowTo",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#howto",
      "name":"Jak sprawdzić wymiennik płytowy i oba obiegi podczas uruchomienia",
      "description":"Osiem kroków od sprawdzenia kierunków i napełnienia obu obiegów po pomiary temperatur, przepływów, pomp, regulacji i zapis stanu odniesienia.",
      "totalTime":"PT90M",
      "supply":[
        {"@type":"HowToSupply","name":"Dokumentacja wymiennika i źródła ciepła"},
        {"@type":"HowToSupply","name":"Projekt hydrauliczny obu obiegów"},
        {"@type":"HowToSupply","name":"Właściwe media robocze"},
        {"@type":"HowToSupply","name":"Protokół uruchomienia"}
      ],
      "tool":[
        {"@type":"HowToTool","name":"Pomiar temperatur na czterech króćcach"},
        {"@type":"HowToTool","name":"Pomiar lub odczyt przepływów"},
        {"@type":"HowToTool","name":"Pomiar ciśnienia i danych pracy pomp"},
        {"@type":"HowToTool","name":"Kalkulator cieplno-hydrauliczny w artykule"}
      ],
      "step":[
        {"@type":"HowToStep","position":1,"name":"Sprawdź kierunki przepływu","text":"Potwierdź króćce, przeciwprąd i kierunek pracy obu pomp według dokumentacji urządzenia."},
        {"@type":"HowToStep","position":2,"name":"Napełnij obiegi oddzielnie","text":"Ustal właściwe medium, ciśnienie napełnienia, odpowietrzenie i działanie zabezpieczeń każdej strony."},
        {"@type":"HowToStep","position":3,"name":"Uruchom przepływy","text":"Zweryfikuj przepływ strony A oraz sumę przepływów strony B przy otwartych obiegach przewidzianych do testu."},
        {"@type":"HowToStep","position":4,"name":"Zmierz cztery temperatury","text":"Zapisz wejście i wyjście strony gorącej oraz wejście i wyjście strony wtórnej po ustabilizowaniu pracy."},
        {"@type":"HowToStep","position":5,"name":"Porównaj bilans mocy","text":"Oblicz moc z przepływu i różnicy temperatur po obu stronach i wyjaśnij większe rozbieżności."},
        {"@type":"HowToStep","position":6,"name":"Sprawdź opory i pompy","text":"Porównaj punkt Q–H z nastawą pomp, zaworami i danymi wymiennika dla aktualnego medium."},
        {"@type":"HowToStep","position":7,"name":"Przetestuj regulację","text":"Zmień zapotrzebowanie i sprawdź reakcję źródła, mieszania, czujników oraz ograniczenia temperatury."},
        {"@type":"HowToStep","position":8,"name":"Zapisz stan odniesienia","text":"Zachowaj temperatury, przepływy, ciśnienia, nastawy i pobór pomp do kolejnych przeglądów."}
      ]
    },
    {
      "@type":"ItemList",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#selection-inputs",
      "name":"Dane potrzebne do doboru wymiennika płytowego",
      "numberOfItems":8,
      "itemListOrder":"https://schema.org/ItemListOrderAscending",
      "itemListElement":[
        {"@type":"ListItem","position":1,"name":"Projektowa moc"},
        {"@type":"ListItem","position":2,"name":"Temperatury strony A"},
        {"@type":"ListItem","position":3,"name":"Temperatury strony B"},
        {"@type":"ListItem","position":4,"name":"Rodzaj obu mediów"},
        {"@type":"ListItem","position":5,"name":"Wymagane przepływy"},
        {"@type":"ListItem","position":6,"name":"Dopuszczalne straty ciśnienia"},
        {"@type":"ListItem","position":7,"name":"Warunki zabrudzenia i jakości medium"},
        {"@type":"ListItem","position":8,"name":"Ograniczenia konkretnego urządzenia"}
      ]
    },
    {
      "@type":"FAQPage",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#faq-schema",
      "url":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#rk-phe-faq",
      "inLanguage":"pl-PL",
      "mainEntity":[
        {"@type":"Question","name":"Czy wymiennik płytowy obniża temperaturę wody?","acceptedAnswer":{"@type":"Answer","text":"Wymiennik nie reguluje temperatury do zadanej wartości. Temperatury wyjściowe wynikają z temperatur wejściowych, przepływów, właściwości mediów i UA. Stabilną temperaturę podłogówki zapewnia odpowiednio zaprojektowana regulacja oraz zabezpieczenie."}},
        {"@type":"Question","name":"Czy zawór mieszający może zastąpić wymiennik?","acceptedAnswer":{"@type":"Answer","text":"Tylko w funkcji regulowania temperatury, jeśli nie jest potrzebne fizyczne oddzielenie mediów i ciśnień. Zawór miesza przepływy we wspólnym obiegu, a wymiennik tworzy dwa osobne obiegi."}},
        {"@type":"Question","name":"Jak dobrać moc wymiennika płytowego do podłogówki?","acceptedAnswer":{"@type":"Answer","text":"Trzeba znać projektową moc, cztery temperatury, oba media, wymagane przepływy i dopuszczalne straty ciśnienia. Moc z nazwy handlowej lub sama liczba płyt nie wystarczają do doboru konkretnego modelu."}},
        {"@type":"Question","name":"Jaki przepływ powinien być przez wymiennik płytowy?","acceptedAnswer":{"@type":"Answer","text":"Przepływ każdej strony wynika z przekazywanej mocy, różnicy temperatur i objętościowej pojemności cieplnej medium. Strony mogą mieć różne przepływy, mimo że w stanie ustalonym przekazują zbliżoną moc."}},
        {"@type":"Question","name":"Dlaczego przy wymienniku najczęściej potrzebne są dwie pompy?","acceptedAnswer":{"@type":"Answer","text":"Płyty fizycznie rozdzielają media, dlatego pompa strony pierwotnej nie wywołuje przepływu po stronie wtórnej. Każda pompa musi pokonać opory własnego, zamkniętego obiegu."}},
        {"@type":"Question","name":"Jaka różnica temperatur na końcu wymiennika jest prawidłowa?","acceptedAnswer":{"@type":"Answer","text":"Nie ma jednej wartości dla wszystkich instalacji. Mniejsze podejście temperaturowe wymaga zwykle większego UA, a jego wykonalność trzeba sprawdzić dla konkretnego modelu, przepływów, mediów i dopuszczalnego spadku ciśnienia."}},
        {"@type":"Question","name":"Czy wymiennik płytowy jest potrzebny przy pompie ciepła?","acceptedAnswer":{"@type":"Answer","text":"Nie automatycznie. Może być uzasadniony koniecznością oddzielenia glikolu, starej instalacji, innego ciśnienia lub wymaganiem producenta. W nowej wspólnej instalacji wodnej może niepotrzebnie zwiększać temperaturę źródła, opory i zużycie pomp."}},
        {"@type":"Question","name":"Czy kocioł na paliwo stałe zawsze wymaga wymiennika?","acceptedAnswer":{"@type":"Answer","text":"Nie można odpowiedzieć wyłącznie na podstawie rodzaju paliwa. Trzeba sprawdzić konstrukcję kotłowni, układ otwarty lub zamknięty, wymagania producenta, zabezpieczenia, ochronę powrotu, bufor i sposób regulacji podłogówki."}},
        {"@type":"Question","name":"Czy wymiennik lutowany wymaga regularnego czyszczenia?","acceptedAnswer":{"@type":"Answer","text":"Częstotliwość zależy od jakości medium, uzupełniania wody, filtracji, temperatury i zaleceń producenta. Czyszczenie powinno wynikać z pomiarów lub objawów, a użyta metoda musi być zgodna z materiałem płyt i lutu."}},
        {"@type":"Question","name":"Czy kalkulatory dobierają gotowy wymiennik i pompy?","acceptedAnswer":{"@type":"Answer","text":"Nie. Kalkulator cieplno-hydrauliczny wyznacza punkt pracy, a kalkulator kosztów porównuje wpisane założenia. Konkretny wymiennik trzeba sprawdzić w danych producenta, a pompy dobrać z charakterystyk Q–H całych obiegów."}}
      ]
    }
  ]
}
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/">Wymiennik płytowy w ogrzewaniu podłogowym – jak działa i jak go dobrać?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego? &#8211; Kalkulator.</title>
		<link>https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Mon, 10 Feb 2025 12:26:28 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Nowoczesne technologie grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Systemy grzewcze]]></category>
		<category><![CDATA[dobór rury do rozdzielacza]]></category>
		<category><![CDATA[dobór rury zasilającej]]></category>
		<category><![CDATA[efektywność cieplna]]></category>
		<category><![CDATA[instalacja podłogowa]]></category>
		<category><![CDATA[kalkulator średnicy rury]]></category>
		<category><![CDATA[montaż ogrzewania]]></category>
		<category><![CDATA[opory hydrauliczne]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<category><![CDATA[przepływ wody w ogrzewaniu]]></category>
		<category><![CDATA[średnica rury ogrzewanie podłogowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2156</guid>

					<description><![CDATA[<p>Dobór odpowiedniej średnicy rury zasilającej rozdzielacz w układzie ogrzewania podłogowego ma kluczowe znaczenie dla efektywności całego systemu. Niewłaściwie dobrany przekrój może prowadzić do nierównomiernego rozprowadzania ciepła, zwiększonych oporów hydraulicznych i nadmiernego zużycia energii. W naszym artykule znajdziesz wskazówki, jak dobrać optymalną średnicę, a także kalkulator ułatwiający obliczenia. Dowiedz się, jakie parametry wpływają na wybór rury i jak uniknąć typowych błędów montażowych.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">Jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego? &#8211; Kalkulator.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-pipe-guide {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e8fbff;
    --rk-orange: #ff6a3d;
    --rk-orange-soft: #fff1eb;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #e6ad2f;
    --rk-yellow-soft: #fff8df;
    --rk-red: #d94b3d;
    --rk-red-soft: #fff0ee;
    --rk-purple: #695ac9;
    --rk-purple-soft: #f1efff;
    --rk-ink: #1f2c37;
    --rk-text: #475967;
    --rk-muted: #6b7e8a;
    --rk-line: #d5e4eb;
    --rk-soft: #f4f9fb;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 72px;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.75;
  }

  #rk-pipe-guide,
  #rk-pipe-guide * {
    box-sizing: border-box;
  }

  #rk-pipe-guide img,
  #rk-pipe-guide svg,
  #rk-pipe-guide canvas {
    max-width: 100%;
  }

  #rk-pipe-guide [hidden] {
    display: none !important;
  }

  #rk-pipe-guide button,
  #rk-pipe-guide input,
  #rk-pipe-guide select,
  #rk-pipe-guide summary,
  #rk-pipe-guide a {
    font: inherit;
  }

  #rk-pipe-guide a {
    color: var(--rk-blue);
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }

  #rk-pipe-guide a:hover {
    color: var(--rk-orange);
  }

  #rk-pipe-guide .rk-pipe-shell {
    overflow: hidden;
    background: var(--rk-white);
    border: 1px solid var(--rk-line);
    border-radius: 28px;
    box-shadow: 0 24px 70px rgba(16, 37, 54, 0.13);
  }

  #rk-pipe-guide .rk-pipe-progress-track {
    position: sticky;
    top: 0;
    z-index: 50;
    height: 5px;
    background: rgba(255, 255, 255, 0.22);
  }

  #rk-pipe-guide .rk-pipe-progress {
    width: 0;
    height: 100%;
    background: linear-gradient(90deg, var(--rk-cyan), var(--rk-orange));
    transition: width 0.12s linear;
  }

  #rk-pipe-guide .rk-pipe-hero {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 85% 18%, rgba(37, 199, 216, 0.28), transparent 27%),
      radial-gradient(circle at 12% 90%, rgba(255, 106, 61, 0.22), transparent 31%),
      linear-gradient(135deg, #0e2433 0%, #14384d 54%, #0d5365 100%);
  }

  #rk-pipe-guide .rk-pipe-hero::before,
  #rk-pipe-guide .rk-pipe-hero::after {
    position: absolute;
    z-index: -1;
    content: "";
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 50%;
  }

  #rk-pipe-guide .rk-pipe-hero::before {
    width: 470px;
    height: 470px;
    right: -190px;
    top: -260px;
  }

  #rk-pipe-guide .rk-pipe-hero::after {
    width: 290px;
    height: 290px;
    left: -160px;
    bottom: -170px;
  }

  #rk-pipe-guide .rk-pipe-hero-inner {
    padding: clamp(48px, 8vw, 92px) clamp(24px, 7vw, 82px);
  }

  #rk-pipe-guide .rk-pipe-eyebrow,
  #rk-pipe-guide .rk-pipe-kicker {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    color: var(--rk-blue);
    font-size: 0.78rem;
    font-weight: 850;
    letter-spacing: 0.1em;
    line-height: 1.4;
    text-transform: uppercase;
  }

  #rk-pipe-guide .rk-pipe-eyebrow {
    color: #83f3ff;
  }

  #rk-pipe-guide .rk-pipe-eyebrow b {
    width: 9px;
    height: 9px;
    flex: 0 0 9px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 6px rgba(255, 106, 61, 0.17);
  }

  #rk-pipe-guide .rk-pipe-hero-title {
    max-width: 970px;
    margin: 18px 0 20px;
    color: var(--rk-white);
    font-size: clamp(2.15rem, 5.2vw, 4.25rem);
    font-weight: 900;
    letter-spacing: -0.05em;
    line-height: 1.02;
  }

  #rk-pipe-guide .rk-pipe-hero-lead {
    max-width: 880px;
    margin: 0;
    color: #d9edf3;
    font-size: clamp(1.02rem, 2.2vw, 1.28rem);
    line-height: 1.66;
  }

  #rk-pipe-guide .rk-pipe-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 24px;
    margin-top: 29px;
    color: #b9d5de;
    font-size: 0.84rem;
    font-weight: 720;
  }

  #rk-pipe-guide .rk-pipe-meta span {
    display: inline-flex;
    align-items: center;
    gap: 8px;
  }

  #rk-pipe-guide .rk-pipe-meta i {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--rk-cyan);
  }

  #rk-pipe-guide .rk-pipe-nav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 9px;
    padding: 18px clamp(18px, 5vw, 60px);
    border-bottom: 1px solid var(--rk-line);
    background: rgba(255, 255, 255, 0.96);
  }

  #rk-pipe-guide .rk-pipe-nav strong {
    margin-right: 6px;
    color: var(--rk-dark);
    font-size: 0.82rem;
  }

  #rk-pipe-guide .rk-pipe-nav a {
    display: inline-flex;
    padding: 7px 12px;
    color: var(--rk-text);
    border: 1px solid var(--rk-line);
    border-radius: 999px;
    background: var(--rk-white);
    font-size: 0.76rem;
    font-weight: 780;
    line-height: 1.3;
    text-decoration: none;
  }

  #rk-pipe-guide .rk-pipe-nav a:hover,
  #rk-pipe-guide .rk-pipe-nav a:focus-visible {
    color: var(--rk-white);
    border-color: var(--rk-blue);
    background: var(--rk-blue);
  }

  #rk-pipe-guide .rk-pipe-section {
    padding: clamp(42px, 7vw, 78px) clamp(24px, 7vw, 82px);
    scroll-margin-top: 22px;
  }

  #rk-pipe-guide .rk-pipe-section + .rk-pipe-section {
    border-top: 1px solid var(--rk-line);
  }

  #rk-pipe-guide .rk-pipe-section:nth-of-type(even) {
    background: var(--rk-soft);
  }

  #rk-pipe-guide h2,
  #rk-pipe-guide h3,
  #rk-pipe-guide p,
  #rk-pipe-guide ul,
  #rk-pipe-guide ol,
  #rk-pipe-guide blockquote {
    max-width: none;
  }

  #rk-pipe-guide h2 {
    margin: 10px 0 22px;
    color: var(--rk-dark);
    font-size: clamp(1.65rem, 3.2vw, 2.55rem);
    font-weight: 900;
    letter-spacing: -0.035em;
    line-height: 1.15;
  }

  #rk-pipe-guide h3 {
    margin: 0 0 10px;
    color: var(--rk-dark);
    font-size: 1.12rem;
    font-weight: 850;
    line-height: 1.32;
  }

  #rk-pipe-guide p {
    color: var(--rk-text);
  }

  #rk-pipe-guide .rk-pipe-intro {
    max-width: 930px;
    margin: 0 0 28px;
    color: var(--rk-text);
    font-size: 1.08rem;
  }

  #rk-pipe-guide .rk-pipe-answer {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(250px, 0.65fr);
    gap: 18px;
    margin: 28px 0;
  }

  #rk-pipe-guide .rk-pipe-answer-main,
  #rk-pipe-guide .rk-pipe-answer-side,
  #rk-pipe-guide .rk-pipe-card,
  #rk-pipe-guide .rk-pipe-note,
  #rk-pipe-guide .rk-pipe-source-box {
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-white);
    box-shadow: 0 12px 32px rgba(16, 37, 54, 0.06);
  }

  #rk-pipe-guide .rk-pipe-answer-main,
  #rk-pipe-guide .rk-pipe-answer-side {
    padding: 25px;
  }

  #rk-pipe-guide .rk-pipe-answer-main {
    border-left: 6px solid var(--rk-cyan);
  }

  #rk-pipe-guide .rk-pipe-answer-side {
    background: var(--rk-yellow-soft);
    border-color: #ecd98c;
  }

  #rk-pipe-guide .rk-pipe-answer p,
  #rk-pipe-guide .rk-pipe-card p,
  #rk-pipe-guide .rk-pipe-note p,
  #rk-pipe-guide .rk-pipe-source-box p {
    margin: 0;
  }

  #rk-pipe-guide .rk-pipe-formula {
    display: grid;
    gap: 6px;
    margin: 28px 0;
    padding: 22px 24px;
    overflow-wrap: anywhere;
    color: var(--rk-white);
    border-radius: 18px;
    background: linear-gradient(135deg, var(--rk-navy), #0d596a);
    box-shadow: 0 15px 34px rgba(16, 37, 54, 0.16);
  }

  #rk-pipe-guide .rk-pipe-formula strong {
    color: #8cf5ff;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: clamp(1rem, 2.3vw, 1.28rem);
    line-height: 1.5;
  }

  #rk-pipe-guide .rk-pipe-formula span {
    color: #d5ebf1;
    font-size: 0.86rem;
  }

  #rk-pipe-guide .rk-pipe-grid-2,
  #rk-pipe-guide .rk-pipe-grid-3,
  #rk-pipe-guide .rk-pipe-grid-4 {
    display: grid;
    gap: 18px;
    margin: 27px 0;
  }

  #rk-pipe-guide .rk-pipe-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-pipe-guide .rk-pipe-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-pipe-guide .rk-pipe-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

  #rk-pipe-guide .rk-pipe-card {
    position: relative;
    padding: 23px;
  }

  #rk-pipe-guide .rk-pipe-card::before {
    position: absolute;
    top: 0;
    left: 22px;
    width: 46px;
    height: 4px;
    content: "";
    border-radius: 0 0 6px 6px;
    background: var(--rk-cyan);
  }

  #rk-pipe-guide .rk-pipe-card-number {
    display: block;
    margin-bottom: 10px;
    color: var(--rk-blue);
    font-size: 0.76rem;
    font-weight: 880;
    letter-spacing: 0.06em;
    text-transform: uppercase;
  }

  #rk-pipe-guide .rk-pipe-note {
    margin: 27px 0;
    padding: 22px 24px 22px 62px;
    position: relative;
  }

  #rk-pipe-guide .rk-pipe-note::before {
    position: absolute;
    top: 22px;
    left: 22px;
    display: grid;
    width: 27px;
    height: 27px;
    place-items: center;
    content: "i";
    color: var(--rk-white);
    border-radius: 50%;
    background: var(--rk-blue);
    font-size: 0.84rem;
    font-weight: 900;
  }

  #rk-pipe-guide .rk-pipe-note.is-warning {
    border-color: #efd98d;
    background: var(--rk-yellow-soft);
  }

  #rk-pipe-guide .rk-pipe-note.is-warning::before { background: var(--rk-yellow); color: var(--rk-dark); }
  #rk-pipe-guide .rk-pipe-note.is-danger { border-color: #f0c1bc; background: var(--rk-red-soft); }
  #rk-pipe-guide .rk-pipe-note.is-danger::before { content: "!"; background: var(--rk-red); }
  #rk-pipe-guide .rk-pipe-note.is-good { border-color: #b7dfd3; background: var(--rk-green-soft); }
  #rk-pipe-guide .rk-pipe-note.is-good::before { content: "✓"; background: var(--rk-green); }

  #rk-pipe-guide .rk-pipe-tool {
    margin-top: 30px;
    overflow: hidden;
    color: var(--rk-white);
    border: 1px solid rgba(37, 199, 216, 0.32);
    border-radius: 24px;
    background: linear-gradient(145deg, #0e2636, #123f53 62%, #0d5565);
    box-shadow: 0 26px 60px rgba(16, 37, 54, 0.22);
  }

  #rk-pipe-guide .rk-pipe-tool-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 24px;
    padding: 30px 32px 24px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
  }

  #rk-pipe-guide .rk-pipe-tool-head h3 {
    margin-bottom: 7px;
    color: var(--rk-white);
    font-size: clamp(1.35rem, 2.8vw, 1.9rem);
  }

  #rk-pipe-guide .rk-pipe-tool-head p {
    max-width: 720px;
    margin: 0;
    color: #cde4eb;
  }

  #rk-pipe-guide .rk-pipe-tool-badge {
    flex: 0 0 auto;
    padding: 8px 12px;
    color: #8af4ff;
    border: 1px solid rgba(138, 244, 255, 0.35);
    border-radius: 999px;
    background: rgba(37, 199, 216, 0.1);
    font-size: 0.72rem;
    font-weight: 850;
    letter-spacing: 0.07em;
    text-transform: uppercase;
  }

  #rk-pipe-guide .rk-pipe-tool-body {
    display: grid;
    grid-template-columns: minmax(285px, 0.78fr) minmax(0, 1.22fr);
    gap: 22px;
    padding: 26px;
  }

  #rk-pipe-guide .rk-pipe-panel {
    min-width: 0;
    padding: 23px;
    border: 1px solid rgba(255, 255, 255, 0.13);
    border-radius: 19px;
    background: rgba(255, 255, 255, 0.075);
  }

  #rk-pipe-guide .rk-pipe-panel h3,
  #rk-pipe-guide .rk-pipe-panel h4 {
    color: var(--rk-white);
  }

  #rk-pipe-guide .rk-pipe-panel h4 {
    margin: 23px 0 11px;
    font-size: 0.92rem;
  }

  #rk-pipe-guide .rk-pipe-mode {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 9px;
    margin-bottom: 21px;
  }

  #rk-pipe-guide .rk-pipe-mode label {
    position: relative;
    display: grid;
    min-height: 60px;
    place-items: center;
    padding: 10px;
    cursor: pointer;
    color: #d8ebf1;
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 13px;
    background: rgba(255, 255, 255, 0.06);
    font-size: 0.78rem;
    font-weight: 820;
    line-height: 1.3;
    text-align: center;
  }

  #rk-pipe-guide .rk-pipe-mode input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
  }

  #rk-pipe-guide .rk-pipe-mode label:has(input:checked) {
    color: #082a35;
    border-color: var(--rk-cyan);
    background: var(--rk-cyan);
    box-shadow: 0 8px 22px rgba(37, 199, 216, 0.25);
  }

  #rk-pipe-guide .rk-pipe-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
  }

  #rk-pipe-guide .rk-pipe-field {
    display: grid;
    min-width: 0;
    gap: 6px;
  }

  #rk-pipe-guide .rk-pipe-field.is-wide { grid-column: 1 / -1; }

  #rk-pipe-guide .rk-pipe-field label,
  #rk-pipe-guide .rk-pipe-field .rk-pipe-label {
    color: #d4e7ed;
    font-size: 0.76rem;
    font-weight: 790;
    line-height: 1.35;
  }

  #rk-pipe-guide .rk-pipe-field small {
    color: #a9c9d3;
    font-size: 0.68rem;
    line-height: 1.35;
  }

  #rk-pipe-guide .rk-pipe-input-wrap {
    position: relative;
    min-width: 0;
  }

  #rk-pipe-guide .rk-pipe-field input,
  #rk-pipe-guide .rk-pipe-field select {
    width: 100%;
    min-width: 0;
    height: 46px;
    padding: 9px 44px 9px 12px;
    color: var(--rk-dark);
    border: 1px solid rgba(255, 255, 255, 0.34);
    border-radius: 11px;
    outline: 0;
    background: var(--rk-white);
  }

  #rk-pipe-guide .rk-pipe-field input:focus,
  #rk-pipe-guide .rk-pipe-field select:focus {
    border-color: var(--rk-cyan);
    box-shadow: 0 0 0 3px rgba(37, 199, 216, 0.2);
  }

  #rk-pipe-guide .rk-pipe-unit {
    position: absolute;
    top: 50%;
    right: 11px;
    color: #687d88;
    font-size: 0.7rem;
    font-weight: 850;
    pointer-events: none;
    transform: translateY(-50%);
  }

  #rk-pipe-guide .rk-pipe-field select {
    padding-right: 9px;
  }

  #rk-pipe-guide .rk-pipe-advanced {
    margin-top: 19px;
    border-top: 1px solid rgba(255, 255, 255, 0.13);
  }

  #rk-pipe-guide .rk-pipe-advanced summary {
    padding: 17px 0 0;
    cursor: pointer;
    color: #91eef7;
    font-size: 0.78rem;
    font-weight: 850;
  }

  #rk-pipe-guide .rk-pipe-advanced .rk-pipe-fields { margin-top: 14px; }

  #rk-pipe-guide .rk-pipe-calc-button {
    width: 100%;
    margin-top: 19px;
    padding: 13px 18px;
    cursor: pointer;
    color: #102536;
    border: 0;
    border-radius: 12px;
    background: linear-gradient(135deg, #7bf3ff, var(--rk-cyan));
    box-shadow: 0 12px 24px rgba(37, 199, 216, 0.22);
    font-weight: 900;
  }

  #rk-pipe-guide .rk-pipe-calc-button:hover,
  #rk-pipe-guide .rk-pipe-calc-button:focus-visible {
    filter: brightness(1.06);
    transform: translateY(-1px);
  }

  #rk-pipe-guide .rk-pipe-result-top {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
  }

  #rk-pipe-guide .rk-pipe-metric {
    min-width: 0;
    padding: 16px 13px;
    border: 1px solid rgba(255, 255, 255, 0.13);
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.07);
  }

  #rk-pipe-guide .rk-pipe-metric span {
    display: block;
    margin-bottom: 3px;
    color: #b9d5de;
    font-size: 0.67rem;
    font-weight: 760;
    line-height: 1.3;
    text-transform: uppercase;
  }

  #rk-pipe-guide .rk-pipe-metric strong {
    display: block;
    overflow-wrap: anywhere;
    color: var(--rk-white);
    font-size: clamp(1.06rem, 2.4vw, 1.4rem);
    line-height: 1.2;
  }

  #rk-pipe-guide .rk-pipe-verdict {
    margin: 15px 0 0;
    padding: 17px 18px;
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-left: 5px solid var(--rk-cyan);
    border-radius: 13px;
    background: rgba(255, 255, 255, 0.075);
  }

  #rk-pipe-guide .rk-pipe-verdict.is-warning { border-left-color: var(--rk-yellow); }
  #rk-pipe-guide .rk-pipe-verdict.is-danger { border-left-color: var(--rk-red); }

  #rk-pipe-guide .rk-pipe-verdict strong {
    display: block;
    margin-bottom: 4px;
    color: var(--rk-white);
  }

  #rk-pipe-guide .rk-pipe-verdict p {
    margin: 0;
    color: #cee4eb;
    font-size: 0.82rem;
    line-height: 1.5;
  }

  #rk-pipe-guide .rk-pipe-table-wrap {
    margin-top: 17px;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 14px;
  }

  #rk-pipe-guide table {
    width: 100%;
    margin: 0;
    border-collapse: collapse;
    font-size: 0.78rem;
  }

  #rk-pipe-guide th,
  #rk-pipe-guide td {
    padding: 12px 10px;
    text-align: left;
    vertical-align: middle;
  }

  #rk-pipe-guide th {
    color: var(--rk-white);
    border-bottom: 1px solid rgba(255, 255, 255, 0.16);
    background: rgba(255, 255, 255, 0.09);
    font-size: 0.68rem;
    font-weight: 840;
    letter-spacing: 0.03em;
    text-transform: uppercase;
  }

  #rk-pipe-guide td {
    color: #d7e9ee;
    border-bottom: 1px solid rgba(255, 255, 255, 0.09);
  }

  #rk-pipe-guide tbody tr:last-child td { border-bottom: 0; }
  #rk-pipe-guide tbody tr.is-recommended { background: rgba(37, 199, 216, 0.12); }

  #rk-pipe-guide .rk-pipe-status {
    display: inline-flex;
    justify-content: center;
    min-width: 76px;
    padding: 5px 8px;
    color: var(--rk-white);
    border-radius: 999px;
    background: var(--rk-green);
    font-size: 0.66rem;
    font-weight: 850;
    line-height: 1.2;
  }

  #rk-pipe-guide .rk-pipe-status.is-borderline { color: var(--rk-dark); background: var(--rk-yellow); }
  #rk-pipe-guide .rk-pipe-status.is-fail { background: var(--rk-red); }

  #rk-pipe-guide .rk-pipe-result-note {
    margin: 12px 0 0;
    color: #a8c8d1;
    font-size: 0.7rem;
    line-height: 1.45;
  }

  #rk-pipe-guide .rk-pipe-visuals {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(240px, 0.75fr);
    gap: 18px;
    margin-top: 22px;
  }

  #rk-pipe-guide .rk-pipe-chart-card,
  #rk-pipe-guide .rk-pipe-scheme-card {
    min-width: 0;
    padding: 22px;
    color: var(--rk-ink);
    border: 1px solid var(--rk-line);
    border-radius: 19px;
    background: var(--rk-white);
  }

  #rk-pipe-guide .rk-pipe-chart-card h3,
  #rk-pipe-guide .rk-pipe-scheme-card h3 { margin-bottom: 5px; }
  #rk-pipe-guide .rk-pipe-chart-card > p,
  #rk-pipe-guide .rk-pipe-scheme-card > p { margin: 0 0 14px; font-size: 0.78rem; line-height: 1.5; }

  #rk-pipe-guide .rk-pipe-chart-wrap {
    position: relative;
    width: 100%;
    min-height: 370px;
  }

  #rk-pipe-guide #rk-pipe-chart {
    display: block;
    width: 100%;
    height: 370px;
  }

  #rk-pipe-guide .rk-pipe-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 15px;
    margin-top: 12px;
    color: var(--rk-text);
    font-size: 0.68rem;
    font-weight: 750;
  }

  #rk-pipe-guide .rk-pipe-legend span {
    display: inline-flex;
    align-items: center;
    gap: 6px;
  }

  #rk-pipe-guide .rk-pipe-legend i {
    width: 18px;
    height: 3px;
    border-radius: 3px;
  }

  #rk-pipe-guide .rk-pipe-scheme {
    display: block;
    width: 100%;
    min-height: 300px;
  }

  #rk-pipe-guide .rk-pipe-cta,
  #rk-pipe-guide .rk-pipe-final-cta {
    margin: 0 clamp(24px, 7vw, 82px) clamp(48px, 7vw, 78px);
    padding: clamp(28px, 5vw, 45px);
    color: var(--rk-white);
    border-radius: 23px;
    background:
      radial-gradient(circle at 88% 20%, rgba(37, 199, 216, 0.24), transparent 25%),
      linear-gradient(135deg, #102536, #174f62);
    box-shadow: 0 22px 48px rgba(16, 37, 54, 0.2);
  }

  #rk-pipe-guide .rk-pipe-cta h2,
  #rk-pipe-guide .rk-pipe-final-cta h2 {
    margin-top: 8px;
    color: var(--rk-white);
  }

  #rk-pipe-guide .rk-pipe-cta p,
  #rk-pipe-guide .rk-pipe-final-cta p {
    max-width: 900px;
    color: #d7eaf0;
  }

  #rk-pipe-guide .rk-pipe-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    margin-top: 11px;
    padding: 13px 22px;
    color: var(--rk-white);
    border: 0;
    border-radius: 12px;
    background: linear-gradient(135deg, var(--rk-orange), #f14e2c);
    box-shadow: 0 12px 28px rgba(255, 106, 61, 0.28);
    font-weight: 900;
    line-height: 1.35;
    text-align: center;
    text-decoration: none;
  }

  #rk-pipe-guide .rk-pipe-cta-button:hover,
  #rk-pipe-guide .rk-pipe-cta-button:focus-visible {
    color: var(--rk-white);
    filter: brightness(1.06);
    transform: translateY(-2px);
  }

  #rk-pipe-guide .rk-pipe-disclosure {
    display: block;
    max-width: 780px;
    margin-top: 12px;
    color: #a9c8d1;
    font-size: 0.68rem;
    line-height: 1.45;
  }

  #rk-pipe-guide .rk-pipe-comparison {
    width: 100%;
    margin: 27px 0;
    border-collapse: separate;
    border-spacing: 0;
    color: var(--rk-ink);
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    overflow: hidden;
    background: var(--rk-white);
    font-size: 0.86rem;
  }

  #rk-pipe-guide .rk-pipe-comparison th {
    color: var(--rk-white);
    border-color: rgba(255, 255, 255, 0.15);
    background: var(--rk-navy);
  }

  #rk-pipe-guide .rk-pipe-comparison td {
    color: var(--rk-text);
    border-color: var(--rk-line);
  }

  #rk-pipe-guide .rk-pipe-comparison tbody tr:nth-child(even) td { background: var(--rk-soft); }
  #rk-pipe-guide .rk-pipe-comparison strong { color: var(--rk-dark); }

  #rk-pipe-guide .rk-pipe-flow-map {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    align-items: stretch;
    margin: 28px 0;
  }

  #rk-pipe-guide .rk-pipe-flow-node {
    position: relative;
    display: grid;
    min-height: 118px;
    place-items: center;
    padding: 18px;
    color: var(--rk-dark);
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    background: var(--rk-white);
    font-weight: 850;
    line-height: 1.35;
    text-align: center;
  }

  #rk-pipe-guide .rk-pipe-flow-node:not(:last-child)::after {
    position: absolute;
    top: 50%;
    right: -13px;
    z-index: 2;
    content: "→";
    color: var(--rk-orange);
    font-size: 1.25rem;
    transform: translateY(-50%);
  }

  #rk-pipe-guide .rk-pipe-errors {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 17px;
    margin: 27px 0;
  }

  #rk-pipe-guide .rk-pipe-error {
    padding: 22px;
    border: 1px solid #f0c5bf;
    border-radius: 17px;
    background: var(--rk-red-soft);
  }

  #rk-pipe-guide .rk-pipe-error b {
    display: inline-block;
    margin-bottom: 8px;
    color: var(--rk-red);
    font-size: 0.72rem;
    letter-spacing: 0.07em;
    text-transform: uppercase;
  }

  #rk-pipe-guide .rk-pipe-error p { margin: 0; }

  #rk-pipe-guide .rk-pipe-steps {
    display: grid;
    gap: 14px;
    margin: 27px 0;
    counter-reset: rk-pipe-step;
  }

  #rk-pipe-guide .rk-pipe-step {
    position: relative;
    min-height: 76px;
    padding: 19px 20px 19px 76px;
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    background: var(--rk-white);
    counter-increment: rk-pipe-step;
  }

  #rk-pipe-guide .rk-pipe-step::before {
    position: absolute;
    top: 18px;
    left: 19px;
    display: grid;
    width: 40px;
    height: 40px;
    place-items: center;
    content: counter(rk-pipe-step, decimal-leading-zero);
    color: var(--rk-white);
    border-radius: 12px;
    background: var(--rk-blue);
    font-size: 0.76rem;
    font-weight: 900;
  }

  #rk-pipe-guide .rk-pipe-step p { margin: 0; }

  #rk-pipe-guide .rk-pipe-faq {
    display: grid;
    gap: 11px;
    margin-top: 26px;
  }

  #rk-pipe-guide .rk-pipe-faq details {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    background: var(--rk-white);
  }

  #rk-pipe-guide .rk-pipe-faq summary {
    position: relative;
    padding: 18px 54px 18px 20px;
    cursor: pointer;
    color: var(--rk-dark);
    font-weight: 850;
    line-height: 1.4;
    list-style: none;
  }

  #rk-pipe-guide .rk-pipe-faq summary::-webkit-details-marker { display: none; }

  #rk-pipe-guide .rk-pipe-faq summary::after {
    position: absolute;
    top: 50%;
    right: 17px;
    display: grid;
    width: 28px;
    height: 28px;
    place-items: center;
    content: "+";
    color: var(--rk-white);
    border-radius: 50%;
    background: var(--rk-blue);
    transform: translateY(-50%);
  }

  #rk-pipe-guide .rk-pipe-faq details[open] summary::after { content: "−"; }

  #rk-pipe-guide .rk-pipe-faq-answer {
    padding: 0 20px 19px;
  }

  #rk-pipe-guide .rk-pipe-faq-answer p { margin: 0; }

  #rk-pipe-guide .rk-pipe-source-box {
    padding: 24px;
  }

  #rk-pipe-guide .rk-pipe-source-box p + p { margin-top: 13px; }

  #rk-pipe-guide .rk-pipe-update {
    margin-top: 15px;
    color: var(--rk-muted);
    font-size: 0.72rem;
    font-weight: 760;
  }

  #rk-pipe-guide .rk-pipe-author {
    position: relative;
    margin: 0 clamp(24px, 7vw, 82px) clamp(48px, 7vw, 78px);
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 24px;
    background: var(--rk-white);
    box-shadow: 0 18px 45px rgba(16, 37, 54, 0.09);
  }

  #rk-pipe-guide .rk-pipe-author > input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
  }

  #rk-pipe-guide .rk-pipe-author-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    padding: 26px 30px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-dark), var(--rk-navy));
  }

  #rk-pipe-guide .rk-pipe-author-head h2 {
    margin: 5px 0 2px;
    color: var(--rk-white);
    font-size: 1.7rem;
  }

  #rk-pipe-guide .rk-pipe-author-head p {
    margin: 0;
    color: #c9e2e9;
    font-size: 0.82rem;
  }

  #rk-pipe-guide .rk-pipe-author-mark {
    padding: 8px 12px;
    color: #8cf5ff;
    border: 1px solid rgba(140, 245, 255, 0.34);
    border-radius: 999px;
    font-size: 0.66rem;
    font-weight: 880;
    letter-spacing: 0.08em;
    white-space: nowrap;
  }

  #rk-pipe-guide .rk-pipe-author-layout {
    display: grid;
    grid-template-columns: 280px minmax(0, 1fr);
  }

  #rk-pipe-guide .rk-pipe-author-side {
    padding: 28px;
    text-align: center;
    border-right: 1px solid var(--rk-line);
    background: var(--rk-soft);
  }

  #rk-pipe-guide .rk-pipe-author-photo {
    width: 150px;
    height: 150px;
    margin: 0 auto 16px;
    overflow: hidden;
    border: 5px solid var(--rk-white);
    border-radius: 50%;
    box-shadow: 0 12px 30px rgba(16, 37, 54, 0.14);
  }

  #rk-pipe-guide .rk-pipe-author-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  #rk-pipe-guide .rk-pipe-author-name {
    color: var(--rk-dark);
    font-size: 1.12rem;
    font-weight: 900;
  }

  #rk-pipe-guide .rk-pipe-author-role {
    margin-top: 5px;
    color: var(--rk-muted);
    font-size: 0.75rem;
    line-height: 1.5;
  }

  #rk-pipe-guide .rk-pipe-author-social-label {
    margin-top: 18px;
    color: var(--rk-muted);
    font-size: 0.67rem;
    font-weight: 800;
    text-transform: uppercase;
  }

  #rk-pipe-guide .rk-pipe-author-social {
    display: flex;
    justify-content: center;
    gap: 9px;
    margin-top: 9px;
  }

  #rk-pipe-guide .rk-pipe-author-social a {
    display: grid;
    width: 40px;
    height: 40px;
    place-items: center;
    color: var(--rk-white);
    border-radius: 11px;
    background: var(--rk-navy);
  }

  #rk-pipe-guide .rk-pipe-author-social a:hover { color: var(--rk-white); background: var(--rk-orange); }
  #rk-pipe-guide .rk-pipe-author-social svg { width: 21px; height: 21px; fill: currentColor; }

  #rk-pipe-guide .rk-pipe-author-main {
    min-width: 0;
    padding: 28px;
  }

  #rk-pipe-guide .rk-pipe-author-quote {
    position: relative;
    margin: 0 0 22px;
    padding: 22px 24px 22px 70px;
    border: 0;
    border-radius: 17px;
    background: var(--rk-cyan-soft);
  }

  #rk-pipe-guide .rk-pipe-author-quote::before {
    position: absolute;
    top: 6px;
    left: 19px;
    content: "“";
    color: var(--rk-cyan);
    font-family: Georgia, serif;
    font-size: 4.5rem;
    line-height: 1;
  }

  #rk-pipe-guide .rk-pipe-author-quote p {
    margin: 0;
    color: var(--rk-dark);
    font-weight: 760;
  }

  #rk-pipe-guide .rk-pipe-author-tabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 13px 13px 0 0;
  }

  #rk-pipe-guide .rk-pipe-author-tab {
    padding: 11px;
    cursor: pointer;
    color: var(--rk-text);
    border-right: 1px solid var(--rk-line);
    background: var(--rk-soft);
    font-size: 0.73rem;
    font-weight: 850;
    text-align: center;
  }

  #rk-pipe-guide .rk-pipe-author-tab:last-child { border-right: 0; }

  #rk-pipe-guide .rk-pipe-author-panel {
    display: none;
    min-height: 108px;
    padding: 20px;
    border: 1px solid var(--rk-line);
    border-top: 0;
    border-radius: 0 0 13px 13px;
  }

  #rk-pipe-guide .rk-pipe-author-panel p { margin: 0; }

  #rk-pipe-author-about:checked ~ .rk-pipe-author-layout .rk-pipe-author-main .rk-pipe-author-tabs label[for="rk-pipe-author-about"],
  #rk-pipe-author-exp:checked ~ .rk-pipe-author-layout .rk-pipe-author-main .rk-pipe-author-tabs label[for="rk-pipe-author-exp"],
  #rk-pipe-author-sites:checked ~ .rk-pipe-author-layout .rk-pipe-author-main .rk-pipe-author-tabs label[for="rk-pipe-author-sites"] {
    color: var(--rk-white);
    background: var(--rk-blue);
  }

  #rk-pipe-author-about:checked ~ .rk-pipe-author-layout .rk-pipe-author-main .rk-pipe-author-panel-about,
  #rk-pipe-author-exp:checked ~ .rk-pipe-author-layout .rk-pipe-author-main .rk-pipe-author-panel-exp,
  #rk-pipe-author-sites:checked ~ .rk-pipe-author-layout .rk-pipe-author-main .rk-pipe-author-panel-sites {
    display: block;
  }

  #rk-pipe-guide .rk-pipe-site-links {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 12px;
  }

  #rk-pipe-guide .rk-pipe-site-links a {
    padding: 7px 10px;
    border: 1px solid var(--rk-line);
    border-radius: 999px;
    background: var(--rk-soft);
    font-size: 0.72rem;
    font-weight: 800;
    text-decoration: none;
  }

  #rk-pipe-guide .rk-pipe-final-cta {
    margin-bottom: clamp(32px, 6vw, 68px);
  }

  @media (max-width: 980px) {
    #rk-pipe-guide .rk-pipe-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-pipe-guide .rk-pipe-tool-body { grid-template-columns: 1fr; }
    #rk-pipe-guide .rk-pipe-visuals { grid-template-columns: 1fr; }
    #rk-pipe-guide .rk-pipe-author-layout { grid-template-columns: 240px minmax(0, 1fr); }
  }

  @media (max-width: 760px) {
    #rk-pipe-guide {
      margin: 18px auto 40px;
      font-size: 16px;
    }

    #rk-pipe-guide .rk-pipe-shell { border-radius: 19px; }
    #rk-pipe-guide .rk-pipe-hero-inner { padding: 45px 22px; }
    #rk-pipe-guide .rk-pipe-meta { display: grid; gap: 8px; }
    #rk-pipe-guide .rk-pipe-nav { padding: 14px 16px; }
    #rk-pipe-guide .rk-pipe-nav strong { width: 100%; }
    #rk-pipe-guide .rk-pipe-section { padding: 42px 19px; }
    #rk-pipe-guide .rk-pipe-answer,
    #rk-pipe-guide .rk-pipe-grid-2,
    #rk-pipe-guide .rk-pipe-grid-3,
    #rk-pipe-guide .rk-pipe-grid-4,
    #rk-pipe-guide .rk-pipe-errors,
    #rk-pipe-guide .rk-pipe-flow-map { grid-template-columns: 1fr; }
    #rk-pipe-guide .rk-pipe-flow-node:not(:last-child)::after {
      top: auto;
      right: 50%;
      bottom: -21px;
      transform: translateX(50%) rotate(90deg);
    }
    #rk-pipe-guide .rk-pipe-tool { border-radius: 18px; }
    #rk-pipe-guide .rk-pipe-tool-head { display: grid; padding: 24px 18px 20px; }
    #rk-pipe-guide .rk-pipe-tool-badge { justify-self: start; }
    #rk-pipe-guide .rk-pipe-tool-body { padding: 14px; }
    #rk-pipe-guide .rk-pipe-panel { padding: 18px 14px; }
    #rk-pipe-guide .rk-pipe-result-top { grid-template-columns: 1fr; }
    #rk-pipe-guide .rk-pipe-chart-card,
    #rk-pipe-guide .rk-pipe-scheme-card { padding: 18px 13px; }
    #rk-pipe-guide .rk-pipe-cta,
    #rk-pipe-guide .rk-pipe-final-cta,
    #rk-pipe-guide .rk-pipe-author { margin-left: 16px; margin-right: 16px; }
    #rk-pipe-guide .rk-pipe-cta-button { width: 100%; }
    #rk-pipe-guide .rk-pipe-author-head { display: grid; padding: 23px 20px; }
    #rk-pipe-guide .rk-pipe-author-mark { justify-self: start; }
    #rk-pipe-guide .rk-pipe-author-layout { grid-template-columns: 1fr; }
    #rk-pipe-guide .rk-pipe-author-side { border-right: 0; border-bottom: 1px solid var(--rk-line); }
    #rk-pipe-guide .rk-pipe-author-main { padding: 22px 18px; }
    #rk-pipe-guide .rk-pipe-author-quote { padding: 66px 20px 20px; }
    #rk-pipe-guide .rk-pipe-author-quote::before { top: 5px; left: 18px; }

    #rk-pipe-guide .rk-pipe-table-wrap {
      overflow: visible;
      border: 0;
      border-radius: 0;
    }

    #rk-pipe-guide .rk-pipe-table-wrap table,
    #rk-pipe-guide .rk-pipe-table-wrap tbody,
    #rk-pipe-guide .rk-pipe-table-wrap tr,
    #rk-pipe-guide .rk-pipe-table-wrap td,
    #rk-pipe-guide .rk-pipe-comparison,
    #rk-pipe-guide .rk-pipe-comparison tbody,
    #rk-pipe-guide .rk-pipe-comparison tr,
    #rk-pipe-guide .rk-pipe-comparison td {
      display: block;
      width: 100%;
    }

    #rk-pipe-guide .rk-pipe-table-wrap thead,
    #rk-pipe-guide .rk-pipe-comparison thead { display: none; }

    #rk-pipe-guide .rk-pipe-table-wrap tr,
    #rk-pipe-guide .rk-pipe-comparison tr {
      margin-bottom: 13px;
      overflow: hidden;
      border: 1px solid rgba(255, 255, 255, 0.16);
      border-radius: 14px;
      background: rgba(255, 255, 255, 0.07);
    }

    #rk-pipe-guide .rk-pipe-comparison tr {
      border-color: var(--rk-line);
      background: var(--rk-white);
    }

    #rk-pipe-guide .rk-pipe-table-wrap td,
    #rk-pipe-guide .rk-pipe-comparison td {
      padding: 10px 12px;
      border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    }

    #rk-pipe-guide .rk-pipe-comparison td { border-bottom-color: var(--rk-line); }

    #rk-pipe-guide .rk-pipe-table-wrap td::before,
    #rk-pipe-guide .rk-pipe-comparison td::before {
      display: block;
      margin-bottom: 3px;
      content: attr(data-label);
      color: #9ec5cf;
      font-size: 0.64rem;
      font-weight: 850;
      letter-spacing: 0.04em;
      text-transform: uppercase;
    }

    #rk-pipe-guide .rk-pipe-comparison td::before { color: var(--rk-blue); }
    #rk-pipe-guide .rk-pipe-table-wrap tr:last-child,
    #rk-pipe-guide .rk-pipe-comparison tr:last-child { margin-bottom: 0; }
    #rk-pipe-guide .rk-pipe-table-wrap td:last-child,
    #rk-pipe-guide .rk-pipe-comparison td:last-child { border-bottom: 0; }
  }

  @media (max-width: 520px) {
    #rk-pipe-guide .rk-pipe-hero-title { font-size: 2.15rem; }
    #rk-pipe-guide .rk-pipe-mode,
    #rk-pipe-guide .rk-pipe-fields { grid-template-columns: 1fr; }
    #rk-pipe-guide .rk-pipe-field.is-wide { grid-column: auto; }
    #rk-pipe-guide .rk-pipe-chart-wrap { min-height: 325px; }
    #rk-pipe-guide #rk-pipe-chart { height: 325px; }
    #rk-pipe-guide .rk-pipe-author-tabs { grid-template-columns: 1fr; }
    #rk-pipe-guide .rk-pipe-author-tab { border-right: 0; border-bottom: 1px solid var(--rk-line); }
  }

  @media (prefers-reduced-motion: reduce) {
    #rk-pipe-guide *,
    #rk-pipe-guide *::before,
    #rk-pipe-guide *::after {
      scroll-behavior: auto !important;
      transition: none !important;
      animation: none !important;
    }
  }
</style>

<article id="rk-pipe-guide" aria-label="Dobór średnicy rury zasilającej rozdzielacz ogrzewania podłogowego">
  <div class="rk-pipe-shell">
    <div class="rk-pipe-progress-track" aria-hidden="true"><div class="rk-pipe-progress" id="rk-pipe-progress"></div></div>

    <header class="rk-pipe-hero">
      <div class="rk-pipe-hero-inner">
        <span class="rk-pipe-eyebrow"><b aria-hidden="true"></b> Hydraulika podłogówki • kalkulator 2026</span>
        <div class="rk-pipe-hero-title">Średnicy rury do rozdzielacza nie wybiera się z samej liczby pętli</div>
        <p class="rk-pipe-hero-lead">Oblicz całkowity przepływ z mocy i ΔT albo wpisz wartość znaną z projektu. Następnie porównaj rzeczywiste średnice wewnętrzne, prędkość oraz straty ciśnienia na całej drodze zasilania i powrotu.</p>
        <div class="rk-pipe-meta">
          <span><i aria-hidden="true"></i> Czytanie: około 18 minut</span>
          <span><i aria-hidden="true"></i> Kalkulator i dynamiczny wykres</span>
          <span><i aria-hidden="true"></i> Aktualizacja: 29 sierpnia 2026 r.</span>
        </div>
      </div>
    </header>

    <nav class="rk-pipe-nav" aria-label="Spis treści artykułu">
      <strong>Na skróty</strong>
      <a href="#rk-pipe-answer">Szybka odpowiedź</a>
      <a href="#rk-pipe-flow">Przepływ</a>
      <a href="#rk-pipe-calculator">Kalkulator</a>
      <a href="#rk-pipe-comparison">20, 25 czy 32?</a>
      <a href="#rk-pipe-pump">Pompa i źródło</a>
      <a href="#rk-pipe-errors">Błędy</a>
      <a href="#rk-pipe-howto">Checklista</a>
      <a href="#rk-pipe-faq">FAQ</a>
    </nav>

    <main>
      <section class="rk-pipe-section" id="rk-pipe-answer">
        <span class="rk-pipe-kicker">Odpowiedź w 60 sekund</span>
        <h2>Jaka średnica rury zasilającej rozdzielacz jest właściwa?</h2>
        <p class="rk-pipe-intro">Nie istnieje jedna średnica właściwa dla każdego rozdzielacza z sześcioma, ośmioma albo dwunastoma pętlami. Najpierw trzeba określić całkowity przepływ projektowy, a później sprawdzić prędkość i stratę ciśnienia dla rzeczywistej średnicy wewnętrznej przewodu oraz długości magistrali.</p>

        <div class="rk-pipe-answer">
          <div class="rk-pipe-answer-main">
            <h3>Najpierw przepływ, później średnica</h3>
            <p><strong>Przepływ przez wspólną rurę wynika z mocy przenoszonej do instalacji i projektowej różnicy temperatur albo z sumy przepływów wszystkich pracujących pętli.</strong> Liczba obwodów jest informacją pomocniczą, ale sama nie wyznacza ani litrów na minutę, ani średnicy.</p>
          </div>
          <div class="rk-pipe-answer-side">
            <h3>Długość nadal ma znaczenie</h3>
            <p>Nie służy jednak do wyznaczania przepływu. Długość zasilania i powrotu decyduje, jak duża będzie strata ciśnienia przy danym przepływie oraz średnicy.</p>
          </div>
        </div>

        <div class="rk-pipe-grid-3">
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Krok 1 • przepływ</span><h3>Moc i ΔT albo suma pętli</h3><p>Ustal, ile wody ma w projektowym punkcie pracy przejść przez rozdzielacz. Bez tej wartości porównanie 20, 25 i 32 mm jest zgadywaniem.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Krok 2 • geometria</span><h3>Średnica wewnętrzna</h3><p>Oznaczenie 25 × 2,5 mm oznacza około 20 mm światła przewodu. To pole przekroju wewnętrznego decyduje o prędkości wody.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Krok 3 • opór</span><h3>Cała para przewodów</h3><p>Sprawdź stratę na zasilaniu i powrocie, a następnie dodaj armaturę. Dopiero taki wynik można zestawić z dostępnym ciśnieniem pompy.</p></article>
        </div>

        <div class="rk-pipe-note is-warning"><p><strong>Rura może spełnić założenie dotyczące prędkości, ale nie przejść kontroli strat ciśnienia.</strong> Dlatego sam wzór na średnicę wynikającą z przepływu i prędkości jest jedynie pierwszym filtrem, a nie kompletnym doborem.</p></div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-flow">
        <span class="rk-pipe-kicker">Podstawa obliczeń</span>
        <h2>Jak obliczyć całkowity przepływ do rozdzielacza?</h2>
        <p class="rk-pipe-intro">Są dwie poprawne drogi. Jeżeli znasz projektowe przepływy pętli, sumujesz je dla obwodów mogących pracować jednocześnie. Jeżeli znasz moc cieplną obsługiwaną przez rozdzielacz, obliczasz przepływ z bilansu energii.</p>

        <div class="rk-pipe-formula" aria-label="Wzór na przepływ wody z mocy i różnicy temperatur">
          <strong>V̇ [m³/h] ≈ Φ [kW] ÷ (1,163 × ΔT [K])</strong>
          <span>Uproszczona zależność dla wody. Przy innym medium trzeba użyć jego gęstości i ciepła właściwego.</span>
        </div>

        <div class="rk-pipe-grid-2">
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Metoda A</span><h3>Z mocy rozdzielacza</h3><p>Jeżeli rozdzielacz ma przenieść 8 kW przy ΔT równym 7 K, orientacyjny przepływ wynosi około 0,98 m³/h, czyli 16,4 l/min. Zmniejszenie ΔT przy tej samej mocy zwiększa wymagany przepływ.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Metoda B</span><h3>Z przepływów pętli</h3><p>Dodaj wartości obliczone dla wszystkich pętli podłączonych do rozdzielacza. Projektowe nastawy można później odczytać na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach rozdzielacza</a>.</p></article>
        </div>

        <h3>Dlaczego liczba metrów rury nie wyznacza przepływu?</h3>
        <p>Długość obwodu zmienia opór hydrauliczny. Nie mówi jednak, jaką moc ma przekazać pętla. Dwie pętle po 80 m mogą obsługiwać pomieszczenia o różnych stratach ciepła i wymagać różnych przepływów. Odwrotna sytuacja także jest możliwa: krótszy obwód w mocno obciążonej łazience może potrzebować większego przepływu niż dłuższa pętla w sypialni.</p>
        <p>Jeżeli nie znasz mocy rozdzielacza ani przepływów pętli, najpierw potrzebne jest <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne</a>. Przyjęcie jednej wartości W/m² dla całego budynku może być punktem do orientacyjnego scenariusza, ale nie zastępuje obliczeń poszczególnych pomieszczeń.</p>

        <div class="rk-pipe-note"><p>Znaczenie różnicy zasilanie–powrót i wpływ ΔT na przepływ szerzej omawia poradnik o <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">spadku temperatury w instalacji</a>.</p></div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-calculator">
        <span class="rk-pipe-kicker">Narzędzie interaktywne</span>
        <h2>Kalkulator średnicy rury zasilającej rozdzielacz</h2>
        <p class="rk-pipe-intro">Wybierz sposób podania przepływu, wpisz odległość do rozdzielacza i porównaj typowe wymiary rur wielowarstwowych. Wynik korzysta z równania Darcy’ego-Weisbacha i pokazuje osobno prędkość, liniową stratę ciśnienia oraz stratę na parze przewodów.</p>

        <div class="rk-pipe-tool" aria-label="Kalkulator hydrauliczny rury do rozdzielacza">
          <div class="rk-pipe-tool-head">
            <div><h3>Analizator magistrali zasilającej i powrotnej</h3><p>Wynik zmienia się automatycznie. Domyślne limity są kryteriami kontrolnymi kalkulatora, a nie uniwersalną normą dla każdej instalacji.</p></div>
            <span class="rk-pipe-tool-badge">Model dla wody</span>
          </div>

          <div class="rk-pipe-tool-body">
            <div class="rk-pipe-panel">
              <h3>Dane wejściowe</h3>

              <div class="rk-pipe-mode" role="radiogroup" aria-label="Sposób podania przepływu">
                <label><input type="radio" name="rk-pipe-mode" value="power" checked> Znam moc rozdzielacza</label>
                <label><input type="radio" name="rk-pipe-mode" value="flow"> Znam całkowity przepływ</label>
              </div>

              <div class="rk-pipe-fields">
                <div class="rk-pipe-field" id="rk-pipe-power-field">
                  <label for="rk-pipe-power">Moc obsługiwana przez rozdzielacz</label>
                  <div class="rk-pipe-input-wrap"><input id="rk-pipe-power" type="number" min="0.5" max="50" step="0.1" value="8" inputmode="decimal"><span class="rk-pipe-unit">kW</span></div>
                </div>

                <div class="rk-pipe-field" id="rk-pipe-flow-field" hidden>
                  <label for="rk-pipe-known-flow">Znany przepływ całkowity</label>
                  <div class="rk-pipe-input-wrap"><input id="rk-pipe-known-flow" type="number" min="0.1" max="250" step="0.1" value="16.4" inputmode="decimal"><span class="rk-pipe-unit" id="rk-pipe-flow-unit-label">l/min</span></div>
                </div>

                <div class="rk-pipe-field" id="rk-pipe-flow-unit-field" hidden>
                  <label for="rk-pipe-flow-unit">Jednostka przepływu</label>
                  <select id="rk-pipe-flow-unit"><option value="lmin">l/min</option><option value="m3h">m³/h</option></select>
                </div>

                <div class="rk-pipe-field">
                  <label for="rk-pipe-delta">Projektowe ΔT</label>
                  <div class="rk-pipe-input-wrap"><input id="rk-pipe-delta" type="number" min="3" max="20" step="0.5" value="7" inputmode="decimal"><span class="rk-pipe-unit">K</span></div>
                </div>

                <div class="rk-pipe-field">
                  <label for="rk-pipe-distance">Odległość do rozdzielacza</label>
                  <div class="rk-pipe-input-wrap"><input id="rk-pipe-distance" type="number" min="1" max="150" step="0.5" value="10" inputmode="decimal"><span class="rk-pipe-unit">m / 1 strona</span></div>
                </div>

                <div class="rk-pipe-field">
                  <label for="rk-pipe-temp">Średnia temperatura wody</label>
                  <div class="rk-pipe-input-wrap"><input id="rk-pipe-temp" type="number" min="10" max="70" step="0.5" value="32" inputmode="decimal"><span class="rk-pipe-unit">°C</span></div>
                </div>

                <div class="rk-pipe-field is-wide">
                  <label for="rk-pipe-extra">Dodatkowa strata armatury</label>
                  <div class="rk-pipe-input-wrap"><input id="rk-pipe-extra" type="number" min="0" max="100" step="0.5" value="5" inputmode="decimal"><span class="rk-pipe-unit">kPa</span></div>
                  <small>Opcjonalna suma dla zaworów, filtra, separatora i innych elementów wspólnej drogi.</small>
                </div>
              </div>

              <details class="rk-pipe-advanced">
                <summary>Ustawienia kryteriów kontrolnych</summary>
                <div class="rk-pipe-fields">
                  <div class="rk-pipe-field">
                    <label for="rk-pipe-max-speed">Maksymalna prędkość</label>
                    <div class="rk-pipe-input-wrap"><input id="rk-pipe-max-speed" type="number" min="0.2" max="2" step="0.05" value="0.8" inputmode="decimal"><span class="rk-pipe-unit">m/s</span></div>
                  </div>
                  <div class="rk-pipe-field">
                    <label for="rk-pipe-max-gradient">Maksymalna strata liniowa</label>
                    <div class="rk-pipe-input-wrap"><input id="rk-pipe-max-gradient" type="number" min="30" max="1000" step="10" value="200" inputmode="numeric"><span class="rk-pipe-unit">Pa/m</span></div>
                  </div>
                  <div class="rk-pipe-field is-wide">
                    <label for="rk-pipe-max-total">Budżet dla pary przewodów i wpisanej armatury</label>
                    <div class="rk-pipe-input-wrap"><input id="rk-pipe-max-total" type="number" min="2" max="100" step="1" value="25" inputmode="decimal"><span class="rk-pipe-unit">kPa</span></div>
                    <small>Dotyczy tylko analizowanego odcinka wspólnego, a nie całego obiegu krytycznego.</small>
                  </div>
                </div>
              </details>

              <button class="rk-pipe-calc-button" id="rk-pipe-calculate" type="button">Przelicz warianty rur</button>
            </div>

            <div class="rk-pipe-panel">
              <h3>Wynik dla wspólnej magistrali</h3>
              <div class="rk-pipe-result-top">
                <div class="rk-pipe-metric"><span>Przepływ</span><strong id="rk-pipe-result-flow">0,98 m³/h</strong></div>
                <div class="rk-pipe-metric"><span>W litrach</span><strong id="rk-pipe-result-lmin">16,4 l/min</strong></div>
                <div class="rk-pipe-metric"><span>Moc przy ΔT</span><strong id="rk-pipe-result-power">8,0 kW</strong></div>
                <div class="rk-pipe-metric"><span>Zasilanie + powrót</span><strong id="rk-pipe-result-length">20,0 m</strong></div>
              </div>

              <div class="rk-pipe-verdict" id="rk-pipe-verdict" role="status" aria-live="polite">
                <strong id="rk-pipe-verdict-title">Trwa obliczanie wariantów</strong>
                <p id="rk-pipe-verdict-text">Kalkulator porówna prędkość i stratę liniową dla każdej średnicy wewnętrznej.</p>
              </div>

              <div class="rk-pipe-table-wrap">
                <table aria-label="Porównanie hydrauliczne średnic rur">
                  <thead><tr><th>Rura</th><th>d<sub>i</sub></th><th>Prędkość</th><th>Re / przepływ</th><th>Strata liniowa</th><th>Para + armatura</th><th>Ocena</th></tr></thead>
                  <tbody id="rk-pipe-results-body"></tbody>
                </table>
              </div>
              <p class="rk-pipe-result-note">Wymiary 16 × 2, 20 × 2, 25 × 2,5, 32 × 3, 40 × 4 i 50 × 4,5 mm są wariantami referencyjnymi. Przed wyborem sprawdź dokładną średnicę wewnętrzną konkretnego przewodu i opory zastosowanej armatury.</p>
            </div>
          </div>

          <div class="rk-pipe-visuals">
            <div class="rk-pipe-chart-card">
              <h3>Jak przepływ zmienia jednostkową stratę ciśnienia?</h3>
              <p>Krzywe przedstawiają ten sam model dla rur 20 × 2, 25 × 2,5, 32 × 3 oraz 40 × 4 mm. Linia pionowa oznacza przepływ podany lub obliczony przez użytkownika.</p>
              <div class="rk-pipe-chart-wrap"><canvas id="rk-pipe-chart" role="img" aria-label="Wykres straty ciśnienia w zależności od przepływu dla czterech średnic rur"></canvas></div>
              <div class="rk-pipe-legend" aria-hidden="true">
                <span><i style="background:#d94b3d"></i>20 × 2</span><span><i style="background:#e6ad2f"></i>25 × 2,5</span><span><i style="background:#078fbe"></i>32 × 3</span><span><i style="background:#16836b"></i>40 × 4</span><span><i style="background:#695ac9"></i>Twój przepływ</span>
              </div>
            </div>

            <div class="rk-pipe-scheme-card">
              <h3>Co obejmuje obliczana droga?</h3>
              <p>Zasilanie i powrót przenoszą taki sam przepływ. Ich długości sumują się przy liczeniu strat.</p>
              <svg class="rk-pipe-scheme" viewBox="0 0 420 330" role="img" aria-label="Schemat źródła, pary przewodów i rozdzielacza">
                <defs><marker id="rk-pipe-arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" fill="#ff6a3d"></path></marker></defs>
                <rect x="20" y="105" width="105" height="105" rx="18" fill="#102536"></rect>
                <text x="72" y="145" text-anchor="middle" fill="#8cf5ff" font-size="13" font-weight="800">ŹRÓDŁO</text>
                <text x="72" y="166" text-anchor="middle" fill="#ffffff" font-size="13">+ pompa</text>
                <text x="72" y="187" text-anchor="middle" fill="#cde4eb" font-size="11">wspólny obieg</text>
                <rect x="295" y="78" width="105" height="160" rx="18" fill="#14384d"></rect>
                <text x="347" y="115" text-anchor="middle" fill="#8cf5ff" font-size="13" font-weight="800">ROZDZIELACZ</text>
                <line x1="318" y1="137" x2="376" y2="137" stroke="#ffffff" stroke-width="6" stroke-linecap="round"></line>
                <line x1="318" y1="191" x2="376" y2="191" stroke="#ffffff" stroke-width="6" stroke-linecap="round"></line>
                <path d="M326 137 V160 Q326 177 340 177 H354 Q368 177 368 160 V137" fill="none" stroke="#25c7d8" stroke-width="4"></path>
                <path d="M140 126 H279" fill="none" stroke="#ff6a3d" stroke-width="7" stroke-linecap="round" marker-end="url(#rk-pipe-arrow)"></path>
                <path d="M279 198 H140" fill="none" stroke="#25c7d8" stroke-width="7" stroke-linecap="round" marker-end="url(#rk-pipe-arrow)"></path>
                <text x="210" y="105" text-anchor="middle" fill="#d94b3d" font-size="12" font-weight="800">ZASILANIE</text>
                <text x="210" y="226" text-anchor="middle" fill="#078fbe" font-size="12" font-weight="800">POWRÓT</text>
                <rect x="125" y="258" width="170" height="50" rx="12" fill="#e8fbff" stroke="#b8e7ee"></rect>
                <text id="rk-pipe-scheme-flow" x="210" y="279" text-anchor="middle" fill="#102536" font-size="12" font-weight="800">0,98 m³/h w obu rurach</text>
                <text id="rk-pipe-scheme-length" x="210" y="297" text-anchor="middle" fill="#475967" font-size="11">10,0 m + 10,0 m</text>
              </svg>
            </div>
          </div>
        </div>

        <div class="rk-pipe-note is-danger"><p><strong>Model dotyczy wody i prostych odcinków przewodów.</strong> Dodatkowa strata armatury jest wartością wpisywaną przez użytkownika. Kalkulator nie zna rzeczywistych współczynników oporu kolan, zaworów, filtra, separatora, źródła ani rozdzielacza i nie sprawdza charakterystyki konkretnej pompy.</p></div>
      </section>

      <aside class="rk-pipe-cta" aria-label="Projekt z doborem magistrali i pompy obiegowej">
        <span class="rk-pipe-kicker" style="color:#7af0ff">Granica wyniku kalkulatora</span>
        <h2>Kalkulator sprawdza magistralę, ale nie cały obieg krytyczny</h2>
        <p>Wynik pokazuje przepływ, prędkość i orientacyjną stratę ciśnienia w parze przewodów przy podanych założeniach. Nie zna rzeczywistego przebiegu rur, kształtek, zaworów, filtra, separatora, oporu rozdzielacza, parametrów źródła ani najbardziej niekorzystnej pętli. Aby zatwierdzić średnicę, trzeba zestawić ją z pompą i całą drogą hydrauliczną.</p>
        <a class="rk-pipe-cta-button rk-pipe-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z doborem magistrali i pompy</a>
        <small class="rk-pipe-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
      </aside>

      <section class="rk-pipe-section" id="rk-pipe-comparison">
        <span class="rk-pipe-kicker">Porównanie wariantów</span>
        <h2>Rura 20, 25 czy 32 mm do rozdzielacza?</h2>
        <p class="rk-pipe-intro">Samo oznaczenie zewnętrzne nie wystarcza. Dla rur o różnych grubościach ścian ten sam wymiar zewnętrzny może oznaczać inne światło. Poniższe wartości służą do zrozumienia skali różnic, a nie do zatwierdzania konkretnego produktu.</p>

        <table class="rk-pipe-comparison" aria-label="Porównanie przykładowych wymiarów rur wielowarstwowych">
          <thead><tr><th>Oznaczenie</th><th>Przykładowe d<sub>i</sub></th><th>Co zmienia się hydraulicznie?</th><th>Kiedy nie wolno kończyć analizy?</th></tr></thead>
          <tbody>
            <tr><td data-label="Oznaczenie"><strong>16 × 2 mm</strong></td><td data-label="Przykładowe di">12 mm</td><td data-label="Wpływ hydrauliczny">Bardzo małe pole przekroju wspólnej magistrali. Wzrost przepływu szybko podnosi prędkość i stratę liniową.</td><td data-label="Dalsza kontrola">Nawet krótki odcinek trzeba policzyć. To typowy wymiar pętli, nie automatycznie właściwa rura do całego rozdzielacza.</td></tr>
            <tr><td data-label="Oznaczenie"><strong>20 × 2 mm</strong></td><td data-label="Przykładowe di">16 mm</td><td data-label="Wpływ hydrauliczny">Większy przekrój niż 16 × 2, ale przy dużym sumarycznym przepływie opory mogą nadal rosnąć bardzo szybko.</td><td data-label="Dalsza kontrola">Wynik zależy szczególnie od długości pary przewodów i przepływu wszystkich jednocześnie pracujących pętli.</td></tr>
            <tr><td data-label="Oznaczenie"><strong>25 × 2,5 mm</strong></td><td data-label="Przykładowe di">20 mm</td><td data-label="Wpływ hydrauliczny">Mniejsza prędkość i strata niż w rurze o świetle 16 mm przy identycznym przepływie.</td><td data-label="Dalsza kontrola">Nie wolno zatwierdzać wyłącznie na podstawie liczby sekcji rozdzielacza albo krótkiej tabeli „do ilu pętli”.</td></tr>
            <tr><td data-label="Oznaczenie"><strong>32 × 3 mm</strong></td><td data-label="Przykładowe di">26 mm</td><td data-label="Wpływ hydrauliczny">Znacznie większe pole przekroju ogranicza prędkość i opory magistrali.</td><td data-label="Dalsza kontrola">Nadal trzeba sprawdzić rzeczywiste złączki, zawory, średnice przejść i punkt pracy pompy.</td></tr>
            <tr><td data-label="Oznaczenie"><strong>40 × 4 mm</strong></td><td data-label="Przykładowe di">32 mm</td><td data-label="Wpływ hydrauliczny">Może być potrzebna przy dużym przepływie albo długim wspólnym odcinku, ale zwiększa koszt i objętość instalacji.</td><td data-label="Dalsza kontrola">Większa rura nie jest automatycznie błędem ani gwarancją dobrego projektu całego obiegu.</td></tr>
          </tbody>
        </table>

        <div class="rk-pipe-note"><p>Więcej o zapisie wymiarów, średnicy wewnętrznej i zastosowaniu przewodów znajdziesz w opracowaniu o <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnicach rur w ogrzewaniu podłogowym</a>.</p></div>

        <h3>Dlaczego pole przekroju zmienia się tak mocno?</h3>
        <p>Pole przekroju jest proporcjonalne do kwadratu średnicy wewnętrznej. Zwiększenie światła z 16 do 20 mm nie oznacza tylko 25% więcej miejsca. Pole przekroju rośnie o około 56%. Zmienia to prędkość, liczbę Reynoldsa, współczynnik tarcia oraz jednostkową stratę ciśnienia.</p>
        <div class="rk-pipe-formula" aria-label="Wzór na prędkość przepływu">
          <strong>v = 4V̇ ÷ (π × d<sub>i</sub>²)</strong>
          <span>Do wzoru wstawia się przepływ w m³/s i średnicę wewnętrzną w metrach.</span>
        </div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-length">
        <span class="rk-pipe-kicker">Długość magistrali</span>
        <h2>Dlaczego odległość rozdzielacza od źródła zmienia wynik?</h2>
        <p class="rk-pipe-intro">Jednostkowa strata w Pa/m mówi, ile ciśnienia tracimy na jednym metrze rury. Pompa musi jednak pokonać stratę na całym wspólnym odcinku oraz na obiegu krytycznym.</p>

        <div class="rk-pipe-grid-3">
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">5 m w jedną stronę</span><h3>10 m pary przewodów</h3><p>Krótka droga może utrzymać łączną stratę na akceptowalnym poziomie, nawet gdy jednostkowy opór nie jest szczególnie niski.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">20 m w jedną stronę</span><h3>40 m pary przewodów</h3><p>Przy tej samej rurze i przepływie strata liniowa całej magistrali będzie czterokrotnie większa niż dla pary o długości 10 m.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Armatura</span><h3>Nie wszystko da się przeliczyć na metry</h3><p>Zawory, filtry, separatory i zwężenia mają własne charakterystyki. Najdokładniej uwzględnia się dane konkretnego elementu przy projektowym przepływie.</p></article>
        </div>

        <div class="rk-pipe-formula" aria-label="Równanie Darcy'ego-Weisbacha">
          <strong>Δp = λ × (L ÷ d<sub>i</sub>) × (ρv² ÷ 2) + Σζ × (ρv² ÷ 2)</strong>
          <span>Pierwsza część opisuje stratę liniową, druga opory miejscowe. Całkowity obieg zawiera również elementy niewystępujące w kalkulatorze.</span>
        </div>

        <p>Równanie Darcy’ego-Weisbacha można stosować do przepływu laminarnego i turbulentnego po dobraniu właściwego współczynnika tarcia. Straty na zaworach i kształtkach wymagają uwzględnienia współczynników oporu lub charakterystyk elementów. Zależności te omawia materiał dydaktyczny <a href="https://www2.latech.edu/~hhegab/pages/me354/Lab3/Lab3_minorlosses_Sp97.htm" target="_blank" rel="noopener nofollow">Louisiana Tech University</a>.</p>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-supply-return">
        <span class="rk-pipe-kicker">Zasilanie i powrót</span>
        <h2>Czy przepływ trzeba pomnożyć razy dwa?</h2>
        <p class="rk-pipe-intro"><strong>Nie.</strong> Jeżeli przez rozdzielacz przepływa 1,0 m³/h, taki sam strumień płynie przewodem zasilającym i powrotnym. Nie dodajemy ich do siebie przy doborze średnicy. Podwajamy natomiast długość odcinka, gdy obliczamy stratę na parze rur.</p>

        <div class="rk-pipe-flow-map" aria-label="Przebieg przepływu przez instalację">
          <div class="rk-pipe-flow-node">Źródło ciepła i pompa</div>
          <div class="rk-pipe-flow-node">Rura zasilająca<br>V̇ całkowite</div>
          <div class="rk-pipe-flow-node">Rozdzielacz<br>podział na pętle</div>
          <div class="rk-pipe-flow-node">Rura powrotna<br>V̇ całkowite</div>
        </div>

        <p>Na rozdzielaczu wspólny strumień dzieli się pomiędzy równoległe obwody. Przepływy pętli sumują się w przewodzie wspólnym, ale ich strat ciśnienia nie dodaje się tak, jakby wszystkie pętle były połączone szeregowo. Wysokość podnoszenia wyznacza droga najbardziej niekorzystna wraz z elementami wspólnymi.</p>
        <p>Budowę i zadania tego elementu szerzej opisuje artykuł o <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielaczu ogrzewania podłogowego</a>.</p>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-branches">
        <span class="rk-pipe-kicker">Kilka rozdzielaczy</span>
        <h2>Jedna średnica nie musi występować na całej magistrali</h2>
        <p class="rk-pipe-intro">Jeżeli wspólny przewód zasila kilka rozdzielaczy, przepływ zmienia się w kolejnych odcinkach. Pierwszy fragment przenosi sumę przepływów wszystkich gałęzi. Za odejściem do pierwszego rozdzielacza dalszy odcinek przenosi już mniejszy strumień.</p>

        <div class="rk-pipe-grid-3">
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Odcinek A</span><h3>Przed pierwszym rozgałęzieniem</h3><p>Rura przenosi przepływ wszystkich rozdzielaczy mogących pracować jednocześnie. Zwykle jest to najbardziej obciążony fragment magistrali.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Odcinek B</span><h3>Za odejściem części przepływu</h3><p>Do kolejnej gałęzi płynie tylko suma obwodów pozostających dalej. Średnicę można analizować oddzielnie dla każdego odcinka.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Droga krytyczna</span><h3>Nie zawsze prowadzi do największego rozdzielacza</h3><p>Może ją wyznaczyć daleka lokalizacja, długa pętla, zawór o dużym oporze albo niekorzystna kombinacja kilku elementów.</p></article>
        </div>

        <div class="rk-pipe-note is-warning"><p>Jeżeli źródło i obieg podłogowy są rozdzielone hydraulicznie, trzeba osobno analizować stronę źródła i stronę instalacji. Zobacz, jak działa <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgło hydrauliczne</a>.</p></div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-pump">
        <span class="rk-pipe-kicker">Cały punkt pracy</span>
        <h2>Średnica magistrali a pompa obiegowa i źródło ciepła</h2>
        <p class="rk-pipe-intro">Dobór rury oraz pompy jest ze sobą powiązany. Rura wpływa na charakterystykę instalacji, natomiast pompa musi wytworzyć wymagany przepływ przy ciśnieniu potrzebnym do pokonania drogi krytycznej.</p>

        <div class="rk-pipe-grid-2">
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Przepływ Q</span><h3>Nie wystarcza sam symbol pompy</h3><p>Oznaczenie 25/40 albo 25/60 nie potwierdza jeszcze punktu pracy. Potrzebna jest charakterystyka pompy i suma oporów dla konkretnej drogi hydraulicznej.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Wysokość H</span><h3>Nie sumuj oporów pętli równoległych</h3><p>Do wysokości podnoszenia przyjmuje się elementy wspólne i najbardziej wymagającą gałąź, a nie arytmetyczną sumę strat wszystkich pętli.</p></article>
        </div>

        <p>Więcej zależności znajdziesz w poradniku o <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompie obiegowej w podłogówce</a>. Jeżeli znasz przepływ i opory obiegu, możesz również użyć <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulatora doboru pompy obiegowej</a>.</p>

        <h3>Czy pompa ciepła wymaga innej średnicy niż kocioł?</h3>
        <p>Rodzaj urządzenia nie wybiera średnicy bezpośrednio. Dla tego samego przepływu, medium, temperatury i przebiegu instalacji rura zachowuje się hydraulicznie podobnie niezależnie od tego, czy wodę ogrzała pompa ciepła, kocioł gazowy czy inne źródło.</p>
        <p>Źródło wpływa jednak na projektowe temperatury, dostępne ΔT, minimalne wymagane przepływy, sposób wpięcia i automatykę. Te parametry mogą pośrednio zmienić przepływ, a więc również wynik doboru magistrali.</p>

        <div class="rk-pipe-note is-good"><p><strong>Najpierw wyznacz punkt pracy instalacji.</strong> Następnie dobierz średnice odcinków i sprawdź, czy pompa osiąga potrzebne Q oraz H z rozsądną rezerwą, bez przenoszenia całego problemu na najwyższy bieg urządzenia.</p></div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-fluid">
        <span class="rk-pipe-kicker">Woda a glikol</span>
        <h2>Dlaczego kalkulator nie przelicza instalacji z glikolem?</h2>
        <p class="rk-pipe-intro">Dodatek glikolu zmienia gęstość, ciepło właściwe i przede wszystkim lepkość medium. Wpływ zależy od rodzaju glikolu, stężenia oraz temperatury. Nie można bezpiecznie zastąpić tych danych jedną uniwersalną poprawką procentową.</p>

        <div class="rk-pipe-grid-3">
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Ciepło właściwe</span><h3>Inny przepływ dla tej samej mocy</h3><p>Roztwór może przenosić inną ilość energii na jednostkę masy niż woda, dlatego wzór z współczynnikiem 1,163 przestaje być właściwy.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Lepkość</span><h3>Inny współczynnik tarcia</h3><p>W niskiej temperaturze mieszanina może być znacznie bardziej lepka, co zmienia liczbę Reynoldsa i straty ciśnienia.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Stężenie</span><h3>Potrzebne są dane konkretnego medium</h3><p>Obliczenia powinny korzystać z tabel lub charakterystyk właściwych dla wybranego produktu i stężenia roboczego.</p></article>
        </div>

        <p>Jeżeli instalacja ma być zabezpieczona przed zamarzaniem, przeczytaj opracowanie <a href="https://projekt-ogrzewania.pl/glikol-w-ogrzewaniu-podlogowym-prawda-i-mity-ktore-musi-znac-kazdy-inwestor/">glikol w ogrzewaniu podłogowym — prawda i mity</a>. W takim przypadku wynik powyższego kalkulatora dla wody nie powinien być używany jako dobór końcowy.</p>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-errors">
        <span class="rk-pipe-kicker">Najczęstsze pomyłki</span>
        <h2>Błędy przy doborze rury zasilającej rozdzielacz</h2>
        <div class="rk-pipe-errors">
          <article class="rk-pipe-error"><b>Błąd 01</b><h3>Przepływ z liczby metrów pętli</h3><p>Długość wpływa na opór, lecz docelowy przepływ wynika z mocy i ΔT. Stały przelicznik l/min na metr rury nie opisuje każdej instalacji.</p></article>
          <article class="rk-pipe-error"><b>Błąd 02</b><h3>Średnica z samej liczby obwodów</h3><p>Dziesięć pętli może przenosić różną łączną moc w dwóch budynkach. Bez zsumowania przepływów nie wiadomo, jaki strumień niesie magistrala.</p></article>
          <article class="rk-pipe-error"><b>Błąd 03</b><h3>Kontrola wyłącznie prędkości</h3><p>Właściwa prędkość nie gwarantuje akceptowalnej straty na długiej parze przewodów. Potrzebne są oba kryteria.</p></article>
          <article class="rk-pipe-error"><b>Błąd 04</b><h3>Używanie średnicy zewnętrznej we wzorze</h3><p>Przepływ odbywa się wewnątrz przewodu. Grubość ścianki trzeba odjąć po obu stronach, a dokładny wymiar potwierdzić w danych rury.</p></article>
          <article class="rk-pipe-error"><b>Błąd 05</b><h3>Podwajanie przepływu zasilania i powrotu</h3><p>Obie rury niosą ten sam strumień. Do strat sumuje się ich długości, lecz nie mnoży przepływu przez dwa.</p></article>
          <article class="rk-pipe-error"><b>Błąd 06</b><h3>Pomijanie zaworów i filtra</h3><p>Krótki element o małym prześwicie może powodować istotny opór. Sama analiza prostego przewodu nie opisuje całej magistrali.</p></article>
          <article class="rk-pipe-error"><b>Błąd 07</b><h3>Automatyczne straszenie kawitacją</h3><p>Wysoka prędkość zwiększa opory i może sprzyjać hałasowi, ale kawitacja zależy także od lokalnego ciśnienia bezwzględnego, temperatury oraz warunków po stronie ssawnej pompy.</p></article>
          <article class="rk-pipe-error"><b>Błąd 08</b><h3>Założenie, że większa rura wychłodzi podłogę</h3><p>Jeśli pompa dostarcza wymagany przepływ, większy przekrój nie odbiera instalacji mocy. Zwykle obniża prędkość i opory, kosztem ceny, miejsca oraz większego zładu.</p></article>
        </div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-howto">
        <span class="rk-pipe-kicker">Procedura projektowa</span>
        <h2>Jak dobrać średnicę magistrali krok po kroku?</h2>
        <div class="rk-pipe-steps">
          <article class="rk-pipe-step"><h3>Ustal moc obsługiwaną przez rozdzielacz</h3><p>Skorzystaj z obciążeń cieplnych pomieszczeń i ustal, które obwody mogą pracować jednocześnie. Nie wyprowadzaj mocy wyłącznie z liczby sekcji.</p></article>
          <article class="rk-pipe-step"><h3>Przyjmij projektowe temperatury i ΔT</h3><p>Parametry zasilania oraz powrotu muszą być spójne z emisją podłogi i źródłem ciepła. ΔT wpływa bezpośrednio na wymagany przepływ.</p></article>
          <article class="rk-pipe-step"><h3>Oblicz przepływ całkowity</h3><p>Wyznacz go z mocy i właściwości medium albo zsumuj projektowe przepływy poszczególnych pętli.</p></article>
          <article class="rk-pipe-step"><h3>Podziel instalację na odcinki</h3><p>W systemie z kilkoma rozdzielaczami zaznacz miejsca rozgałęzień. Każdy fragment może przenosić inny strumień.</p></article>
          <article class="rk-pipe-step"><h3>Sprawdź rzeczywistą średnicę wewnętrzną</h3><p>Odczytaj wymiar i grubość ścianki konkretnej rury. Uwzględnij także średnice przejść w złączkach i armaturze.</p></article>
          <article class="rk-pipe-step"><h3>Policz prędkość oraz stratę liniową</h3><p>Porównaj kilka średnic w tych samych warunkach. Nie zatwierdzaj przewodu na podstawie tylko jednego parametru.</p></article>
          <article class="rk-pipe-step"><h3>Dodaj zasilanie, powrót i opory miejscowe</h3><p>Do długości przyjmij oba przewody. Dodaj charakterystyki zaworów, filtra, separatora, rozdzielacza i pozostałych elementów drogi krytycznej.</p></article>
          <article class="rk-pipe-step"><h3>Zestaw instalację z charakterystyką pompy</h3><p>Sprawdź, czy urządzenie osiąga wymagany przepływ przy obliczonym ciśnieniu oraz czy punkt pracy pozostaje w odpowiednim obszarze charakterystyki.</p></article>
        </div>

        <div class="rk-pipe-note is-good"><p>Profesjonalny dokument powinien przekazać wykonawcy nie tylko średnice, ale także <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">rzuty pętli, przepływy, straty ciśnienia, dobór rozdzielaczy i nastawy</a>.</p></div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-faq">
        <span class="rk-pipe-kicker">Pytania inwestorów i wykonawców</span>
        <h2>Jaka średnica rury do rozdzielacza — FAQ</h2>
        <div class="rk-pipe-faq">
          <details><summary>Jaka średnica rury do rozdzielacza z 10 pętlami?</summary><div class="rk-pipe-faq-answer"><p>Nie można jej poprawnie wyznaczyć z samej liczby pętli. Potrzebna jest suma projektowych przepływów albo moc obsługiwana przez rozdzielacz i projektowe ΔT. Następnie sprawdza się średnicę wewnętrzną, prędkość, długość pary przewodów i straty ciśnienia.</p></div></details>
          <details><summary>Rura 20 czy 25 mm do rozdzielacza podłogówki?</summary><div class="rk-pipe-faq-answer"><p>Porównanie wymaga znajomości średnic wewnętrznych, przepływu oraz długości. Rura 25 × 2,5 mm ma zwykle około 20 mm światła, a 20 × 2 mm około 16 mm. Różnica pola przekroju i oporu jest znacznie większa, niż sugeruje samo porównanie średnic zewnętrznych.</p></div></details>
          <details><summary>Kiedy stosuje się rurę 32 mm do rozdzielacza?</summary><div class="rk-pipe-faq-answer"><p>Może być uzasadniona przy większym przepływie, długim odcinku wspólnym albo wymagającym budżecie ciśnienia. Nie istnieje jednak uniwersalna liczba pętli, od której zawsze trzeba zastosować 32 mm. Wynik zależy od światła konkretnej rury i całej hydrauliki.</p></div></details>
          <details><summary>Czy długość pętli wpływa na średnicę rury zasilającej?</summary><div class="rk-pipe-faq-answer"><p>Pośrednio. Długość pętli wpływa na opór obiegu krytycznego, lecz nie wyznacza całkowitego przepływu. Wspólna magistrala przenosi sumę przepływów wynikających z mocy pętli i ΔT.</p></div></details>
          <details><summary>Czy przepływ na zasilaniu i powrocie trzeba zsumować?</summary><div class="rk-pipe-faq-answer"><p>Nie. Na zasilaniu i powrocie płynie ten sam strumień, dlatego do kontroli prędkości nie podwaja się przepływu. Przy obliczaniu strat sumuje się natomiast długość obu rur.</p></div></details>
          <details><summary>Jaka prędkość w rurze zasilającej jest prawidłowa?</summary><div class="rk-pipe-faq-answer"><p>Nie ma jednej wartości właściwej dla wszystkich instalacji. Projektant przyjmuje kryteria uwzględniające stratę ciśnienia, ryzyko hałasu, średnicę, rodzaj instalacji i pracę pompy. Kalkulator pozwala zmienić granicę prędkości, aby nie przedstawiać ustawienia domyślnego jako uniwersalnej normy.</p></div></details>
          <details><summary>Czy sama prędkość wystarczy do doboru średnicy?</summary><div class="rk-pipe-faq-answer"><p>Nie. Trzeba jeszcze obliczyć jednostkową stratę ciśnienia, pomnożyć ją przez długość zasilania i powrotu oraz dodać opory armatury. Dopiero taki wynik można zestawić z charakterystyką pompy i pozostałą częścią obiegu.</p></div></details>
          <details><summary>Czy większa rura może pogorszyć ogrzewanie podłogowe?</summary><div class="rk-pipe-faq-answer"><p>Nie z powodu samej mniejszej prędkości. Jeżeli wymagany przepływ jest zapewniony, większy przekrój zwykle zmniejsza stratę ciśnienia. Może natomiast zwiększyć koszt, zajęte miejsce, objętość wody i trudność montażu.</p></div></details>
          <details><summary>Czy pompa ciepła automatycznie wymaga większej rury?</summary><div class="rk-pipe-faq-answer"><p>Nie. O wyniku decyduje wymagany przepływ, który zależy między innymi od mocy i projektowego ΔT. Pompa ciepła może mieć wymagania minimalnego przepływu i pracować z innymi parametrami niż kocioł, dlatego wpływa na dobór pośrednio, ale nazwa źródła nie zastępuje obliczeń.</p></div></details>
          <details><summary>Czy kalkulator może dobrać pompę obiegową?</summary><div class="rk-pipe-faq-answer"><p>Nie w pełni. Pokazuje przepływ i orientacyjną stratę na magistrali, ale nie zna oporu pętli krytycznej, rozdzielacza, zaworów, filtra, źródła ani charakterystyki konkretnej pompy. Pełny dobór wymaga całej drogi hydraulicznej.</p></div></details>
          <details><summary>Czy wynik dla wody można zastosować do glikolu?</summary><div class="rk-pipe-faq-answer"><p>Nie bez przeliczenia właściwości medium. Glikol zmienia gęstość, ciepło właściwe i lepkość, a wpływ zależy od rodzaju, stężenia i temperatury roztworu.</p></div></details>
        </div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-sources" aria-label="Źródła techniczne">
        <span class="rk-pipe-kicker">Podstawa techniczna opracowania</span>
        <h2>Obliczenia hydrauliczne wymagają kompletu warunków</h2>
        <div class="rk-pipe-source-box">
          <p>Metodyka projektowania i wymiarowania wodnych systemów powierzchniowych jest opisana w <a href="https://www.iso.org/standard/74684.html" target="_blank" rel="noopener nofollow">ISO 11855-3:2021</a>. Norma nie sprowadza doboru przewodów do liczby pętli.</p>
          <p>Zależność pomiędzy mocą, przepływem, różnicą temperatur i ciepłem właściwym wynika z bilansu energii. Przykład wykorzystania tych wielkości w badaniach systemu hydronicznego znajduje się w publicznym opracowaniu <a href="https://www.nyserda.ny.gov/-/media/Project/Nyserda/Files/Publications/Research/Biomass-Solar-Wind/Outdoor-Wood-Hydronic-Heater-Test-Results.pdf" target="_blank" rel="noopener nofollow">NYSERDA</a>.</p>
          <p>Równanie Darcy’ego-Weisbacha i wpływ oporów miejscowych omawia materiał dydaktyczny <a href="https://www2.latech.edu/~hhegab/pages/me354/Lab3/Lab3_minorlosses_Sp97.htm" target="_blank" rel="noopener nofollow">Louisiana Tech University</a>. Kalkulator ma charakter edukacyjny i nie zastępuje projektu, danych technicznych elementów ani oceny instalacji na miejscu.</p>
        </div>
        <div class="rk-pipe-update">Ostatnia aktualizacja merytoryczna: 29 sierpnia 2026 r.</div>
      </section>
    </main>

    <section class="rk-pipe-author" id="rk-pipe-author" aria-label="Autor opracowania">
      <input type="radio" name="rk-pipe-author-tabs" id="rk-pipe-author-about" checked>
      <input type="radio" name="rk-pipe-author-tabs" id="rk-pipe-author-exp">
      <input type="radio" name="rk-pipe-author-tabs" id="rk-pipe-author-sites">

      <header class="rk-pipe-author-head">
        <div><span class="rk-pipe-kicker">Autor opracowania</span><h2>Robert Kucharski</h2><p>Projektant instalacji sanitarnych • specjalista HVAC i ogrzewania podłogowego</p></div>
        <span class="rk-pipe-author-mark">HYDRAULIKA • HVAC</span>
      </header>

      <div class="rk-pipe-author-layout">
        <aside class="rk-pipe-author-side">
          <div class="rk-pipe-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant ogrzewania podłogowego" width="600" height="600" loading="lazy" decoding="async"></div>
          <div class="rk-pipe-author-name">Robert Kucharski</div>
          <div class="rk-pipe-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
          <div class="rk-pipe-author-social-label">Znajdziesz mnie również:</div>
          <div class="rk-pipe-author-social" aria-label="Profile Roberta Kucharskiego w mediach społecznościowych">
            <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener nofollow me" aria-label="Robert Kucharski na LinkedIn" title="LinkedIn"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5.2 7.7H1.6V22h3.6V7.7ZM3.4 2A2.1 2.1 0 1 0 3.4 6.2 2.1 2.1 0 0 0 3.4 2ZM22.4 13.8c0-4.3-2.3-6.3-5.4-6.3a4.7 4.7 0 0 0-4.2 2.3V7.7H9.2V22h3.6v-7.1c0-1.9.4-3.7 2.7-3.7 2.3 0 2.3 2.1 2.3 3.8v7h3.6l1-8.2Z"></path></svg></a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="noopener nofollow me" aria-label="Projekt-Ogrzewania.pl na Facebooku" title="Facebook"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M14.2 22v-9h3l.5-3.5h-3.5V7.3c0-1 .3-1.7 1.8-1.7h1.9V2.5c-.3 0-1.5-.1-2.8-.1-2.8 0-4.7 1.7-4.7 4.8v2.3H7.2V13h3.2v9h3.8Z"></path></svg></a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="noopener nofollow me" aria-label="Projekt HVAC w serwisie X" title="X"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.9 2H22l-6.8 7.8L23.2 22H17l-4.9-6.4L6.5 22H3.3l7.3-8.4L2.8 2h6.4l4.4 5.8L18.9 2Zm-1.1 17.8h1.7L8.3 4.1H6.5l11.3 15.7Z"></path></svg></a>
          </div>
        </aside>

        <div class="rk-pipe-author-main">
          <blockquote class="rk-pipe-author-quote"><p>„Średnica magistrali nie wynika z liczby pętli. Najpierw ustalamy przepływ, później sprawdzamy prędkość, straty ciśnienia i współpracę całej drogi hydraulicznej z pompą.”</p></blockquote>
          <div class="rk-pipe-author-tabs" role="tablist" aria-label="Informacje o autorze">
            <label class="rk-pipe-author-tab" for="rk-pipe-author-about">O autorze</label>
            <label class="rk-pipe-author-tab" for="rk-pipe-author-exp">Doświadczenie</label>
            <label class="rk-pipe-author-tab" for="rk-pipe-author-sites">Portale</label>
          </div>
          <div class="rk-pipe-author-panel rk-pipe-author-panel-about"><p>Projektuję wodne ogrzewanie podłogowe, łącząc obliczenia strat ciepła z doborem temperatur, rozstawów, przepływów, długości pętli, średnic magistrali, strat ciśnienia i nastaw rozdzielaczy.</p></div>
          <div class="rk-pipe-author-panel rk-pipe-author-panel-exp"><p>Dokumentacja wykonawcza obejmuje przebieg instalacji oraz parametry hydrauliczne. Dzięki temu średnice i pompy nie są wybierane z ogólnej tabeli, lecz z punktu pracy konkretnego budynku.</p></div>
          <div class="rk-pipe-author-panel rk-pipe-author-panel-sites"><p>Jestem właścicielem trzech serwisów branżowych. Powiązanie portali podaję jawnie, aby czytelnik znał autorstwo i kontekst linkowania.</p><div class="rk-pipe-site-links"><a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a><a href="https://remont.biz.pl/" target="_blank" rel="noopener nofollow">Remont.biz.pl</a><a href="https://sobir.pl/" target="_blank" rel="noopener nofollow">Sobir.pl</a></div></div>
        </div>
      </div>
    </section>

    <section class="rk-pipe-final-cta" aria-label="Kompletny projekt instalacji z obliczeniami hydraulicznymi">
      <span class="rk-pipe-kicker" style="color:#7af0ff">Zamknij hydraulikę przed zakupem materiałów</span>
      <h2>Otrzymaj projekt z obliczoną magistralą, pompą i każdą pętlą</h2>
      <p>Dokumentacja łączy obciążenia cieplne, temperatury, rozstawy rur, długości obwodów, przepływy, straty ciśnienia, średnice odcinków, dobór rozdzielaczy i nastawy. Instalator otrzymuje jeden spójny układ zamiast niezależnych decyzji podejmowanych na budowie.</p>
      <a class="rk-pipe-cta-button rk-pipe-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów kompletny projekt ogrzewania podłogowego</a>
      <small class="rk-pipe-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
    </section>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#article",
      "url": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/",
      "headline": "Jaka średnica rury zasilającej rozdzielacz ogrzewania podłogowego? Kalkulator hydrauliczny",
      "description": "Kalkulator przepływu, prędkości i strat ciśnienia pomagający porównać średnice rur zasilających rozdzielacz ogrzewania podłogowego.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-29",
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#webpage"},
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "about": [
        {"@type": "Thing", "name": "Średnica rury zasilającej rozdzielacz"},
        {"@type": "Thing", "name": "Ogrzewanie podłogowe"},
        {"@type": "Thing", "name": "Strata ciśnienia"},
        {"@type": "Thing", "name": "Przepływ wody"}
      ],
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"}
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#webpage",
      "url": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/",
      "name": "Jaka średnica rury do rozdzielacza? Kalkulator przepływu i strat ciśnienia",
      "description": "Jak dobrać średnicę wewnętrzną przewodu do przepływu, długości magistrali i dostępnego ciśnienia pompy.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-29",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#breadcrumb"},
      "mainEntity": [
        {"@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#application"},
        {"@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#howto"},
        {"@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#faq"}
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#breadcrumb",
      "itemListElement": [
        {"@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/"},
        {"@type": "ListItem", "position": 2, "name": "Blog", "item": "https://projekt-ogrzewania.pl/blog/"},
        {"@type": "ListItem", "position": 3, "name": "Średnica rury zasilającej rozdzielacz", "item": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/"}
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#application",
      "name": "Kalkulator hydrauliczny rury zasilającej rozdzielacz",
      "url": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#rk-pipe-calculator",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "Obsługa JavaScript i Canvas",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "description": "Narzędzie oblicza przepływ wody z mocy i delta T albo przyjmuje znany przepływ, a następnie porównuje prędkość i straty ciśnienia sześciu średnic rur."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#howto",
      "name": "Jak dobrać średnicę rury zasilającej rozdzielacz ogrzewania podłogowego?",
      "description": "Kolejność obliczania przepływu, średnicy, prędkości, strat ciśnienia i kontroli pompy obiegowej.",
      "inLanguage": "pl-PL",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Ustal moc rozdzielacza", "text": "Skorzystaj z obciążeń cieplnych pomieszczeń i ustal moc obsługiwaną przez rozdzielacz."},
        {"@type": "HowToStep", "position": 2, "name": "Przyjmij temperatury i delta T", "text": "Ustal parametry zasilania i powrotu spójne z podłogą oraz źródłem ciepła."},
        {"@type": "HowToStep", "position": 3, "name": "Oblicz przepływ całkowity", "text": "Wyznacz przepływ z mocy i właściwości medium albo zsumuj projektowe przepływy pętli."},
        {"@type": "HowToStep", "position": 4, "name": "Podziel instalację na odcinki", "text": "Zaznacz rozgałęzienia i przypisz każdemu fragmentowi przepływ przenoszony w projektowym punkcie pracy."},
        {"@type": "HowToStep", "position": 5, "name": "Sprawdź średnice wewnętrzne", "text": "Odczytaj światło konkretnych rur i uwzględnij zwężenia w złączkach oraz armaturze."},
        {"@type": "HowToStep", "position": 6, "name": "Policz prędkość i stratę liniową", "text": "Porównaj kilka średnic przy identycznym przepływie i właściwościach medium."},
        {"@type": "HowToStep", "position": 7, "name": "Dodaj zasilanie, powrót i armaturę", "text": "Uwzględnij długość obu rur oraz opory elementów miejscowych całej drogi krytycznej."},
        {"@type": "HowToStep", "position": 8, "name": "Sprawdź punkt pracy pompy", "text": "Zestaw wymagany przepływ i ciśnienie z charakterystyką pompy obiegowej."}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {"@type": "Question", "name": "Jaka średnica rury do rozdzielacza z 10 pętlami?", "acceptedAnswer": {"@type": "Answer", "text": "Nie można jej wyznaczyć z samej liczby pętli. Potrzebna jest suma projektowych przepływów albo moc i projektowe delta T, a następnie kontrola średnicy wewnętrznej, prędkości i strat ciśnienia."}},
        {"@type": "Question", "name": "Rura 20 czy 25 mm do rozdzielacza podłogówki?", "acceptedAnswer": {"@type": "Answer", "text": "Porównanie wymaga znajomości średnic wewnętrznych, przepływu oraz długości. Średnica zewnętrzna nie wystarcza do oceny prędkości i oporu."}},
        {"@type": "Question", "name": "Kiedy stosuje się rurę 32 mm do rozdzielacza?", "acceptedAnswer": {"@type": "Answer", "text": "Może być uzasadniona przy większym przepływie, długim odcinku wspólnym lub ograniczonym budżecie ciśnienia. Nie istnieje uniwersalna liczba pętli wymagająca zawsze 32 mm."}},
        {"@type": "Question", "name": "Czy długość pętli wpływa na średnicę rury zasilającej?", "acceptedAnswer": {"@type": "Answer", "text": "Pośrednio wpływa na opór obiegu krytycznego, ale nie wyznacza całkowitego przepływu magistrali. Przepływ wynika z mocy i delta T."}},
        {"@type": "Question", "name": "Czy przepływ na zasilaniu i powrocie trzeba zsumować?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. W obu rurach płynie ten sam strumień. Przy kontroli strat sumuje się długość zasilania i powrotu, a nie ich przepływy."}},
        {"@type": "Question", "name": "Jaka prędkość w rurze zasilającej jest prawidłowa?", "acceptedAnswer": {"@type": "Answer", "text": "Nie ma jednej wartości dla każdej instalacji. Kryterium dobiera się wraz ze stratą ciśnienia, ryzykiem hałasu, rodzajem instalacji i punktem pracy pompy."}},
        {"@type": "Question", "name": "Czy sama prędkość wystarczy do doboru średnicy?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Trzeba obliczyć stratę liniową, uwzględnić długość obu rur i armaturę, a wynik zestawić z charakterystyką pompy."}},
        {"@type": "Question", "name": "Czy większa rura może pogorszyć ogrzewanie podłogowe?", "acceptedAnswer": {"@type": "Answer", "text": "Nie z powodu samej mniejszej prędkości. Większy przekrój zwykle zmniejsza stratę ciśnienia, ale zwiększa koszt, miejsce i objętość wody."}},
        {"@type": "Question", "name": "Czy pompa ciepła automatycznie wymaga większej rury?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Decyduje wymagany przepływ i opory. Źródło może pośrednio zmienić wynik przez projektowe delta T, minimalny przepływ i sposób wpięcia."}},
        {"@type": "Question", "name": "Czy kalkulator może dobrać pompę obiegową?", "acceptedAnswer": {"@type": "Answer", "text": "Nie w pełni. Nie zna oporu pętli krytycznej, rozdzielacza, zaworów, filtra, źródła ani charakterystyki konkretnej pompy."}},
        {"@type": "Question", "name": "Czy wynik dla wody można zastosować do glikolu?", "acceptedAnswer": {"@type": "Answer", "text": "Nie bez przeliczenia właściwości medium. Glikol zmienia gęstość, ciepło właściwe i lepkość zależnie od rodzaju, stężenia i temperatury."}}
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/robert-kucharski/",
      "jobTitle": "Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego",
      "worksFor": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "affiliation": [
        {"@id": "https://projekt-ogrzewania.pl/#organization"},
        {"@id": "https://remont.biz.pl/#organization"},
        {"@id": "https://sobir.pl/#organization"}
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt-Ogrzewania.pl",
      "inLanguage": "pl-PL",
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"}
    }
  ]
}
</script>

<script>
(function () {
  "use strict";

  var root = document.getElementById("rk-pipe-guide");
  if (!root) return;

  var byId = function (id) { return document.getElementById(id); };
  var clamp = function (value, minimum, maximum) { return Math.min(maximum, Math.max(minimum, value)); };
  var allTrue = function (values) { return values.every(Boolean); };
  var numberFrom = function (id, fallback, minimum, maximum) {
    var value = parseFloat(byId(id).value);
    if (!Number.isFinite(value)) value = fallback;
    return clamp(value, minimum, maximum);
  };
  var format = function (value, digits) {
    return Number(value).toLocaleString("pl-PL", {minimumFractionDigits: digits, maximumFractionDigits: digits});
  };

  var pipes = [
    {label: "16 × 2", innerMm: 12, color: "#9c3a32"},
    {label: "20 × 2", innerMm: 16, color: "#d94b3d"},
    {label: "25 × 2,5", innerMm: 20, color: "#e6ad2f"},
    {label: "32 × 3", innerMm: 26, color: "#078fbe"},
    {label: "40 × 4", innerMm: 32, color: "#16836b"},
    {label: "50 × 4,5", innerMm: 41, color: "#695ac9"}
  ];

  var waterTable = [
    {t: 10, rho: 999.7, mu: 1.307e-3},
    {t: 20, rho: 998.2, mu: 1.002e-3},
    {t: 30, rho: 995.7, mu: 0.798e-3},
    {t: 40, rho: 992.2, mu: 0.653e-3},
    {t: 50, rho: 988.1, mu: 0.547e-3},
    {t: 60, rho: 983.2, mu: 0.466e-3},
    {t: 70, rho: 977.8, mu: 0.404e-3}
  ];

  var waterProperties = function (temperature) {
    var t = clamp(temperature, 10, 70);
    for (var i = 0; i < waterTable.length - 1; i += 1) {
      var lower = waterTable[i];
      var upper = waterTable[i + 1];
      if (allTrue([t >= lower.t, t <= upper.t])) {
        var ratio = (t - lower.t) / (upper.t - lower.t);
        return {
          rho: lower.rho + ratio * (upper.rho - lower.rho),
          mu: lower.mu + ratio * (upper.mu - lower.mu)
        };
      }
    }
    return {rho: waterTable[0].rho, mu: waterTable[0].mu};
  };

  var hydraulicResult = function (flowM3h, innerMm, properties) {
    var diameter = innerMm / 1000;
    var flowM3s = flowM3h / 3600;
    var area = Math.PI * diameter * diameter / 4;
    var velocity = flowM3s / area;
    var reynolds = properties.rho * velocity * diameter / properties.mu;
    var roughness = 0.000007;
    var friction;

    if (reynolds <= 0) {
      friction = 0;
    } else if (reynolds < 2300) {
      friction = 64 / reynolds;
    } else {
      var turbulent = 1 / Math.pow(-1.8 * Math.log10(Math.pow((roughness / diameter) / 3.7, 1.11) + 6.9 / reynolds), 2);
      if (reynolds < 4000) {
        var laminarAtPoint = 64 / reynolds;
        var blend = (reynolds - 2300) / 1700;
        friction = laminarAtPoint * (1 - blend) + turbulent * blend;
      } else {
        friction = turbulent;
      }
    }

    var gradient = friction / diameter * properties.rho * velocity * velocity / 2;
    return {velocity: velocity, reynolds: reynolds, friction: friction, gradient: gradient};
  };

  var modeInputs = root.querySelectorAll('input[name="rk-pipe-mode"]');
  var powerField = byId("rk-pipe-power-field");
  var flowField = byId("rk-pipe-flow-field");
  var flowUnitField = byId("rk-pipe-flow-unit-field");
  var flowUnit = byId("rk-pipe-flow-unit");
  var flowUnitLabel = byId("rk-pipe-flow-unit-label");
  var resultsBody = byId("rk-pipe-results-body");
  var lastState = null;

  var selectedMode = function () {
    var checked = root.querySelector('input[name="rk-pipe-mode"]:checked');
    return checked ? checked.value : "power";
  };

  var updateMode = function () {
    var isPower = selectedMode() === "power";
    powerField.hidden = !isPower;
    flowField.hidden = isPower;
    flowUnitField.hidden = isPower;
    byId("rk-pipe-power").disabled = !isPower;
    byId("rk-pipe-known-flow").disabled = isPower;
  };

  var updateFlowUnitLabel = function () {
    flowUnitLabel.textContent = flowUnit.value === "m3h" ? "m³/h" : "l/min";
  };

  var calculate = function () {
    updateMode();
    updateFlowUnitLabel();

    var deltaT = numberFrom("rk-pipe-delta", 7, 3, 20);
    var power = numberFrom("rk-pipe-power", 8, 0.5, 50);
    var knownFlow = parseFloat(byId("rk-pipe-known-flow").value);
    if (!Number.isFinite(knownFlow)) knownFlow = flowUnit.value === "m3h" ? 0.98 : 16.4;
    knownFlow = flowUnit.value === "m3h" ? clamp(knownFlow, 0.01, 15) : clamp(knownFlow, 0.1, 250);
    var oneWayLength = numberFrom("rk-pipe-distance", 10, 1, 150);
    var temperature = numberFrom("rk-pipe-temp", 32, 10, 70);
    var extraLoss = numberFrom("rk-pipe-extra", 5, 0, 100);
    var maxSpeed = numberFrom("rk-pipe-max-speed", 0.8, 0.2, 2);
    var maxGradient = numberFrom("rk-pipe-max-gradient", 200, 30, 1000);
    var maxTotalLoss = numberFrom("rk-pipe-max-total", 25, 2, 100);
    var flowM3h;

    if (selectedMode() === "power") {
      flowM3h = power / (1.163 * deltaT);
    } else {
      flowM3h = flowUnit.value === "m3h" ? knownFlow : knownFlow * 0.06;
      power = flowM3h * 1.163 * deltaT;
    }

    flowM3h = clamp(flowM3h, 0.006, 15);
    var flowLmin = flowM3h * 1000 / 60;
    var pairLength = oneWayLength * 2;
    var properties = waterProperties(temperature);
    var rows = [];
    var recommendation = null;

    pipes.forEach(function (pipe) {
      var result = hydraulicResult(flowM3h, pipe.innerMm, properties);
      var lineLossKpa = result.gradient * pairLength / 1000;
      var totalLossKpa = lineLossKpa + extraLoss;
      var passes = allTrue([result.velocity <= maxSpeed, result.gradient <= maxGradient, totalLossKpa <= maxTotalLoss]);
      var borderline = allTrue([!passes, result.velocity <= maxSpeed * 1.15, result.gradient <= maxGradient * 1.25, totalLossKpa <= maxTotalLoss * 1.25]);
      var status = passes ? "pass" : (borderline ? "borderline" : "fail");
      var row = {pipe: pipe, result: result, lineLossKpa: lineLossKpa, totalLossKpa: totalLossKpa, status: status};
      rows.push(row);
      if (passes) {
        if (!recommendation) recommendation = row;
      }
    });

    byId("rk-pipe-result-flow").textContent = format(flowM3h, 2) + " m³/h";
    byId("rk-pipe-result-lmin").textContent = format(flowLmin, 1) + " l/min";
    byId("rk-pipe-result-power").textContent = format(power, 1) + " kW";
    byId("rk-pipe-result-length").textContent = format(pairLength, 1) + " m";
    byId("rk-pipe-scheme-flow").textContent = format(flowM3h, 2) + " m³/h w obu rurach";
    byId("rk-pipe-scheme-length").textContent = format(oneWayLength, 1) + " m + " + format(oneWayLength, 1) + " m";

    resultsBody.innerHTML = rows.map(function (row) {
      var statusLabel = row.status === "pass" ? "spełnia" : (row.status === "borderline" ? "graniczny" : "przekracza");
      var statusClass = row.status === "pass" ? "" : (row.status === "borderline" ? " is-borderline" : " is-fail");
      var recommendedClass = recommendation === row ? " class=\"is-recommended\"" : "";
      var regime = row.result.reynolds < 2300 ? "laminarny" : (row.result.reynolds < 4000 ? "przejściowy" : "turbulentny");
      return "<tr" + recommendedClass + ">" +
        "<td data-label=\"Rura\"><strong>" + row.pipe.label + " mm</strong>" + (recommendation === row ? "<br><small>najmniejsza spełniająca</small>" : "") + "</td>" +
        "<td data-label=\"Średnica wewnętrzna\">" + format(row.pipe.innerMm, 0) + " mm</td>" +
        "<td data-label=\"Prędkość\">" + format(row.result.velocity, 2) + " m/s</td>" +
        "<td data-label=\"Re / charakter przepływu\">" + format(row.result.reynolds, 0) + "<br><small>" + regime + "</small></td>" +
        "<td data-label=\"Strata liniowa\">" + format(row.result.gradient, 0) + " Pa/m</td>" +
        "<td data-label=\"Para + armatura\">" + format(row.totalLossKpa, 1) + " kPa</td>" +
        "<td data-label=\"Ocena\"><span class=\"rk-pipe-status" + statusClass + "\">" + statusLabel + "</span></td>" +
      "</tr>";
    }).join("");

    var verdict = byId("rk-pipe-verdict");
    verdict.className = "rk-pipe-verdict";
    if (recommendation) {
      var speedOnlyPasses = rows.some(function (row) { return allTrue([row.result.velocity <= maxSpeed, row.result.gradient > maxGradient]); });
      var totalBudgetFailures = rows.some(function (row) { return allTrue([row.result.velocity <= maxSpeed, row.result.gradient <= maxGradient, row.totalLossKpa > maxTotalLoss]); });
      byId("rk-pipe-verdict-title").textContent = "Najmniejszy wariant spełniający ustawione kryteria: " + recommendation.pipe.label + " mm";
      byId("rk-pipe-verdict-text").textContent = "Przy przepływie " + format(flowM3h, 2) + " m³/h prędkość wynosi " + format(recommendation.result.velocity, 2) + " m/s, strata liniowa " + format(recommendation.result.gradient, 0) + " Pa/m, a para przewodów z wpisaną armaturą powoduje około " + format(recommendation.totalLossKpa, 1) + " kPa straty. " + (speedOnlyPasses ? "Co najmniej jeden mniejszy wariant przechodzi kontrolę prędkości, lecz przekracza ustawiony limit Pa/m. " : "") + (totalBudgetFailures ? "Co najmniej jeden wariant spełnia limity m/s i Pa/m, ale przez długość oraz armaturę przekracza łączny budżet ciśnienia. " : "") + "To wynik przesiewowy, nie zatwierdzenie całej instalacji.";
    } else {
      verdict.classList.add("is-danger");
      byId("rk-pipe-verdict-title").textContent = "Żaden wariant nie spełnia obu ustawionych kryteriów";
      byId("rk-pipe-verdict-text").textContent = "Zwiększ zakres analizowanych średnic albo zweryfikuj przepływ, długość i przyjęte limity. Nie podnoś granic tylko po to, aby uzyskać pozytywny komunikat.";
    }

    lastState = {flowM3h: flowM3h, temperature: temperature, properties: properties, maxGradient: maxGradient, rows: rows, power: power, deltaT: deltaT};
    drawChart();
  };

  var drawChart = function () {
    if (!lastState) return;
    var canvas = byId("rk-pipe-chart");
    var rect = canvas.getBoundingClientRect();
    var width = Math.max(300, rect.width || 620);
    var height = Math.max(300, rect.height || 370);
    var ratio = Math.min(window.devicePixelRatio || 1, 2);
    canvas.width = Math.round(width * ratio);
    canvas.height = Math.round(height * ratio);
    var ctx = canvas.getContext("2d");
    ctx.setTransform(ratio, 0, 0, ratio, 0, 0);
    ctx.clearRect(0, 0, width, height);

    var margin = {left: width < 500 ? 52 : 66, right: 18, top: 24, bottom: 48};
    var plotW = width - margin.left - margin.right;
    var plotH = height - margin.top - margin.bottom;
    var xMax = Math.max(2, lastState.flowM3h * 1.75);
    var chartPipes = [pipes[1], pipes[2], pipes[3], pipes[4]];
    var maxAtEnd = 0;
    chartPipes.forEach(function (pipe) {
      maxAtEnd = Math.max(maxAtEnd, hydraulicResult(xMax, pipe.innerMm, lastState.properties).gradient);
    });
    var yMax = Math.max(lastState.maxGradient * 1.5, Math.min(2500, maxAtEnd * 1.05));
    yMax = Math.ceil(yMax / 100) * 100;

    var x = function (value) { return margin.left + (value / xMax) * plotW; };
    var y = function (value) { return margin.top + plotH - (Math.min(value, yMax) / yMax) * plotH; };

    ctx.fillStyle = "#ffffff";
    ctx.fillRect(0, 0, width, height);
    ctx.strokeStyle = "#d7e4e9";
    ctx.lineWidth = 1;
    ctx.font = "11px Inter, system-ui, sans-serif";
    ctx.fillStyle = "#6b7e8a";

    for (var gy = 0; gy <= 5; gy += 1) {
      var yValue = yMax * gy / 5;
      var py = y(yValue);
      ctx.beginPath();
      ctx.moveTo(margin.left, py);
      ctx.lineTo(width - margin.right, py);
      ctx.stroke();
      ctx.textAlign = "right";
      ctx.textBaseline = "middle";
      ctx.fillText(Math.round(yValue) + "", margin.left - 8, py);
    }

    for (var gx = 0; gx <= 5; gx += 1) {
      var xValue = xMax * gx / 5;
      var px = x(xValue);
      ctx.beginPath();
      ctx.moveTo(px, margin.top);
      ctx.lineTo(px, margin.top + plotH);
      ctx.stroke();
      ctx.textAlign = "center";
      ctx.textBaseline = "top";
      ctx.fillText(format(xValue, 1), px, margin.top + plotH + 8);
    }

    ctx.save();
    ctx.translate(15, margin.top + plotH / 2);
    ctx.rotate(-Math.PI / 2);
    ctx.textAlign = "center";
    ctx.fillStyle = "#475967";
    ctx.font = "600 11px Inter, system-ui, sans-serif";
    ctx.fillText("Strata liniowa [Pa/m]", 0, 0);
    ctx.restore();
    ctx.textAlign = "center";
    ctx.fillText("Przepływ [m³/h]", margin.left + plotW / 2, height - 9);

    var limitY = y(lastState.maxGradient);
    ctx.save();
    ctx.setLineDash([6, 5]);
    ctx.strokeStyle = "#8b9ca5";
    ctx.beginPath();
    ctx.moveTo(margin.left, limitY);
    ctx.lineTo(width - margin.right, limitY);
    ctx.stroke();
    ctx.restore();
    ctx.textAlign = "left";
    ctx.fillStyle = "#6b7e8a";
    ctx.fillText("limit " + Math.round(lastState.maxGradient) + " Pa/m", margin.left + 6, limitY - 7);

    chartPipes.forEach(function (pipe) {
      ctx.beginPath();
      ctx.strokeStyle = pipe.color;
      ctx.lineWidth = 3;
      for (var step = 0; step <= 100; step += 1) {
        var flow = Math.max(0.001, xMax * step / 100);
        var gradient = hydraulicResult(flow, pipe.innerMm, lastState.properties).gradient;
        var px = x(flow);
        var py = y(gradient);
        if (step === 0) ctx.moveTo(px, py); else ctx.lineTo(px, py);
      }
      ctx.stroke();
    });

    var userX = x(lastState.flowM3h);
    ctx.save();
    ctx.setLineDash([7, 5]);
    ctx.strokeStyle = "#695ac9";
    ctx.lineWidth = 2;
    ctx.beginPath();
    ctx.moveTo(userX, margin.top);
    ctx.lineTo(userX, margin.top + plotH);
    ctx.stroke();
    ctx.restore();
    ctx.textAlign = userX > width * 0.7 ? "right" : "left";
    ctx.fillStyle = "#695ac9";
    ctx.font = "700 11px Inter, system-ui, sans-serif";
    ctx.fillText("Twój przepływ: " + format(lastState.flowM3h, 2), userX + (userX > width * 0.7 ? -7 : 7), margin.top + 13);
  };

  modeInputs.forEach(function (input) { input.addEventListener("change", calculate); });
  var previousFlowUnit = flowUnit.value;
  flowUnit.addEventListener("change", function () {
    var knownFlowInput = byId("rk-pipe-known-flow");
    var value = parseFloat(knownFlowInput.value);
    if (Number.isFinite(value)) {
      if (flowUnit.value !== previousFlowUnit) {
        value = flowUnit.value === "m3h" ? value * 0.06 : value / 0.06;
        knownFlowInput.value = flowUnit.value === "m3h" ? value.toFixed(2) : value.toFixed(1);
      }
    }
    knownFlowInput.min = flowUnit.value === "m3h" ? "0.01" : "0.1";
    knownFlowInput.max = flowUnit.value === "m3h" ? "15" : "250";
    knownFlowInput.step = flowUnit.value === "m3h" ? "0.01" : "0.1";
    previousFlowUnit = flowUnit.value;
    calculate();
  });
  root.querySelectorAll("#rk-pipe-calculator input, #rk-pipe-calculator select").forEach(function (field) {
    if (field === flowUnit) return;
    field.addEventListener("input", calculate);
    field.addEventListener("change", calculate);
  });
  byId("rk-pipe-calculate").addEventListener("click", calculate);

  var resizeTimer;
  window.addEventListener("resize", function () {
    window.clearTimeout(resizeTimer);
    resizeTimer = window.setTimeout(drawChart, 120);
  });

  var progress = byId("rk-pipe-progress");
  var updateProgress = function () {
    var rect = root.getBoundingClientRect();
    var passed = -rect.top;
    var total = Math.max(1, root.offsetHeight - window.innerHeight);
    progress.style.width = clamp(passed / total * 100, 0, 100) + "%";
  };
  window.addEventListener("scroll", updateProgress, {passive: true});

  var faqItems = root.querySelectorAll(".rk-pipe-faq details");
  faqItems.forEach(function (item) {
    item.addEventListener("toggle", function () {
      if (!item.open) return;
      faqItems.forEach(function (other) { if (other !== item) other.open = false; });
    });
  });

  root.querySelectorAll(".rk-pipe-sales-cta").forEach(function (link) {
    link.addEventListener("click", function () {
      window.dataLayer = window.dataLayer || [];
      window.dataLayer.push({event: "rk_pipe_project_cta", cta_text: link.textContent.trim()});
    });
  });

  calculate();
  updateProgress();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">Jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego? &#8211; Kalkulator.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
