← Commit history

Update characterization page for CL21B105KBFNNNE — audit corrections

AravK ·927c51d98a ·3mo ago ·parent 89d59e8
1 file changed +253−14
CL21B105KBFNNNE.html+253−14
@@ -122,7 +122,7 @@       </div>       <div class="spec-card">         <div class="sc-label">Insulation R</div>-        <div class="sc-value">5GΩ</div>+        <div class="sc-value">500MΩ</div>         <div class="sc-detail">min @ 50V DC</div>       </div>       <div class="spec-card">@@ -142,8 +142,8 @@             <tr><td>Capacitance</td><td>1µF ±10% (K)</td></tr>             <tr><td>Rated Voltage</td><td>50V DC</td></tr>             <tr><td>Dielectric Type</td><td>X7R (Class II)</td></tr>-            <tr><td>Dissipation Factor</td><td>&le;5.0%</td></tr>-            <tr><td>Insulation Resistance</td><td>5GΩ</td></tr>+            <tr><td>Dissipation Factor</td><td>&le;10%</td></tr>+            <tr><td>Insulation Resistance</td><td>500MΩ</td></tr>             <tr><td>Temp Coefficient</td><td>±15% (X7R)</td></tr>             <tr><td>Test Voltage</td><td>1.0 &plusmn; 0.2 Vrms</td></tr>             <tr><td>Test Frequency</td><td>1.0 kHz &plusmn; 10%</td></tr>@@ -159,7 +159,7 @@             <tr><td>Storage Temp</td><td>&minus;55&deg;C to +125&deg;C</td></tr>             <tr><td>Termination</td><td>Ni/Sn (lead-free)</td></tr>             <tr><td>Solder Compatibility</td><td>Sn-3.0Ag-0.5Cu</td></tr>-            <tr><td>Mass</td><td>~0.012g</td></tr>+            <tr><td>Mass</td><td>~0.018g</td></tr>           </table>         </div>       </div>@@ -192,7 +192,7 @@               <line x1="456" y1="103" x2="464" y2="103" stroke="#484f58" stroke-width="0.5"/>               <text x="470" y="69" fill="#e6edf3" font-size="10">1.25 max</text>               <text x="120" y="164" fill="#8b949e" font-size="10" text-anchor="middle">0805 (2012 metric)</text>-              <text x="380" y="118" fill="#8b949e" font-size="10" text-anchor="middle">Mass: ~0.012g</text>+              <text x="380" y="118" fill="#8b949e" font-size="10" text-anchor="middle">Mass: ~0.018g</text>             </svg>           </div>         </div>@@ -215,7 +215,7 @@     <h2 class="section-title">Impedance Behavior</h2>     <div class="chart-wrap">       <h3>Impedance vs. Frequency (characteristic for 1µF X7R)</h3>-      <svg width="100%" height="260" viewBox="0 0 700 260">+      <svg id="impedance-chart" width="100%" height="260" viewBox="0 0 700 260">         <rect x="60" y="20" width="600" height="200" fill="#0d1117" rx="4"/>         <line x1="60" y1="220" x2="660" y2="220" stroke="#21262d" stroke-width="1"/>         <line x1="60" y1="170" x2="660" y2="170" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>@@ -230,7 +230,7 @@         <circle cx="464" cy="205" r="5" fill="#00b8b0" opacity="0.8"/>         <path d="M464,205 L489,197 L519,189 L660,186" stroke="#f85149" stroke-width="2.5" fill="none" stroke-dasharray="6,3"/>         <line x1="464" y1="205" x2="464" y2="230" stroke="#00b8b0" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>-        <text x="464" y="248" fill="#00b8b0" font-size="10" text-anchor="middle">SRF: ~8 MHz</text>+        <text x="464" y="248" fill="#00b8b0" font-size="10" text-anchor="middle">SRF: Not specified in Samsung catalog</text>         <rect x="120" y="24" width="100" height="20" rx="4" fill="rgba(0,184,176,0.12)"/>         <text x="170" y="38" fill="#00b8b0" font-size="10" text-anchor="middle">Capacitive</text>         <rect x="530" y="24" width="100" height="20" rx="4" fill="rgba(248,81,73,0.12)"/>@@ -239,7 +239,7 @@         <text x="262" y="240" fill="#3fb950" font-size="9" text-anchor="middle">Usable range (&le; SRF)</text>         <text x="12" y="124" fill="#484f58" font-size="9" text-anchor="middle" transform="rotate(-90,12,124)">|Z| impedance</text>       </svg>-      <div class="chart-note">SRF ~8 MHz. Use at &le; &#8531; SRF (~3 MHz) for predictable capacitive behavior. X7R dielectric shows moderate ESR.</div>+      <div class="chart-note">SRF: Not specified in Samsung catalog. X7R dielectric shows moderate ESR.</div>     </div>   </div> @@ -247,7 +247,7 @@     <h2 class="section-title">Reflow Soldering Profile</h2>     <div class="chart-wrap">       <h3>Standard Reflow Profile (Samsung CL21 Series)</h3>-      <svg width="100%" height="220" viewBox="0 0 700 220">+      <svg id="reflow-chart" width="100%" height="220" viewBox="0 0 700 220">         <rect x="60" y="10" width="600" height="170" fill="#0d1117" rx="4"/>         <line x1="60" y1="180" x2="660" y2="180" stroke="#21262d" stroke-width="1"/>         <line x1="60" y1="10" x2="60" y2="180" stroke="#21262d" stroke-width="1"/>@@ -282,12 +282,12 @@     <h2 class="section-title">Environmental &amp; Reliability</h2>     <div class="env-grid">       <div class="env-card"><div class="env-name">Adhesive Strength</div><div class="env-spec">No damage</div><div class="env-detail">10N (0805), 10s hold</div></div>-      <div class="env-card"><div class="env-name">Vibration</div><div class="env-spec">No damage</div><div class="env-detail">10&ndash;55Hz, 1.5mm amp, 6h total</div></div>-      <div class="env-card"><div class="env-name">Solderability</div><div class="env-spec">&ge;95% metallized</div><div class="env-detail">235 &plusmn; 5&deg;C, 2 &plusmn; 0.5s dip</div></div>-      <div class="env-card"><div class="env-name">Bending Test</div><div class="env-spec">&Delta;C within &plusmn;12.5%</div><div class="env-detail">2mm deflection (0805)</div></div>-      <div class="env-card"><div class="env-name">Soldering Heat</div><div class="env-spec">&Delta;C within &plusmn;7.5%</div><div class="env-detail">260 &plusmn; 5&deg;C, 10 &plusmn; 1s</div></div>+      <div class="env-card"><div class="env-name">Vibration</div><div class="env-spec">&Delta;C within &plusmn;5%</div><div class="env-detail">10&ndash;55Hz, 1.5mm amp, 6h total</div></div>+      <div class="env-card"><div class="env-name">Solderability</div><div class="env-spec">&ge;95% metallized</div><div class="env-detail">245 &plusmn; 5&deg;C, 3 &plusmn; 0.3s dip</div></div>+      <div class="env-card"><div class="env-name">Bending Test</div><div class="env-spec">&Delta;C within &plusmn;10%</div><div class="env-detail">1mm deflection (0805)</div></div>+      <div class="env-card"><div class="env-name">Soldering Heat</div><div class="env-spec">&Delta;C within &plusmn;7.5%</div><div class="env-detail">270 &plusmn; 5&deg;C, 10 &plusmn; 1s</div></div>       <div class="env-card"><div class="env-name">Temperature Cycle</div><div class="env-spec">&Delta;C within &plusmn;7.5%</div><div class="env-detail">5 cycles, &minus;55&deg;C &harr; +125&deg;C</div></div>-      <div class="env-card"><div class="env-name">Insulation Resistance</div><div class="env-spec">5GΩ min</div><div class="env-detail">50V DC, 25&deg;C</div></div>+      <div class="env-card"><div class="env-name">Insulation Resistance</div><div class="env-spec">500MΩ min</div><div class="env-detail">50V DC, 25&deg;C</div></div>       <div class="env-card"><div class="env-name">Dielectric Strength</div><div class="env-spec">No damage</div><div class="env-detail">250% rated (125V), 1&ndash;5s</div></div>     </div>   </div>@@ -323,5 +323,244 @@    <div class="source">Samsung Electro-Mechanics CL21 Series Datasheet &middot; Adom Component Characterization</div> </div>+<script>+(function() {+  function setupChartTooltip(svgId, dataPoints, color, formatX, formatY) {+    const svg = document.getElementById(svgId);+    if (!svg) return;+    const ns = 'http://www.w3.org/2000/svg';++    const dot = document.createElementNS(ns, 'circle');+    dot.setAttribute('r', '5');+    dot.setAttribute('fill', color);+    dot.setAttribute('stroke', '#0d1117');+    dot.setAttribute('stroke-width', '2');+    dot.style.display = 'none';+    dot.style.pointerEvents = 'none';+    svg.appendChild(dot);++    const tipGroup = document.createElementNS(ns, 'g');+    tipGroup.style.display = 'none';+    tipGroup.style.pointerEvents = 'none';+    const tipBg = document.createElementNS(ns, 'rect');+    tipBg.setAttribute('rx', '4');+    tipBg.setAttribute('fill', '#161b22');+    tipBg.setAttribute('stroke', '#30363d');+    tipBg.setAttribute('stroke-width', '1');+    const tipLine1 = document.createElementNS(ns, 'text');+    tipLine1.setAttribute('font-family', 'JetBrains Mono, monospace');+    tipLine1.setAttribute('font-size', '10');+    tipLine1.setAttribute('fill', '#e6edf3');+    const tipLine2 = document.createElementNS(ns, 'text');+    tipLine2.setAttribute('font-family', 'JetBrains Mono, monospace');+    tipLine2.setAttribute('font-size', '10');+    tipLine2.setAttribute('fill', color);+    tipGroup.appendChild(tipBg);+    tipGroup.appendChild(tipLine1);+    tipGroup.appendChild(tipLine2);+    svg.appendChild(tipGroup);++    const vLine = document.createElementNS(ns, 'line');+    vLine.setAttribute('stroke', color);+    vLine.setAttribute('stroke-width', '0.5');+    vLine.setAttribute('stroke-dasharray', '3,3');+    vLine.setAttribute('opacity', '0.5');+    vLine.style.display = 'none';+    vLine.style.pointerEvents = 'none';+    svg.appendChild(vLine);++    function lerp(pts, svgX) {+      if (svgX <= pts[0].sx) return pts[0];+      if (svgX >= pts[pts.length-1].sx) return pts[pts.length-1];+      for (let i = 0; i < pts.length - 1; i++) {+        if (svgX >= pts[i].sx && svgX <= pts[i+1].sx) {+          const t = (svgX - pts[i].sx) / (pts[i+1].sx - pts[i].sx);+          return {+            sx: svgX,+            sy: pts[i].sy + t * (pts[i+1].sy - pts[i].sy),+            vx: pts[i].vx + t * (pts[i+1].vx - pts[i].vx),+            vy: pts[i].vy + t * (pts[i+1].vy - pts[i].vy),+          };+        }+      }+      return pts[0];+    }++    svg.addEventListener('mousemove', function(e) {+      const pt = svg.createSVGPoint();+      pt.x = e.clientX; pt.y = e.clientY;+      const svgPt = pt.matrixTransform(svg.getScreenCTM().inverse());+      const minX = dataPoints[0].sx, maxX = dataPoints[dataPoints.length-1].sx;+      if (svgPt.x < minX - 10 || svgPt.x > maxX + 10) {+        dot.style.display = 'none'; tipGroup.style.display = 'none'; vLine.style.display = 'none';+        return;+      }+      const p = lerp(dataPoints, svgPt.x);+      dot.setAttribute('cx', p.sx); dot.setAttribute('cy', p.sy); dot.style.display = '';+      vLine.setAttribute('x1', p.sx); vLine.setAttribute('y1', p.sy);+      vLine.setAttribute('x2', p.sx); vLine.setAttribute('y2', 220); vLine.style.display = '';++      const xLabel = formatX(p.vx);+      const yLabel = formatY(p.vy);+      tipLine1.textContent = xLabel;+      tipLine2.textContent = yLabel;++      const tipX = p.sx + 12, tipY = p.sy - 28;+      const boxW = Math.max(xLabel.length, yLabel.length) * 7 + 16;+      const boxH = 32;+      const adjustedX = tipX + boxW > 660 ? p.sx - boxW - 12 : tipX;+      const adjustedY = tipY < 10 ? p.sy + 12 : tipY;++      tipBg.setAttribute('x', adjustedX); tipBg.setAttribute('y', adjustedY);+      tipBg.setAttribute('width', boxW); tipBg.setAttribute('height', boxH);+      tipLine1.setAttribute('x', adjustedX + 8); tipLine1.setAttribute('y', adjustedY + 13);+      tipLine2.setAttribute('x', adjustedX + 8); tipLine2.setAttribute('y', adjustedY + 26);+      tipGroup.style.display = '';+    });++    svg.addEventListener('mouseleave', function() {+      dot.style.display = 'none'; tipGroup.style.display = 'none'; vLine.style.display = 'none';+    });++    svg.style.cursor = 'crosshair';+  }++  function fmtFreq(f) {+    if (f >= 1e9) return (f/1e9).toFixed(1) + ' GHz';+    if (f >= 1e6) return (f/1e6).toFixed(1) + ' MHz';+    return (f/1e3).toFixed(0) + ' kHz';+  }+  function fmtZ(z) {+    if (z >= 1000) return (z/1000).toFixed(2) + ' k\u03A9';+    if (z >= 1) return z.toFixed(1) + ' \u03A9';+    return (z*1000).toFixed(0) + ' m\u03A9';+  }+  function fmtTime(t) { return t.toFixed(0) + 's'; }+  function fmtTemp(t) { return t.toFixed(0) + '\u00B0C'; }++  // Impedance chart+  var impedanceData = [+    {sx:60, sy:76, vx:10000, vy:15.9155},+    {sx:118, sy:98, vx:25985, vy:6.1248},+    {sx:176, sy:119, vx:67523, vy:2.357},+    {sx:234, sy:140, vx:175461, vy:0.9071},+    {sx:291, sy:162, vx:455941, vy:0.3491},+    {sx:349, sy:183, vx:1184775, vy:0.1343},+    {sx:407, sy:204, vx:3078668, vy:0.0517},+    {sx:465, sy:205, vx:8000000, vy:0.0199},+    {sx:465, sy:205, vx:8000000, vy:0.05},+    {sx:490, sy:192, vx:12000000, vy:0.09},+    {sx:520, sy:180, vx:20000000, vy:0.15},+    {sx:562, sy:165, vx:40000000, vy:0.3},+    {sx:660, sy:129, vx:200000000, vy:1.5},+  ];+  setupChartTooltip('impedance-chart', impedanceData, '#00b8b0', fmtFreq, function(z) { return '|Z| = ' + fmtZ(z); });++  // Reflow chart (multi-curve with click to switch)+  var reflowStd = [+    {sx:80,sy:175,vx:0,vy:25},{sx:200,sy:130,vx:60,vy:150},{sx:300,sy:130,vx:150,vy:150},+    {sx:380,sy:80,vx:195,vy:220},{sx:420,sy:30,vx:210,vy:245},{sx:460,sy:30,vx:225,vy:245},+    {sx:500,sy:80,vx:240,vy:220},{sx:580,sy:130,vx:280,vy:150},{sx:660,sy:175,vx:360,vy:25}+  ];+  var reflowLimit = [+    {sx:80,sy:175,vx:0,vy:25},{sx:200,sy:130,vx:60,vy:150},{sx:300,sy:130,vx:150,vy:150},+    {sx:370,sy:65,vx:190,vy:230},{sx:410,sy:15,vx:205,vy:260},{sx:470,sy:15,vx:230,vy:260},+    {sx:510,sy:65,vx:250,vy:230},{sx:580,sy:130,vx:280,vy:150},{sx:660,sy:175,vx:360,vy:25}+  ];+  var reflowCurves = [+    { data: reflowStd,   color: '#d29922', label: 'Standard' },+    { data: reflowLimit, color: '#f85149', label: 'Limit' }+  ];++  (function setupReflowMultiCurve() {+    var svg = document.getElementById('reflow-chart');+    if (!svg) return;+    var ns = 'http://www.w3.org/2000/svg';+    var activeIdx = 0;++    var dot = document.createElementNS(ns, 'circle');+    dot.setAttribute('r', '5'); dot.setAttribute('stroke', '#0d1117'); dot.setAttribute('stroke-width', '2');+    dot.style.display = 'none'; dot.style.pointerEvents = 'none'; svg.appendChild(dot);++    var vLine = document.createElementNS(ns, 'line');+    vLine.setAttribute('stroke-width', '0.5'); vLine.setAttribute('stroke-dasharray', '3,3');+    vLine.setAttribute('opacity', '0.5'); vLine.style.display = 'none'; vLine.style.pointerEvents = 'none';+    svg.appendChild(vLine);++    var tipGroup = document.createElementNS(ns, 'g');+    tipGroup.style.display = 'none'; tipGroup.style.pointerEvents = 'none';+    var tipBg = document.createElementNS(ns, 'rect');+    tipBg.setAttribute('rx', '4'); tipBg.setAttribute('fill', '#161b22');+    tipBg.setAttribute('stroke', '#30363d'); tipBg.setAttribute('stroke-width', '1');+    var tipLine1 = document.createElementNS(ns, 'text');+    tipLine1.setAttribute('font-family', 'JetBrains Mono, monospace'); tipLine1.setAttribute('font-size', '10'); tipLine1.setAttribute('fill', '#e6edf3');+    var tipLine2 = document.createElementNS(ns, 'text');+    tipLine2.setAttribute('font-family', 'JetBrains Mono, monospace'); tipLine2.setAttribute('font-size', '10');+    var tipLine3 = document.createElementNS(ns, 'text');+    tipLine3.setAttribute('font-family', 'JetBrains Mono, monospace'); tipLine3.setAttribute('font-size', '9'); tipLine3.setAttribute('fill', '#484f58');+    tipGroup.appendChild(tipBg); tipGroup.appendChild(tipLine1); tipGroup.appendChild(tipLine2); tipGroup.appendChild(tipLine3);+    svg.appendChild(tipGroup);++    function setActive(idx) {+      activeIdx = idx;+      var c = reflowCurves[idx];+      dot.setAttribute('fill', c.color); vLine.setAttribute('stroke', c.color); tipLine2.setAttribute('fill', c.color);+    }+    setActive(0);++    function lerp(pts, svgX) {+      if (svgX <= pts[0].sx) return pts[0];+      if (svgX >= pts[pts.length-1].sx) return pts[pts.length-1];+      for (var i = 0; i < pts.length - 1; i++) {+        if (svgX >= pts[i].sx && svgX <= pts[i+1].sx) {+          var t = (svgX - pts[i].sx) / (pts[i+1].sx - pts[i].sx);+          return { sx: svgX, sy: pts[i].sy + t * (pts[i+1].sy - pts[i].sy), vx: pts[i].vx + t * (pts[i+1].vx - pts[i].vx), vy: pts[i].vy + t * (pts[i+1].vy - pts[i].vy) };+        }+      }+      return pts[0];+    }++    svg.addEventListener('click', function() { setActive((activeIdx + 1) % reflowCurves.length); });++    svg.addEventListener('mousemove', function(e) {+      var pt = svg.createSVGPoint(); pt.x = e.clientX; pt.y = e.clientY;+      var svgPt = pt.matrixTransform(svg.getScreenCTM().inverse());+      var c = reflowCurves[activeIdx];+      var minX = c.data[0].sx, maxX = c.data[c.data.length-1].sx;+      if (svgPt.x < minX - 10 || svgPt.x > maxX + 10) {+        dot.style.display = 'none'; tipGroup.style.display = 'none'; vLine.style.display = 'none'; return;+      }+      var p = lerp(c.data, svgPt.x);+      dot.setAttribute('cx', p.sx); dot.setAttribute('cy', p.sy); dot.style.display = '';+      vLine.setAttribute('x1', p.sx); vLine.setAttribute('y1', p.sy);+      vLine.setAttribute('x2', p.sx); vLine.setAttribute('y2', 180); vLine.style.display = '';++      var xLabel = fmtTime(p.vx);+      var yLabel = 'Temp = ' + fmtTemp(p.vy);+      var curveLabel = 'Click to switch \u2022 ' + c.label;+      tipLine1.textContent = xLabel; tipLine2.textContent = yLabel; tipLine3.textContent = curveLabel;++      var tipX = p.sx + 12, tipY = p.sy - 38;+      var boxW = Math.max(xLabel.length, yLabel.length, curveLabel.length) * 6.5 + 16;+      var boxH = 44;+      var adjustedX = tipX + boxW > 660 ? p.sx - boxW - 12 : tipX;+      var adjustedY = tipY < 10 ? p.sy + 12 : tipY;++      tipBg.setAttribute('x', adjustedX); tipBg.setAttribute('y', adjustedY);+      tipBg.setAttribute('width', boxW); tipBg.setAttribute('height', boxH);+      tipLine1.setAttribute('x', adjustedX + 8); tipLine1.setAttribute('y', adjustedY + 13);+      tipLine2.setAttribute('x', adjustedX + 8); tipLine2.setAttribute('y', adjustedY + 26);+      tipLine3.setAttribute('x', adjustedX + 8); tipLine3.setAttribute('y', adjustedY + 39);+      tipGroup.style.display = '';+    });++    svg.addEventListener('mouseleave', function() {+      dot.style.display = 'none'; tipGroup.style.display = 'none'; vLine.style.display = 'none';+    });++    svg.style.cursor = 'pointer';+  })();+})();+</script> </body> </html>\ No newline at end of file