<?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 energooszczędne ogrzewanie - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/tag/energooszczedne-ogrzewanie/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/tag/energooszczedne-ogrzewanie/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Sun, 31 May 2026 09:42:43 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa energooszczędne ogrzewanie - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/energooszczedne-ogrzewanie/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Siłowniki termoelektryczne na rozdzielaczach.</title>
		<link>https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 22 Jan 2026 08:46:44 +0000</pubDate>
				<category><![CDATA[Automatyka domowa]]></category>
		<category><![CDATA[Automatyka grzewcza]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Inteligentny dom]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Sterowanie ogrzewaniem]]></category>
		<category><![CDATA[Sterowniki do podłogówki]]></category>
		<category><![CDATA[automatyka grzewcza]]></category>
		<category><![CDATA[energooszczędne ogrzewanie]]></category>
		<category><![CDATA[instalacje co]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[rozdzielacz ogrzewania]]></category>
		<category><![CDATA[siłowniki termoelektryczne]]></category>
		<category><![CDATA[sterowanie strefowe]]></category>
		<category><![CDATA[termostat pokojowy]]></category>
		<category><![CDATA[zawory rozdzielacza]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3265</guid>

					<description><![CDATA[<p>W nowoczesnych instalacjach grzewczych liczy się nie tylko źródło ciepła, ale precyzja jego dystrybucji. Siłowniki termoelektryczne na rozdzielaczach są cichymi strażnikami komfortu, które decydują, kiedy i gdzie ciepło faktycznie trafia do podłogi lub grzejnika. Ten artykuł pokazuje, jak działają te niepozorne elementy, jakie mają parametry techniczne, gdzie są niezastąpione i dlaczego ich właściwy dobór jest kluczowy dla efektywności energetycznej całego systemu grzewczego – od małych domów po rozbudowane instalacje strefowe.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">Siłowniki termoelektryczne na rozdzielaczach.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-panel: #1e293b;
    --rk-intro-primary: #06b6d4; /* Cyjan - technologia */
    --rk-intro-primary-dark: #0891b2;
    --rk-intro-primary-light: #cffafe;
    --rk-intro-accent: #10b981; /* Emerald - oszczędność */
    --rk-intro-bg: #f8fafc;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #334155;
    --rk-intro-muted: #64748b;
}

.rk-intro-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(6, 182, 212, 0.15);
    border: 1px solid rgba(6, 182, 212, 0.2);
    overflow: hidden;
}

/* Sekcja Hook & Header */
.rk-intro-header {
    background: linear-gradient(135deg, var(--rk-intro-dark) 0%, #164e63 100%);
    padding: 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-intro-primary);
}

.rk-intro-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(6, 182, 212, 0.2);
    color: #67e8f9;
    padding: 8px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 25px;
    border: 1px solid rgba(103, 232, 249, 0.3);
}

.rk-intro-header h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 25px 0;
    line-height: 1.3;
}

.rk-intro-hook {
    font-size: 18px;
    font-weight: 700;
    color: var(--rk-intro-primary-light);
    margin: 0 0 25px 0;
    line-height: 1.6;
    border-left: 4px solid var(--rk-intro-primary);
    padding-left: 20px;
}

.rk-intro-definition {
    color: #cbd5e1;
    font-size: 16px;
    line-height: 1.8;
    margin: 0;
    font-weight: 400;
}

.rk-intro-link-light {
    color: #67e8f9;
    text-decoration: none;
    border-bottom: 1px dotted #67e8f9;
    font-weight: 700;
    transition: 0.3s;
}
.rk-intro-link-light:hover { color: #ffffff; border-bottom-style: solid; }

/* Sekcja ROI / Korzyści */
.rk-intro-roi {
    background: #ecfdf5;
    padding: 35px 50px;
    border-bottom: 1px solid #d1fae5;
    display: flex;
    align-items: center;
    gap: 30px;
}

.rk-roi-icon-box {
    width: 80px;
    height: 80px;
    background: #ffffff;
    border: 2px solid var(--rk-intro-accent);
    border-radius: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    box-shadow: 0 10px 25px -5px rgba(16, 185, 129, 0.3);
}

.rk-roi-content h3 {
    font-size: 22px;
    font-weight: 900;
    color: #064e3b;
    margin: 0 0 10px 0;
}

.rk-roi-content p {
    font-size: 15px;
    color: #047857;
    margin: 0;
    line-height: 1.6;
    font-weight: 500;
}

/* Agenda / Spis Treści (Elastyczny Grid) */
.rk-intro-agenda {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-intro-agenda-title {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    margin: 0 0 30px 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

/* Użycie auto-fit rozwiązuje problem z nachodzeniem kafelków */
.rk-agenda-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 20px;
}

.rk-agenda-card {
    background: var(--rk-intro-bg);
    border: 1px solid var(--rk-intro-border);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    gap: 15px;
    transition: transform 0.3s, box-shadow 0.3s;
}

.rk-agenda-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 15px 30px -10px rgba(6, 182, 212, 0.15);
    border-color: var(--rk-intro-primary-light);
    background: #ffffff;
}

.rk-agenda-icon {
    width: 48px;
    height: 48px;
    background: var(--rk-intro-primary-light);
    color: var(--rk-intro-primary-dark);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-agenda-card h4 {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-intro-dark);
    margin: 0;
}

.rk-agenda-card p {
    font-size: 14px;
    color: var(--rk-intro-text);
    margin: 0;
    line-height: 1.6;
}

@media (max-width: 768px) {
    .rk-intro-header, .rk-intro-roi, .rk-intro-agenda { padding: 30px 20px; }
    .rk-intro-roi { flex-direction: column; text-align: center; }
    .rk-roi-content h3 { font-size: 20px; }
    .rk-agenda-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Siłowniki termoelektryczne na rozdzielaczach – kompletny przewodnik inżynierski",
    "description": "Siłowniki termoelektryczne to kluczowy element automatyki strefowej ogrzewania podłogowego. Sprawdź, jak działają, jakie mają parametry i jak redukują koszty o 20%.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset",
    "name": "Analiza Efektywności Energetycznej Automatyki Strefowej",
    "description": "Zestawienie danych porównujących zużycie energii i stabilność temperatury w budynkach wyposażonych w siłowniki termoelektryczne na rozdzielaczach względem układów nieregulowanych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "siłowniki termoelektryczne",
      "automatyka ogrzewania podłogowego",
      "oszczędność energii ogrzewanie",
      "zawory termostatyczne belek",
      "sterowanie strefowe koszty"
    ],
    "measurementTechnique": "Szacowanie oparte na badaniach bilansu energetycznego budynków jednorodzinnych, wykazujące potencjał redukcji strat energii od 15% do 20% poprzez eliminację przegrzewania stref.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Status wyjściowy: Układ nieregulowany generuje ciągłą pracę źródła ciepła, prowadząc do przegrzewania i strat.",
        "Status po optymalizacji: Siłowniki dwustanowe precyzyjnie dawkują czynnik grzewczy, obniżając koszty eksploatacji budynku nawet o 20%."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp",
    "name": "Nawigator Wiedzy Inwestorskiej",
    "description": "Interaktywny moduł wprowadzający (Agenda), umożliwiający szybkie zapoznanie się ze strukturą merytoryczną opracowania inżynierskiego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and CSS3.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container" id="rk-intro-app">
    
    <div class="rk-intro-header">
        <div class="rk-intro-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
            Kompleksowe kompendium wiedzy
        </div>
        
        <h2>Siłowniki termoelektryczne na rozdzielaczach – kompletny przewodnik inżynierski</h2>
        
        <p class="rk-intro-hook">
            Większość inwestorów skupia się na wyborze najdroższej <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-intro-link-light">pompy ciepła</a>, ignorując niepozorny element w szafce instalacyjnej, który bezpośrednio decyduje o jej ostatecznej sprawności i wysokości Twoich rachunków.
        </p>

        <p class="rk-intro-definition">
            <strong>Siłowniki termoelektryczne na rozdzielaczach</strong> to dwustanowe (zamknij/otwórz) urządzenia elektrotermiczne montowane bezpośrednio na zaworach termostatycznych belek rozdzielacza, które przetwarzają sygnał napięciowy z regulatora pokojowego na ruch liniowy trzpienia, regulując przepływ masowy czynnika grzewczego w pętli. Jako kluczowy element <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/" class="rk-intro-link-light">automatyki strefowej</a>, siłownik termiczny precyzyjnie odcina lub uruchamia obieg wody w ogrzewaniu podłogowym.
        </p>
    </div>

    <div class="rk-intro-roi">
        <div class="rk-roi-icon-box">
            <svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="var(--rk-intro-accent)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 6 13.5 15.5 8.5 10.5 1 18"></polyline><polyline points="17 6 23 6 23 12"></polyline></svg>
        </div>
        <div class="rk-roi-content">
            <h3>Odcięcie strat energetycznych</h3>
            <p>Prawidłowy dobór gwintu, skoku trzpienia oraz zasilania dla siłowników zapobiega przewymiarowanemu przegrzewaniu pomieszczeń. Fizyczne odcięcie niepotrzebnego przepływu na rozdzielaczu redukuje całkowite koszty eksploatacji budynku o <strong>15% do 20%</strong> w skali roku.</p>
        </div>
    </div>

    <div class="rk-intro-agenda">
        <h3 class="rk-intro-agenda-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-intro-primary)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"></path><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"></path></svg>
            Czego dowiesz się z tego przewodnika?
        </h3>
        
        <div class="rk-agenda-grid">
            
            <div class="rk-agenda-card">
                <div class="rk-agenda-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                </div>
                <h4>Fizyka działania (NC vs NO)</h4>
                <p>Zrozumiesz, dlaczego wosk wewnątrz siłownika potrzebuje aż 3 do 5 minut na reakcję i dlaczego ta celowa bezwładność chroni instalację przed skokami ciśnienia.</p>
            </div>

            <div class="rk-agenda-card">
                <div class="rk-agenda-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path></svg>
                </div>
                <h4>Twarde parametry techniczne</h4>
                <p>Poznasz karty katalogowe i znaczenie doboru siły nacisku (np. 100N) oraz odpowiedniego gwintu (M30x1.5 vs M28x1.5) dla bezawaryjnej pracy.</p>
            </div>

            <div class="rk-agenda-card">
                <div class="rk-agenda-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
                </div>
                <h4>Kalkulator zasilacza 24V</h4>
                <p>Pokażę Ci, jak wyliczyć niebezpieczny prąd rozruchowy modułów PTC, aby dobrać odpowiedni zasilacz na szynę DIN i uniknąć stopienia przekaźników.</p>
            </div>

            <div class="rk-agenda-card">
                <div class="rk-agenda-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                </div>
                <h4>Skutki błędnego wykonawstwa</h4>
                <p>Przeanalizujemy najdroższe błędy instalatorów: destrukcyjne taktowanie pompy ciepła, zaburzenie hydrauliki i straty spowodowane niedomykaniem pętli.</p>
            </div>

        </div>
    </div>
</div>



<style>
:root {
    --rk-act-dark: #0f172a;
    --rk-act-panel: #1e293b;
    --rk-act-card: #ffffff;
    --rk-act-primary: #f97316; /* Orange for Heat/Thermoelectric */
    --rk-act-primary-light: #ffedd5;
    --rk-act-accent: #0ea5e9; /* Blue for Flow/Water */
    --rk-act-danger: #ef4444; /* Red for PTC heater */
    --rk-act-success: #10b981;
    --rk-act-bg: #f8fafc;
    --rk-act-border: #e2e8f0;
    --rk-act-text: #334155;
    --rk-act-muted: #64748b;
}

.rk-act-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-act-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(249, 115, 22, 0.15);
    border: 1px solid rgba(249, 115, 22, 0.2);
    overflow: hidden;
}

/* Nagłówek */
.rk-act-header {
    background: linear-gradient(135deg, var(--rk-act-dark) 0%, #271408 100%);
    padding: 45px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-act-primary);
    position: relative;
    overflow: hidden;
}

.rk-act-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(249, 115, 22, 0.2);
    color: #fdba74;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(249, 115, 22, 0.3);
    position: relative; z-index: 2;
}

.rk-act-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    position: relative; z-index: 2;
}

.rk-act-header p {
    color: #cbd5e1;
    font-size: 15px;
    margin: 0;
    max-width: 800px;
    line-height: 1.7;
    position: relative; z-index: 2;
}

.rk-act-link-light {
    color: #fdba74;
    text-decoration: none;
    border-bottom: 1px dotted #fdba74;
    font-weight: 700;
    transition: 0.3s;
}
.rk-act-link-light:hover { color: #ffffff; border-bottom-style: solid; }

/* Symulator - Układ */
.rk-act-simulator {
    display: grid;
    grid-template-columns: 300px 1fr;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-act-border);
}

/* Panel Kontrolny */
.rk-act-controls {
    padding: 40px;
    background: #f8fafc;
    border-right: 1px solid var(--rk-act-border);
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-control-block {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-control-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-act-dark);
    text-transform: uppercase;
}

/* Przełącznik Typu NC/NO */
.rk-type-switch {
    display: flex;
    background: #e2e8f0;
    border-radius: 12px;
    padding: 4px;
    position: relative;
}

.rk-type-btn {
    flex: 1;
    padding: 10px 0;
    text-align: center;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-act-muted);
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s;
    z-index: 2;
}

.rk-type-btn.active {
    color: #ffffff;
}

.rk-type-highlighter {
    position: absolute;
    top: 4px; left: 4px;
    width: calc(50% - 4px); height: calc(100% - 8px);
    background: var(--rk-act-dark);
    border-radius: 8px;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1;
}

/* Przycisk Termostatu (Zasilanie) */
.rk-power-btn {
    background: #ffffff;
    border: 2px solid var(--rk-act-border);
    border-radius: 16px;
    padding: 20px;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    transition: all 0.3s;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-power-btn:hover {
    border-color: var(--rk-act-primary);
}

.rk-power-btn.on {
    background: var(--rk-act-primary-light);
    border-color: var(--rk-act-primary);
    box-shadow: 0 10px 20px -5px rgba(249, 115, 22, 0.2);
}

.rk-power-icon {
    width: 48px; height: 48px;
    border-radius: 50%;
    background: #f1f5f9;
    color: var(--rk-act-muted);
    display: flex; align-items: center; justify-content: center;
    transition: all 0.3s;
}

.rk-power-btn.on .rk-power-icon {
    background: var(--rk-act-primary);
    color: #ffffff;
    box-shadow: 0 0 15px rgba(249, 115, 22, 0.5);
}

.rk-power-text {
    font-size: 15px; font-weight: 800; color: var(--rk-act-dark);
}
.rk-power-sub {
    font-size: 12px; color: var(--rk-act-muted); font-weight: 600;
}

/* Wizualizacja + Pomiary */
.rk-act-visual-area {
    padding: 40px;
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-live-metrics {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
}

.rk-metric-box {
    background: var(--rk-act-bg);
    border: 1px solid var(--rk-act-border);
    border-radius: 12px;
    padding: 15px;
    text-align: center;
    transition: all 0.3s;
}

.rk-metric-box.active {
    border-color: var(--rk-act-primary);
    background: #ffffff;
    box-shadow: 0 4px 10px rgba(249, 115, 22, 0.1);
}

.rk-metric-val {
    font-family: 'Courier New', monospace;
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-act-dark);
    margin-bottom: 5px;
}

.rk-metric-box.active .rk-metric-val { color: var(--rk-act-primary); }

.rk-metric-lab {
    font-size: 11px;
    font-weight: 800;
    color: var(--rk-act-muted);
    text-transform: uppercase;
}

/* Obszar SVG */
.rk-svg-container {
    flex-grow: 1;
    background: var(--rk-act-dark);
    border-radius: 16px;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    box-shadow: inset 0 10px 30px rgba(0,0,0,0.5);
    overflow: hidden;
}

.rk-actuator-svg {
    width: 100%;
    max-width: 250px;
    height: auto;
}

/* Elementy SVG z CSS */
.svg-ptc-heater { fill: #475569; transition: fill 3s; }
.state-powered .svg-ptc-heater { fill: #ef4444; filter: drop-shadow(0 0 5px red); }

.svg-wax-chamber { fill: #eab308; transform-origin: center top; transition: transform 3s ease-in-out; }
.state-expanding .svg-wax-chamber { transform: scaleY(1.3); }

.svg-piston { transform: translateY(0); transition: transform 3s ease-in-out; }
.state-expanding .svg-piston { transform: translateY(15px); }

.svg-spring { stroke-dasharray: 2 4; transition: stroke-dashoffset 3s, stroke-width 3s; }
.state-expanding .svg-spring { stroke-width: 4; stroke-dashoffset: 10; }

.svg-water-flow { stroke-dasharray: 10 10; stroke-dashoffset: 100; opacity: 0; transition: opacity 0.5s; }
.state-flowing .svg-water-flow { opacity: 1; animation: waterFlowAnim 1s linear infinite; }
@keyframes waterFlowAnim { to { stroke-dashoffset: 0; } }

/* Siatka Kroków Procesu */
.rk-act-steps-section {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-act-steps-section h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-act-dark);
    margin: 0 0 25px 0;
}

.rk-steps-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}

.rk-process-card {
    background: var(--rk-act-bg);
    border: 1px solid var(--rk-act-border);
    border-radius: 16px;
    padding: 25px 20px;
    position: relative;
    transition: transform 0.3s;
}

.rk-process-card:hover {
    transform: translateY(-5px);
    border-color: var(--rk-act-primary);
    box-shadow: 0 10px 20px -5px rgba(249, 115, 22, 0.1);
}

.rk-process-num {
    width: 32px; height: 32px;
    background: var(--rk-act-dark);
    color: #ffffff;
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    font-size: 14px; font-weight: 900;
    margin-bottom: 15px;
}

.rk-process-card:hover .rk-process-num { background: var(--rk-act-primary); }

.rk-process-title {
    font-size: 15px;
    font-weight: 900;
    color: var(--rk-act-dark);
    margin: 0 0 10px 0;
}

.rk-process-text {
    font-size: 13px;
    line-height: 1.6;
    color: var(--rk-act-text);
    margin: 0;
}

@media (max-width: 900px) {
    .rk-act-simulator { grid-template-columns: 1fr; }
    .rk-act-controls { border-right: none; border-bottom: 1px solid var(--rk-act-border); flex-direction: row; flex-wrap: wrap; }
    .rk-control-block { flex: 1; min-width: 200px; }
    .rk-steps-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 600px) {
    .rk-act-header, .rk-act-controls, .rk-act-visual-area, .rk-act-steps-section { padding: 30px 20px; }
    .rk-live-metrics { grid-template-columns: 1fr 1fr; }
    .rk-steps-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-dzialanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Jak działa siłownik termoelektryczny na rozdzielaczu i czy zawsze jest zamknięty?",
    "description": "Zasada działania siłowników termoelektrycznych NC i NO. Mechanizm rozszerzalności cieplnej wosku, rezystor PTC oraz parametry techniczne normy PN-EN 1264.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-termodynamika",
    "name": "Parametry fizykochemiczne siłowników termoelektrycznych",
    "description": "Zbiór danych technicznych dotyczących czasu reakcji, poboru mocy i siły nacisku w cyklu pracy siłowników woskowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jak działa siłownik termoelektryczny",
      "siłownik NC normalnie zamknięty",
      "rozszerzalność cieplna wosku podłogówka",
      "rezystor PTC w siłowniku",
      "skok roboczy zaworu rozdzielacza"
    ],
    "measurementTechnique": "Określenie procesu ekspansji fazowej parafiny z wykorzystaniem rezystora PTC generującego temp. 55°C, siłę docisku 100-140N oraz skok 3.5-4.5mm w czasie 3-5 minut.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Stan NC (Normally Closed): Domyślne zamknięcie przepływu zładu wody (bezpieczeństwo instalacji).",
        "Ekspansja fazowa: Wzrost objętości wosku pod wpływem ciepła z grzałki PTC.",
        "Parametry kinetyczne: Czas pełnego otwarcia/zamknięcia wynosi 3-5 minut."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-termodynamika",
    "name": "Symulator Cyklu Termodynamicznego Siłownika",
    "description": "Interaktywne narzędzie obrazujące ekspansję fazową wosku wewnątrz hermetycznej obudowy siłownika i wynikający z niej ruch trzpienia zaworu rozdzielacza pod wpływem temperatury generowanej przez termostat.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, and JavaScript.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-act-container" id="rk-act-app">
    <div class="rk-act-header">
        <div class="rk-act-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Technologia od środka
        </div>
        <h2>Jak działa siłownik termoelektryczny na rozdzielaczu i czy zawsze jest zamknięty?</h2>
        <p>Siłowniki nie wykorzystują głośnych silniczków ani przekładni zębatych. Ich sercem jest prosta fizyka – zmiana objętości wosku pod wpływem temperatury. Odkryj, dlaczego pełne otwarcie pętli według normy <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" class="rk-act-link-light">PN-EN 1264</a> zajmuje aż 3 do 5 minut.</p>
    </div>

    <div class="rk-act-simulator">
        <div class="rk-act-controls">
            
            <div class="rk-control-block">
                <div class="rk-control-label">Typ Zaworu / Siłownika</div>
                <div class="rk-type-switch">
                    <div class="rk-type-highlighter" id="typeHighlighter"></div>
                    <div class="rk-type-btn active" id="btnNC" onclick="setActuatorType('NC')">NC (Zamknięty)</div>
                    <div class="rk-type-btn" id="btnNO" onclick="setActuatorType('NO')">NO (Otwarty)</div>
                </div>
                <div style="font-size:11px; color:var(--rk-act-muted); text-align:center;">Stan bez napięcia elektrycznego</div>
            </div>

            <div class="rk-control-block">
                <div class="rk-control-label">Sygnał z Termostatu</div>
                <button class="rk-power-btn" id="btnPower" onclick="togglePower()">
                    <div class="rk-power-icon">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M18.36 6.64a9 9 0 1 1-12.73 0"></path><line x1="12" y1="2" x2="12" y2="12"></line></svg>
                    </div>
                    <div>
                        <div class="rk-power-text" id="powText">Zasilanie WYŁ.</div>
                        <div class="rk-power-sub">Brak zapotrzebowania na ciepło</div>
                    </div>
                </button>
            </div>

        </div>

        <div class="rk-act-visual-area">
            
            <div class="rk-live-metrics">
                <div class="rk-metric-box" id="metPower">
                    <div class="rk-metric-val"><span id="valPow">0.0</span>W</div>
                    <div class="rk-metric-lab">Pobór Mocy</div>
                </div>
                <div class="rk-metric-box" id="metTemp">
                    <div class="rk-metric-val"><span id="valTemp">20</span>°C</div>
                    <div class="rk-metric-lab">Temp. Wosku</div>
                </div>
                <div class="rk-metric-box" id="metForce">
                    <div class="rk-metric-val"><span id="valForce">0</span>N</div>
                    <div class="rk-metric-lab">Siła Nacisku</div>
                </div>
                <div class="rk-metric-box" id="metFlow">
                    <div class="rk-metric-val" id="valFlow" style="font-size:16px; padding-top:4px;">BRAK</div>
                    <div class="rk-metric-lab">Przepływ</div>
                </div>
            </div>

            <div class="rk-svg-container" id="simContainer">
                <svg class="rk-actuator-svg" viewBox="0 0 200 240">
                    
                    <path d="M 60 160 L 140 160 L 140 220 L 60 220 Z" fill="#1e293b" stroke="#334155" stroke-width="4"/>
                    <path d="M 40 190 L 60 190 M 140 190 L 160 190" stroke="#334155" stroke-width="8"/>
                    
                    <path class="svg-water-flow" d="M 40 190 L 100 190 L 100 210 L 160 210" fill="none" stroke="#0ea5e9" stroke-width="6"/>
                    
                    <rect x="90" y="170" width="20" height="10" fill="#cbd5e1" rx="2"/>
                    <path class="svg-spring" d="M 95 180 L 105 180 M 95 185 L 105 185 M 95 190 L 105 190 M 95 195 L 105 195 M 95 200 L 105 200" stroke="#94a3b8" stroke-width="2"/>
                    
                    <rect class="svg-piston" x="96" y="130" width="8" height="40" fill="#94a3b8"/>

                    <path d="M 65 40 L 135 40 L 145 140 L 55 140 Z" fill="none" stroke="#64748b" stroke-width="4"/>
                    <rect x="80" y="20" width="40" height="20" fill="#475569" rx="4"/>
                    
                    <rect class="svg-ptc-heater" x="90" y="45" width="20" height="10" rx="2"/>
                    <path d="M 100 20 L 100 45" stroke="#475569" stroke-width="3"/>
                    
                    <ellipse class="svg-wax-chamber" cx="100" cy="85" rx="25" ry="15"/>
                    
                    <rect class="svg-piston" x="85" y="100" width="30" height="10" fill="#334155" rx="2"/>
                    <rect class="svg-piston" x="95" y="110" width="10" height="20" fill="#334155"/>

                </svg>
            </div>

        </div>
    </div>

    <div class="rk-act-steps-section">
        <h3>Proces technologiczny otwierania i zamykania obwodu</h3>
        <div class="rk-steps-grid">
            
            <div class="rk-process-card">
                <div class="rk-process-num">1</div>
                <h4 class="rk-process-title">Podanie napięcia</h4>
                <p class="rk-process-text">Regulator pokojowy zwiera styk (wykrył spadek temperatury w sypialni). Napięcie 230V lub 24V dociera do zacisków siłownika i uruchamia rezystor PTC.</p>
            </div>

            <div class="rk-process-card">
                <div class="rk-process-num">2</div>
                <h4 class="rk-process-title">Ekspansja fazowa</h4>
                <p class="rk-process-text">Grzałka PTC nagrzewa parafinę do ok. 55°C. Wosk błyskawicznie zmienia swoją objętość (rozszerzalność cieplna), wytwarzając potężne ciśnienie wewnątrz cylindra.</p>
            </div>

            <div class="rk-process-card">
                <div class="rk-process-num">3</div>
                <h4 class="rk-process-title">Praca mechaniczna</h4>
                <p class="rk-process-text">Rozszerzający się wosk wypycha tłoczek. Generuje on siłę od 100 N do 140 N, która pokonuje opór sprężyny zaworu, wciskając grzybek na głębokość ok. 4 mm. Woda rusza w pętlę.</p>
            </div>

            <div class="rk-process-card">
                <div class="rk-process-num">4</div>
                <h4 class="rk-process-title">Zanik napięcia</h4>
                <p class="rk-process-text">Po osiągnięciu zadanej temperatury, termostat odcina prąd. Rezystor stygnie, wosk powoli się kurczy, a wbudowana sprężyna wypycha tłoczek z powrotem. Zawór ulega zamknięciu.</p>
            </div>

        </div>
    </div>

</div>

<script>
    let isNC = true;
    let isPowered = false;

    const btnNC = document.getElementById('btnNC');
    const btnNO = document.getElementById('btnNO');
    const highlighter = document.getElementById('typeHighlighter');
    
    const btnPower = document.getElementById('btnPower');
    const powText = document.getElementById('powText');
    const powSub = document.querySelector('.rk-power-sub');
    
    const simContainer = document.getElementById('simContainer');
    
    // Metrics
    const valPow = document.getElementById('valPow');
    const valTemp = document.getElementById('valTemp');
    const valForce = document.getElementById('valForce');
    const valFlow = document.getElementById('valFlow');
    
    const metPower = document.getElementById('metPower');
    const metTemp = document.getElementById('metTemp');
    const metForce = document.getElementById('metForce');
    const metFlow = document.getElementById('metFlow');

    function setActuatorType(type) {
        if(type === 'NC') {
            isNC = true;
            btnNC.classList.add('active');
            btnNO.classList.remove('active');
            highlighter.style.transform = 'translateX(0)';
        } else {
            isNC = false;
            btnNO.classList.add('active');
            btnNC.classList.remove('active');
            highlighter.style.transform = 'translateX(100%)';
        }
        updateSimulation();
    }

    function togglePower() {
        isPowered = !isPowered;
        if(isPowered) {
            btnPower.classList.add('on');
            powText.textContent = 'Zasilanie WŁ.';
            powSub.textContent = 'Grzałka PTC pracuje';
            simContainer.classList.add('state-powered');
        } else {
            btnPower.classList.remove('on');
            powText.textContent = 'Zasilanie WYŁ.';
            powSub.textContent = 'Brak zapotrzebowania na ciepło';
            simContainer.classList.remove('state-powered');
        }
        updateSimulation();
    }

    function updateSimulation() {
        // Obliczanie logiki fizycznej
        // NC: bez prądu -> tłoczek na dole (zawór zamkniety). Z prądem -> wosk pęcznieje, wyciąga tłoczek do góry (zawór otwarty). (Uproszczenie wizualne)
        // Dla animacji załóżmy standardowe zachowanie trzpienia
        
        let pistonPushed = false;
        let isFlowing = false;

        if (isPowered) {
            // Wosk się grzeje
            valPow.textContent = '2.5';
            valTemp.textContent = '55';
            valForce.textContent = '120';
            metPower.classList.add('active');
            metTemp.classList.add('active');
            metForce.classList.add('active');
            simContainer.classList.add('state-expanding');
            pistonPushed = true;
        } else {
            // Wosk stygnie
            valPow.textContent = '0.0';
            valTemp.textContent = '20';
            valForce.textContent = '0';
            metPower.classList.remove('active');
            metTemp.classList.remove('active');
            metForce.classList.remove('active');
            simContainer.classList.remove('state-expanding');
            pistonPushed = false;
        }

        // NC: bez prądu -> zamknięty. z prądem -> otwarty
        // NO: bez prądu -> otwarty. z prądem -> zamknięty
        if ((isNC && isPowered) || (!isNC && !isPowered)) {
            isFlowing = true;
        } else {
            isFlowing = false;
        }

        if (isFlowing) {
            valFlow.textContent = 'OTWARTY';
            valFlow.style.color = 'var(--rk-act-accent)';
            metFlow.classList.add('active');
            simContainer.classList.add('state-flowing');
        } else {
            valFlow.textContent = 'ZAMKNIĘTY';
            valFlow.style.color = 'var(--rk-act-text)';
            metFlow.classList.remove('active');
            simContainer.classList.remove('state-flowing');
        }
    }

    // Init
    updateSimulation();
</script>



<style>
:root {
    --rk-spec-dark: #0f172a;
    --rk-spec-panel: #1e293b;
    --rk-spec-primary: #8b5cf6; /* Indigo/Purple for specifications */
    --rk-spec-primary-light: #ede9fe;
    --rk-spec-accent: #10b981; /* Emerald for IP/Protection */
    --rk-spec-danger: #ef4444; /* Red for heat/max temp */
    --rk-spec-bg: #f8fafc;
    --rk-spec-border: #e2e8f0;
    --rk-spec-text: #334155;
    --rk-spec-muted: #64748b;
}

.rk-spec-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(139, 92, 246, 0.15);
    border: 1px solid rgba(139, 92, 246, 0.2);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-spec-header {
    background: linear-gradient(135deg, var(--rk-spec-dark) 0%, #2e1065 100%);
    padding: 45px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-spec-primary);
    position: relative;
}

.rk-spec-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(139, 92, 246, 0.3);
    color: #ddd6fe;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(196, 181, 253, 0.3);
}

.rk-spec-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-spec-header p {
    color: #cbd5e1;
    font-size: 15px;
    margin: 0;
    line-height: 1.7;
    max-width: 800px;
}

.rk-spec-link-light {
    color: #a78bfa;
    text-decoration: none;
    border-bottom: 1px dotted #a78bfa;
    font-weight: 700;
    transition: 0.3s;
}
.rk-spec-link-light:hover { color: #ffffff; border-bottom-style: solid; }

/* Kluczowe limity - Pasek Info */
.rk-limits-bar {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    background: var(--rk-spec-panel);
    border-bottom: 1px solid #334155;
}

.rk-limit-item {
    padding: 20px;
    text-align: center;
    border-right: 1px solid #334155;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}
.rk-limit-item:last-child { border-right: none; }

.rk-limit-val { font-size: 20px; font-weight: 900; color: #ffffff; display: flex; align-items: center; gap: 6px; }
.rk-limit-val svg { color: var(--rk-spec-danger); }
.rk-limit-item:last-child .rk-limit-val svg { color: var(--rk-spec-accent); }
.rk-limit-lab { font-size: 12px; color: #94a3b8; text-transform: uppercase; font-weight: 700; }

/* Interaktywny Komparator */
.rk-comparator-section {
    padding: 40px 50px;
    background: var(--rk-spec-bg);
}

/* POPRAWIONA SEKCJA ZAKŁADEK (GRID ZAMIAST FLEX) */
.rk-tabs-wrapper {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 10px;
    background: #ffffff;
    padding: 10px;
    border-radius: 16px;
    border: 1px solid var(--rk-spec-border);
    margin-bottom: 30px;
}

.rk-tab-btn {
    padding: 14px 15px;
    background: transparent;
    border: 2px solid transparent;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-spec-muted);
    cursor: pointer;
    transition: all 0.3s;
    text-align: center;
    white-space: normal;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1.3;
    min-height: 54px;
}

.rk-tab-btn:hover {
    background: var(--rk-spec-primary-light);
    color: var(--rk-spec-primary);
}

.rk-tab-btn.active {
    background: var(--rk-spec-primary);
    color: #ffffff;
    box-shadow: 0 4px 15px rgba(139, 92, 246, 0.3);
}

/* Siatka Parametrów */
.rk-params-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}

.rk-param-card {
    background: #ffffff;
    border: 1px solid var(--rk-spec-border);
    border-radius: 16px;
    padding: 25px 20px;
    text-align: center;
    transition: transform 0.3s, box-shadow 0.3s;
    position: relative;
    overflow: hidden;
}

.rk-param-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 25px -5px rgba(139, 92, 246, 0.15);
    border-color: #c4b5fd;
}

.rk-param-icon {
    width: 40px; height: 40px;
    background: var(--rk-spec-primary-light);
    color: var(--rk-spec-primary);
    border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    margin: 0 auto 15px auto;
}

.rk-param-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-spec-dark);
    margin-bottom: 5px;
    transition: opacity 0.3s;
}

.rk-param-lab {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-spec-muted);
    text-transform: uppercase;
}

/* Wizualizacja SVG */
.rk-spec-visual-area {
    grid-column: span 4;
    background: var(--rk-spec-panel);
    border-radius: 16px;
    padding: 30px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    align-items: center;
    color: #ffffff;
    margin-top: 10px;
}

.rk-visual-text h4 {
    margin: 0 0 10px 0;
    font-size: 20px;
    font-weight: 900;
    color: #ffffff;
}

.rk-visual-text p {
    font-size: 14px;
    color: #cbd5e1;
    line-height: 1.6;
    margin: 0;
}

.rk-visual-svg-box {
    height: 160px;
    display: flex;
    justify-content: center;
    align-items: center;
}

/* Animacje SVG */
.anim-stroke { transition: transform 0.6s cubic-bezier(0.34, 1.56, 0.64, 1); }
.anim-heat { transition: fill 0.6s, opacity 0.6s; }
.anim-elec { stroke-dasharray: 20; animation: dashMove 1s linear infinite; }
@keyframes dashMove { to { stroke-dashoffset: -40; } }

@media (max-width: 900px) {
    .rk-params-grid { grid-template-columns: repeat(2, 1fr); }
    .rk-spec-visual-area { grid-column: span 2; grid-template-columns: 1fr; text-align: center; }
}

@media (max-width: 768px) {
    .rk-spec-header, .rk-comparator-section { padding: 30px 20px; }
    .rk-limits-bar { grid-template-columns: 1fr; }
    .rk-limit-item { border-right: none; border-bottom: 1px solid #334155; }
    .rk-limit-item:last-child { border-bottom: none; }
    .rk-params-grid { grid-template-columns: 1fr; }
    .rk-spec-visual-area { grid-column: span 1; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-parametry",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Jaka jest optymalna temperatura zasilania i parametry techniczne siłowników?",
    "description": "Zestawienie parametrów technicznych siłowników termoelektrycznych (230V, 24V, NC, NO, 0-10V). Klasa ochrony IP54, gwinty i skoki tłoczków.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-parametry",
    "name": "Baza Danych: Specyfikacja Techniczna Siłowników Rozdzielaczowych",
    "description": "Kompletna macierz parametrów operacyjnych uwzględniająca napięcie zasilania, moc, prąd rozruchowy, siłę nacisku i czas reakcji w zależności od wariantu siłownika.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "parametry techniczne siłowników",
      "siłownik rozdzielacza 230V vs 24V",
      "prąd rozruchowy siłownika",
      "skok roboczy tłoczka",
      "klasa ochrony IP54 podłogówka"
    ],
    "measurementTechnique": "Tabelaryczne porównanie specyfikacji elektromechanicznych 4 głównych wariantów urządzeń wykonawczych stosowanych w automatyce płaszczyznowej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wariant 230V NC: Moc 2.0W, Prąd max 300mA, Siła 100N, Gwint M30x1.5.",
        "Wariant 24V NC: Moc 1.8W, Prąd max 250mA, Siła 110N, Skok 4.0mm.",
        "Wariant Sygnałowy (0-10V): Płynna regulacja skoku do 5.0mm, zasilanie 24V AC."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-komparator",
    "name": "Interaktywny Komparator Modeli Siłowników",
    "description": "Aplikacja narzędziowa pozwalająca projektantom instalacji na szybkie przełączanie i weryfikację skoku tłoczka, mocy i gwintów przed doborem do rozdzielacza.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, and JavaScript.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-spec-container" id="rk-spec-app">
    <div class="rk-spec-header">
        <div class="rk-spec-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Karty Katalogowe
        </div>
        <h2>Jaka jest optymalna temperatura zasilania i parametry techniczne siłowników?</h2>
        <p>Zanim dokręcisz głowicę, musisz znać jej limity. Normy <a href="https://projekt-ogrzewania.pl/norma-en-iso-15875/" class="rk-spec-link-light">PN-EN ISO 15875</a> ściśle definiują środowisko pracy, a właściwy dobór zasilania to być albo nie być dla modułów sterujących w szafce.</p>
    </div>

    <div class="rk-limits-bar">
        <div class="rk-limit-item">
            <div class="rk-limit-lab">Max. temp. otoczenia</div>
            <div class="rk-limit-val">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
                60°C
            </div>
        </div>
        <div class="rk-limit-item">
            <div class="rk-limit-lab">Max. temp. medium</div>
            <div class="rk-limit-val">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                100°C
            </div>
        </div>
        <div class="rk-limit-item">
            <div class="rk-limit-lab">Szczelność (<a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/" style="color:inherit; text-decoration:none;">Próba ciśnieniowa</a>)</div>
            <div class="rk-limit-val">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
                Min. IP54
            </div>
        </div>
    </div>

    <div class="rk-comparator-section">
        <div class="rk-tabs-wrapper">
            <button class="rk-tab-btn active" data-model="v230nc">Standard 230V NC</button>
            <button class="rk-tab-btn" data-model="v24nc">Niskonapięciowy 24V NC</button>
            <button class="rk-tab-btn" data-model="v230no">Antyzamrożeniowy 230V NO</button>
            <button class="rk-tab-btn" data-model="v010">Modulowany 0-10V</button>
        </div>

        <div class="rk-params-grid">
            
            <div class="rk-param-card">
                <div class="rk-param-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"></path></svg></div>
                <div class="rk-param-val" id="specVolt">230 V AC</div>
                <div class="rk-param-lab">Zasilanie robocze</div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg></div>
                <div class="rk-param-val" id="specCurrent">300 mA</div>
                <div class="rk-param-lab">Prąd rozruchowy</div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path></svg></div>
                <div class="rk-param-val" id="specForce">100 N</div>
                <div class="rk-param-lab">Siła nacisku</div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="8" y1="6" x2="21" y2="6"></line><line x1="8" y1="12" x2="21" y2="12"></line><line x1="8" y1="18" x2="21" y2="18"></line><line x1="3" y1="6" x2="3.01" y2="6"></line><line x1="3" y1="12" x2="3.01" y2="12"></line><line x1="3" y1="18" x2="3.01" y2="18"></line></svg></div>
                <div class="rk-param-val" id="specStroke">4.0 mm</div>
                <div class="rk-param-lab">Skok trzpienia</div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"></path><line x1="7" y1="7" x2="7.01" y2="7"></line></svg></div>
                <div class="rk-param-val" id="specThread">M30x1.5</div>
                <div class="rk-param-lab">Gwint przyłącza</div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg></div>
                <div class="rk-param-val" id="specPower">2.0 W</div>
                <div class="rk-param-lab">Moc znamionowa</div>
            </div>

            <div class="rk-spec-visual-area">
                <div class="rk-visual-text">
                    <h4 id="visTitle">Zasada działania: NC (Normalnie Zamknięty)</h4>
                    <p id="visDesc">W stanie spoczynku (bez napięcia), wewnętrzna sprężyna dociska trzpień zaworu, blokując przepływ. Podanie 230V nagrzewa element woskowy przez około 3.5 minuty, otwierając obwód.</p>
                </div>
                <div class="rk-visual-svg-box">
                    <svg viewBox="0 0 120 100" style="width:100%; height:100%; max-width:150px;">
                        <rect x="30" y="10" width="60" height="50" fill="#334155" rx="6"/>
                        <rect id="svgHeater" class="anim-heat" x="45" y="25" width="30" height="20" fill="#475569" rx="2"/>
                        <path id="svgCable" class="anim-elec" d="M 30 20 Q 10 20 10 40 L 10 90" fill="none" stroke="#64748b" stroke-width="4"/>
                        <rect id="svgPiston" class="anim-stroke" x="55" y="60" width="10" height="20" fill="#cbd5e1"/>
                        <path d="M 40 80 L 80 80 M 40 85 L 80 85 M 40 90 L 80 90 M 40 95 L 80 95" stroke="#94a3b8" stroke-width="2"/>
                        <rect x="40" y="80" width="40" height="20" fill="none" stroke="#94a3b8" stroke-width="4"/>
                    </svg>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Dane techniczne do JSON
    const actuatorData = {
        "v230nc": {
            volt: "230 V AC",
            current: "300 mA",
            force: "100 N",
            stroke: "4.0 mm",
            thread: "M30x1.5",
            power: "2.0 W",
            title: "Zasada działania: NC (Normalnie Zamknięty)",
            desc: "W stanie spoczynku (bez napięcia), wewnętrzna sprężyna dociska trzpień zaworu, blokując przepływ. Podanie 230V nagrzewa element woskowy przez około 3.5 minuty, otwierając obwód.",
            animHeat: "#ef4444",
            animStrokeY: "45", // Wciśnięty do góry (otwarty) gdy grzeje
            cableColor: "#ef4444"
        },
        "v24nc": {
            volt: "24 V AC/DC",
            current: "250 mA",
            force: "110 N",
            stroke: "4.0 mm",
            thread: "M30x1.5",
            power: "1.8 W",
            title: "Instalacje bezpieczne: 24V NC",
            desc: "Niskonapięciowa wersja NC. Wymaga transformatora i dedykowanej listwy sterującej. Idealna do instalacji Smart Home z uwzględnieniem bezpiecznego zasilania.",
            animHeat: "#f59e0b",
            animStrokeY: "45",
            cableColor: "#f59e0b"
        },
        "v230no": {
            volt: "230 V AC",
            current: "300 mA",
            force: "100 N",
            stroke: "4.0 mm",
            thread: "M28x1.5",
            power: "2.0 W",
            title: "System antyzamrożeniowy: NO",
            desc: "Normalnie Otwarty. Brak napięcia oznacza swobodny przepływ wody przez pętlę. Podanie napięcia zamyka obwód. Stosowany w układach narażonych na zamarznięcie (np. garaże). Uwaga na inny gwint rynkowy!",
            animHeat: "#0ea5e9",
            animStrokeY: "65", // Wypchnięty w dół (zamknięty) gdy grzeje
            cableColor: "#0ea5e9"
        },
        "v010": {
            volt: "24 V AC",
            current: "150 mA",
            force: "125 N",
            stroke: "5.0 mm",
            thread: "M30x1.5",
            power: "2.5 W",
            title: "Pełna kontrola przepływu: 0-10V",
            desc: "Zaawansowany siłownik z płynną regulacją skoku na podstawie sygnału analogowego (np. przy 5V tłoczek otwiera zawór w 50%). Konieczny w profesjonalnych systemach BMS i centralach wentylacyjnych.",
            animHeat: "#8b5cf6",
            animStrokeY: "55", // Środkowe ustawienie dla modułu 0-10
            cableColor: "#8b5cf6"
        }
    };

    const tabs = document.querySelectorAll('.rk-tab-btn');
    
    // Pola w UI
    const fVolt = document.getElementById('specVolt');
    const fCurrent = document.getElementById('specCurrent');
    const fForce = document.getElementById('specForce');
    const fStroke = document.getElementById('specStroke');
    const fThread = document.getElementById('specThread');
    const fPower = document.getElementById('specPower');
    
    const visTitle = document.getElementById('visTitle');
    const visDesc = document.getElementById('visDesc');
    
    const svgHeater = document.getElementById('svgHeater');
    const svgPiston = document.getElementById('svgPiston');
    const svgCable = document.getElementById('svgCable');

    // Fade effect logic
    function updateData(modelKey) {
        const data = actuatorData[modelKey];
        
        // Szybki efekt fade-out
        const vals = [fVolt, fCurrent, fForce, fStroke, fThread, fPower, visTitle, visDesc];
        vals.forEach(el => el.style.opacity = '0');
        
        setTimeout(() => {
            fVolt.textContent = data.volt;
            fCurrent.textContent = data.current;
            fForce.textContent = data.force;
            fStroke.textContent = data.stroke;
            fThread.textContent = data.thread;
            fPower.textContent = data.power;
            
            visTitle.textContent = data.title;
            visDesc.textContent = data.desc;
            
            // SVG Animation update
            svgHeater.setAttribute('fill', data.animHeat);
            svgPiston.setAttribute('y', data.animStrokeY);
            svgCable.setAttribute('stroke', data.cableColor);

            vals.forEach(el => el.style.opacity = '1');
        }, 200);
    }

    // Eventy
    tabs.forEach(btn => {
        btn.addEventListener('click', () => {
            tabs.forEach(t => t.classList.remove('active'));
            btn.classList.add('active');
            updateData(btn.getAttribute('data-model'));
        });
    });
});
</script>



<style>
:root {
    --rk-psu-dark: #0f172a;
    --rk-psu-panel: #1e293b;
    --rk-psu-card: #ffffff;
    --rk-psu-primary: #eab308; /* Electric Yellow/Amber */
    --rk-psu-primary-dark: #ca8a04;
    --rk-psu-accent: #3b82f6; /* Tech Blue */
    --rk-psu-danger: #ef4444;
    --rk-psu-success: #10b981;
    --rk-psu-bg: #f8fafc;
    --rk-psu-border: #e2e8f0;
    --rk-psu-text: #334155;
    --rk-psu-muted: #64748b;
    --rk-psu-glow: rgba(234, 179, 8, 0.4);
}

.rk-psu-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-psu-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(15, 23, 42, 0.15);
    border: 1px solid var(--rk-psu-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-psu-header {
    background: linear-gradient(135deg, var(--rk-psu-dark) 0%, #020617 100%);
    padding: 45px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-psu-primary);
    position: relative;
    overflow: hidden;
}

.rk-psu-header::before {
    content: ''; position: absolute; top: 0; right: 0; width: 300px; height: 100%;
    background: radial-gradient(circle at right, var(--rk-psu-glow) 0%, transparent 70%);
}

.rk-psu-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(234, 179, 8, 0.2);
    color: #fef08a;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(234, 179, 8, 0.3);
    position: relative; z-index: 2;
}

.rk-psu-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    position: relative; z-index: 2;
}

.rk-psu-header p {
    color: #94a3b8;
    font-size: 15px;
    margin: 0;
    max-width: 750px;
    line-height: 1.7;
    position: relative; z-index: 2;
}

/* Symulator - Panel Obliczeniowy */
.rk-psu-calculator {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-psu-border);
}

/* Sekcja Inputów */
.rk-psu-controls {
    padding: 40px 50px;
    border-right: 1px solid var(--rk-psu-border);
}

.rk-slider-group {
    margin-bottom: 30px;
}

.rk-slider-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}

.rk-slider-label {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-psu-dark);
}

.rk-slider-value {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-psu-primary-dark);
    background: #fef9c3;
    padding: 4px 12px;
    border-radius: 8px;
    border: 1px solid #fde047;
}

.rk-psu-range {
    -webkit-appearance: none; width: 100%; height: 8px; border-radius: 4px; background: #e2e8f0; outline: none;
}
.rk-psu-range::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none; width: 28px; height: 28px; border-radius: 50%;
    background: var(--rk-psu-primary); cursor: pointer; border: 4px solid #ffffff; box-shadow: 0 2px 6px rgba(0,0,0,0.2); transition: 0.1s;
}
.rk-psu-range::-webkit-slider-thumb:active { transform: scale(1.1); }

.rk-toggle-group {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: var(--rk-psu-bg);
    padding: 15px 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-psu-border);
}

.rk-toggle-info {
    display: flex;
    flex-direction: column;
}
.rk-toggle-title { font-size: 14px; font-weight: 800; color: var(--rk-psu-dark); }
.rk-toggle-desc { font-size: 12px; color: var(--rk-psu-muted); }

/* Switch Toggle */
.rk-switch { position: relative; display: inline-block; width: 54px; height: 30px; }
.rk-switch input { opacity: 0; width: 0; height: 0; }
.rk-switch-slider {
    position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-psu-muted); transition: .4s; border-radius: 34px;
}
.rk-switch-slider:before {
    position: absolute; content: ""; height: 22px; width: 22px; left: 4px; bottom: 4px;
    background-color: white; transition: .4s; border-radius: 50%;
}
.rk-switch input:checked + .rk-switch-slider { background-color: var(--rk-psu-success); }
.rk-switch input:checked + .rk-switch-slider:before { transform: translateX(24px); }

/* Sekcja Outputów (Wyświetlacz Cyfrowy) */
.rk-psu-display {
    background: var(--rk-psu-panel);
    padding: 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 20px;
    position: relative;
}

.rk-digital-box {
    background: #020617;
    border: 2px solid #334155;
    border-radius: 12px;
    padding: 20px;
    position: relative;
    overflow: hidden;
}

.rk-digital-box.highlight {
    border-color: var(--rk-psu-primary);
    box-shadow: 0 0 15px var(--rk-psu-glow);
}

.rk-digital-label {
    font-size: 11px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    margin-bottom: 5px;
}

.rk-digital-value {
    font-family: 'Courier New', Courier, monospace;
    font-size: 36px;
    font-weight: 900;
    color: #ffffff;
    display: flex;
    align-items: baseline;
    gap: 8px;
}

.rk-digital-box.highlight .rk-digital-value {
    color: var(--rk-psu-primary);
    text-shadow: 0 0 10px var(--rk-psu-glow);
}

.rk-digital-unit {
    font-size: 16px;
    color: #64748b;
    font-family: 'Inter', sans-serif;
}

/* Animacja impulsu elektrycznego */
.anim-pulse-line {
    stroke-dasharray: 100;
    animation: electricPulse 2s linear infinite;
}
@keyframes electricPulse {
    0% { stroke-dashoffset: 100; opacity: 0; }
    50% { opacity: 1; }
    100% { stroke-dashoffset: -100; opacity: 0; }
}

/* Kroki algorytmu (Grid) */
.rk-psu-steps {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-psu-steps h3 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-psu-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

.rk-steps-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}

.rk-step-card {
    background: var(--rk-psu-bg);
    border: 1px solid var(--rk-psu-border);
    border-radius: 16px;
    padding: 20px;
    position: relative;
    transition: transform 0.3s;
}
.rk-step-card:hover { transform: translateY(-5px); border-color: var(--rk-psu-primary); }

.rk-step-number {
    position: absolute;
    top: -12px; left: 20px;
    background: var(--rk-psu-dark);
    color: var(--rk-psu-primary);
    width: 28px; height: 28px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 14px; font-weight: 900;
    border: 3px solid #ffffff;
}

.rk-step-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-psu-dark);
    margin: 15px 0 10px 0;
    text-transform: uppercase;
}

.rk-step-math {
    background: #ffffff;
    border: 1px dashed var(--rk-psu-border);
    padding: 10px;
    border-radius: 8px;
    font-family: 'Courier New', monospace;
    font-size: 12px;
    color: var(--rk-psu-primary-dark);
    font-weight: 700;
    word-break: break-all;
}

.rk-psu-link {
    color: var(--rk-psu-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dotted var(--rk-psu-accent);
}
.rk-psu-link:hover { color: #1d4ed8; border-bottom-style: solid; }

@media (max-width: 900px) {
    .rk-steps-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 768px) {
    .rk-psu-header { padding: 30px 20px; }
    .rk-psu-calculator { grid-template-columns: 1fr; }
    .rk-psu-controls, .rk-psu-display, .rk-psu-steps { padding: 30px 20px; }
    .rk-steps-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-zasilacz",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Jak obliczyć pobór prądu i dobrać zasilacz dla siłowników 24V?",
    "description": "Praktyczny algorytm doboru zasilacza 24V na szynę DIN dla automatyki podłogówki. Kalkulator prądu rozruchowego elementu PTC.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-zasilacz",
    "name": "Algorytm doboru zasilacza impulsowego do siłowników",
    "description": "Tabela współczynników jednoczesności i zapotrzebowania na prąd rozruchowy dla termoelektrycznych siłowników 24V DC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zasilacz do siłowników 24v",
      "prąd rozruchowy siłownika termoelektrycznego",
      "moc zasilacza listwy sterującej",
      "automatyka strefowa ogrzewania",
      "współczynnik jednoczesności podłogówki"
    ],
    "measurementTechnique": "Obliczenia oparte na prawie Ohma (P = U * I) uwzględniające szczytowy pobór prądu przez rezystor PTC w momencie zimnego startu (współczynnik k=1.0) oraz bezpieczny zapas 20%.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Szczytowy prąd rozruchowy (I_roz): ok. 0.25A - 0.30A na siłownik.",
        "Współczynnik jednoczesności (k): Zakładamy 1.0 (start wszystkich stref po nocy).",
        "Margines bezpieczeństwa zasilacza: Zawsze +20% (współczynnik 1.2) do wyliczonej mocy obciążenia."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-zasilacz",
    "name": "Kalkulator Prądu Rozruchowego i Zasilania DIN",
    "description": "Narzędzie wyliczające szczytowy prąd układu i dobierające bezpieczną moc znamionową zasilacza 24V DC/AC na szynę DIN dla listew sterujących.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, and JavaScript.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-psu-container" id="rk-psu-app">
    <div class="rk-psu-header">
        <div class="rk-psu-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
            Elektrotechnika HVAC
        </div>
        <h2>Jak obliczyć pobór prądu i dobrać zasilacz dla siłowników 24V?</h2>
        <p>Największym błędem przy instalacji bezpiecznego napięcia (24V DC) jest niedoszacowanie zapotrzebowania w ułamku sekundy. Rezystor PTC wewnątrz siłownika zachowuje się jak zwarcie w fazie zimnego startu. Użyj kalkulatora, by uniknąć spalenia <a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/" class="rk-psu-link" style="color:#fef08a;">listwy sterującej</a>.</p>
    </div>

    <div class="rk-psu-calculator">
        <div class="rk-psu-controls">
            <div class="rk-slider-group">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Liczba siłowników 24V (n)</span>
                    <span class="rk-slider-value" id="valActuators">14 szt.</span>
                </div>
                <input type="range" class="rk-psu-range" id="inpActuators" min="2" max="30" step="1" value="14">
            </div>

            <div class="rk-slider-group">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Prąd rozruchowy I_roz</span>
                    <span class="rk-slider-value" id="valInrush">0.25 A</span>
                </div>
                <input type="range" class="rk-psu-range" id="inpInrush" min="0.15" max="0.50" step="0.01" value="0.25">
                <div style="font-size:11px; color:var(--rk-psu-muted); margin-top:8px;">Zależy od modelu. Zazwyczaj od 0.20 A do 0.30 A przez pierwsze 120 s.</div>
            </div>

            <div class="rk-toggle-group">
                <div class="rk-toggle-info">
                    <span class="rk-toggle-title">Zapas bezpieczeństwa 20%</span>
                    <span class="rk-toggle-desc">Chroni przed przeciążeniem impulsowym.</span>
                </div>
                <label class="rk-switch">
                    <input type="checkbox" id="inpMargin" checked="">
                    <span class="rk-switch-slider"></span>
                </label>
            </div>
        </div>

        <div class="rk-psu-display">
            <svg style="position:absolute; top:20px; right:20px; width:150px; height:80px; pointer-events:none;">
                <path class="anim-pulse-line" d="M 0 40 L 30 40 L 40 10 L 60 70 L 70 40 L 150 40" fill="none" stroke="var(--rk-psu-primary)" stroke-width="2" opacity="0.5"></path>
            </svg>

            <div class="rk-digital-box">
                <div class="rk-digital-label">Szczytowe Natężenie Prądu (I_total)</div>
                <div class="rk-digital-value"><span id="outCurrent">3.50</span> <span class="rk-digital-unit">A</span></div>
            </div>

            <div class="rk-digital-box highlight">
                <div class="rk-digital-label">Min. Moc Zasilacza na szynę DIN</div>
                <div class="rk-digital-value"><span id="outPowerDIN">120</span> <span class="rk-digital-unit">W</span></div>
                <div style="font-size:11px; color:#94a3b8; margin-top:5px;">Realne obciążenie szczytowe: <span id="outPowerPeak" style="color:#ffffff;">84 W</span></div>
            </div>
        </div>
    </div>

    <div class="rk-psu-steps">
        <h3>Algorytm obliczeniowy krok po kroku</h3>
        <div class="rk-steps-grid">
            
            <div class="rk-step-card">
                <div class="rk-step-number">1</div>
                <div class="rk-step-title">Wyznaczenie (n)</div>
                <div class="rk-step-math">n = <span id="mathN" style="color:var(--rk-psu-text);">14</span></div>
                <p style="font-size:12px; color:var(--rk-psu-muted); margin:10px 0 0;">Zlicz pętle grzewcze obsługiwane przez automatykę 24V.</p>
            </div>

            <div class="rk-step-card">
                <div class="rk-step-number">2</div>
                <div class="rk-step-title">Prąd Szczytowy</div>
                <div class="rk-step-math">I_tot = n × I_roz × 1.0<br>I_tot = <span id="mathItot" style="color:var(--rk-psu-text);">3.5 A</span></div>
                <p style="font-size:12px; color:var(--rk-psu-muted); margin:10px 0 0;">Współczynnik jednoczesności k=1.0 (start instalacji po nocy).</p>
            </div>

            <div class="rk-step-card">
                <div class="rk-step-number">3</div>
                <div class="rk-step-title">Moc Obciążenia</div>
                <div class="rk-step-math">P_szczyt = 24V × I_tot<br>P_szczyt = <span id="mathPszczyt" style="color:var(--rk-psu-text);">84 W</span></div>
                <p style="font-size:12px; color:var(--rk-psu-muted); margin:10px 0 0;">Fizyczne zapotrzebowanie mocy w momencie nagrzewania wosku.</p>
            </div>

            <div class="rk-step-card" style="border-color:var(--rk-psu-primary); background:var(--rk-psu-bg);">
                <div class="rk-step-number" style="background:var(--rk-psu-primary); color:#ffffff; border-color:var(--rk-psu-primary);">4</div>
                <div class="rk-step-title">Zasilacz (P_zas)</div>
                <div class="rk-step-math">P_zas = P_szczyt × <span id="mathMarginFactor">1.2</span><br>Wynik = <span id="mathPzas" style="font-weight:900;">100.8 W</span></div>
                <p style="font-size:12px; color:var(--rk-psu-muted); margin:10px 0 0;">Dobieramy najbliższy, wyższy zasilacz rynkowy (np. standard DIN).</p>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Inputs
    const inpActuators = document.getElementById('inpActuators');
    const inpInrush = document.getElementById('inpInrush');
    const inpMargin = document.getElementById('inpMargin');
    
    // Values Display
    const valActuators = document.getElementById('valActuators');
    const valInrush = document.getElementById('valInrush');
    
    // Digital Outputs
    const outCurrent = document.getElementById('outCurrent');
    const outPowerPeak = document.getElementById('outPowerPeak');
    const outPowerDIN = document.getElementById('outPowerDIN');
    
    // Math Steps
    const mathN = document.getElementById('mathN');
    const mathItot = document.getElementById('mathItot');
    const mathPszczyt = document.getElementById('mathPszczyt');
    const mathMarginFactor = document.getElementById('mathMarginFactor');
    const mathPzas = document.getElementById('mathPzas');

    // Standardowe typoszeregi zasilaczy na szynę DIN (W)
    const dinStandards = [15, 30, 60, 100, 120, 150, 240, 480];

    function calculatePSU() {
        // Pobranie wartości
        const n = parseInt(inpActuators.value);
        const iRoz = parseFloat(inpInrush.value);
        const hasMargin = inpMargin.checked;
        const marginFactor = hasMargin ? 1.2 : 1.0;
        
        // Aktualizacja labeli
        valActuators.textContent = n + ' szt.';
        valInrush.textContent = iRoz.toFixed(2) + ' A';

        // Obliczenia główne
        const iTotal = n * iRoz; // k = 1.0
        const pSzczyt = 24 * iTotal;
        const pZas = pSzczyt * marginFactor;

        // Dobór DIN zasilacza (najbliższy większy)
        let recommendedDIN = dinStandards[dinStandards.length - 1]; // default max
        for(let i = 0; i < dinStandards.length; i++) {
            if(dinStandards[i] >= pZas) {
                recommendedDIN = dinStandards[i];
                break;
            }
        }

        // Aktualizacja DOM - Digital
        outCurrent.textContent = iTotal.toFixed(2);
        outPowerPeak.textContent = pSzczyt.toFixed(0) + ' W';
        outPowerDIN.textContent = recommendedDIN;

        // Aktualizacja DOM - Kroki
        mathN.textContent = n;
        mathItot.textContent = iTotal.toFixed(2) + ' A';
        mathPszczyt.textContent = pSzczyt.toFixed(1) + ' W';
        mathMarginFactor.textContent = marginFactor.toFixed(1);
        mathPzas.textContent = pZas.toFixed(1) + ' W';
    }

    // Event Listeners
    if(inpActuators) inpActuators.addEventListener('input', calculatePSU);
    if(inpInrush) inpInrush.addEventListener('input', calculatePSU);
    if(inpMargin) inpMargin.addEventListener('change', calculatePSU);

    // Initial calculation
    calculatePSU();
});
</script>



<style>
:root {
    --rk-diag-dark: #1e1b4b; /* Deep Indigo for diagnostic theme */
    --rk-diag-panel: #312e81;
    --rk-diag-card: #ffffff;
    --rk-diag-primary: #6366f1;
    --rk-diag-primary-light: #e0e7ff;
    --rk-diag-alert: #f97316; /* Orange alert */
    --rk-diag-danger: #ef4444; /* Red danger */
    --rk-diag-success: #10b981;
    --rk-diag-bg: #f8fafc;
    --rk-diag-border: #e2e8f0;
    --rk-diag-text: #334155;
    --rk-diag-muted: #64748b;
}

.rk-diag-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-diag-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(99, 102, 241, 0.15);
    border: 1px solid rgba(99, 102, 241, 0.2);
    overflow: hidden;
}

/* Nagłówek */
.rk-diag-header {
    background: linear-gradient(135deg, var(--rk-diag-dark) 0%, #4338ca 100%);
    padding: 45px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-diag-primary);
}

.rk-diag-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(99, 102, 241, 0.3);
    color: #c7d2fe;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(199, 210, 254, 0.2);
}

.rk-diag-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-diag-header p {
    color: #e0e7ff;
    font-size: 15px;
    margin: 0;
    max-width: 800px;
    line-height: 1.7;
}

/* Moduł Interaktywny - Symulator Błędów */
.rk-diag-simulator {
    background: #ffffff;
    padding: 40px 50px;
    border-bottom: 1px solid var(--rk-diag-border);
}

.rk-sim-controls {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    margin-bottom: 30px;
    background: var(--rk-diag-bg);
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-diag-border);
}

.rk-control-group {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-control-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-diag-text);
    text-transform: uppercase;
    display: flex;
    justify-content: space-between;
}
.rk-control-label span { color: var(--rk-diag-primary); font-size: 16px; font-weight: 900; }

/* Radio Buttons (Gwint) */
.rk-radio-group {
    display: flex;
    gap: 10px;
}

.rk-radio-btn {
    flex: 1;
    position: relative;
}

.rk-radio-btn input {
    position: absolute; opacity: 0; cursor: pointer;
}

.rk-radio-label {
    display: block;
    padding: 12px;
    text-align: center;
    background: #ffffff;
    border: 2px solid var(--rk-diag-border);
    border-radius: 8px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-diag-muted);
    cursor: pointer;
    transition: all 0.2s;
}

.rk-radio-btn input:checked + .rk-radio-label {
    background: var(--rk-diag-primary-light);
    border-color: var(--rk-diag-primary);
    color: var(--rk-diag-primary);
}

/* Slider (Skok) */
.rk-diag-range {
    -webkit-appearance: none; width: 100%; height: 8px; border-radius: 4px; background: #cbd5e1; outline: none; margin-top: 10px;
}
.rk-diag-range::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none; width: 26px; height: 26px; border-radius: 50%;
    background: var(--rk-diag-primary); cursor: pointer; border: 4px solid #ffffff; box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}

/* Wyniki (Statusy) */
.rk-diag-status-board {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.rk-status-card {
    border: 2px solid var(--rk-diag-border);
    border-radius: 12px;
    padding: 20px;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 15px;
    transition: border-color 0.2s, background 0.2s;
}

.rk-status-card.error { border-color: var(--rk-diag-danger); background: #fef2f2; }
.rk-status-card.warning { border-color: var(--rk-diag-alert); background: #fff7ed; }
.rk-status-card.ok { border-color: var(--rk-diag-success); background: #ecfdf5; }

.rk-status-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-diag-muted);
    text-transform: uppercase;
}

.rk-status-val {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-diag-text);
}
.rk-status-card.error .rk-status-val { color: var(--rk-diag-danger); }
.rk-status-card.warning .rk-status-val { color: var(--rk-diag-alert); }
.rk-status-card.ok .rk-status-val { color: var(--rk-diag-success); }

.rk-svg-static-icon {
    width: 60px;
    height: 60px;
}

/* Lista Skutków Technicznych (Siatka) */
.rk-consequences-grid {
    padding: 40px 50px;
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-consequence-item {
    background: #ffffff;
    border: 1px solid var(--rk-diag-border);
    border-radius: 16px;
    padding: 30px;
    display: grid;
    grid-template-columns: 80px 1fr;
    gap: 25px;
    align-items: center;
}

.rk-cons-icon {
    width: 80px; height: 80px;
    border-radius: 16px;
    background: var(--rk-diag-bg);
    display: flex; align-items: center; justify-content: center;
    border: 2px solid var(--rk-diag-border);
}

.rk-cons-content h3 {
    font-size: 19px;
    font-weight: 900;
    color: var(--rk-diag-dark);
    margin: 0 0 10px 0;
}

.rk-cons-content p {
    font-size: 14.5px;
    line-height: 1.7;
    color: var(--rk-diag-text);
    margin: 0;
}

.rk-diag-link {
    color: var(--rk-diag-primary);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-diag-primary);
}
.rk-diag-link:hover { color: #4338ca; border-bottom-style: solid; }

@media (max-width: 768px) {
    .rk-diag-header, .rk-diag-simulator, .rk-consequences-grid { padding: 30px 20px; }
    .rk-sim-controls { grid-template-columns: 1fr; }
    .rk-diag-status-board { grid-template-columns: 1fr; }
    .rk-consequence-item { grid-template-columns: 1fr; text-align: center; padding: 25px; }
    .rk-cons-icon { margin: 0 auto; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-skutki-bledow",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Jakie są konsekwencje błędnego doboru gwintu i skoku roboczego?",
    "description": "Techniczne skutki niedomykania pętli: zerwany gwint adaptacyjny, przegrzewanie strefowe, wahania rotametrów i taktowanie pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-bledy-wymiarowania",
    "name": "Analiza skutków niedomykania pętli przez siłowniki",
    "description": "Zestawienie parametrów technicznych i skutków hydraulicznych wynikających ze złego doboru skoku roboczego (np. 3.0 mm dla zaworu 4.5 mm).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zły skok siłownika podłogówka",
      "gwint M30x1.5 a M28x1.5",
      "taktowanie pompy ciepła przez siłownik",
      "przegrzewanie sypialni",
      "nieszczelność zaworu rozdzielacza"
    ],
    "measurementTechnique": "Analiza zachowania układu hydraulicznego i termodynamicznego przy stałym przecieku masowym na niedomkniętym zaworze termostatycznym belki powrotnej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Uszkodzenie mechaniczne: Zerwanie gwintu adaptacyjnego przy siłowej próbie montażu M30 na zawór M28.",
        "Przegrzewanie strefy: Wzrost temperatury w sypialni z 20°C do 24°C pomimo sygnału odcięcia.",
        "Zaburzenie hydrauliki: Spadek projektowego przepływu 1,5 l/min w strefach niedogrzanych na korzyść nieszczelnej pętli.",
        "Taktowanie: 18-25 cykli startu sprężarki na dobę z powodu minimalnego, stałego odbioru ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-skutki-bledow",
    "name": "Symulator Skutków Błędnego Doboru Siłownika",
    "description": "Aplikacja pozwalająca na weryfikację wpływu źle dobranego gwintu i skoku siłownika na temperaturę wewnętrzną, przepływ i cykle pracy sprężarki.",
    "applicationCategory": "DiagnosticApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, and JavaScript.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-diag-container" id="rk-diag-app">
    
    <div class="rk-diag-header">
        <div class="rk-diag-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Klinika Błędów Instalacyjnych
        </div>
        <h2>Jakie są konsekwencje błędnego doboru gwintu i skoku roboczego?</h2>
        <p>Ignorowanie na pozór błahych milimetrów kończy się katastrofą dla komfortu cieplnego i rachunków. Zobacz, co dzieje się z układem, gdy siłownik nie radzi sobie z fizycznym zamknięciem zaworu.</p>
    </div>

    <div class="rk-diag-simulator">
        <div class="rk-sim-controls">
            
            <div class="rk-control-group">
                <div class="rk-control-label">Próba montażu na zawór <span>M30 x 1.5</span></div>
                <div class="rk-radio-group">
                    <label class="rk-radio-btn">
                        <input type="radio" name="diagThread" value="M28" id="thM28" onchange="updateDiagnostic()">
                        <span class="rk-radio-label">Siłownik M28x1.5</span>
                    </label>
                    <label class="rk-radio-btn">
                        <input type="radio" name="diagThread" value="M30" id="thM30" checked onchange="updateDiagnostic()">
                        <span class="rk-radio-label">Siłownik M30x1.5</span>
                    </label>
                </div>
            </div>

            <div class="rk-control-group">
                <div class="rk-control-label">Skok trzpienia siłownika: <span id="diagStrokeOut">4.5 mm</span></div>
                <input type="range" class="rk-diag-range" id="diagStroke" min="2.0" max="5.0" step="0.5" value="4.5" oninput="updateDiagnostic()">
                <div style="font-size:11px; color:#64748b; margin-top:5px;">Wymagany skok do pełnego zamknięcia tej belki: 4.5 mm</div>
            </div>

        </div>

        <div class="rk-diag-status-board">
            <div class="rk-status-card" id="cardMech">
                <svg class="rk-svg-static-icon" viewBox="0 0 100 100">
                    <rect x="25" y="20" width="50" height="30" fill="none" stroke="currentColor" stroke-width="6" rx="4"/>
                    <path id="svgMechThread" d="M 25 50 L 25 80 M 75 50 L 75 80" stroke="currentColor" stroke-width="6"/>
                    <path d="M 15 65 L 85 65 M 15 75 L 85 75" stroke="currentColor" stroke-width="2" stroke-dasharray="4"/>
                </svg>
                <div>
                    <div class="rk-status-title">Stan Gwintu Adaptacyjnego</div>
                    <div class="rk-status-val" id="valMech">Szczelny</div>
                </div>
            </div>

            <div class="rk-status-card" id="cardTemp">
                <svg class="rk-svg-static-icon" viewBox="0 0 100 100">
                    <rect x="40" y="15" width="20" height="50" fill="none" stroke="currentColor" stroke-width="6" rx="10"/>
                    <circle cx="50" cy="75" r="15" fill="none" stroke="currentColor" stroke-width="6"/>
                    <rect id="svgTempFill" x="44" y="45" width="12" height="25" fill="currentColor"/>
                </svg>
                <div>
                    <div class="rk-status-title">Rzeczywista temp. sypialni (Zadana: 20°C)</div>
                    <div class="rk-status-val" id="valTemp">20.0 °C</div>
                </div>
            </div>

            <div class="rk-status-card" id="cardPump">
                <svg class="rk-svg-static-icon" viewBox="0 0 100 100">
                    <rect x="20" y="30" width="60" height="50" fill="none" stroke="currentColor" stroke-width="6" rx="4"/>
                    <circle cx="50" cy="55" r="12" fill="none" stroke="currentColor" stroke-width="4"/>
                    <path id="svgPumpCycles" d="M 50 35 L 50 43 M 50 67 L 50 75 M 35 55 L 43 55 M 67 55 L 75 55" stroke="currentColor" stroke-width="4"/>
                </svg>
                <div>
                    <div class="rk-status-title">Cykle Sprężarki na dobę</div>
                    <div class="rk-status-val" id="valPump">3-5 (Norma)</div>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-consequences-grid">
        
        <div class="rk-consequence-item">
            <div class="rk-cons-icon" style="color:var(--rk-diag-danger);">
                <svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            </div>
            <div class="rk-cons-content">
                <h3>Zerwanie gwintu (Błąd M30 vs M28)</h3>
                <p>Błędne sparowanie gwintu siłownika (np. próba siłowego nakręcenia pierścienia M30 x 1,5 mm na rzadziej spotykany gwint zaworu M28 x 1,5 mm lub M30 x 1,0 mm) skutkuje nieodwracalnym zerwaniem plastikowego gwintu adaptacyjnego i nieszczelnością mechaniczną całej konstrukcji nastawczej.</p>
            </div>
        </div>

        <div class="rk-consequence-item">
            <div class="rk-cons-icon" style="color:var(--rk-diag-alert);">
                <svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
            </div>
            <div class="rk-cons-content">
                <h3>Przegrzewanie strefowe</h3>
                <p>Jeżeli skok roboczy tłoczka siłownika (np. 3,0 mm) jest mniejszy niż skok trzpienia zaworu w belce (4,5 mm), zawór nigdy nie zostanie zamknięty. Do pętli w sypialni stale przedostaje się <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/" class="rk-diag-link">czynnik o temperaturze zasilania 35°C</a>, pomimo sygnału z termostatu o osiągnięciu temperatury zadanej 20°C. Rzeczywista temperatura wzrasta do 24°C, generując straty energii.</p>
            </div>
        </div>

        <div class="rk-consequence-item">
            <div class="rk-cons-icon" style="color:var(--rk-diag-primary);">
                <svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg>
            </div>
            <div class="rk-cons-content">
                <h3>Zaburzenie równoważenia hydraulicznego</h3>
                <p><a href="https://projekt-ogrzewania.pl/rozdzielacz-do-ogrzewania-podlogowego-mosiezny-czy-ze-stali-nierdzewnej/" class="rk-diag-link">Rotametry w rozdzielaczu</a> na pozostałych pętlach wykazują losowe wahania przepływu. Przepływ projektowy na poziomie 1,5 l/min spada w strefach niedogrzanych, ponieważ woda pod ciśnieniem grawitacyjnie wybiera linię najmniejszego oporu – pętlę z niedomkniętym siłownikiem.</p>
            </div>
        </div>

        <div class="rk-consequence-item">
            <div class="rk-cons-icon" style="color:var(--rk-diag-dark);">
                <svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            </div>
            <div class="rk-cons-content">
                <h3>Destrukcyjne taktowanie pompy ciepła</h3>
                <p>Ciągły minimalny odbiór ciepła przez jedną nieszczelną pętlę oszukuje krzywą grzewczą. Uniemożliwia to przejście <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-diag-link">inwerterowej pompy ciepła</a> w naturalny stan uśpienia, generując aż 18-25 cykli startu sprężarki na dobę, co drastycznie skraca jej żywotność sprzętową.</p>
            </div>
        </div>

    </div>
</div>

<script>
function updateDiagnostic() {
    const threadSelect = document.querySelector('input[name="diagThread"]:checked').value; // "M28" or "M30"
    const strokeVal = parseFloat(document.getElementById('diagStroke').value);
    document.getElementById('diagStrokeOut').textContent = strokeVal.toFixed(1) + ' mm';

    const cardMech = document.getElementById('cardMech');
    const valMech = document.getElementById('valMech');
    const svgMechThread = document.getElementById('svgMechThread');

    const cardTemp = document.getElementById('cardTemp');
    const valTemp = document.getElementById('valTemp');
    const svgTempFill = document.getElementById('svgTempFill');

    const cardPump = document.getElementById('cardPump');
    const valPump = document.getElementById('valPump');
    const svgPumpCycles = document.getElementById('svgPumpCycles');

    // 1. Logika Gwintu
    if(threadSelect === 'M28') {
        // Próba nałożenia M28 na M30 -> zerwanie
        cardMech.className = 'rk-status-card error';
        valMech.textContent = 'ZERWANY';
        svgMechThread.setAttribute('stroke-dasharray', '5 10'); // Wizualizacja zerwania statyczna
    } else {
        cardMech.className = 'rk-status-card ok';
        valMech.textContent = 'SZCZELNY';
        svgMechThread.setAttribute('stroke-dasharray', '0'); // Cały gwint
    }

    // 2. Logika Skoku (Niedomykanie)
    // Wymagane 4.5mm do zamknięcia. 
    // Im mniejszy skok, tym wyższa temp i więcej taktowania
    if(strokeVal < 4.5 || threadSelect === 'M28') {
        // Oblicz stopień przecieku
        let leakSeverity = 0;
        if(threadSelect === 'M28') {
            leakSeverity = 1; // max przeciek bo siłownik odskoczył
        } else {
            // stroke od 4.0 do 2.0 -> severity rośnie
            leakSeverity = (4.5 - strokeVal) / 2.5; 
        }
        
        const tempC = 20 + (leakSeverity * 4.5); // max 24.5C
        const cycles = Math.floor(5 + (leakSeverity * 20)); // do 25 cykli

        cardTemp.className = 'rk-status-card error';
        valTemp.textContent = tempC.toFixed(1) + ' °C';
        svgTempFill.setAttribute('y', Math.max(15, 45 - (leakSeverity * 25)).toString());
        svgTempFill.setAttribute('height', Math.min(50, 25 + (leakSeverity * 25)).toString());

        cardPump.className = 'rk-status-card error';
        valPump.textContent = cycles + ' (Taktowanie!)';
        svgPumpCycles.setAttribute('stroke-dasharray', '2 4'); // chaotyczne cykle

    } else {
        // OK
        cardTemp.className = 'rk-status-card ok';
        valTemp.textContent = '20.0 °C';
        svgTempFill.setAttribute('y', '45');
        svgTempFill.setAttribute('height', '25');

        cardPump.className = 'rk-status-card ok';
        valPump.textContent = '3-5 (Norma)';
        svgPumpCycles.setAttribute('stroke-dasharray', '0');
    }
}

document.addEventListener('DOMContentLoaded', updateDiagnostic);
</script>



<style>
:root {
    --rk-vav-dark: #0f172a;
    --rk-vav-card: #ffffff;
    --rk-vav-bg: #f8fafc;
    --rk-vav-border: #e2e8f0;
    --rk-vav-primary: #0284c7; /* Engineering Blue */
    --rk-vav-primary-light: #e0f2fe;
    --rk-vav-accent: #0ea5e9;
    --rk-vav-danger: #ef4444; /* Pressure/Warning */
    --rk-vav-success: #10b981; /* Eco/Smart */
    --rk-vav-text: #334155;
    --rk-vav-muted: #64748b;
}

.rk-vav-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-vav-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid rgba(2, 132, 199, 0.2);
    overflow: hidden;
}

/* Sekcja Główna - Nagłówek */
.rk-vav-header {
    background: linear-gradient(135deg, var(--rk-vav-dark) 0%, #1e293b 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-vav-primary);
}

.rk-vav-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #7dd3fc;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(125, 211, 252, 0.2);
}

.rk-vav-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-vav-header p {
    color: #cbd5e1;
    font-size: 15px;
    margin: 0;
    line-height: 1.7;
    max-width: 800px;
}

/* Symulator VAV (Zmienny Przepływ) */
.rk-vav-simulator {
    background: #ffffff;
    padding: 40px 50px;
    border-bottom: 1px solid var(--rk-vav-border);
}

.rk-vav-sim-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    margin-bottom: 30px;
    flex-wrap: wrap;
    gap: 20px;
}

.rk-vav-controls {
    flex-grow: 1;
    max-width: 400px;
}

.rk-slider-label {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-vav-muted);
    margin-bottom: 12px;
    text-transform: uppercase;
}

.rk-slider-label span {
    color: var(--rk-vav-primary);
    font-size: 18px;
    font-weight: 900;
}

.rk-vav-range {
    -webkit-appearance: none; width: 100%; height: 8px; border-radius: 4px; background: var(--rk-vav-border); outline: none;
}
.rk-vav-range::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none; width: 28px; height: 28px; border-radius: 50%;
    background: var(--rk-vav-primary); cursor: pointer; border: 4px solid #ffffff; box-shadow: 0 2px 5px rgba(0,0,0,0.2); transition: 0.1s;
}
.rk-vav-range::-webkit-slider-thumb:active { transform: scale(1.1); }

/* Switch Pompy */
.rk-pump-switch-box {
    background: var(--rk-vav-bg);
    padding: 15px 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-vav-border);
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-pump-label {
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-vav-text);
    display: flex;
    flex-direction: column;
}
.rk-pump-label small { color: var(--rk-vav-muted); font-size: 11px; }

.rk-toggle {
    position: relative; display: inline-block; width: 56px; height: 30px; flex-shrink: 0;
}
.rk-toggle input { opacity: 0; width: 0; height: 0; }
.rk-toggle-slider {
    position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-vav-danger); transition: .4s; border-radius: 34px;
}
.rk-toggle-slider:before {
    position: absolute; content: ""; height: 22px; width: 22px; left: 4px; bottom: 4px;
    background-color: white; transition: .4s; border-radius: 50%;
}
.rk-toggle input:checked + .rk-toggle-slider { background-color: var(--rk-vav-success); }
.rk-toggle input:checked + .rk-toggle-slider:before { transform: translateX(26px); }

/* Wyniki Symulacji */
.rk-vav-metrics {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-bottom: 30px;
}

.rk-metric-card {
    background: var(--rk-vav-bg);
    border: 1px solid var(--rk-vav-border);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    position: relative;
    overflow: hidden;
    transition: all 0.3s;
}

.rk-metric-card.alert {
    background: #fef2f2;
    border-color: var(--rk-vav-danger);
}

.rk-metric-card.eco {
    background: #ecfdf5;
    border-color: var(--rk-vav-success);
}

.rk-metric-val {
    display: block; font-size: 32px; font-weight: 900; color: var(--rk-vav-dark); margin: 10px 0 5px;
    transition: color 0.3s;
}
.rk-metric-card.alert .rk-metric-val { color: var(--rk-vav-danger); }
.rk-metric-card.eco .rk-metric-val { color: var(--rk-vav-success); }

.rk-metric-unit { font-size: 14px; color: var(--rk-vav-muted); font-weight: 700; }
.rk-metric-title { font-size: 12px; color: var(--rk-vav-muted); text-transform: uppercase; font-weight: 800; }

/* Siatka Projektowa (4 Składowe) */
.rk-vav-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    padding: 40px 50px;
    background: #ffffff;
}

.rk-grid-tile {
    background: var(--rk-vav-bg);
    border-radius: 16px;
    padding: 25px;
    border: 1px solid var(--rk-vav-border);
    display: flex;
    flex-direction: column;
    gap: 15px;
    transition: transform 0.3s, box-shadow 0.3s;
}

.rk-grid-tile:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.1);
    border-color: var(--rk-vav-primary-light);
}

.rk-tile-icon {
    width: 48px; height: 48px;
    background: #ffffff;
    border-radius: 12px;
    display: flex; align-items: center; justify-content: center;
    color: var(--rk-vav-primary);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-tile-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-vav-dark);
    margin: 0;
}

.rk-tile-text {
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-vav-text);
    margin: 0;
    flex-grow: 1;
}

.rk-vav-link {
    color: var(--rk-vav-primary);
    font-weight: 700;
    text-decoration: none;
    font-size: 13px;
    display: inline-flex;
    align-items: center;
    gap: 5px;
}
.rk-vav-link:hover { text-decoration: underline; }

/* Animacje SVG */
.rk-pump-impeller {
    transform-origin: 50px 50px;
    /* Animacja sterowana przez JS */
}

/* Sekcja CTA */
.rk-vav-cta {
    background: linear-gradient(to right, var(--rk-vav-dark), #1e293b);
    padding: 50px;
    text-align: center;
    color: #ffffff;
}

.rk-vav-cta h3 {
    font-size: 24px;
    font-weight: 900;
    margin: 0 0 15px 0;
}

.rk-vav-cta p {
    color: #94a3b8;
    font-size: 16px;
    margin: 0 auto 30px auto;
    max-width: 600px;
    line-height: 1.6;
}

.rk-btn-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-vav-primary);
    color: #ffffff;
    font-size: 18px;
    font-weight: 900;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-cta:hover {
    transform: translateY(-4px) scale(1.02);
    background: #0369a1;
    box-shadow: 0 20px 35px -5px rgba(2, 132, 199, 0.5);
    border-color: #7dd3fc;
}

.rk-btn-cta svg { transition: transform 0.3s; }
.rk-btn-cta:hover svg { transform: translateX(5px); }

@media (max-width: 768px) {
    .rk-vav-header, .rk-vav-simulator, .rk-vav-grid, .rk-vav-cta { padding: 30px 20px; }
    .rk-vav-metrics { grid-template-columns: 1fr; }
    .rk-vav-grid { grid-template-columns: 1fr; }
    .rk-vav-sim-header { flex-direction: column; align-items: stretch; }
    .rk-pump-switch-box { justify-content: space-between; }
    .rk-btn-cta { width: 100%; font-size: 16px; padding: 18px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-wplyw-na-projekt",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Jak automatyka wpływa na projekt ogrzewania podłogowego i hydraulikę instalacji?",
    "description": "Zobacz jak siłowniki termoelektryczne zamieniają układ stałoprzepływowy na układ zmiennego przepływu (VAV) i wpływają na pompę, OZC oraz bufor.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-hydraulika",
    "name": "Wpływ Automatyki na Hydraulikę i Projekt Ogrzewania Podłogowego",
    "description": "Zestawienie parametrów projektowych: ciśnienie różnicowe, wymagana pojemność bufora (10-15l/kW) oraz charakterystyka pracy pompy obiegowej przy zmiennym przepływie (VAV).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zmienny przepływ VAV podłogówka",
      "dobór bufora do pompy ciepła",
      "ciśnienie różnicowe na rozdzielaczu",
      "charakterystyka pompy obiegowej Δp-c",
      "projekt OZC z automatyką"
    ],
    "measurementTechnique": "Symulacja zmian ciśnienia, przepływu i poboru mocy w układzie hydraulicznym przy proporcjonalnej redukcji aktywnych pętli grzewczych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wymóg stosowania pomp o charakterystyce proporcjonalnego ciśnienia (Δp-c) dla redukcji mocy do 4W.",
        "Obligatoryjne zastosowanie bufora o pojemności min. 10-15 l/kW przy odcinaniu zładu przez siłowniki.",
        "Konieczność precyzyjnego mapowania elektrycznego stref według obliczeń zysków i strat (OZC)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-vav",
    "name": "Symulator Hydrauliki VAV",
    "description": "Interaktywny model pokazujący wzrost oporów, świsty na rotametrach oraz zachowanie nowoczesnej pompy obiegowej w momencie zamykania stref przez siłowniki termoelektryczne.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, and JavaScript.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-vav-container" id="rk-vav-app">
    
    <div class="rk-vav-header">
        <div class="rk-vav-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Inżynieria Przepływów
        </div>
        <h2>Jak to wpływa na projekt ogrzewania podłogowego i hydraulikę instalacji?</h2>
        <p>Wprowadzenie siłowników odcinających zamienia cichą, stałoprzepływową podłogówkę w wymagający układ o zmiennym natężeniu przepływu (<strong>VAV</strong>). Gdy 8 z 12 pętli nagle się zamyka, ciśnienie hydrauliczne szuka ujścia. Zobacz, co się dzieje z Twoją instalacją.</p>
    </div>

    <div class="rk-vav-simulator">
        <div class="rk-vav-sim-header">
            <div class="rk-vav-controls">
                <div class="rk-slider-label">Zamknięte siłowniki: <span id="vavActuatorsOut">0 z 12</span></div>
                <input type="range" class="rk-vav-range" id="vavSlider" min="0" max="11" step="1" value="0">
            </div>
            
            <div class="rk-pump-switch-box">
                <div class="rk-pump-label">
                    Tryb pracy pompy obiegowej
                    <span id="vavPumpTypeOut" style="color:var(--rk-vav-success); font-weight:900;">Auto-Adapt (Δp-c)</span>
                </div>
                <label class="rk-toggle">
                    <input type="checkbox" id="vavPumpToggle" checked>
                    <span class="rk-toggle-slider"></span>
                </label>
            </div>
        </div>

        <div class="rk-vav-metrics">
            <div class="rk-metric-card" id="cardPressure">
                <div class="rk-metric-title">Ciśnienie w belce</div>
                <div class="rk-metric-val" id="valPressure">15 <span class="rk-metric-unit">kPa</span></div>
                <div style="height: 40px; margin-top:10px;">
                    <svg viewBox="0 0 100 40" style="width:100%; height:100%;">
                        <line x1="0" y1="20" x2="100" y2="20" stroke="#e2e8f0" stroke-width="4" stroke-linecap="round"/>
                        <line id="svgPressureBar" x1="0" y1="20" x2="30" y2="20" stroke="#10b981" stroke-width="4" stroke-linecap="round" style="transition:all 0.3s;"/>
                    </svg>
                </div>
            </div>

            <div class="rk-metric-card" id="cardPower">
                <div class="rk-metric-title">Pobór mocy pompy</div>
                <div class="rk-metric-val" id="valPower">45 <span class="rk-metric-unit">W</span></div>
                <div style="height: 40px; margin-top:10px;">
                    <svg viewBox="0 0 100 40" style="width:100%; height:100%;">
                        <g id="svgImpeller" class="rk-pump-impeller">
                            <circle cx="50" cy="20" r="15" fill="none" stroke="#cbd5e1" stroke-width="2"/>
                            <path d="M 50 5 L 50 35 M 35 20 L 65 20 M 39 9 L 61 31 M 39 31 L 61 9" stroke="#94a3b8" stroke-width="3"/>
                        </g>
                    </svg>
                </div>
            </div>

            <div class="rk-metric-card" id="cardNoise">
                <div class="rk-metric-title">Stan Rotametrów</div>
                <div class="rk-metric-val" id="valNoise" style="font-size:20px; line-height:32px;">Cisza i stabilność</div>
                <div style="height: 40px; margin-top:10px;">
                    <svg viewBox="0 0 100 40" style="width:100%; height:100%;">
                        <rect x="40" y="5" width="20" height="30" fill="none" stroke="#cbd5e1" stroke-width="2" rx="2"/>
                        <rect id="svgFlowBar" x="42" y="25" width="16" height="8" fill="#0284c7" style="transition:all 0.3s;"/>
                    </svg>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-vav-grid">
        
        <div class="rk-grid-tile">
            <div class="rk-tile-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg></div>
            <h3 class="rk-tile-title">Projektowe Obciążenie Cieplne (OZC)</h3>
            <p class="rk-tile-text">Zgodnie z normą <strong>PN-EN 12831</strong>, siłowniki muszą być mapowane elektrycznie w taki sposób, aby wspólnie obsługiwać pętle jednego pomieszczenia. Połączenie 3 pętli salonu pod jeden termostat gwarantuje równomierny odbiór mocy.</p>
            <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-vav-link">Czytaj więcej o OZC <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg></a>
        </div>

        <div class="rk-grid-tile">
            <div class="rk-tile-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><path d="M12 2v20"></path><path d="M12 12l8.5-8.5"></path></svg></div>
            <h3 class="rk-tile-title">Dobór pompy obiegowej (Δp-c)</h3>
            <p class="rk-tile-text">Wymagana jest elektroniczna pompa pracująca w trybie stałej lub proporcjonalnej krzywej ciśnienia (<strong>Δp-c</strong>). Redukuje ona swoje obroty w odpowiedzi na zamykające się siłowniki, dławiąc pobór mocy z 45 W do 4 W.</p>
            <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/" class="rk-vav-link">Kalkulator doboru pompy <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg></a>
        </div>

        <div class="rk-grid-tile">
            <div class="rk-tile-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M5 12h14"></path><path d="M12 5v14"></path><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect></svg></div>
            <h3 class="rk-tile-title">Sprzęgło lub bufor ciepła</h3>
            <p class="rk-tile-text">Odcinanie pętli eliminuje zład wody niezbędny dla pompy ciepła (zazwyczaj <strong>120-150 litrów</strong> min.). Konieczny jest bufor rzędu 10-15 litrów na każdy kW mocy urządzenia, chroniący skraplacz przed krytycznym błędem przepływu.</p>
            <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-vav-link">Bufor w ogrzewaniu podłogowym <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg></a>
        </div>

        <div class="rk-grid-tile">
            <div class="rk-tile-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22 6 12 13 2 6"></polyline></svg></div>
            <h3 class="rk-tile-title">Projektowy rozstaw rur</h3>
            <p class="rk-tile-text">W strefach brzegowych (np. przy oknach HS), gdzie projekt narzuca rozstaw <strong>10 cm</strong>, bezwładność jest mniejsza. Siłowniki reagują w tych strefach znacznie dynamiczniej na szybkie straty ciepła i zyski słoneczne niż w środku pomieszczenia (15 cm).</p>
            <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/" class="rk-vav-link">Jaki rozstaw rur wybrać? <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg></a>
        </div>

    </div>

    <div class="rk-vav-cta">
        <h3>Nie zgaduj. Powierz hydraulikę ekspertom.</h3>
        <p>Każdy źle dobrany siłownik, brak bufora czy zły rozstaw rur to wyższe rachunki i ryzyko uszkodzenia pompy ciepła. Zamów pełną, inżynierską dokumentację instalacyjną dla Twojego domu.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-cta">
            ZAMÓW PROFESJONALNY PROJEKT PODŁOGÓWKI
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="M12 5l7 7-7 7"></path></svg>
        </a>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Elementy UI
    const slider = document.getElementById('vavSlider');
    const toggle = document.getElementById('vavPumpToggle');
    
    const outActuators = document.getElementById('vavActuatorsOut');
    const outPumpType = document.getElementById('vavPumpTypeOut');
    
    const cardPressure = document.getElementById('cardPressure');
    const valPressure = document.getElementById('valPressure');
    const svgPressureBar = document.getElementById('svgPressureBar');
    
    const cardPower = document.getElementById('cardPower');
    const valPower = document.getElementById('valPower');
    const svgImpeller = document.getElementById('svgImpeller');
    
    const cardNoise = document.getElementById('cardNoise');
    const valNoise = document.getElementById('valNoise');
    const svgFlowBar = document.getElementById('svgFlowBar');

    let animRotation = 0;
    let currentSpeed = 5;

    // Funkcja aktualizująca symulację
    function updateSimulation() {
        const closed = parseInt(slider.value); // 0 to 11
        const isSmart = toggle.checked;
        
        outActuators.textContent = closed + ' z 12';
        
        let pressure, power, noiseLevel, flowVisual;

        if (isSmart) {
            outPumpType.textContent = 'Auto-Adapt (Δp-c)';
            outPumpType.style.color = 'var(--rk-vav-success)';
            
            // Smart pump: stabilizuje ciśnienie, redukuje moc
            pressure = 15; // Zawsze 15 kPa
            power = Math.max(4, 45 - (closed * 3.7)); // Spada z 45 do ~4
            noiseLevel = 'Cisza i stabilność';
            flowVisual = Math.max(2, 16 - (closed * 1.2)); // Rotametry opadają delikatnie
            
            // Wizualizacje UI dla Smart
            cardPressure.className = 'rk-metric-card eco';
            svgPressureBar.setAttribute('stroke', '#10b981');
            svgPressureBar.setAttribute('x2', '30'); // Długość paska
            
            cardPower.className = 'rk-metric-card eco';
            currentSpeed = Math.max(1, 10 - closed); // Zwalnia
            
            cardNoise.className = 'rk-metric-card eco';
            
        } else {
            outPumpType.textContent = 'Stałe Obroty (Stary typ)';
            outPumpType.style.color = 'var(--rk-vav-danger)';
            
            // Stara pompa: ciśnienie rośnie, moc stała
            pressure = 15 + (closed * 3.5); // Rośnie z 15 do ~53 kPa
            power = 45; // Ciągle 45 W
            flowVisual = Math.min(30, 16 + (closed * 1.5)); // Uderzenie hydrauliczne na otwartych rotametrach
            
            if (closed > 5) {
                noiseLevel = 'Świst na grzybkach!';
                cardNoise.className = 'rk-metric-card alert';
                cardPressure.className = 'rk-metric-card alert';
                svgPressureBar.setAttribute('stroke', '#ef4444');
            } else {
                noiseLevel = 'Napięty przepływ';
                cardNoise.className = 'rk-metric-card';
                cardPressure.className = 'rk-metric-card';
                svgPressureBar.setAttribute('stroke', '#f59e0b');
            }

            cardPower.className = 'rk-metric-card alert';
            currentSpeed = 15; // Kręci się szybko na maxa
            svgPressureBar.setAttribute('x2', Math.min(100, 30 + (closed * 6)).toString());
        }

        // Aktualizacja HTML
        valPressure.innerHTML = pressure.toFixed(0) + ' <span class="rk-metric-unit">kPa</span>';
        valPower.innerHTML = power.toFixed(0) + ' <span class="rk-metric-unit">W</span>';
        valNoise.textContent = noiseLevel;
        svgFlowBar.setAttribute('y', (35 - flowVisual).toString());
        svgFlowBar.setAttribute('height', flowVisual.toString());
    }

    // Prosta animacja wirnika pompy via RequestAnimationFrame
    function animatePump() {
        animRotation += currentSpeed;
        svgImpeller.style.transform = `rotate(${animRotation}deg)`;
        requestAnimationFrame(animatePump);
    }

    // Nasłuchiwacze
    if(slider) slider.addEventListener('input', updateSimulation);
    if(toggle) toggle.addEventListener('change', updateSimulation);

    // Inicjalizacja
    updateSimulation();
    animatePump();
});
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-panel: #1e293b;
    --rk-calc-primary: #0284c7; /* Engineering Blue */
    --rk-calc-primary-light: #e0f2fe;
    --rk-calc-accent: #f59e0b; /* Amber for energy/cost */
    --rk-calc-danger: #ef4444; /* Red for pressure/errors */
    --rk-calc-success: #10b981;
    --rk-calc-bg: #f8fafc;
    --rk-calc-border: #e2e8f0;
    --rk-calc-text: #334155;
    --rk-calc-muted: #64748b;
}

.rk-eng-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid rgba(2, 132, 199, 0.2);
    overflow: hidden;
}

/* Nagłówek H2 */
.rk-eng-header {
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, #0f172a 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-calc-primary);
}

.rk-eng-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #7dd3fc;
    padding: 8px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(125, 211, 252, 0.2);
}

.rk-eng-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 10px 0;
    line-height: 1.3;
}

.rk-eng-header p {
    color: #94a3b8;
    font-size: 15px;
    margin: 0;
    max-width: 700px;
    line-height: 1.6;
}

/* Moduły Kalkulacyjne (Karty) */
.rk-eng-modules {
    padding: 30px 40px;
    display: flex;
    flex-direction: column;
    gap: 30px;
    background: var(--rk-calc-bg);
}

.rk-calc-card {
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-calc-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);
    overflow: hidden;
    display: grid;
    grid-template-columns: 1fr 350px;
}

/* Sekcja Treści H3 */
.rk-calc-content {
    padding: 35px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.rk-calc-content h3 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-calc-dark);
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-calc-icon {
    width: 32px; height: 32px;
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    background: var(--rk-calc-primary-light);
    color: var(--rk-calc-primary);
}

.rk-calc-text {
    font-size: 14px;
    line-height: 1.7;
    color: var(--rk-calc-text);
    margin: 0 0 20px 0;
}

.rk-calc-formula {
    background: #f1f5f9;
    padding: 12px 15px;
    border-radius: 8px;
    font-family: 'Courier New', monospace;
    font-size: 13px;
    color: var(--rk-calc-dark);
    font-weight: 700;
    margin-bottom: 20px;
    border-left: 3px solid var(--rk-calc-primary);
}

.rk-eng-link {
    color: var(--rk-calc-primary);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-calc-primary);
    transition: 0.3s;
}
.rk-eng-link:hover { color: #0369a1; border-bottom-style: solid; }

/* Sekcja Interaktywna (Prawa) */
.rk-calc-interactive {
    background: var(--rk-calc-panel);
    padding: 35px;
    color: #ffffff;
    display: flex;
    flex-direction: column;
    justify-content: center;
    position: relative;
}

.rk-slider-group {
    margin-bottom: 25px;
}

.rk-slider-label {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
    font-weight: 700;
    color: #94a3b8;
    margin-bottom: 10px;
    text-transform: uppercase;
}
.rk-slider-label span { color: #ffffff; font-size: 16px; font-weight: 900; }

.rk-range-input {
    -webkit-appearance: none; width: 100%; height: 6px; border-radius: 3px; background: #334155; outline: none;
}
.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none; width: 24px; height: 24px; border-radius: 50%;
    background: var(--rk-calc-primary); cursor: pointer; border: 3px solid #ffffff; transition: 0.1s;
}
.rk-range-input::-webkit-slider-thumb:active { transform: scale(1.1); }

.rk-calc-result-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-res-box {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    padding: 15px;
    border-radius: 12px;
    text-align: center;
    transition: all 0.3s;
}

.rk-res-box.warning { border-color: var(--rk-calc-danger); background: rgba(239, 68, 68, 0.1); }
.rk-res-box.ok { border-color: var(--rk-calc-success); background: rgba(16, 185, 129, 0.1); }

.rk-res-val { display: block; font-size: 24px; font-weight: 900; color: #ffffff; margin-bottom: 5px; }
.rk-res-lab { display: block; font-size: 11px; color: #94a3b8; text-transform: uppercase; font-weight: 700; line-height: 1.3; }

/* SVG Animacje w Tle */
.rk-svg-bg {
    position: absolute; top: 10px; right: 10px; opacity: 0.1; width: 100px; height: 100px; pointer-events: none;
}

/* Specyficzne animacje */
.anim-gauge-needle { transform-origin: 50px 75px; transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); }
.anim-water-level { transition: y 0.3s, height 0.3s, fill 0.3s; }
.anim-coin-drop { animation: coinDrop 2s infinite linear; }
@keyframes coinDrop {
    0% { transform: translateY(-20px); opacity: 0; }
    20% { opacity: 1; }
    80% { opacity: 1; }
    100% { transform: translateY(40px); opacity: 0; }
}

@media (max-width: 768px) {
    .rk-eng-header { padding: 30px 20px; }
    .rk-eng-modules { padding: 20px; }
    .rk-calc-card { grid-template-columns: 1fr; }
    .rk-calc-content { padding: 25px; }
    .rk-calc-interactive { padding: 25px; }
    .rk-calc-result-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-obliczenia",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Wyliczenia inżynierskie – 3 przykłady hydrauliczne i energetyczne",
    "description": "Interaktywne kalkulacje hydrauliczne i energetyczne ilustrujące wpływ siłowników na ciśnienie różnicowe, zład wody oraz koszty strat ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-obliczenia",
    "name": "Parametry Hydrauliczne i Energetyczne Ogrzewania Podłogowego",
    "description": "Zestawienie obliczeń inżynierskich obrazujących zależności między zamknięciem pętli grzewczych a parametrami pracy układu.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ciśnienie różnicowe",
      "przepływ masowy podłogówki",
      "minimalny zład wody pompy ciepła",
      "straty energii ogrzewania",
      "niekontrolowany przepływ pętli"
    ],
    "measurementTechnique": "Szacowanie oparte na wzorach termodynamiki i mechaniki płynów: V = Q / (cw × ρ × ΔT) oraz kalkulacja energii P = m × cw × ΔT.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wzrost ciśnienia z 15 kPa do ponad 45 kPa przy zamknięciu 70% pętli bez adaptacyjnej pompy obiegowej.",
        "Ryzyko awarii defrostu przy spadku zładu poniżej 40 litrów w instalacji 100m2.",
        "Straty finansowe rzędu 90 PLN miesięcznie z powodu przecieku 0.3 l/min na jednym zaworze."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-obliczenia",
    "name": "Symulator Hydrauliki i Kosztów Strat",
    "description": "Interaktywny panel obliczeniowy pozwalający sprawdzić w czasie rzeczywistym zmiany przepływu, ciśnienia, zładu wody oraz kosztów przy zmianie parametrów pracy siłowników.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, and JavaScript.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-eng-container" id="rk-eng-app">
    <div class="rk-eng-header">
        <div class="rk-eng-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
            Inżynierski Moduł Obliczeniowy
        </div>
        <h2>Wyliczenia inżynierskie – 3 przykłady hydrauliczne i energetyczne</h2>
        <p>Matematyka w instalacjach HVAC nie wybacza błędów. Zobacz na żywych liczbach, jak zachowanie siłowników wpływa na pracę pompy, ciśnienie i Twój portfel.</p>
    </div>

    <div class="rk-eng-modules">

        <div class="rk-calc-card">
            <div class="rk-calc-content">
                <h3>
                    <div class="rk-calc-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line></svg></div>
                    Przykład 1: Zmiana przepływu i ciśnienia
                </h3>
                <p class="rk-calc-text">
                    Załóżmy budynek o zapotrzebowaniu na moc <strong>Q = 10 kW</strong>. Projektowy spadek temperatury to ΔT = 5 K (parametry 35/30°C). Całkowity projektowy przepływ objętościowy w instalacji wynosi około <strong>1,72 m³/h</strong> (28,6 l/min). 
                </p>
                <div class="rk-calc-formula">
                    V = Q / (cw × ρ × ΔT)<br>
                    V = 10000 / (4182 × 1 × 5) × 3600 = 1,72 m³/h
                </div>
                <p class="rk-calc-text">
                    Gdy termostaty zamykają strefy, opór rośnie. Bez inteligentnej <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/" class="rk-eng-link">pompy obiegowej</a> ciśnienie różnicowe na rozdzielaczu gwałtownie wzrasta, generując uciążliwy świst.
                </p>
            </div>
            <div class="rk-calc-interactive">
                <svg class="rk-svg-bg" viewBox="0 0 100 100">
                    <path d="M10 90 A 40 40 0 0 1 90 90" fill="none" stroke="#ffffff" stroke-width="10"/>
                    <line x1="50" y1="90" x2="30" y2="60" stroke="#ef4444" stroke-width="6" stroke-linecap="round"/>
                </svg>
                
                <div class="rk-slider-group">
                    <div class="rk-slider-label">Zamknięte pętle: <span id="valClosedLoops">0%</span></div>
                    <input type="range" class="rk-range-input" id="slideLoops" min="0" max="90" step="5" value="0">
                </div>
                
                <div class="rk-calc-result-grid">
                    <div class="rk-res-box">
                        <span class="rk-res-val" id="resFlow">1.72 <span style="font-size:12px;color:#94a3b8;">m³/h</span></span>
                        <span class="rk-res-lab">Rzeczywisty Przepływ</span>
                    </div>
                    <div class="rk-res-box" id="boxPressure">
                        <span class="rk-res-val" id="resPressure" style="color:var(--rk-calc-success);">15 <span style="font-size:12px;color:#94a3b8;">kPa</span></span>
                        <span class="rk-res-lab">Ciśnienie różnicowe</span>
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-calc-card">
            <div class="rk-calc-content">
                <h3>
                    <div class="rk-calc-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                    Przykład 2: Zład wody a odszranianie
                </h3>
                <p class="rk-calc-text">
                    Pompa ciepła o mocy 8 kW wymaga minimalnego przepływu ok. <strong>13,7 l/min</strong> (0,82 m³/h) do przeprowadzenia procedury defrostu parownika. Średnia pojemność rury PEX 16&#215;2 mm to 0,113 l/mb.
                </p>
                <p class="rk-calc-text">
                    Przy standardowym domu 100 m² (rozstaw co 15 cm) zład wynosi <strong>75,2 litra</strong>. Jeśli automatyka zamknie większość pokoi, w obiegu pozostanie zbyt mało wody. Pompa zgłosi błąd awaryjny, dlatego wymagane jest <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/" class="rk-eng-link">sprzęgło hydrauliczne</a> lub bufor.
                </p>
            </div>
            <div class="rk-calc-interactive">
                <svg class="rk-svg-bg" viewBox="0 0 100 100">
                    <rect x="20" y="20" width="60" height="70" fill="none" stroke="#ffffff" stroke-width="8" rx="4"/>
                    <rect x="25" y="40" width="50" height="45" fill="#ffffff" opacity="0.5"/>
                </svg>

                <div class="rk-slider-group">
                    <div class="rk-slider-label">Zamknięta pow. (siłowniki): <span id="valClosedArea">0 m²</span></div>
                    <input type="range" class="rk-range-input" id="slideArea" min="0" max="90" step="5" value="0">
                </div>
                
                <div class="rk-calc-result-grid">
                    <div class="rk-res-box" id="boxVolume">
                        <span class="rk-res-val" id="resVolume" style="color:var(--rk-calc-success);">75.2 <span style="font-size:12px;color:#94a3b8;">L</span></span>
                        <span class="rk-res-lab">Aktywny zład wody</span>
                    </div>
                    <div class="rk-res-box" id="boxStatus">
                        <span class="rk-res-val" id="resStatus" style="color:var(--rk-calc-success);">OK</span>
                        <span class="rk-res-lab">Status dla pompy 8kW</span>
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-calc-card">
            <div class="rk-calc-content">
                <h3>
                    <div class="rk-calc-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg></div>
                    Przykład 3: Koszty niekontrolowanego przepływu
                </h3>
                <p class="rk-calc-text">
                    Niedomknięty z powodu złego skoku siłownik generuje permanentny przeciek. Przy różnicy temperatur ΔT = 5 K (zasilanie 38°C, powrót 33°C), zaledwie ułamek litra na minutę stale oddaje moc cieplną w miejscu, które powinno być wyłączone.
                </p>
                <div class="rk-calc-formula">
                    P = masa_wody × cw × ΔT<br>
                    Energia (kWh) = (P × czas) / 1000
                </div>
                <p class="rk-calc-text">
                    To zjawisko nie tylko przegrzewa pomieszczenie, ale drastycznie podbija <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/" class="rk-eng-link">koszty ogrzewania domu</a>. Zobacz, ile kosztuje Cię &#8222;drobny&#8221; przeciek w skali miesiąca przy cenie 1,20 PLN/kWh.
                </p>
            </div>
            <div class="rk-calc-interactive">
                <svg class="rk-svg-bg" viewBox="0 0 100 100">
                    <circle cx="50" cy="50" r="40" fill="none" stroke="#ffffff" stroke-width="8" stroke-dasharray="20 10"/>
                    <text x="50" y="65" fill="#ffffff" font-size="40" font-weight="bold" text-anchor="middle">PLN</text>
                </svg>

                <div class="rk-slider-group">
                    <div class="rk-slider-label">Wielkość przecieku: <span id="valLeak">0.1 l/min</span></div>
                    <input type="range" class="rk-range-input" id="slideLeak" min="0.1" max="1.5" step="0.1" value="0.3">
                </div>
                
                <div class="rk-calc-result-grid">
                    <div class="rk-res-box">
                        <span class="rk-res-val" id="resPowerLoss">34.8 <span style="font-size:12px;color:#94a3b8;">W</span></span>
                        <span class="rk-res-lab">Oddawana moc ciągła</span>
                    </div>
                    <div class="rk-res-box warning">
                        <span class="rk-res-val" id="resCostLoss" style="color:var(--rk-calc-danger);">30.11 <span style="font-size:12px;color:#94a3b8;">zł</span></span>
                        <span class="rk-res-lab">Strata / miesiąc (1 pętla)</span>
                    </div>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // --- Kalkulator 1: Ciśnienie ---
    const slideLoops = document.getElementById('slideLoops');
    const valClosedLoops = document.getElementById('valClosedLoops');
    const resFlow = document.getElementById('resFlow');
    const resPressure = document.getElementById('resPressure');
    const boxPressure = document.getElementById('boxPressure');

    function updatePressure() {
        const percent = parseInt(slideLoops.value);
        valClosedLoops.textContent = percent + '%';
        
        // Base flow 1.72 m3/h, Base pressure 15 kPa
        const currentFlow = 1.72 * (1 - (percent / 100));
        const currentPressure = 15 + (percent / 100) * 42.8; // Max around ~45-50 kPa at 90% closed
        
        resFlow.innerHTML = currentFlow.toFixed(2) + ' <span style="font-size:12px;color:#94a3b8;">m³/h</span>';
        resPressure.innerHTML = currentPressure.toFixed(0) + ' <span style="font-size:12px;color:#94a3b8;">kPa</span>';

        if(currentPressure > 30) {
            boxPressure.className = 'rk-res-box warning';
            resPressure.style.color = 'var(--rk-calc-danger)';
        } else if (currentPressure > 20) {
            boxPressure.className = 'rk-res-box';
            resPressure.style.color = '#f59e0b'; // warning amber
        } else {
            boxPressure.className = 'rk-res-box ok';
            resPressure.style.color = 'var(--rk-calc-success)';
        }
    }
    if(slideLoops) { slideLoops.addEventListener('input', updatePressure); updatePressure(); }

    // --- Kalkulator 2: Defrost ---
    const slideArea = document.getElementById('slideArea');
    const valClosedArea = document.getElementById('valClosedArea');
    const resVolume = document.getElementById('resVolume');
    const resStatus = document.getElementById('resStatus');
    const boxVolume = document.getElementById('boxVolume');
    const boxStatus = document.getElementById('boxStatus');

    function updateDefrost() {
        const areaClosed = parseInt(slideArea.value);
        valClosedArea.textContent = areaClosed + ' m²';
        
        // Base 100m2 -> 75.2L
        const activeVol = 75.2 * (1 - (areaClosed / 100));
        resVolume.innerHTML = activeVol.toFixed(1) + ' <span style="font-size:12px;color:#94a3b8;">L</span>';

        // PC 8kW needs roughly 40-50L minimum active volume to be safe without buffer
        if(activeVol < 45) {
            boxVolume.className = 'rk-res-box warning';
            resVolume.style.color = 'var(--rk-calc-danger)';
            boxStatus.className = 'rk-res-box warning';
            resStatus.textContent = 'WYMAGA BUFORA!';
            resStatus.style.color = 'var(--rk-calc-danger)';
        } else {
            boxVolume.className = 'rk-res-box ok';
            resVolume.style.color = 'var(--rk-calc-success)';
            boxStatus.className = 'rk-res-box ok';
            resStatus.textContent = 'OK';
            resStatus.style.color = 'var(--rk-calc-success)';
        }
    }
    if(slideArea) { slideArea.addEventListener('input', updateDefrost); updateDefrost(); }

    // --- Kalkulator 3: Koszty strat ---
    const slideLeak = document.getElementById('slideLeak');
    const valLeak = document.getElementById('valLeak');
    const resPowerLoss = document.getElementById('resPowerLoss');
    const resCostLoss = document.getElementById('resCostLoss');

    function updateLoss() {
        const leakLMin = parseFloat(slideLeak.value);
        valLeak.textContent = leakLMin.toFixed(1) + ' l/min';

        // leak in kg/s (1 L = 1 kg approx)
        const leakKgS = leakLMin / 60;
        // P = m * cw * dT (cw = 4182, dT = 5)
        const powerW = leakKgS * 4182 * 5;
        // Energy in month (720h)
        const energyKwh = (powerW * 720) / 1000;
        // Cost at 1.20 PLN
        const costPLN = energyKwh * 1.20;

        resPowerLoss.innerHTML = powerW.toFixed(1) + ' <span style="font-size:12px;color:#94a3b8;">W</span>';
        resCostLoss.innerHTML = costPLN.toFixed(2) + ' <span style="font-size:12px;color:#94a3b8;">zł</span>';
    }
    if(slideLeak) { slideLeak.addEventListener('input', updateLoss); updateLoss(); }

});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-card: #ffffff;
    --rk-err-danger: #ef4444;
    --rk-err-danger-light: #fef2f2;
    --rk-err-success: #10b981;
    --rk-err-success-light: #dcfce7;
    --rk-err-border: #e2e8f0;
    --rk-err-text: #334155;
    --rk-err-muted: #64748b;
    --rk-err-bg: #f8fafc;
}

.rk-err-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-err-bg);
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-err-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-err-header {
    background: var(--rk-err-dark);
    padding: 40px 50px;
    color: #ffffff;
    border-bottom: 5px solid var(--rk-err-danger);
    position: relative;
}

.rk-err-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(239, 68, 68, 0.2);
    color: #fca5a5;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(239, 68, 68, 0.3);
}

.rk-err-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 10px 0;
    line-height: 1.3;
}

.rk-err-header p {
    color: #94a3b8;
    font-size: 15px;
    margin: 0;
    max-width: 700px;
    line-height: 1.6;
}

/* Lista Audytowa */
.rk-err-list {
    padding: 40px 50px;
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-err-item {
    background: var(--rk-err-card);
    border: 2px solid var(--rk-err-border);
    border-radius: 16px;
    padding: 25px;
    transition: border-color 0.3s;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

/* Przełącznik (Toggle) */
.rk-err-top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--rk-err-border);
}

.rk-err-title {
    margin: 0;
}

.rk-err-title h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-err-dark);
    margin: 0;
}

.rk-toggle-wrapper {
    display: flex;
    align-items: center;
    gap: 12px;
    background: var(--rk-err-bg);
    padding: 8px 12px;
    border-radius: 12px;
    border: 1px solid var(--rk-err-border);
}

.rk-toggle-label {
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--rk-err-muted);
}

.rk-toggle-label.active-danger { color: var(--rk-err-danger); }
.rk-toggle-label.active-success { color: var(--rk-err-success); }

/* Switch element */
.rk-switch {
    position: relative;
    display: inline-block;
    width: 50px;
    height: 26px;
}
.rk-switch input { opacity: 0; width: 0; height: 0; }
.rk-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-err-danger);
    transition: .3s;
    border-radius: 34px;
}
.rk-slider:before {
    position: absolute;
    content: "";
    height: 18px; width: 18px;
    left: 4px; bottom: 4px;
    background-color: white;
    transition: .3s;
    border-radius: 50%;
}
input:checked + .rk-slider { background-color: var(--rk-err-success); }
input:checked + .rk-slider:before { transform: translateX(24px); }

/* Zawartość (Grid: Tekst + SVG) */
.rk-err-content {
    display: grid;
    grid-template-columns: 1fr 200px;
    gap: 30px;
    align-items: stretch;
}

.rk-err-state {
    display: none;
}
.rk-err-state.active {
    display: block;
}

.rk-err-state h4 {
    font-size: 15px;
    font-weight: 800;
    margin: 0 0 8px 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-err-state p {
    font-size: 14px;
    line-height: 1.7;
    color: var(--rk-err-text);
    margin: 0;
}

.rk-err-state.state-danger h4 { color: var(--rk-err-danger); }
.rk-err-state.state-success h4 { color: var(--rk-err-success); }

.rk-err-link {
    color: #0284c7;
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dotted #0284c7;
}
.rk-err-link:hover {
    border-bottom-style: solid;
    color: #0369a1;
}

/* Wizualizacja SVG (Statyczna) */
.rk-err-visual {
    background: var(--rk-err-bg);
    border-radius: 12px;
    border: 1px solid var(--rk-err-border);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 15px;
}

.rk-svg-static {
    width: 100%;
    height: 100%;
    max-height: 120px;
}

@media (max-width: 768px) {
    .rk-err-header { padding: 30px 20px; }
    .rk-err-list { padding: 20px; gap: 20px; }
    .rk-err-top { flex-direction: column; align-items: flex-start; gap: 15px; }
    .rk-err-content { grid-template-columns: 1fr; }
    .rk-err-visual { height: 140px; }
    .rk-toggle-wrapper { width: 100%; justify-content: space-between; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Najczęstsze błędy montażowe i wykonawcze – lista kontrolna",
    "description": "Zestawienie najpoważniejszych błędów instalacyjnych przy montażu siłowników termoelektrycznych. Uniknij uszkodzeń automatyki i braku przepływu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-bledy",
    "name": "Audyt Błędów Montażowych Siłowników Termoelektrycznych",
    "description": "Baza najczęściej diagnozowanych usterek wykonawczych (1000+ projektów) wraz ze standardem naprawczym dla instalacji ogrzewania podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy montażowe ogrzewania podłogowego",
      "nieprawidłowy montaż siłownika termoelektrycznego",
      "prąd rozruchowy siłowników termicznych",
      "wilgotność wylewki a automatyka",
      "zacięte zawory rozdzielacza"
    ],
    "measurementTechnique": "Analiza usterek technicznych i elektrycznych uszkodzeń wynikających z błędnej instalacji komponentów wykonawczych na belkach rozdzielacza.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Błąd 1: Niezdemontowanie pierścieni nastawy wstępnej blokujących przepływ.",
        "Błąd 2: Odwrotne podłączenie stref na listwie elektrycznej.",
        "Błąd 3: Sklejenie styków przez ignorowanie wysokiego prądu rozruchowego (2.4A).",
        "Błąd 4: Zwarcie na płytce PTC spowodowane wilgocią technologiczną z wylewki."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-bledy",
    "name": "Interaktywny Audytor Błędów Wykonawczych",
    "description": "Narzędzie interaktywne typu checklist pozwalające przełączać widok między błędnie wykonaną instalacją (skutki awarii) a prawidłowym standardem inżynierskim.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and CSS3 support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="rk-audit-app">
    <div class="rk-err-header">
        <div class="rk-err-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Audyt Techniczny (1000+ Projektów)
        </div>
        <h2>Najczęstsze błędy montażowe i wykonawcze – lista kontrolna</h2>
        <p>Zidentyfikowanie problemu na wczesnym etapie pozwala uniknąć zrywania posadzek. Przełączaj suwaki, aby zobaczyć, jak <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/" style="color:#fca5a5; text-decoration:underline;">błędy wykonawcze</a> niszczą sprawność instalacji oraz jak wygląda prawidłowy standard inżynierski.</p>
    </div>

    <div class="rk-err-list">
        
        <div class="rk-err-item" id="err-item-1">
            <div class="rk-err-top">
                <div class="rk-err-title">
                    <h3>1. Niezdemontowanie pierścieni nastawy wstępnej</h3>
                </div>
                <div class="rk-toggle-wrapper">
                    <span class="rk-toggle-label active-danger">Błąd</span>
                    <label class="rk-switch">
                        <input type="checkbox" onchange="toggleAudit('err-item-1', this)">
                        <span class="rk-slider"></span>
                    </label>
                    <span class="rk-toggle-label">Poprawnie</span>
                </div>
            </div>
            <div class="rk-err-content">
                <div class="rk-err-details">
                    <div class="rk-err-state state-danger active">
                        <h4><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg> Skutek: Brak przepływu</h4>
                        <p>Montaż siłownika na zaworze z kryzą ustawioną na wartość minimalną (np. N zamiast pozycji pełnego otwarcia tłumika hydraulicznego). Skutkuje to <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" class="rk-err-link">brakiem fizycznego przepływu</a> na rotametrze nawet przy maksymalnie uniesionym tłoczku w pełni sprawnego siłownika.</p>
                    </div>
                    <div class="rk-err-state state-success">
                        <h4><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg> Standard: Pełne rozwarcie</h4>
                        <p>Przed nakręceniem siłownika, instalator demontuje plastikowe pierścienie blokujące i otwiera zawór przepływowy na maksimum. Regulacja dławienia przeniesiona jest wyłącznie na rotametry belk zasilającej zgodnie z obliczeniami OZC.</p>
                    </div>
                </div>
                <div class="rk-err-visual">
                    <svg class="rk-svg-static svg-danger" viewBox="0 0 100 100" style="display:block;">
                        <rect x="40" y="20" width="20" height="40" fill="#cbd5e1" stroke="#334155" stroke-width="2"/>
                        <rect x="35" y="40" width="30" height="10" fill="#ef4444" /> <path d="M 45 60 L 45 80 L 55 80 L 55 60 Z" fill="#94a3b8"/>
                        <line x1="30" y1="45" x2="10" y2="45" stroke="#ef4444" stroke-width="2" stroke-dasharray="4"/>
                        <text x="25" y="35" fill="#ef4444" font-size="10" font-weight="bold">KRYZA</text>
                    </svg>
                    <svg class="rk-svg-static svg-success" viewBox="0 0 100 100" style="display:none;">
                        <rect x="40" y="20" width="20" height="40" fill="#cbd5e1" stroke="#334155" stroke-width="2"/>
                        <path d="M 45 50 L 45 80 L 55 80 L 55 50 Z" fill="#10b981"/> <path d="M 50 85 L 50 95 M 45 90 L 50 95 L 55 90" stroke="#10b981" stroke-width="3" fill="none"/>
                        <text x="30" y="95" fill="#10b981" font-size="10" font-weight="bold">PRZEPŁYW</text>
                    </svg>
                </div>
            </div>
        </div>

        <div class="rk-err-item" id="err-item-2">
            <div class="rk-err-top">
                <div class="rk-err-title">
                    <h3>2. Odwrotne podłączenie stref na listwie</h3>
                </div>
                <div class="rk-toggle-wrapper">
                    <span class="rk-toggle-label active-danger">Błąd</span>
                    <label class="rk-switch">
                        <input type="checkbox" onchange="toggleAudit('err-item-2', this)">
                        <span class="rk-slider"></span>
                    </label>
                    <span class="rk-toggle-label">Poprawnie</span>
                </div>
            </div>
            <div class="rk-err-content">
                <div class="rk-err-details">
                    <div class="rk-err-state state-danger active">
                        <h4><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg> Skutek: Chaos termiczny</h4>
                        <p>Kabel z siłownika obsługującego sypialnię zostaje błędnie podłączony pod <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/" class="rk-err-link">zacisk termostatu</a> przypisany do salonu. Prowadzi to do permanentnego niedogrzania jednego pokoju (bo salon szybko osiąga zadaną temperaturę i wyłącza grzanie) oraz drastycznego przegrzania drugiego.</p>
                    </div>
                    <div class="rk-err-state state-success">
                        <h4><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg> Standard: Mapowanie pętli</h4>
                        <p>Zastosowanie etykietowania kabli (tzw. ringów) na obu końcach oraz przeprowadzenie sekwencyjnego testu załączeń z fizycznym sprawdzeniem, która rura na rotametrze robi się ciepła w odpowiedzi na wymuszenie z termostatu.</p>
                    </div>
                </div>
                <div class="rk-err-visual">
                    <svg class="rk-svg-static svg-danger" viewBox="0 0 100 100" style="display:block;">
                        <rect x="10" y="20" width="30" height="20" fill="#334155" rx="2"/>
                        <rect x="60" y="20" width="30" height="20" fill="#334155" rx="2"/>
                        <circle cx="25" cy="80" r="10" fill="#ef4444"/>
                        <circle cx="75" cy="80" r="10" fill="#3b82f6"/>
                        <path d="M 25 40 L 75 70" stroke="#ef4444" stroke-width="3"/>
                        <path d="M 75 40 L 25 70" stroke="#ef4444" stroke-width="3"/>
                    </svg>
                    <svg class="rk-svg-static svg-success" viewBox="0 0 100 100" style="display:none;">
                        <rect x="10" y="20" width="30" height="20" fill="#334155" rx="2"/>
                        <rect x="60" y="20" width="30" height="20" fill="#334155" rx="2"/>
                        <circle cx="25" cy="80" r="10" fill="#10b981"/>
                        <circle cx="75" cy="80" r="10" fill="#10b981"/>
                        <path d="M 25 40 L 25 70" stroke="#10b981" stroke-width="3"/>
                        <path d="M 75 40 L 75 70" stroke="#10b981" stroke-width="3"/>
                    </svg>
                </div>
            </div>
        </div>

        <div class="rk-err-item" id="err-item-3">
            <div class="rk-err-top">
                <div class="rk-err-title">
                    <h3>3. Ignorowanie wysokiego prądu rozruchowego</h3>
                </div>
                <div class="rk-toggle-wrapper">
                    <span class="rk-toggle-label active-danger">Błąd</span>
                    <label class="rk-switch">
                        <input type="checkbox" onchange="toggleAudit('err-item-3', this)">
                        <span class="rk-slider"></span>
                    </label>
                    <span class="rk-toggle-label">Poprawnie</span>
                </div>
            </div>
            <div class="rk-err-content">
                <div class="rk-err-details">
                    <div class="rk-err-state state-danger active">
                        <h4><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg> Skutek: Zgrzanie styków</h4>
                        <p>Podłączanie 8 siłowników równolegle pod jeden klasyczny przekaźnik stykowy w tanich listwach. Wysoki sumaryczny prąd rozruchowy na elemencie PTC (np. 8 × 0,3 A = 2,4 A) powoduje powstanie łuku elektrycznego i mechaniczne zgrzanie (sklejenie) styków. Siłowniki pozostają trwale otwarte.</p>
                    </div>
                    <div class="rk-err-state state-success">
                        <h4><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg> Standard: Przekaźnik bezpotencjałowy</h4>
                        <p>Zastosowanie dedykowanej listwy sterującej wyposażonej w przekaźniki półprzewodnikowe (Triaki) lub system sekwencyjnego załączania obciążeń, który redukuje skokowy pobór mocy, chroniąc elektronikę sterującą przed przeciążeniem.</p>
                    </div>
                </div>
                <div class="rk-err-visual">
                    <svg class="rk-svg-static svg-danger" viewBox="0 0 100 100" style="display:block;">
                        <path d="M 20 40 L 45 40 L 55 60 L 80 60" fill="none" stroke="#334155" stroke-width="4"/>
                        <path d="M 50 30 L 60 30 L 55 50 L 65 50 L 45 70 L 50 55 L 40 55 Z" fill="#ef4444"/>
                        <text x="50" y="85" fill="#ef4444" font-size="12" font-weight="bold" text-anchor="middle">> 2.4A OVERLOAD</text>
                    </svg>
                    <svg class="rk-svg-static svg-success" viewBox="0 0 100 100" style="display:none;">
                        <path d="M 20 50 L 40 50" fill="none" stroke="#10b981" stroke-width="4"/>
                        <path d="M 60 50 L 80 50" fill="none" stroke="#10b981" stroke-width="4"/>
                        <rect x="40" y="40" width="20" height="20" fill="#334155" rx="3"/>
                        <text x="50" y="54" fill="#ffffff" font-size="10" font-weight="bold" text-anchor="middle">SSR</text>
                    </svg>
                </div>
            </div>
        </div>

        <div class="rk-err-item" id="err-item-4">
            <div class="rk-err-top">
                <div class="rk-err-title">
                    <h3>4. Montaż w szafkach o wysokiej wilgotności</h3>
                </div>
                <div class="rk-toggle-wrapper">
                    <span class="rk-toggle-label active-danger">Błąd</span>
                    <label class="rk-switch">
                        <input type="checkbox" onchange="toggleAudit('err-item-4', this)">
                        <span class="rk-slider"></span>
                    </label>
                    <span class="rk-toggle-label">Poprawnie</span>
                </div>
            </div>
            <div class="rk-err-content">
                <div class="rk-err-details">
                    <div class="rk-err-state state-danger active">
                        <h4><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg> Skutek: Korozja i zwarcie</h4>
                        <p>Instalowanie siłowników przed całkowitym wyschnięciem wylewki (wilgotność szczątkowa > 2%). Agresywna wilgoć technologiczna paruje ze skrzynek, skrapla się pod obudową IP siłownika i natychmiast powoduje zwarcie na wewnętrznej płytce rezystora.</p>
                    </div>
                    <div class="rk-err-state state-success">
                        <h4><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg> Standard: Odczekanie do wygrzewu</h4>
                        <p>Montaż jakiejkolwiek elektroniki w szafce rozdzielaczowej następuje dopiero po przeprowadzeniu pełnego cyklu wygrzewania <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" class="rk-err-link">wylewki betonowej lub anhydrytowej</a> i pomiarze higrometrem spadku wilgotności otoczenia poniżej norm krytycznych.</p>
                    </div>
                </div>
                <div class="rk-err-visual">
                    <svg class="rk-svg-static svg-danger" viewBox="0 0 100 100" style="display:block;">
                        <rect x="25" y="20" width="50" height="60" fill="none" stroke="#334155" stroke-width="3" rx="4"/>
                        <path d="M 40 45 Q 40 55 45 55 Q 50 55 50 45 Q 45 35 40 45 Z" fill="#0284c7"/>
                        <path d="M 60 55 Q 60 65 65 65 Q 70 65 70 55 Q 65 45 60 55 Z" fill="#0284c7"/>
                        <path d="M 35 70 L 65 70" stroke="#ef4444" stroke-width="3"/>
                        <path d="M 35 75 L 65 75" stroke="#ef4444" stroke-width="3"/>
                    </svg>
                    <svg class="rk-svg-static svg-success" viewBox="0 0 100 100" style="display:none;">
                        <rect x="25" y="20" width="50" height="60" fill="none" stroke="#334155" stroke-width="3" rx="4"/>
                        <path d="M 40 50 L 47 57 L 60 40" fill="none" stroke="#10b981" stroke-width="5" stroke-linecap="round"/>
                        <text x="50" y="85" fill="#10b981" font-size="10" font-weight="bold" text-anchor="middle">< 2% WILGOTNOŚCI</text>
                    </svg>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
function toggleAudit(itemId, checkbox) {
    const item = document.getElementById(itemId);
    const labelDanger = item.querySelector('.rk-toggle-label:first-child');
    const labelSuccess = item.querySelector('.rk-toggle-label:last-child');
    
    const stateDanger = item.querySelector('.state-danger');
    const stateSuccess = item.querySelector('.state-success');
    
    const svgDanger = item.querySelector('.svg-danger');
    const svgSuccess = item.querySelector('.svg-success');

    if (checkbox.checked) {
        // Przełącz na "Poprawnie" (Success)
        labelDanger.classList.remove('active-danger');
        labelSuccess.classList.add('active-success');
        item.style.borderColor = 'var(--rk-err-success)';
        
        stateDanger.classList.remove('active');
        stateSuccess.classList.add('active');
        
        svgDanger.style.display = 'none';
        svgSuccess.style.display = 'block';
    } else {
        // Przełącz na "Błąd" (Danger)
        labelSuccess.classList.remove('active-success');
        labelDanger.classList.add('active-danger');
        item.style.borderColor = 'var(--rk-err-border)';
        
        stateSuccess.classList.remove('active');
        stateDanger.classList.add('active');
        
        svgSuccess.style.display = 'none';
        svgDanger.style.display = 'block';
    }
}
</script>



<style>
:root {
    --rk-sum-dark: #020617;
    --rk-sum-panel: #0f172a;
    --rk-sum-primary: #10b981; /* Emerald/Green for success/summary */
    --rk-sum-primary-light: #d1fae5;
    --rk-sum-accent: #f59e0b; /* Amber/Gold for heat/electricity */
    --rk-sum-warning: #ef4444;
    --rk-sum-bg: #f8fafc;
    --rk-sum-border: #cbd5e1;
    --rk-sum-text: #334155;
    --rk-sum-text-dim: #64748b;
}

.rk-summary-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(16, 185, 129, 0.15);
    border: 1px solid rgba(16, 185, 129, 0.3);
    overflow: hidden;
}

/* Header z ekspertem */
.rk-summary-header {
    background: linear-gradient(135deg, var(--rk-sum-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    display: flex;
    align-items: center;
    gap: 30px;
    border-bottom: 4px solid var(--rk-sum-primary);
    position: relative;
    overflow: hidden;
}

.rk-summary-header::after {
    content: ''; position: absolute; right: 0; top: 0; width: 300px; height: 100%;
    background: radial-gradient(circle at right, rgba(16, 185, 129, 0.15) 0%, transparent 70%);
}

.rk-expert-avatar {
    width: 90px;
    height: 90px;
    border-radius: 50%;
    border: 3px solid var(--rk-sum-primary);
    box-shadow: 0 0 20px rgba(16, 185, 129, 0.4);
    object-fit: cover;
    position: relative;
    z-index: 2;
}

.rk-header-content {
    position: relative;
    z-index: 2;
}

.rk-header-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(16, 185, 129, 0.2);
    color: #6ee7b7;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 10px;
    border: 1px solid rgba(110, 231, 183, 0.3);
}

.rk-header-content h2 {
    font-size: 26px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 8px 0;
    line-height: 1.2;
}

.rk-header-content p {
    color: #94a3b8;
    font-size: 14px;
    margin: 0;
    font-weight: 500;
}

/* Sekcja z zakładkami i wiedzą */
.rk-summary-body {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: #ffffff;
}

.rk-rules-list {
    padding: 30px;
    border-right: 1px solid var(--rk-sum-border);
    display: flex;
    flex-direction: column;
    gap: 10px;
    background: #f8fafc;
}

.rk-rule-btn {
    background: #ffffff;
    border: 1px solid var(--rk-sum-border);
    padding: 18px 20px;
    border-radius: 12px;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: flex-start;
    gap: 15px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-rule-btn:hover {
    border-color: var(--rk-sum-primary);
    transform: translateX(4px);
}

.rk-rule-btn.active {
    background: var(--rk-sum-primary-light);
    border-color: var(--rk-sum-primary);
    box-shadow: inset 4px 0 0 var(--rk-sum-primary);
}

.rk-rule-icon {
    width: 32px; height: 32px;
    background: #f1f5f9;
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    color: var(--rk-sum-text-dim);
    flex-shrink: 0;
    transition: 0.3s;
}

.rk-rule-btn.active .rk-rule-icon {
    background: var(--rk-sum-primary);
    color: #ffffff;
}

.rk-rule-text h3 {
    margin: 0 0 5px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-sum-dark);
}

.rk-rule-text p {
    margin: 0;
    font-size: 13px;
    color: var(--rk-sum-text-dim);
    line-height: 1.5;
}

/* Panel Detali (Prawy) */
.rk-rule-details {
    padding: 40px;
    position: relative;
}

.rk-detail-panel {
    display: none;
    animation: fadeScale 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-detail-panel.active {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

@keyframes fadeScale {
    from { opacity: 0; transform: scale(0.95); }
    to { opacity: 1; transform: scale(1); }
}

.rk-detail-panel h4 {
    margin: 0;
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-sum-dark);
}

.rk-detail-panel p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-sum-text);
}

.rk-sum-link {
    color: var(--rk-sum-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dotted var(--rk-sum-accent);
    transition: 0.3s;
}
.rk-sum-link:hover { border-bottom-style: solid; color: #d97706; }

.rk-detail-svg {
    width: 100%;
    height: 160px;
    background: var(--rk-sum-dark);
    border-radius: 12px;
    padding: 15px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.5);
}

/* Narzędzie Szybkiego Szacowania (Kalkulator) */
.rk-quick-calc {
    background: var(--rk-sum-panel);
    padding: 35px 50px;
    border-top: 1px solid #1e293b;
    color: #ffffff;
}

.rk-calc-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 25px;
}

.rk-calc-header h4 {
    margin: 0; font-size: 18px; font-weight: 900; color: #ffffff;
    display: flex; align-items: center; gap: 10px;
}

.rk-calc-grid {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: 40px;
    align-items: center;
}

.rk-calc-input-area {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-calc-label { font-size: 13px; font-weight: 700; color: #94a3b8; display: flex; justify-content: space-between; }
.rk-calc-label span { color: #ffffff; font-size: 16px; font-weight: 900; }

.rk-sum-range {
    -webkit-appearance: none; width: 100%; height: 6px; border-radius: 3px; background: #334155; outline: none;
}
.rk-sum-range::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none; width: 22px; height: 22px; border-radius: 50%;
    background: var(--rk-sum-primary); cursor: pointer; border: 3px solid #ffffff; transition: 0.1s;
}
.rk-sum-range::-webkit-slider-thumb:active { transform: scale(1.15); }

.rk-calc-results {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
}

.rk-result-box {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    padding: 15px;
    border-radius: 12px;
    text-align: center;
}

.rk-result-box.highlight { border-color: var(--rk-sum-primary); background: rgba(16, 185, 129, 0.1); }

.rk-res-val { display: block; font-size: 22px; font-weight: 900; color: #ffffff; margin-bottom: 5px; }
.rk-result-box.highlight .rk-res-val { color: var(--rk-sum-primary); }
.rk-res-lab { display: block; font-size: 11px; color: #94a3b8; text-transform: uppercase; font-weight: 700; line-height: 1.4; }

/* SEKACJA AUTORSKA - PODPIS EKSPERTA */
.rk-summary-author {
    background: #f1f5f9;
    padding: 30px 50px;
    display: flex;
    align-items: flex-start;
    gap: 25px;
    border-top: 1px solid var(--rk-sum-border);
}

.rk-author-photo-small {
    width: 75px;
    height: 75px;
    border-radius: 50%;
    border: 3px solid var(--rk-sum-primary);
    box-shadow: 0 4px 15px rgba(16, 185, 129, 0.2);
    object-fit: cover;
    flex-shrink: 0;
}

.rk-author-info {
    flex-grow: 1;
}

.rk-author-info h4 {
    margin: 0 0 6px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-sum-dark);
}

.rk-author-info p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-sum-text);
    line-height: 1.6;
}

.rk-author-links {
    display: flex;
    gap: 15px;
    margin-top: 12px;
}

.rk-author-links a {
    color: #0284c7;
    font-size: 13px;
    font-weight: 800;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    transition: color 0.2s;
}

.rk-author-links a:hover {
    color: #1d4ed8;
    text-decoration: underline;
}

/* Animacje SVG */
.anim-piston-press { animation: pistonPress 2s infinite ease-in-out; }
@keyframes pistonPress { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(15px); } }

.anim-pulse-ring { animation: pulseRing 2s infinite; transform-origin: center; }
@keyframes pulseRing { 0% { transform: scale(0.8); opacity: 1; } 100% { transform: scale(1.5); opacity: 0; } }

.anim-spark { animation: sparkFlash 1.5s infinite; }
@keyframes sparkFlash { 0%, 100% { opacity: 0.3; } 50% { opacity: 1; filter: drop-shadow(0 0 8px #f59e0b); } }

@media (max-width: 768px) {
    .rk-summary-header { flex-direction: column; text-align: center; padding: 30px 20px; }
    .rk-expert-avatar { width: 70px; height: 70px; }
    .rk-summary-body { grid-template-columns: 1fr; }
    .rk-rules-list { border-right: none; border-bottom: 1px solid var(--rk-sum-border); padding: 20px; }
    .rk-rule-details { padding: 25px 20px; }
    .rk-calc-grid { grid-template-columns: 1fr; gap: 25px; }
    .rk-quick-calc { padding: 30px 20px; }
    .rk-calc-results { grid-template-columns: 1fr; }
    .rk-summary-author { flex-direction: column; text-align: center; padding: 30px 20px; align-items: center; }
    .rk-author-links { justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-summary-final",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Inżynierskie podsumowanie: Siłowniki termoelektryczne na rozdzielaczach",
    "description": "Kompaktowe zestawienie parametrów siłowników termicznych i kalkulator doboru zasilacza do automatyki podłogówki. Twórca: Robert Kucharski.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "CEO & Główny Projektant HVAC",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-summary",
    "name": "Parametry Prądowe i Mechaniczne Automatyki",
    "description": "Twarde dane przeliczeniowe do doboru zasilania dla siłowników termoelektrycznych i weryfikacji gwintów.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dobór siłownika do rozdzielacza",
      "kalkulator zasilacza 24v",
      "skok trzpienia",
      "prąd rozruchowy siłownika",
      "automatyka ogrzewania podłogowego"
    ],
    "measurementTechnique": "Szacowanie oparte na standardowym poborze 2W oraz prądzie rozruchowym rzędu 0.25A na siłownik (przy 24V).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Kluczowy skok: minimum 4.0 mm dla szczelnego domknięcia.",
        "Prąd szczytowy: Wymaga transformatora o mocy powiększonej o 20% współczynnik bezpieczeństwa.",
        "Kompatybilność gwintu: Dominujący rynkowy standard to M30x1.5 mm."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-summary",
    "name": "Kalkulator Automatyki Strefowej",
    "description": "Moduł przeliczający liczbę pętli na sumaryczny prąd rozruchowy i minimalną moc zasilacza na szynę DIN.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Forms",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-summary-container" id="rk-summary-app">
    
    <div class="rk-summary-header">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-expert-avatar" loading="lazy">
        <div class="rk-header-content">
            <div class="rk-header-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Wnioski Eksperta
            </div>
            <h2>Inżynierskie podsumowanie: Automatyka Siłowników</h2>
            <p>Zebrałem dla Ciebie 3 żelazne reguły automatyki. Siłownik to nie gadżet – to egzekutor woli termostatu. Zły dobór gwintu lub skoku mści się błędem przepływu w pompie ciepła.</p>
        </div>
    </div>

    <div class="rk-summary-body">
        
        <div class="rk-rules-list">
            <button class="rk-rule-btn active" data-panel="det-1">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                <div class="rk-rule-text">
                    <h3>Skok roboczy (min. 4.0 mm)</h3>
                    <p>Zapobiega przeciekom krzyżowym</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="det-2">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg></div>
                <div class="rk-rule-text">
                    <h3>Prąd rozruchowy listwy</h3>
                    <p>Zapas mocy rzędu 20% to mus</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="det-3">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg></div>
                <div class="rk-rule-text">
                    <h3>Bezwładność wosku</h3>
                    <p>Typ NC – 3 minuty pełnego cyklu</p>
                </div>
            </button>
        </div>

        <div class="rk-rule-details">
            
            <div class="rk-detail-panel active" id="det-1">
                <h4>Ignorowany Skok Tłoczka</h4>
                <p>Nigdy nie instaluj siłownika o skoku roboczym 3.0 mm na zaworze wymagającym 4.5 mm. Efekt? Pętla nigdy się nie zamyka. Przepływ rzędu 0.3 l/min poza kontrolą zaburza <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/" class="rk-sum-link">równoważenie hydrauliczne rozdzielacza</a> i niweczy sens <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-sum-link">obliczeń OZC</a>.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <!-- Zawór i trzpień -->
                        <path d="M 80 80 L 120 80 L 120 100 L 80 100 Z" fill="#334155"></path>
                        <rect x="95" y="50" width="10" height="30" fill="#cbd5e1"></rect>
                        <!-- Tłoczek siłownika animowany -->
                        <rect class="anim-piston-press" x="85" y="20" width="30" height="20" fill="#10b981"></rect>
                        <line x1="130" y1="50" x2="140" y2="50" stroke="#f59e0b" stroke-width="2"></line>
                        <line x1="130" y1="80" x2="140" y2="80" stroke="#f59e0b" stroke-width="2"></line>
                        <text x="145" y="70" fill="#f59e0b" font-size="12" font-weight="bold">4.0 mm</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="det-2">
                <h4>Zabójcze obciążenie dla przekaźników</h4>
                <p>8 siłowników to pozornie zaledwie 16 W podczas pracy, ale w fazie startu potrafią pobrać z sieci niemal 2.4 A prądu (przy 24V). Zastosowanie taniej listwy sterującej doprowadzi do &#8222;sklejenia&#8221; się wewnętrznych styków przekaźnika termostatu.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <circle class="anim-pulse-ring" cx="100" cy="50" r="20" fill="none" stroke="#f59e0b" stroke-width="2"></circle>
                        <rect x="80" y="30" width="40" height="40" fill="#1e293b" stroke="#f59e0b" stroke-width="2" rx="4"></rect>
                        <path class="anim-spark" d="M 95 35 L 105 35 L 100 50 L 110 50 L 95 65 L 100 55 L 90 55 Z" fill="#f59e0b"></path>
                        <text x="100" y="85" fill="#f59e0b" font-size="10" text-anchor="middle" font-weight="bold">+20% ZAPASU MOCY</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="det-3">
                <h4>Bezwładność chroni sprężarkę</h4>
                <p>Termoelement siłownika nagrzewa się woskiem powoli – otwarcie zajmuje nawet 5 minut. W instalacji podłogówki zapobiega to uderzeniom hydraulicznym i daje <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-sum-link">inwerterowej pompie ciepła</a> cenny czas na płynne zredukowanie obrotów sprężarki, zamiast generować gwałtowne skoki ciśnienia.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <circle cx="100" cy="50" r="30" fill="none" stroke="#334155" stroke-width="4"></circle>
                        <circle cx="100" cy="50" r="26" fill="none" stroke="#10b981" stroke-width="4" stroke-dasharray="163" stroke-dashoffset="40"></circle>
                        <line x1="100" y1="50" x2="100" y2="30" stroke="#ffffff" stroke-width="3" stroke-linecap="round"></line>
                        <line x1="100" y1="50" x2="115" y2="50" stroke="#ffffff" stroke-width="3" stroke-linecap="round"></line>
                        <text x="100" y="65" fill="#10b981" font-size="10" text-anchor="middle" font-weight="bold">3-5 MIN</text>
                    </svg>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-quick-calc">
        <div class="rk-calc-header">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-sum-primary)" stroke-width="2.5"><rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><line x1="8" y1="6" x2="16" y2="6"></line><line x1="16" y1="14" x2="16.01" y2="14"></line><line x1="12" y1="14" x2="12.01" y2="14"></line><line x1="8" y1="14" x2="8.01" y2="14"></line><line x1="16" y1="18" x2="16.01" y2="18"></line><line x1="12" y1="18" x2="12.01" y2="18"></line><line x1="8" y1="18" x2="8.01" y2="18"></line></svg>
                Inżynierski Kalkulator Zasilania (24V DC)
            </h4>
            <span style="font-size:12px; color:#64748b;">Dla prądu rozruchowego max. 0.25A</span>
        </div>

        <div class="rk-calc-grid">
            
            <div class="rk-calc-input-area">
                <div class="rk-calc-label">
                    Liczba pętli (siłowników):
                    <span id="sumActuatorOut">12 szt.</span>
                </div>
                <input type="range" class="rk-sum-range" id="sumActuatorSlider" min="2" max="24" step="1" value="12">
                <p style="font-size: 11px; color:#64748b; margin:0;">*Wylicza optymalny dobór transformatora.</p>
            </div>

            <div class="rk-calc-results">
                <div class="rk-result-box">
                    <span class="rk-res-val" id="resCurrent">3.0 <span style="font-size:14px;color:#64748b;">A</span></span>
                    <span class="rk-res-lab">Szczytowy Prąd Startowy</span>
                </div>
                <div class="rk-result-box highlight">
                    <span class="rk-res-val" id="resPower">87 <span style="font-size:14px;color:var(--rk-sum-primary);">W</span></span>
                    <span class="rk-res-lab">Min. moc zasilacza (DIN)</span>
                </div>
                <div class="rk-result-box">
                    <span class="rk-res-val" id="resCost">10.37 <span style="font-size:14px;color:#64748b;">zł</span></span>
                    <span class="rk-res-lab">Zużycie Energii / Mies.</span>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-summary-author">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - CEO i Projektant HVAC" class="rk-author-photo-small" loading="lazy">
        <div class="rk-author-info">
            <h4>Robert Kucharski</h4>
            <p>CEO i twórca portalu Projekt-Ogrzewania.pl, gdzie moje artykuły czyta ponad 11 000 unikalnych użytkowników miesięcznie. Jestem głównym projektantem i audytorem instalacji HVAC z regionu Podkarpacia. Wszystkie publikowane tu treści opieram na wieloletnim, praktycznym doświadczeniu z placów budowy. Moja misja to dostarczanie bezkompromisowej, twardej wiedzy inżynierskiej, która chroni budżety inwestorów.</p>
            <div class="rk-author-links">
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path></svg>
                    LinkedIn
                </a>
                <a href="https://www.facebook.com/robert.kucharski.budowa.bez.sciemy" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.469h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.469h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path></svg>
                    Facebook
                </a>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 2. Logika Zakładek (Złote Zasady)
    const btns = document.querySelectorAll('.rk-rule-btn');
    const panels = document.querySelectorAll('.rk-detail-panel');

    btns.forEach(btn => {
        btn.addEventListener('click', () => {
            // Reset
            btns.forEach(b => b.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Set Active
            btn.classList.add('active');
            const target = document.getElementById(btn.getAttribute('data-panel'));
            if(target) {
                // Restart animation
                void target.offsetWidth;
                target.classList.add('active');
            }
        });
    });

    // 3. Logika Kalkulatora Automatyki Strefowej
    const slider = document.getElementById('sumActuatorSlider');
    const actOut = document.getElementById('sumActuatorOut');
    const resCurrent = document.getElementById('resCurrent');
    const resPower = document.getElementById('resPower');
    const resCost = document.getElementById('resCost');

    function updateEstimator() {
        const count = parseInt(slider.value);
        actOut.textContent = count + ' szt.';

        // Obliczenia techniczne (dla 24V siłownika PTC):
        // Założony prąd rozruchowy: 0.25 A na sztukę
        const totalCurrent = count * 0.25;
        
        // Zasilacz 24V: P = U * I * 1.2 (współczynnik zapasu 20%)
        const powerNeeded = Math.ceil(totalCurrent * 24 * 1.2);
        
        // Estymowany koszt: praca 2W przez około 12h dziennie przez 30 dni = 0.72 kWh miesięcznie na 1 sztukę
        // Cena rynkowa prądu: ok. 1.20 PLN / kWh (0.72 * 1.20 = 0.86 PLN na sztukę miesięcznie)
        const costPerMonth = count * 0.864;

        resCurrent.innerHTML = totalCurrent.toFixed(2) + ' <span style="font-size:14px;color:#64748b;">A</span>';
        resPower.innerHTML = powerNeeded + ' <span style="font-size:14px;color:var(--rk-sum-primary);">W</span>';
        resCost.innerHTML = costPerMonth.toFixed(2) + ' <span style="font-size:14px;color:#64748b;">PLN</span>';
    }

    if(slider) {
        slider.addEventListener('input', updateEstimator);
        updateEstimator(); // Init
    }
});
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-card: #1e293b;
    --rk-faq-brand: #4f46e5; /* Eksperckie Indygo */
    --rk-faq-brand-light: #e0e7ff;
    --rk-faq-accent: #06b6d4; /* Cyjan dla kontrastu */
    --rk-faq-success: #10b981;
    --rk-faq-bg: #f8fafc;
    --rk-faq-border: #e2e8f0;
    --rk-faq-text: #334155;
    --rk-faq-muted: #64748b;
}

.rk-faq-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(79, 70, 229, 0.15);
    border: 1px solid rgba(79, 70, 229, 0.3);
    overflow: hidden;
}

/* Nagłówek */
.rk-faq-header {
    background: linear-gradient(135deg, var(--rk-faq-dark) 0%, #312e81 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-faq-brand);
}

.rk-faq-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(79, 70, 229, 0.3);
    color: #a5b4fc;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(165, 180, 252, 0.3);
}

.rk-faq-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0;
}

.rk-faq-title span { color: #818cf8; }

/* Sekcja Akordeonu */
.rk-faq-interactive {
    padding: 40px 50px;
    background: var(--rk-faq-bg);
}

.rk-faq-list {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-faq-item {
    background: #ffffff;
    border: 1px solid var(--rk-faq-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-faq-item.active {
    border-color: var(--rk-faq-brand);
    box-shadow: 0 10px 25px -5px rgba(79, 70, 229, 0.15);
}

/* Przycisk Pytania */
.rk-faq-question {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 20px 25px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-faq-dark);
    transition: background 0.3s, color 0.3s;
}

.rk-faq-question:hover {
    background: var(--rk-faq-brand-light);
}

.rk-faq-item.active .rk-faq-question {
    background: var(--rk-faq-brand);
    color: #ffffff;
}

.rk-faq-icon {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-faq-brand-light);
    color: var(--rk-faq-brand);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq-item.active .rk-faq-icon {
    background: rgba(255,255,255,0.2);
    color: #ffffff;
    transform: rotate(180deg);
}

/* Kontener Odpowiedzi (Animacja Grid) */
.rk-faq-answer-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq-item.active .rk-faq-answer-wrapper {
    grid-template-rows: 1fr;
}

.rk-faq-answer-inner {
    overflow: hidden;
}

/* Wnętrze Odpowiedzi (Grid: Tekst + SVG) */
.rk-faq-content {
    padding: 25px;
    border-top: 1px solid var(--rk-faq-border);
    display: grid;
    grid-template-columns: 1fr 200px;
    gap: 30px;
    align-items: center;
}

.rk-faq-text {
    font-size: 15px;
    line-height: 1.8;
    color: var(--rk-faq-text);
}

.rk-faq-text strong {
    font-weight: 800;
    color: var(--rk-faq-dark);
}

/* Wizualizacje SVG */
.rk-faq-visual {
    background: var(--rk-faq-dark);
    border-radius: 12px;
    padding: 15px;
    height: 140px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    border: 3px solid #334155;
    position: relative;
    overflow: hidden;
}

.rk-svg-box {
    width: 100%;
    height: 100%;
}

@media (max-width: 768px) {
    .rk-faq-header, .rk-faq-interactive { padding: 30px 20px; }
    .rk-faq-title { font-size: 24px; }
    .rk-faq-content { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-faq-visual { height: 120px; max-width: 250px; margin: 0 auto; width: 100%; }
    .rk-faq-question { font-size: 14px; padding: 18px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania o siłowniki termoelektryczne",
    "description": "Eksperckie odpowiedzi na pytania dotyczące kosztów, napięcia, funkcji First Open, weryfikacji działania i standardów gwintów siłowników.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/"
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Ile prądu zużywa siłownik termoelektryczny w skali miesiąca?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Pojedynczy siłownik o mocy roboczej 2 W, pracujący średnio przez 12 godzin na dobę, zużywa miesięcznie 0,72 kWh energii elektrycznej. Przy cenie prądu na poziomie 1,20 PLN/kWh, koszt utrzymania jednej sztuki wynosi około 0,86 PLN na miesiąc."
        }
      },
      {
        "@type": "Question",
        "name": "Czy można zamontować siłownik 24V bezpośrednio do instalacji 230V?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, bezpośrednie podłączenie siłownika 24 V do sieci napięcia 230 V spowoduje natychmiastowe przepalenie wewnętrznego elementu grzejnego PTC i trwałe zniszczenie urządzenia. Wymagane jest pośrednictwo dedykowanej listwy sterującej z wbudowanym transformatorem obniżającym napięcie."
        }
      },
      {
        "@type": "Question",
        "name": "Co oznacza funkcja \"First Open\" w fabrycznie nowych siłownikach?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Funkcja First Open (FO) to mechaniczna blokada utrzymująca fabrycznie nowy siłownik NC w pozycji otwartej bez konieczności podłączania zasilania elektrycznego. Umożliwia to napełnienie instalacji, przeprowadzenie prób szczelności oraz uruchomienie grzewcze budynku przed montażem automatyki, a blokada zwalnia się samoczynnie przy pierwszym podaniu napięcia."
        }
      },
      {
        "@type": "Question",
        "name": "Jak sprawdzić, czy siłownik na rozdzielaczu działa prawidłowo?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Prawidłowość działania sprawdza się poprzez weryfikację pozycji wskaźnika wysuwu na obudowie (wysunięty kołnierz oznacza przepływ) oraz manualny pomiar temperatury rury za zaworem. Dodatkowo, po około 10 minutach od podania napięcia, obudowa sprawnego siłownika powinna być wyraźnie ciepła w dotyku (ok. 40-45°C)."
        }
      },
      {
        "@type": "Question",
        "name": "Jaki gwint jest standardem w rozdzielaczach ogrzewania podłogowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Absolutnym standardem rynkowym, stosowanym przez ponad 90% producentów rozdzielaczy (np. KAN-therm, Tece, Purmo, Gorgiel), jest gwint metryczny M30 x 1,5 mm. Przed zakupem należy bezwzględnie zmierzyć suwmiarką średnicę zewnętrzną gwintu zaworu, aby wykluczyć standardy niszowe, takie jak M28 x 1,5 mm."
        }
      }
    ]
  }
]
</script>

<div class="rk-faq-container" id="rk-faq-app">
    <div class="rk-faq-header">
        <div class="rk-faq-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Baza Wiedzy Inwestora
        </div>
        <h2 class="rk-faq-title">FAQ – <span>Najczęściej zadawane pytania</span></h2>
    </div>

    <div class="rk-faq-interactive">
        <div class="rk-faq-list">
            
            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>1. Ile prądu zużywa siłownik termoelektryczny w skali miesiąca?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Pojedynczy siłownik o mocy roboczej <strong>2 W</strong>, pracujący średnio przez 12 godzin na dobę, zużywa miesięcznie <strong>0,72 kWh</strong> energii elektrycznej. Przy cenie prądu na poziomie 1,20 PLN/kWh, koszt utrzymania jednej sztuki wynosi około <strong>0,86 PLN</strong> na miesiąc.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="30" y="15" width="40" height="40" fill="#1e293b" stroke="#eab308" stroke-width="2" rx="4"/>
                                    <path d="M 45 25 L 55 25 L 50 40 L 60 40 L 45 55 L 50 45 L 40 45 Z" fill="#eab308"/>
                                    <text x="50" y="65" fill="#eab308" font-size="10" text-anchor="middle" font-weight="bold">0.86 PLN / MIES.</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>2. Czy można zamontować siłownik 24V bezpośrednio do instalacji 230V?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                <strong>Nie</strong>, bezpośrednie podłączenie siłownika 24 V do sieci napięcia 230 V spowoduje natychmiastowe przepalenie wewnętrznego elementu grzejnego PTC i <strong>trwałe zniszczenie urządzenia</strong>. Wymagane jest pośrednictwo dedykowanej listwy sterującej z wbudowanym transformatorem obniżającym napięcie.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path d="M 20 35 L 40 35 M 60 35 L 80 35" stroke="#ef4444" stroke-width="4" stroke-dasharray="4"/>
                                    <rect x="40" y="20" width="20" height="30" fill="#ef4444" rx="2"/>
                                    <text x="20" y="25" fill="#ef4444" font-size="12" font-weight="bold">230V</text>
                                    <text x="65" y="25" fill="#ef4444" font-size="12" font-weight="bold">24V</text>
                                    <path d="M 15 15 L 85 55 M 15 55 L 85 15" stroke="#ef4444" stroke-width="4" opacity="0.8"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>3. Co oznacza funkcja &#8222;First Open&#8221; w fabrycznie nowych siłownikach?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Funkcja <strong>First Open (FO)</strong> to mechaniczna blokada utrzymująca fabrycznie nowy siłownik NC w pozycji otwartej bez konieczności podłączania zasilania elektrycznego. Umożliwia to napełnienie instalacji, przeprowadzenie prób szczelności oraz uruchomienie grzewcze budynku przed montażem automatyki, a blokada zwalnia się samoczynnie przy pierwszym podaniu napięcia.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path d="M 40 35 L 40 20 A 10 10 0 0 1 60 20" fill="none" stroke="#10b981" stroke-width="4"/>
                                    <rect x="35" y="35" width="30" height="25" fill="#1e293b" stroke="#10b981" stroke-width="2" rx="2"/>
                                    <circle cx="50" cy="47" r="3" fill="#10b981"/>
                                    <text x="50" y="12" fill="#10b981" font-size="10" text-anchor="middle" font-weight="bold">FIRST OPEN (FO)</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>4. Jak sprawdzić, czy siłownik na rozdzielaczu działa prawidłowo?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Prawidłowość działania sprawdza się poprzez weryfikację pozycji <strong>wskaźnika wysuwu na obudowie</strong> (wysunięty kołnierz oznacza przepływ) oraz manualny pomiar temperatury rury za zaworem. Dodatkowo, po około 10 minutach od podania napięcia, obudowa sprawnego siłownika powinna być wyraźnie ciepła w dotyku (ok. <strong>40-45°C</strong>).
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="45" y="10" width="10" height="40" fill="#334155" rx="5"/>
                                    <circle cx="50" cy="50" r="8" fill="#ef4444"/>
                                    <rect x="48" y="20" width="4" height="30" fill="#ef4444"/>
                                    <text x="75" y="40" fill="#ef4444" font-size="14" font-weight="bold">45°C</text>
                                    <path d="M 30 20 L 35 20 M 30 30 L 35 30 M 30 40 L 35 40" stroke="#64748b" stroke-width="2"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>5. Jaki gwint jest standardem w rozdzielaczach ogrzewania podłogowego?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Absolutnym standardem rynkowym, stosowanym przez ponad 90% producentów rozdzielaczy (np. KAN-therm, Tece, Purmo, Gorgiel), jest <strong>gwint metryczny M30 x 1,5 mm</strong>. Przed zakupem należy bezwzględnie zmierzyć suwmiarką średnicę zewnętrzną gwintu zaworu, aby wykluczyć standardy niszowe, takie jak M28 x 1,5 mm.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="30" y="25" width="40" height="20" fill="#334155" stroke="#cbd5e1" stroke-width="2"/>
                                    <line x1="30" y1="20" x2="30" y2="50" stroke="#cbd5e1" stroke-width="2"/>
                                    <line x1="70" y1="20" x2="70" y2="50" stroke="#cbd5e1" stroke-width="2"/>
                                    <path d="M 25 15 L 75 15" stroke="#10b981" stroke-width="2" stroke-dasharray="2"/>
                                    <text x="50" y="10" fill="#10b981" font-size="12" text-anchor="middle" font-weight="bold">M30 x 1.5</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const faqItems = document.querySelectorAll('.rk-faq-item');

    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-faq-question');
        btn.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            faqItems.forEach(i => i.classList.remove('active'));
            
            if (!isActive) {
                item.classList.add('active');
            }
        });
    });
    
    if(faqItems.length > 0) {
        faqItems[0].classList.add('active');
    }
});
</script>



<style>
:root {
    --rk-sum-dark: #0f172a;
    --rk-sum-blue: #0284c7;
    --rk-sum-light-blue: #f0f9ff;
    --rk-sum-green: #10b981;
    --rk-sum-green-light: #dcfce7;
    --rk-sum-red: #ef4444;
    --rk-sum-gold: #eab308;
    --rk-sum-gray: #64748b;
    --rk-sum-border: #e2e8f0;
    --rk-sum-bg: #ffffff;
}

.rk-sum-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-sum-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-sum-blue);
    overflow: hidden;
}

/* Sekcja Nagłówkowa i Cytat */
.rk-sum-header {
    padding: 45px 50px 35px;
    background: linear-gradient(135deg, var(--rk-sum-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
    position: relative;
}

.rk-sum-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #38bdf8;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(56, 189, 248, 0.2);
}

.rk-sum-quote-box {
    position: relative;
    max-width: 700px;
    margin: 0 auto;
}

.rk-sum-quote-mark {
    font-size: 80px;
    color: rgba(255,255,255,0.1);
    position: absolute;
    top: -30px;
    left: -20px;
    line-height: 1;
    font-family: serif;
}

.rk-sum-quote-text {
    font-size: 22px;
    font-weight: 800;
    line-height: 1.4;
    color: #ffffff;
    margin: 0 0 15px 0;
    position: relative;
    z-index: 1;
}

.rk-sum-author {
    font-size: 14px;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 2px;
    font-weight: 700;
}

.rk-sum-author span { color: var(--rk-sum-gold); }

/* Interaktywny Symulator Decyzji */
.rk-sum-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-decision-wrapper {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-sum-border);
    border-radius: 20px;
    padding: 10px;
    margin-bottom: 30px;
}

.rk-decision-btn {
    padding: 20px;
    border-radius: 16px;
    border: 2px solid transparent;
    background: transparent;
    cursor: pointer;
    transition: all 0.3s ease;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}

.rk-decision-btn:hover { background: #f1f5f9; }

.rk-decision-btn.active[data-choice="pro"] {
    background: var(--rk-sum-green-light);
    border-color: var(--rk-sum-green);
    box-shadow: 0 10px 20px -5px rgba(16, 185, 129, 0.2);
}

.rk-decision-btn.active[data-choice="amateur"] {
    background: #fef2f2;
    border-color: var(--rk-sum-red);
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.2);
}

.rk-decision-icon {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #e2e8f0;
    color: #64748b;
    transition: all 0.3s;
}

.rk-decision-btn.active[data-choice="pro"] .rk-decision-icon {
    background: var(--rk-sum-green);
    color: #ffffff;
}

.rk-decision-btn.active[data-choice="amateur"] .rk-decision-icon {
    background: var(--rk-sum-red);
    color: #ffffff;
}

.rk-decision-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-sum-dark);
    margin: 0;
}

/* Wynik symulacji */
.rk-sim-result {
    display: grid;
    grid-template-columns: 150px 1fr;
    gap: 30px;
    align-items: center;
    padding: 30px;
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-sum-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-anim-svg {
    width: 100%;
    height: auto;
    max-width: 120px;
    margin: 0 auto;
}

.anim-shield {
    transform-origin: center;
    transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.state-pro .anim-shield { fill: var(--rk-sum-green); stroke: #047857; animation: pulseShield 2s infinite; }
.state-amateur .anim-shield { fill: transparent; stroke: var(--rk-sum-red); stroke-dasharray: 10 10; animation: shatterShield 0.5s forwards; }

@keyframes pulseShield {
    0% { filter: drop-shadow(0 0 0 rgba(16, 185, 129, 0.4)); }
    50% { filter: drop-shadow(0 0 15px rgba(16, 185, 129, 0.8)); transform: scale(1.05); }
    100% { filter: drop-shadow(0 0 0 rgba(16, 185, 129, 0.4)); }
}

@keyframes shatterShield {
    to { stroke-dashoffset: 100; opacity: 0.5; transform: scale(0.9) rotate(-10deg); }
}

.rk-result-content h4 {
    margin: 0 0 10px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-sum-dark);
}

.rk-result-content p {
    margin: 0 0 15px 0;
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
}

.rk-result-content a {
    color: var(--rk-sum-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Mocne CTA */
.rk-sum-cta-box {
    padding: 45px 50px;
    background: #ffffff;
    text-align: center;
    border-top: 1px solid var(--rk-sum-border);
}

.rk-sum-cta-title {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-sum-dark);
    margin: 0 0 15px 0;
}

.rk-sum-cta-text {
    font-size: 16px;
    color: #64748b;
    margin: 0 auto 30px auto;
    max-width: 600px;
    line-height: 1.6;
}

.rk-btn-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-sum-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-massive:hover {
    transform: translateY(-5px);
    background: #0369a1;
    box-shadow: 0 20px 35px -5px rgba(2, 132, 199, 0.5);
    border-color: #7dd3fc;
}

.rk-btn-massive svg {
    transition: transform 0.3s;
}

.rk-btn-massive:hover svg {
    transform: translateX(5px);
}

@media (max-width: 768px) {
    .rk-sum-header, .rk-sum-interactive, .rk-sum-cta-box { padding: 35px 25px; }
    .rk-decision-wrapper { grid-template-columns: 1fr; gap: 10px; }
    .rk-sim-result { grid-template-columns: 1fr; text-align: center; padding: 25px; }
    .rk-anim-svg { max-width: 80px; }
    .rk-sum-quote-text { font-size: 18px; }
    .rk-btn-massive { width: 100%; padding: 16px 20px; font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Podsumowanie – Automatyka oparta na twardych parametrach",
    "description": "Siłowniki termoelektryczne to kluczowy interfejs wykonawczy nowoczesnego systemu HVAC. Dowiedz się, jak precyzyjny dobór chroni Twoją instalację.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-podsumowanie",
    "name": "Skuteczność Automatyki Strefowej",
    "description": "Zestawienie techniczno-ekonomiczne porównujące inwestycję w precyzyjnie dobrane siłowniki na bazie projektu OZC z kosztami błędnego wykonawstwa.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "siłowniki termoelektryczne",
      "automatyka rozdzielaczy",
      "taktowanie pompy ciepła",
      "skok tłoczka",
      "projekt ogrzewania podłogowego"
    ],
    "measurementTechnique": "Analiza sprawności i komfortu cieplnego układu grzewczego w zależności od doboru parametrów siłowników.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Standard Inżynierski: Precyzyjnie dobrany skok tłoczka (np. 4.0 mm) i wyliczony prąd rozruchowy.",
        "Ryzyko Amatorskie: Ignorowanie zgodności gwintów i przepływów skutkujące ciągłym taktowaniem źródła ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#webapp-podsumowanie",
    "name": "Symulator Automatyki Hydraulicznej",
    "description": "Narzędzie interaktywne demonstrujące wpływ precyzyjnie dobranych siłowników termoelektrycznych na działanie całej instalacji grzewczej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-sum-container" id="silowniki-sum-app">
    <div class="rk-sum-header">
        <div class="rk-sum-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Podsumowanie
        </div>
        <div class="rk-sum-quote-box">
            <div class="rk-sum-quote-mark">&#8222;</div>
            <p class="rk-sum-quote-text">
                Siłowniki termoelektryczne to nie jest opcjonalny gadżet. To interfejs wykonawczy, który tłumaczy inteligencję budynku na fizyczny przepływ. Zły dobór skoku tłoczka zamorduje sprawność każdej pompy ciepła.
            </p>
            <div class="rk-sum-author">
                <span>Robert Kucharski</span> | CEO portalu            </div>
        </div>
    </div>

    <div class="rk-sum-interactive">
        <div class="rk-decision-wrapper" id="simDecisions">
            <button class="rk-decision-btn active" data-choice="pro">
                <div class="rk-decision-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                </div>
                <h4 class="rk-decision-title">Standard Inżynierski</h4>
            </button>
            <button class="rk-decision-btn" data-choice="amateur">
                <div class="rk-decision-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                </div>
                <h4 class="rk-decision-title">Wykonawstwo &#8222;na oko&#8221;</h4>
            </button>
        </div>

        <div class="rk-sim-result state-pro" id="simResultBox">
            <svg class="rk-anim-svg" viewBox="0 0 100 100">
                <path class="anim-shield" d="M50 10 L10 25 L10 50 C10 75 40 90 50 95 C60 90 90 75 90 50 L90 25 Z" stroke-width="4" stroke-linejoin="round"></path>
                <polyline class="anim-check" points="35 50 45 60 70 35" fill="none" stroke="#ffffff" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"></polyline>
            </svg>
            <div class="rk-result-content" id="simResultContent">
                <h4 style="color: var(--rk-sum-green);">Absolutna stabilność systemu</h4>
                <p>Precyzyjne zestrojenie parametrów – jak skok roboczy (np. <strong>4,0 mm</strong>) czy siła nacisku (min. <strong>100 N</strong>) – zapobiega przeciekom krzyżowym. Woda trafia wyłącznie tam, gdzie nakazuje automatyka.</p>
                <p>To podstawa bezawaryjnej pracy, która musi bazować na <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">profesjonalnym projekcie ogrzewania podłogowego</a> uwzględniającym wyliczone opory hydrauliczne.</p>
            </div>
        </div>
    </div>

    <div class="rk-sum-cta-box">
        <h3 class="rk-sum-cta-title">Przestań tracić pieniądze na błędy wykonawcze</h3>
        <p class="rk-sum-cta-text">
            Ignorowanie technologii mści się rachunkami i zimną podłogą. Zbuduj swoją wiedzę z setkami artykułów opartych na twardych wyliczeniach, normach PN-EN i realnym doświadczeniu inżynierskim.
        </p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-massive">
            PRZEJDŹ DO BAZY WIEDZY EKSKLUZYWNEJ
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-decision-btn');
    const resultBox = document.getElementById('simResultBox');
    const resultContent = document.getElementById('simResultContent');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Zmiana aktywnych przycisków
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const choice = this.getAttribute('data-choice');

            // Aktualizacja wizualizacji
            if (choice === 'pro') {
                resultBox.className = 'rk-sim-result state-pro';
                resultContent.innerHTML = `
                    <h4 style="color: var(--rk-sum-green);">Absolutna stabilność systemu</h4>
                    <p>Precyzyjne zestrojenie parametrów – jak skok roboczy (np. <strong>4,0 mm</strong>) czy siła nacisku (min. <strong>100 N</strong>) – zapobiega przeciekom krzyżowym. Woda trafia wyłącznie tam, gdzie nakazuje automatyka.</p>
                    <p>To podstawa bezawaryjnej pracy, która musi bazować na <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">profesjonalnym projekcie ogrzewania podłogowego</a> uwzględniającym wyliczone opory hydrauliczne.</p>
                `;
                resultBox.querySelector('.anim-check').style.display = 'block';
            } else {
                resultBox.className = 'rk-sim-result state-amateur';
                resultContent.innerHTML = `
                    <h4 style="color: var(--rk-sum-red);">Taktowanie pompy i wysokie rachunki</h4>
                    <p>Zbagatelizowanie właściwego prądu rozruchowego czy doboru gwintu (M30 vs M28) mści się drastycznym spadkiem sprawności <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" style="color: var(--rk-sum-red);">pompy ciepła</a>.</p>
                    <p>Nieszczelne lub niepasujące siłowniki wymuszają niekontrolowaną cyrkulację, wywołując dyskomfort termiczny domowników i skrócenie żywotności urządzeń grzewczych.</p>
                `;
                resultBox.querySelector('.anim-check').style.display = 'none';
            }
        });
    });
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-panel: #1e293b;
    --rk-dl-accent: #f97316; /* Pomarańczowy termiczny */
    --rk-dl-accent-dark: #ea580c;
    --rk-dl-secondary: #6366f1; /* Indygo elektryczne */
    --rk-dl-bg: #f8fafc;
    --rk-dl-border: #e2e8f0;
    --rk-dl-text: #334155;
    --rk-dl-white: #ffffff;
}

.rk-dl-hub-container {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-dl-white);
    border-radius: 24px;
    border: 1px solid var(--rk-dl-border);
    box-shadow: 0 25px 50px -12px rgba(249, 115, 22, 0.1);
    overflow: hidden;
}

/* NAGŁÓWEK SEKCI */
.rk-dl-header {
    background: linear-gradient(135deg, var(--rk-dl-dark) 0%, #2e1065 100%);
    padding: 45px 50px;
    color: var(--rk-dl-white);
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: relative;
    border-bottom: 4px solid var(--rk-dl-accent);
}

.rk-dl-header-content { position: relative; z-index: 2; max-width: 65%; }

.rk-dl-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(249, 115, 22, 0.2);
    border: 1px solid rgba(249, 115, 22, 0.4);
    color: #fdba74;
    padding: 8px 16px;
    border-radius: 50px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
}

.rk-dl-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 12px 0;
    letter-spacing: -0.5px;
    line-height: 1.3;
}

.rk-dl-header p {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    line-height: 1.6;
}

/* WIZUALIZACJA PDF / IKONA */
.rk-dl-header-visual {
    position: relative;
    z-index: 2;
}

.rk-dl-pdf-icon-svg {
    width: 90px;
    height: auto;
    filter: drop-shadow(0 15px 25px rgba(0,0,0,0.4));
    animation: rkFloatIcon 3.5s infinite ease-in-out alternate;
}

@keyframes rkFloatIcon {
    from { transform: translateY(0) rotate(-2deg); }
    to { transform: translateY(-12px) rotate(2deg); }
}

/* GŁÓWNY WORKSPACE */
.rk-dl-workspace {
    display: flex;
    padding: 45px 50px;
    gap: 45px;
    background: var(--rk-dl-white);
}

.rk-dl-preview-box {
    flex: 1.2;
    background: var(--rk-dl-bg);
    border: 2px dashed var(--rk-dl-border);
    border-radius: 16px;
    padding: 15px;
    position: relative;
    cursor: zoom-in;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-dl-preview-box:hover {
    transform: scale(1.03);
    border-color: var(--rk-dl-accent);
    box-shadow: 0 20px 30px -10px rgba(249, 115, 22, 0.15);
}

.rk-dl-preview-img {
    width: 100%;
    height: auto;
    border-radius: 8px;
    display: block;
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.rk-dl-zoom-hint {
    position: absolute;
    bottom: 25px;
    background: rgba(15, 23, 42, 0.85);
    color: var(--rk-dl-white);
    padding: 8px 16px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 700;
    backdrop-filter: blur(4px);
    display: flex;
    align-items: center;
    gap: 6px;
    opacity: 0.9;
    transition: opacity 0.3s;
}

.rk-dl-preview-box:hover .rk-dl-zoom-hint {
    opacity: 1;
}

/* SEKCJA INFORMACYJNA */
.rk-dl-info-side {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-dl-info-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-dl-dark);
    margin: 0 0 20px 0;
}

.rk-dl-feature-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 15px;
    margin: 0 0 35px 0;
}

.rk-dl-feature-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    background: var(--rk-dl-bg);
    padding: 12px 15px;
    border-radius: 12px;
    border: 1px solid var(--rk-dl-border);
    transition: border-color 0.2s;
}

.rk-dl-feature-item:hover {
    border-color: var(--rk-dl-secondary);
}

.rk-dl-check-svg {
    width: 20px;
    height: 20px;
    color: var(--rk-dl-secondary);
    flex-shrink: 0;
    margin-top: 2px;
}

.rk-dl-feature-text {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-dl-text);
    line-height: 1.4;
}

/* PRZYCISK POBIERANIA */
.rk-dl-main-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-dl-accent);
    color: var(--rk-dl-white);
    text-decoration: none !important;
    padding: 20px 30px;
    border-radius: 14px;
    font-weight: 900;
    font-size: 16px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 10px 20px -5px rgba(249, 115, 22, 0.4);
    border: 2px solid transparent;
}

.rk-dl-main-btn:hover {
    background: var(--rk-dl-accent-dark);
    transform: translateY(-4px);
    box-shadow: 0 15px 30px -5px rgba(249, 115, 22, 0.5);
    border-color: #fdba74;
}

.rk-dl-main-btn svg {
    transition: transform 0.3s;
}

.rk-dl-main-btn:hover svg {
    transform: translateY(3px);
}

/* STOPKA MODUŁU */
.rk-dl-footer {
    padding: 25px 50px;
    background: var(--rk-dl-bg);
    border-top: 1px solid var(--rk-dl-border);
    font-size: 13px;
    color: var(--rk-dl-muted);
    text-align: center;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 15px;
}

.rk-dl-footer a {
    color: var(--rk-dl-secondary);
    font-weight: 700;
    text-decoration: none;
    transition: color 0.2s;
}

.rk-dl-footer a:hover {
    color: #4338ca;
    text-decoration: underline;
}

@media (max-width: 850px) {
    .rk-dl-header { flex-direction: column; text-align: center; padding: 35px 25px; }
    .rk-dl-header-content { max-width: 100%; margin-bottom: 30px; }
    .rk-dl-workspace { flex-direction: column; padding: 35px 25px; }
    .rk-dl-preview-box { width: 100%; margin-bottom: 10px; }
    .rk-dl-footer { flex-direction: column; justify-content: center; padding: 25px; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#infografika-article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/"
    },
    "headline": "Infografika: Siłowniki termoelektryczne na rozdzielaczach",
    "description": "Pobierz inżynierskie kompendium wiedzy o siłownikach termoelektrycznych. Zasada działania, parametry i dobór zasilacza w formacie PDF.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Silowniki-termoelektryczne-na-rozdzielaczach.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-31",
    "dateModified": "2026-05-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#dataset-infografika",
    "name": "Kompendium: Parametry i montaż siłowników termoelektrycznych",
    "description": "Wizualne zestawienie parametrów technicznych, zasady działania i algorytmu doboru zasilacza dla siłowników 230V i 24V na belkach rozdzielacza.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika siłowniki termoelektryczne",
      "schemat podłączenia siłowników",
      "zasada działania siłownika NC",
      "dobór zasilacza do podłogówki 24V",
      "błędy montażu siłowników na rozdzielaczu"
    ],
    "measurementTechnique": "Wizualizacja procesów termodynamicznych i elektrycznych zachodzących w siłownikach na belce rozdzielacza.",
    "mainEntity": {
      "@type": "Thing",
      "name": "Schemat i parametry automatyki strefowej"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/#download-app",
    "name": "Centrum Pobierania Wiedzy: Automatyka Strefowa",
    "description": "Interaktywny moduł umożliwiający podgląd i pobranie dokumentacji technicznej w wysokiej rozdzielczości, dotyczącej siłowników termoelektrycznych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5"
  }
]
</script>

<div class="rk-dl-hub-container" id="app-actuator-dl">
    
    <div class="rk-dl-header">
        <div class="rk-dl-header-content">
            <div class="rk-dl-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
                Darmowe Materiały do Pobrania
            </div>
            <h2>Pobierz Kompletny Przewodnik (Infografika)</h2>
            <p>Zabierz inżynierską wiedzę bezpośrednio na plac budowy. Zasada działania, kluczowe parametry i schemat doboru zasilacza zamknięte w jednym, czytelnym pliku PDF.</p>
        </div>
        <div class="rk-dl-header-visual">
            <svg class="rk-dl-pdf-icon-svg" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M14 2H6C4.89543 2 4 2.89543 4 4V20C4 21.1046 4.89543 22 6 22H18C19.1046 22 20 21.1046 20 20V8L14 2Z" fill="#ef4444" stroke="#ffffff" stroke-width="1.5"/>
                <path d="M14 2V8H20" fill="#dc2626" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
                <circle cx="12" cy="13" r="3" fill="none" stroke="#ffffff" stroke-width="1.5"/>
                <path d="M12 10V11 M12 15V16 M9 13H10 M14 13H15" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round"/>
                <text x="7" y="20" fill="white" font-size="4.5" font-weight="900" font-family="sans-serif">PDF</text>
            </svg>
        </div>
    </div>

    <div class="rk-dl-workspace">
        
        <div class="rk-dl-preview-box" onclick="window.open('https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Silowniki-termoelektryczne-na-rozdzielaczach.webp', '_blank')">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Silowniki-termoelektryczne-na-rozdzielaczach.webp" alt="Infografika - Siłowniki termoelektryczne na rozdzielaczach" class="rk-dl-preview-img" loading="lazy">
            <div class="rk-dl-zoom-hint">
                <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line></svg>
                Kliknij, aby powiększyć
            </div>
        </div>

        <div class="rk-dl-info-side">
            <h3 class="rk-dl-info-title">Co znajdziesz w infografice?</h3>
            
            <div class="rk-dl-feature-grid">
                <div class="rk-dl-feature-item">
                    <svg class="rk-dl-check-svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    <span class="rk-dl-feature-text">Zasada działania i ekspansja fazowa (NC/NO)</span>
                </div>
                <div class="rk-dl-feature-item">
                    <svg class="rk-dl-check-svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    <span class="rk-dl-feature-text">Tabela parametrów: Prąd rozruchowy i skok trzpienia</span>
                </div>
                <div class="rk-dl-feature-item">
                    <svg class="rk-dl-check-svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    <span class="rk-dl-feature-text">Algorytm doboru bezpiecznego zasilacza 24V DIN</span>
                </div>
                <div class="rk-dl-feature-item">
                    <svg class="rk-dl-check-svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    <span class="rk-dl-feature-text">Wysoka rozdzielczość, gotowa do wydruku (A4/A3)</span>
                </div>
            </div>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Silowniki-termoelektryczne-na-rozdzielaczach.pdf" class="rk-dl-main-btn" target="_blank">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
                POBIERZ INFOGRAFIKĘ (PDF)
            </a>
            
            <p style="margin-top: 25px; font-size: 13px; color: var(--rk-dl-muted); line-height: 1.5; padding: 15px; background: var(--rk-dl-bg); border-radius: 8px; border-left: 3px solid var(--rk-dl-secondary);">
                Nie jesteś pewien, jak poprawnie zoptymalizować automatykę dla swojego układu VAV? <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt podłogówki</a> i zyskaj gwarancję bezawaryjnej pracy.
            </p>
        </div>

    </div>

    <div class="rk-dl-footer">
        <div>© 2026 Projekt-Ogrzewania.pl | Udostępnianie dozwolone z zachowaniem linku do źródła.</div>
        <div>Autor techniczny: <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener">Robert Kucharski</a></div>
    </div>
</div>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">Siłowniki termoelektryczne na rozdzielaczach.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
