{"id":100297,"date":"2026-02-15T20:32:28","date_gmt":"2026-02-15T20:32:28","guid":{"rendered":"https:\/\/vibromera.eu\/?post_type=calculator&#038;p=100297"},"modified":"2026-02-15T20:32:28","modified_gmt":"2026-02-15T20:32:28","slug":"vibration-source-identifier","status":"publish","type":"calculator","link":"https:\/\/vibromera.eu\/pt_br\/calculators\/vibration-source-identifier\/","title":{"rendered":"Identifica\u00e7\u00e3o da fonte de vibra\u00e7\u00e3o por frequ\u00eancia | Ferramenta de diagn\u00f3stico"},"content":{"rendered":"\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"WebApplication\",\"name\":\"Vibration Source Identifier\",\"alternateName\":[\"Vibration Diagnostic Tool\",\"Fault Frequency Identifier\",\"Vibration Spectrum Analyzer\"],\"description\":\"Free interactive vibration diagnostic tool. Enter vibration frequency as order of running speed to identify likely fault sources including unbalance, misalignment, bearing defects, looseness, and electrical faults.\",\"url\":\"https:\/\/vibromera.eu\/calculators\/vibration-source-identifier\/\",\"applicationCategory\":\"Engineering Calculator\",\"operatingSystem\":\"Any (Web Browser)\",\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"EUR\"},\"creator\":{\"@type\":\"Organization\",\"name\":\"Vibromera\",\"url\":\"https:\/\/vibromera.eu\/\"},\"datePublished\":\"2025-01-01\",\"dateModified\":\"2025-02-15\",\"inLanguage\":\"en\",\"isAccessibleForFree\":true,\"featureList\":[\"Frequency-to-fault mapping\",\"Order analysis\",\"Bearing defect frequencies\",\"Gear mesh frequencies\",\"Blade pass frequencies\",\"Probability ranking\",\"Recommended actions\"],\"keywords\":\"vibration diagnosis, fault frequency, unbalance, misalignment, bearing defect\"}\n<\/script>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[\n{\"@type\":\"Question\",\"name\":\"How do I identify a vibration source from frequency?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Most vibration faults produce characteristic frequency patterns related to shaft running speed. 1x RPM typically indicates unbalance, 2x RPM indicates misalignment, sub-synchronous frequencies (0.42-0.48x) indicate oil whirl in journal bearings. By analyzing which frequencies are dominant in the vibration spectrum, you can narrow down the most likely fault sources.\"}},\n{\"@type\":\"Question\",\"name\":\"What is 1x vibration?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"1x vibration (also called synchronous vibration) occurs at exactly the shaft rotational frequency (1 times RPM). It is the most common vibration component and is primarily caused by mass unbalance. Other causes include bent shaft, misalignment, looseness, and resonance. Phase angle analysis helps distinguish between these causes.\"}},\n{\"@type\":\"Question\",\"name\":\"What causes sub-synchronous vibration?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Sub-synchronous vibration occurs below shaft running speed. Common causes include: oil whirl (0.42-0.48x in journal bearings), oil whip (locked at rotor natural frequency), rub (various sub-harmonics), looseness (0.5x and fractional harmonics), and belt drive problems.\"}},\n{\"@type\":\"Question\",\"name\":\"What causes high-frequency vibration?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"High-frequency vibration (above 10x RPM) is typically caused by: rolling element bearing defects (BPFO, BPFI, BSF), gear mesh frequencies, blade\/vane pass frequencies, electrical noise, resonance of structural components, or cavitation in pumps.\"}},\n{\"@type\":\"Question\",\"name\":\"What role does phase angle play in vibration diagnosis?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Phase angle is critical for distinguishing faults with similar frequency signatures. For 1x vibration: stable phase = unbalance, 180-degree phase difference across coupling = misalignment, unstable\/shifting phase = looseness. Phase is measured using a tachometer reference signal and indicates the angular relationship between the vibration peak and shaft position.\"}}\n]}\n<\/script>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[\n{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/vibromera.eu\/\"},\n{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculators\",\"item\":\"https:\/\/vibromera.eu\/calculators\/\"},\n{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Vibration Source Identifier\",\"item\":\"https:\/\/vibromera.eu\/calculators\/vibration-source-identifier\/\"}\n]}\n<\/script>\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&#038;family=JetBrains+Mono:wght@400;500;600&#038;family=Fraunces:opsz,wght@9..144,700;9..144,800&#038;display=swap\" rel=\"stylesheet\">\n\n<style>\n:root {\n    --vc-bg: #f4f1ec;\n    --vc-surface: #ffffff;\n    --vc-surface-alt: #f8f6f2;\n    --vc-ink: #1a1a1a;\n    --vc-ink-secondary: #5a5650;\n    --vc-ink-muted: #8a857e;\n    --vc-accent: #c85a2a;\n    --vc-accent-hover: #b04d22;\n    --vc-accent-light: #fdf0ea;\n    --vc-blue: #2a5c8c;\n    --vc-blue-light: #eaf1f8;\n    --vc-green: #2a7a4b;\n    --vc-green-light: #eaf8ef;\n    --vc-yellow: #a67c00;\n    --vc-yellow-light: #fef9e8;\n    --vc-red: #b91c1c;\n    --vc-red-light: #fef2f2;\n    --vc-border: #d9d4cc;\n    --vc-border-light: #e8e4dd;\n    --vc-shadow: 0 1px 3px rgba(26,26,26,0.06), 0 4px 12px rgba(26,26,26,0.04);\n    --vc-shadow-lg: 0 4px 12px rgba(26,26,26,0.08), 0 16px 40px rgba(26,26,26,0.06);\n    --vc-radius: 8px;\n    --vc-radius-lg: 12px;\n    --vc-font: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n    --vc-mono: 'JetBrains Mono', 'Consolas', 'Monaco', monospace;\n    --vc-display: 'Fraunces', Georgia, serif;\n}\n\n.vc-calculator {\n    font-family: var(--vc-font);\n    font-size: 15px;\n    line-height: 1.65;\n    color: var(--vc-ink);\n    max-width: 960px;\n    margin: 0 auto;\n    padding: 20px 16px 40px;\n    -webkit-font-smoothing: antialiased;\n}\n.vc-calculator *, .vc-calculator *::before, .vc-calculator *::after { box-sizing: border-box; }\n\n\/* -- HEADER -- *\/\n.vc-header { text-align: center; padding: 48px 24px 40px; position: relative; }\n.vc-header::after { content:''; position:absolute; bottom:0; left:50%; transform:translateX(-50%); width:80px; height:3px; background:var(--vc-accent); border-radius:2px; }\n.vc-header-eyebrow { font-family:var(--vc-mono); font-size:11px; font-weight:500; letter-spacing:0.15em; text-transform:uppercase; color:var(--vc-accent); margin:0 0 12px; }\n.vc-header-title { font-family:var(--vc-display); font-size:clamp(24px,4vw,36px); font-weight:800; line-height:1.15; color:var(--vc-ink); margin:0 0 16px; letter-spacing:-0.02em; }\n.vc-header-subtitle { font-size:15px; color:var(--vc-ink-secondary); margin:0 auto 20px; max-width:600px; }\n.vc-badges { display:inline-flex; gap:8px; flex-wrap:wrap; justify-content:center; }\n.vc-badge { font-family:var(--vc-mono); font-size:11px; font-weight:500; padding:4px 10px; border-radius:4px; background:var(--vc-surface); border:1px solid var(--vc-border); color:var(--vc-ink-secondary); }\n\n\/* -- CARD -- *\/\n.vc-card { background:var(--vc-surface); border:1px solid var(--vc-border); border-radius:var(--vc-radius-lg); box-shadow:var(--vc-shadow); overflow:hidden; margin-top:32px; }\n\n\/* -- FORM -- *\/\n.vc-form { padding:24px; }\n.vc-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; }\n@media(max-width:600px) { .vc-form-grid { grid-template-columns:1fr; } }\n.vc-field { display:flex; flex-direction:column; }\n.vc-field-full { grid-column: 1 \/ -1; }\n.vc-label { font-size:12px; font-weight:600; letter-spacing:0.04em; text-transform:uppercase; color:var(--vc-ink-secondary); margin-bottom:6px; }\n.vc-label-hint { font-weight:400; text-transform:none; letter-spacing:0; color:var(--vc-ink-muted); font-size:11px; }\n.vc-select, .vc-input { width:100%; padding:10px 12px; border:1.5px solid var(--vc-border); border-radius:6px; font-family:var(--vc-font); font-size:14px; color:var(--vc-ink); background:var(--vc-surface); transition:border-color 0.15s, box-shadow 0.15s; }\n.vc-select { padding-right:36px; appearance:none; -webkit-appearance:none; cursor:pointer; background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='16' height='16' fill='none' stroke='%235a5650' stroke-width='2'%3E%3Cpath d='M4 6l4 4 4-4'\/%3E%3C\/svg%3E\"); background-repeat:no-repeat; background-position:right 10px center; }\n.vc-select:focus, .vc-input:focus { outline:none; border-color:var(--vc-accent); box-shadow:0 0 0 3px rgba(200,90,42,0.12); }\n.vc-select:hover, .vc-input:hover { border-color:var(--vc-ink-muted); }\n\n\/* -- PRESETS -- *\/\n.vc-presets { display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; padding-top:18px; border-top:1px solid var(--vc-border-light); }\n.vc-presets-label { font-family:var(--vc-mono); font-size:11px; font-weight:500; letter-spacing:0.1em; text-transform:uppercase; color:var(--vc-ink-muted); width:100%; margin-bottom:2px; }\n.vc-preset-btn { padding:5px 12px; font-family:var(--vc-font); font-size:12px; font-weight:500; border:1px solid var(--vc-border); border-radius:6px; background:var(--vc-surface-alt); color:var(--vc-ink-secondary); cursor:pointer; transition:all 0.15s; }\n.vc-preset-btn:hover { border-color:var(--vc-accent); color:var(--vc-accent); background:var(--vc-accent-light); }\n\n\/* -- RESULTS -- *\/\n.vc-results { border-top:1px solid var(--vc-border-light); background:var(--vc-surface-alt); padding:0; max-height:0; overflow:hidden; transition:max-height 0.5s cubic-bezier(0.4,0,0.2,1), padding 0.3s; }\n.vc-results.vc-visible { max-height:8000px; padding:24px; }\n.vc-results-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:18px; }\n.vc-results-title { font-family:var(--vc-display); font-size:20px; font-weight:700; color:var(--vc-ink); margin:0; }\n.vc-copy-btn { display:inline-flex; align-items:center; gap:5px; padding:6px 12px; border:1px solid var(--vc-border); border-radius:6px; background:var(--vc-surface); font-family:var(--vc-font); font-size:12px; font-weight:500; color:var(--vc-ink-secondary); cursor:pointer; transition:all 0.15s; }\n.vc-copy-btn:hover { border-color:var(--vc-accent); color:var(--vc-accent); }\n.vc-copy-btn.vc-copied { background:var(--vc-green-light); border-color:var(--vc-green); color:var(--vc-green); }\n\n.vc-result-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:20px; }\n@media(max-width:500px) { .vc-result-grid { grid-template-columns:1fr; } }\n.vc-rcard { background:var(--vc-surface); border:1px solid var(--vc-border-light); border-radius:var(--vc-radius); padding:16px; transition:transform 0.2s; }\n.vc-rcard:hover { transform:translateY(-1px); }\n.vc-rcard-primary { border-color:var(--vc-accent); border-width:2px; background:linear-gradient(135deg, #fdf6f2 0%, var(--vc-surface) 100%); grid-column:1 \/ -1; }\n.vc-rcard-label { font-family:var(--vc-mono); font-size:10px; font-weight:500; letter-spacing:0.1em; text-transform:uppercase; color:var(--vc-ink-muted); margin-bottom:4px; }\n.vc-rcard-value { font-family:var(--vc-mono); font-size:22px; font-weight:600; color:var(--vc-ink); line-height:1.2; }\n.vc-rcard-primary .vc-rcard-value { font-size:30px; color:var(--vc-accent); }\n.vc-rcard-unit { font-size:14px; font-weight:400; color:var(--vc-ink-secondary); }\n\n\/* -- FAULT TABLE -- *\/\n.vc-fault-table { width:100%; border-collapse:collapse; margin:14px 0; font-size:13px; }\n.vc-fault-table th, .vc-fault-table td { padding:10px 12px; border:1px solid var(--vc-border-light); text-align:left; }\n.vc-fault-table th { background:var(--vc-surface-alt); font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:0.05em; color:var(--vc-ink-secondary); }\n.vc-fault-table tr:nth-child(even) { background:var(--vc-surface-alt); }\n.vc-fault-match { background:var(--vc-accent-light) !important; border-left:3px solid var(--vc-accent) !important; }\n.vc-fault-match td { font-weight:600; color:var(--vc-ink); }\n.vc-prob-high { display:inline-block; padding:2px 8px; border-radius:4px; font-size:11px; font-weight:600; background:var(--vc-red-light); color:var(--vc-red); }\n.vc-prob-med { display:inline-block; padding:2px 8px; border-radius:4px; font-size:11px; font-weight:600; background:var(--vc-yellow-light); color:#b8860b; }\n.vc-prob-low { display:inline-block; padding:2px 8px; border-radius:4px; font-size:11px; font-weight:600; background:var(--vc-blue-light); color:var(--vc-blue); }\n@media(max-width:600px) { .vc-fault-table { font-size:12px; } .vc-fault-table th, .vc-fault-table td { padding:8px; } }\n\n\/* Matched faults list *\/\n.vc-matched-faults { margin:16px 0; }\n.vc-fault-card { background:var(--vc-surface); border:1px solid var(--vc-border-light); border-radius:var(--vc-radius); padding:14px 16px; margin-bottom:10px; border-left:4px solid var(--vc-accent); }\n.vc-fault-card-title { font-family:var(--vc-mono); font-size:14px; font-weight:600; color:var(--vc-ink); margin-bottom:4px; }\n.vc-fault-card-desc { font-size:13px; color:var(--vc-ink-secondary); margin-bottom:6px; }\n.vc-fault-card-action { font-size:12px; color:var(--vc-accent); font-weight:500; }\n\n\/* -- COLLAPSIBLE SECTIONS -- *\/\n.vc-section { margin-top:24px; border:1px solid var(--vc-border); border-radius:var(--vc-radius-lg); background:var(--vc-surface); box-shadow:var(--vc-shadow); overflow:hidden; }\n.vc-section-toggle { width:100%; display:flex; align-items:center; justify-content:space-between; padding:18px 24px; border:none; background:transparent; cursor:pointer; font-family:var(--vc-font); text-align:left; transition:background 0.15s; }\n.vc-section-toggle:hover { background:var(--vc-surface-alt); }\n.vc-section-toggle-text { display:flex; align-items:center; gap:10px; }\n.vc-section-icon { font-size:20px; line-height:1; }\n.vc-section-title { font-family:var(--vc-display); font-size:18px; font-weight:700; color:var(--vc-ink); margin:0; }\n.vc-section-chevron { width:20px; height:20px; color:var(--vc-ink-muted); transition:transform 0.3s; flex-shrink:0; }\n.vc-section.vc-open .vc-section-chevron { transform:rotate(180deg); }\n.vc-section-body { max-height:0; overflow:hidden; transition:max-height 0.4s cubic-bezier(0.4,0,0.2,1); }\n.vc-section.vc-open .vc-section-body { max-height:20000px; }\n.vc-section-inner { padding:0 24px 24px; border-top:1px solid var(--vc-border-light); }\n\n\/* -- THEORY -- *\/\n.vc-theory h3 { font-family:var(--vc-display); font-size:17px; font-weight:700; color:var(--vc-ink); margin:28px 0 10px; }\n.vc-theory h3:first-child { margin-top:20px; }\n.vc-theory p { font-size:14px; color:var(--vc-ink-secondary); margin:0 0 10px; }\n.vc-theory ul, .vc-theory ol { font-size:14px; color:var(--vc-ink-secondary); margin:0 0 12px 18px; padding:0; }\n.vc-theory li { margin-bottom:5px; }\n.vc-formula-box { background:var(--vc-surface-alt); border:2px solid var(--vc-border); border-radius:6px; padding:14px 20px; font-family:var(--vc-mono); font-size:16px; font-weight:500; text-align:center; margin:14px 0; color:var(--vc-ink); overflow-x:auto; }\n.vc-info-box { background:var(--vc-blue-light); border-left:3px solid var(--vc-blue); padding:14px 16px; border-radius:0 6px 6px 0; margin:14px 0; }\n.vc-info-box p { margin:0; font-size:14px; color:var(--vc-ink-secondary); }\n.vc-warning-box { background:var(--vc-yellow-light); border-left:3px solid var(--vc-yellow); padding:14px 16px; border-radius:0 6px 6px 0; margin:14px 0; }\n.vc-example-box { background:var(--vc-surface-alt); border:1px solid var(--vc-border-light); border-radius:6px; padding:16px; margin:14px 0; }\n.vc-example-title { font-family:var(--vc-mono); font-size:13px; font-weight:600; color:var(--vc-accent); margin-bottom:8px; }\n.vc-table { width:100%; border-collapse:collapse; margin:14px 0; font-size:13px; }\n.vc-table th, .vc-table td { padding:10px 12px; border:1px solid var(--vc-border-light); text-align:left; }\n.vc-table th { background:var(--vc-surface-alt); font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:0.05em; color:var(--vc-ink-secondary); }\n.vc-table tr:nth-child(even) { background:var(--vc-surface-alt); }\n@media(max-width:600px) { .vc-table { font-size:12px; } .vc-table th, .vc-table td { padding:8px; } }\n\n\/* -- FAQ -- *\/\n.vc-faq-list { display:flex; flex-direction:column; gap:8px; margin-top:20px; }\n.vc-faq-item { border:1px solid var(--vc-border-light); border-radius:6px; overflow:hidden; }\n.vc-faq-q { width:100%; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 16px; border:none; background:var(--vc-surface-alt); cursor:pointer; font-family:var(--vc-font); font-size:15px; font-weight:600; color:var(--vc-ink); text-align:left; transition:background 0.15s; }\n.vc-faq-q:hover { background:#ede9e3; }\n.vc-faq-chevron { width:16px; height:16px; color:var(--vc-ink-muted); flex-shrink:0; transition:transform 0.25s; }\n.vc-faq-item.vc-open .vc-faq-chevron { transform:rotate(180deg); }\n.vc-faq-a { max-height:0; overflow:hidden; transition:max-height 0.35s; }\n.vc-faq-item.vc-open .vc-faq-a { max-height:1200px; }\n.vc-faq-a-inner { padding:14px 16px; border-top:1px solid var(--vc-border-light); font-size:14px; color:var(--vc-ink-secondary); }\n.vc-faq-a-inner p { margin:0 0 8px; }\n.vc-faq-a-inner p:last-child { margin-bottom:0; }\n.vc-faq-a-inner ul { margin:4px 0 8px 16px; padding:0; }\n.vc-faq-a-inner li { margin-bottom:3px; }\n\n\/* -- RELATED -- *\/\n.vc-related { display:flex; flex-wrap:wrap; gap:10px; margin-top:16px; }\n.vc-related-link { display:inline-block; padding:8px 16px; font-family:var(--vc-font); font-size:13px; font-weight:600; background:var(--vc-surface-alt); color:var(--vc-ink-secondary); border:1px solid var(--vc-border); border-radius:var(--vc-radius); text-decoration:none; transition:all 0.15s; }\n.vc-related-link:hover { border-color:var(--vc-accent); color:var(--vc-accent); background:var(--vc-accent-light); }\n\n\/* -- PROMO -- *\/\n.vc-promo { margin-top:24px; padding:20px; background:linear-gradient(135deg, var(--vc-accent-light), var(--vc-surface)); border:1px solid var(--vc-border); border-radius:var(--vc-radius-lg); display:flex; align-items:center; gap:16px; }\n.vc-promo-text { flex:1; font-size:14px; color:var(--vc-ink-secondary); }\n.vc-promo-text strong { color:var(--vc-ink); }\n.vc-promo-link { padding:8px 20px; font-size:13px; font-weight:700; color:#fff; background:var(--vc-accent); border-radius:var(--vc-radius); text-decoration:none; white-space:nowrap; transition:background 0.15s; }\n.vc-promo-link:hover { background:var(--vc-accent-hover); }\n\n\/* -- FOOTER -- *\/\n.vc-footer { text-align:center; padding:32px 16px; font-size:13px; color:var(--vc-ink-muted); }\n.vc-footer a { color:var(--vc-accent); text-decoration:none; }\n.vc-footer a:hover { text-decoration:underline; }\n.vc-footer-links { margin-top:8px; font-size:12px; }\n.vc-footer-links a { margin:0 8px; }\n\n\/* -- PRINT -- *\/\n@media print {\n    .vc-section-body { max-height:none!important; }\n    .vc-faq-a { max-height:none!important; }\n    .vc-results { max-height:none!important; padding:24px!important; }\n    .vc-copy-btn, .vc-section-chevron, .vc-faq-chevron, .vc-presets, .vc-promo { display:none!important; }\n}\n<\/style>\n\n<div class=\"vc-calculator\" id=\"vc-vibration-source\">\n\n<!-- Header -->\n<header class=\"vc-header\">\n    <p class=\"vc-header-eyebrow\">Free Engineering Tool #033<\/p>\n    <h1 class=\"vc-header-title\">Vibration Source Identifier<\/h1>\n    <p class=\"vc-header-subtitle\">Interactive diagnostic tool &mdash; enter vibration frequency as order of running speed to identify likely fault sources for rotating machinery.<\/p>\n    <div class=\"vc-badges\">\n        <span class=\"vc-badge\">Frequency Analysis<\/span>\n        <span class=\"vc-badge\">Fault Diagnosis<\/span>\n        <span class=\"vc-badge\">Order Tracking<\/span>\n    <\/div>\n<\/header>\n\n<!-- Calculator Card -->\n<div class=\"vc-card\">\n    <form class=\"vc-form\" id=\"vc-form\" autocomplete=\"off\">\n        <div class=\"vc-form-grid\">\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-rpm\">Running Speed <span class=\"vc-label-hint\">(RPM)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-rpm\" inputmode=\"decimal\" step=\"any\" min=\"1\" placeholder=\"e.g. 3000\" value=\"3000\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-freq\">Dominant Vibration Frequency <span class=\"vc-label-hint\">(Hz)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-freq\" inputmode=\"decimal\" step=\"any\" min=\"0\" placeholder=\"e.g. 50\" value=\"50\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-order\">Vibration Order <span class=\"vc-label-hint\">(auto-calculated)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-order\" inputmode=\"decimal\" step=\"any\" min=\"0\" placeholder=\"auto from RPM &amp; Hz\" value=\"\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-blades\">Blades \/ Teeth Count <span class=\"vc-label-hint\">(optional, for BPF\/GMF)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-blades\" inputmode=\"numeric\" step=\"1\" min=\"1\" placeholder=\"e.g. 6\" value=\"\">\n            <\/div>\n        <\/div>\n\n        <!-- Presets -->\n        <div class=\"vc-presets\">\n            <div class=\"vc-presets-label\">Quick presets<\/div>\n            <button type=\"button\" class=\"vc-preset-btn\" data-rpm=\"3000\" data-freq=\"50\" data-blades=\"\">3000 RPM \/ 50 Hz (1x)<\/button>\n            <button type=\"button\" class=\"vc-preset-btn\" data-rpm=\"1500\" data-freq=\"75\" data-blades=\"\">1500 RPM \/ 75 Hz (3x)<\/button>\n            <button type=\"button\" class=\"vc-preset-btn\" data-rpm=\"3000\" data-freq=\"12.5\" data-blades=\"\">3000 RPM \/ 12.5 Hz (0.25x)<\/button>\n        <\/div>\n    <\/form>\n\n    <!-- Results -->\n    <div class=\"vc-results\" id=\"vc-results\">\n        <div class=\"vc-results-head\">\n            <h2 class=\"vc-results-title\">Diagnostic Results<\/h2>\n            <button type=\"button\" class=\"vc-copy-btn\" id=\"vc-copy-btn\">\n                <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\/><\/svg>\n                Copy\n            <\/button>\n        <\/div>\n        <div class=\"vc-result-grid\">\n            <div class=\"vc-rcard vc-rcard-primary\">\n                <div class=\"vc-rcard-label\">Most Likely Source<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-source\">&#8212;<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Running Speed Frequency<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-1x\">&#8212;<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Vibration Order<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-order\">&#8212;<\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Matched Faults -->\n        <div id=\"vc-matched-faults\" class=\"vc-matched-faults\"><\/div>\n\n        <!-- Full Fault Reference Table -->\n        <h3 style=\"font-family:var(--vc-display);font-size:17px;font-weight:700;margin:24px 0 12px;\">Complete Frequency&#8211;Fault Reference<\/h3>\n        <div id=\"vc-fault-ref-table\"><\/div>\n    <\/div>\n<\/div>\n\n<!-- Theory & Reference -->\n<div class=\"vc-section vc-open\" id=\"vc-sec-theory\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"true\">\n        <span class=\"vc-section-toggle-text\">\n            <span class=\"vc-section-icon\">&#128216;<\/span>\n            <span class=\"vc-section-title\">Theory &amp; Reference<\/span>\n        <\/span>\n        <svg class=\"vc-section-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg>\n    <\/button>\n    <div class=\"vc-section-body\">\n        <div class=\"vc-section-inner vc-theory\">\n            <h3>Vibration Frequency Analysis<\/h3>\n            <p>Every mechanical fault produces vibration at characteristic frequencies related to the shaft rotational speed. By identifying the dominant frequency in a vibration spectrum and expressing it as an order (multiple) of the shaft speed, the most probable fault source can be determined.<\/p>\n\n            <h3>Order Calculation<\/h3>\n            <div class=\"vc-formula-box\">Order = f_vibration \/ f_running = f_vibration \/ (RPM \/ 60)<\/div>\n            <p>Where <strong>f_vibration<\/strong> is the measured dominant frequency in Hz and <strong>RPM<\/strong> is the shaft rotational speed.<\/p>\n\n            <h3>Common Fault Frequencies<\/h3>\n            <table class=\"vc-table\">\n                <thead><tr><th>Order<\/th><th>Frequency<\/th><th>Primary Source<\/th><th>Additional Indicators<\/th><\/tr><\/thead>\n                <tbody>\n                    <tr><td>1x<\/td><td>Shaft speed<\/td><td>Unbalance<\/td><td>Stable phase, proportional to speed squared<\/td><\/tr>\n                    <tr><td>1x<\/td><td>Shaft speed<\/td><td>Bent shaft<\/td><td>High axial vibration, phase stable<\/td><\/tr>\n                    <tr><td>2x<\/td><td>2 x shaft speed<\/td><td>Misalignment<\/td><td>High axial, 180&#176; phase across coupling<\/td><\/tr>\n                    <tr><td>3x<\/td><td>3 x shaft speed<\/td><td>Severe misalignment<\/td><td>Multiple harmonics present<\/td><\/tr>\n                    <tr><td>0.42&#8211;0.48x<\/td><td>Sub-synchronous<\/td><td>Oil whirl<\/td><td>Journal bearings, speed-dependent<\/td><\/tr>\n                    <tr><td>0.5x<\/td><td>Half shaft speed<\/td><td>Looseness \/ rub<\/td><td>Fractional sub-harmonics<\/td><\/tr>\n                    <tr><td>Multiple harmonics<\/td><td>1x, 2x, 3x&#8230;<\/td><td>Mechanical looseness<\/td><td>Many harmonics of running speed<\/td><\/tr>\n                    <tr><td>Non-synchronous<\/td><td>BPFO, BPFI, BSF<\/td><td>Bearing defects<\/td><td>Modulated by running speed<\/td><\/tr>\n                    <tr><td>Z x RPM<\/td><td>Blade pass<\/td><td>Flow issues<\/td><td>Pulsation, cavitation<\/td><\/tr>\n                    <tr><td>Z x RPM<\/td><td>Gear mesh<\/td><td>Gear problems<\/td><td>Sidebands indicate which gear<\/td><\/tr>\n                    <tr><td>2x line (100\/120 Hz)<\/td><td>Fixed frequency<\/td><td>Electrical<\/td><td>Disappears when power removed<\/td><\/tr>\n                <\/tbody>\n            <\/table>\n\n            <h3>Phase Angle Guide<\/h3>\n            <div class=\"vc-info-box\">\n                <p><strong>Phase analysis is critical<\/strong> for distinguishing faults at the same frequency. At 1x: stable phase = unbalance, 180&#176; across coupling = misalignment, unstable phase = looseness. Always use a tachometer reference.<\/p>\n            <\/div>\n\n            <h3>Practical Example<\/h3>\n            <div class=\"vc-example-box\">\n                <div class=\"vc-example-title\">Example &#8212; Motor at 1500 RPM with 75 Hz Vibration<\/div>\n                <p><strong>Given:<\/strong> Running speed = 1500 RPM, Dominant frequency = 75 Hz<\/p>\n                <p>Running speed frequency = 1500 \/ 60 = 25 Hz<\/p>\n                <p>Order = 75 \/ 25 = <strong>3.0x<\/strong><\/p>\n                <p>Primary suspect: <strong>Severe misalignment or mechanical looseness<\/strong><\/p>\n                <p>Recommended: Check coupling alignment, inspect mounting bolts, verify foundation<\/p>\n            <\/div>\n\n            <div class=\"vc-warning-box\">\n                <p style=\"margin:0;font-size:14px;color:var(--vc-ink-secondary);\"><strong>&#9888;&#65039; Note:<\/strong> This tool provides guidance based on common fault-frequency relationships. Definitive diagnosis requires correlation with phase data, time waveform, orbit plots, operating conditions, and machine history. Always verify with additional measurements.<\/p>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- Related Calculators -->\n<div class=\"vc-section\" id=\"vc-sec-related\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"false\">\n        <span class=\"vc-section-toggle-text\">\n            <span class=\"vc-section-icon\">&#128279;<\/span>\n            <span class=\"vc-section-title\">Related Calculators<\/span>\n        <\/span>\n        <svg class=\"vc-section-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg>\n    <\/button>\n    <div class=\"vc-section-body\">\n        <div class=\"vc-section-inner\">\n            <div class=\"vc-related\">\n                <a class=\"vc-related-link\" href=\"\/calculators\/bearing-defect-frequencies\/\">Bearing Defect Frequencies<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/vibration-velocity\/\">Vibration Velocity (ISO 10816)<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/shaft-vibration-iso7919\/\">Shaft Vibration (ISO 7919)<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/vibration-trend-remaining-life\/\">Remaining Life Estimator<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/gear-mesh-frequency\/\">Gear Mesh Frequency<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/blade-pass-frequency\/\">Blade Pass Frequency<\/a>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- FAQ -->\n<div class=\"vc-section\" id=\"vc-sec-faq\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"false\">\n        <span class=\"vc-section-toggle-text\">\n            <span class=\"vc-section-icon\">&#10067;<\/span>\n            <span class=\"vc-section-title\">Frequently Asked Questions<\/span>\n        <\/span>\n        <svg class=\"vc-section-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg>\n    <\/button>\n    <div class=\"vc-section-body\">\n        <div class=\"vc-section-inner\">\n            <div class=\"vc-faq-list\" id=\"vc-faq-list\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- Promo -->\n<div class=\"vc-promo\">\n    <div class=\"vc-promo-text\">\n        <strong>Vibromera &#8212; Portable Balancing &amp; Vibration Analysis<\/strong><br>\n        Professional vibration analyzers with spectrum analysis, order tracking, and fault diagnosis. Used in 50+ countries.\n    <\/div>\n    <a class=\"vc-promo-link\" href=\"https:\/\/vibromera.eu\/\" target=\"_blank\" rel=\"noopener\">Learn More<\/a>\n<\/div>\n\n<!-- Footer -->\n<footer class=\"vc-footer\">\n    <p>&copy; 2024&#8211;2025 <a href=\"https:\/\/vibromera.eu\/\">Vibromera<\/a> &#8212; Engineering Calculators<\/p>\n    <p style=\"font-size:12px;margin-top:4px;\">Vibration diagnostic reference tool. Last updated: February 2025<\/p>\n    <div class=\"vc-footer-links\">\n        <a href=\"\/calculators\/engineering-calculators\/\">All Calculators<\/a>\n        <a href=\"https:\/\/vibromera.eu\/contacts\/\">Contact<\/a>\n    <\/div>\n<\/footer>\n\n<\/div>\n\n<script>\n(function() {\n    'use strict';\n\n    var SLUG = 'vibration-source-identifier';\n\n    function $(id) { return document.getElementById(id); }\n    function fmt(n, d) { if(isNaN(n)) return '\\u2014'; var f=n.toFixed(d===undefined?2:d); return f.replace(\/(\\.\\d*?)0+$\/,'$1').replace(\/\\.$\/,''); }\n\n    \/* -- FAULT DATABASE -- *\/\n    var FAULTS = [\n        { order: 1, tol: 0.05, name: 'Unbalance', prob: 'high', desc: 'Mass unbalance is the most common cause of 1\\u00d7 vibration. Amplitude proportional to speed squared. Stable phase angle.', action: 'Perform balancing. Check for buildup, erosion, missing parts, thermal bow.' },\n        { order: 1, tol: 0.05, name: 'Bent Shaft', prob: 'med', desc: 'Bent shaft produces 1\\u00d7 vibration with high axial component. Amplitude changes less with speed than pure unbalance.', action: 'Measure shaft runout (TIR). Compare hot vs cold readings. Check for thermal distortion.' },\n        { order: 1, tol: 0.05, name: 'Resonance', prob: 'low', desc: 'If running speed coincides with a natural frequency, 1\\u00d7 vibration is amplified. High sensitivity to small unbalance changes.', action: 'Perform impact test \/ bump test. Modify speed or structural stiffness.' },\n        { order: 2, tol: 0.05, name: 'Misalignment (angular)', prob: 'high', desc: 'Angular misalignment produces dominant 2\\u00d7 vibration with high axial component. Phase difference ~180\\u00b0 across coupling.', action: 'Perform laser alignment. Check coupling condition. Verify thermal growth compensation.' },\n        { order: 2, tol: 0.05, name: 'Mechanical Looseness', prob: 'med', desc: 'Looseness at 2\\u00d7 often accompanied by multiple harmonics (3\\u00d7, 4\\u00d7, etc.) and unstable phase.', action: 'Check mounting bolts, foundation, bearing fits. Look for cracked structure.' },\n        { order: 2, tol: 0.05, name: 'Bearing Clearance', prob: 'low', desc: 'Excessive bearing clearance can generate 2\\u00d7 vibration. Directional (vertical vs horizontal difference).', action: 'Check bearing clearances. Inspect bearing surfaces for wear.' },\n        { order: 3, tol: 0.08, name: 'Severe Misalignment', prob: 'high', desc: 'Presence of strong 3\\u00d7 component with 1\\u00d7 and 2\\u00d7 indicates severe misalignment or coupling problems.', action: 'Immediate alignment correction. Inspect coupling for damage. Check for pipe strain.' },\n        { order: 3, tol: 0.08, name: 'Looseness (Type B)', prob: 'med', desc: 'Multiple harmonics pattern (1\\u00d7, 2\\u00d7, 3\\u00d7...) with unstable phase indicates structural looseness.', action: 'Inspect all bolted joints. Check for cracked welds or foundation deterioration.' },\n        { orderMin: 0.42, orderMax: 0.48, name: 'Oil Whirl', prob: 'high', desc: 'Oil whirl in journal bearings occurs at 0.42\\u20130.48\\u00d7 shaft speed. Frequency tracks with speed. Amplitude can be severe.', action: 'Check bearing clearances, oil viscosity, preload. May need bearing redesign. Reduce load or change oil grade.' },\n        { order: 0.5, tol: 0.03, name: 'Looseness \/ Rub', prob: 'high', desc: 'Half-order (0.5\\u00d7) vibration indicates rotor-to-stator rub or severe mechanical looseness. Sub-harmonics present.', action: 'Check clearances between rotating and stationary parts. Inspect seals, bearings, mounting.' },\n        { order: 0.5, tol: 0.03, name: 'Belt Drive (2:1 ratio)', prob: 'low', desc: 'In belt-driven equipment, 0.5\\u00d7 can be the driver speed when the speed ratio is 2:1.', action: 'Check belt tension, alignment, and condition. Verify speed ratio.' },\n        { orderMin: 0.15, orderMax: 0.40, name: 'Oil Whip \/ Instability', prob: 'med', desc: 'Sub-synchronous vibration locked at rotor natural frequency (not tracking speed) indicates oil whip or fluid-induced instability.', action: 'Emergency condition. Reduce load, change bearing geometry, adjust oil properties.' },\n        { isHighFreq: true, name: 'Rolling Element Bearing Defect', prob: 'high', desc: 'Non-synchronous frequencies at BPFO, BPFI, BSF, FTF. Often modulated (sidebands) at 1\\u00d7 RPM. Amplitude increases with deterioration.', action: 'Identify specific defect frequency (inner\/outer race, ball). Plan bearing replacement. Monitor closely.' },\n        { isHighFreq: true, name: 'Gear Mesh Vibration', prob: 'med', desc: 'Gear mesh frequency (number of teeth \\u00d7 RPM) and sidebands. Normal gears have GMF present; fault increases amplitude and sidebands.', action: 'Compare to baseline. Check gear tooth condition, alignment, backlash, lubrication.' },\n        { isLineFreq: true, name: 'Electrical (2\\u00d7 Line Freq)', prob: 'high', desc: 'Vibration at 100 Hz (50 Hz systems) or 120 Hz (60 Hz systems) indicates electrical issues: rotor eccentricity, broken rotor bars, unequal air gap, phase imbalance.', action: 'Test: remove power \\u2014 if vibration disappears instantly, cause is electrical. Check air gap, rotor bars, power supply balance.' },\n        { isBPF: true, name: 'Blade\/Vane Pass Frequency', prob: 'med', desc: 'Blade pass frequency = number of blades \\u00d7 RPM. High amplitude indicates flow disturbance, recirculation, cavitation, or damaged blades.', action: 'Check suction conditions, operating point on pump curve. Inspect impeller for damage or buildup.' },\n        { isGMF: true, name: 'Gear Mesh Frequency', prob: 'med', desc: 'Gear mesh frequency = number of teeth \\u00d7 RPM. Sidebands spaced at 1\\u00d7 indicate which gear has the fault.', action: 'Inspect gear teeth for pitting, wear, cracking. Check alignment and backlash.' }\n    ];\n\n    var lastInputField = null;\n\n    \/* -- CALCULATION -- *\/\n    function calculate() {\n        var rpm = parseFloat($('vc-rpm').value);\n        if (!rpm || rpm <= 0) {\n            $('vc-results').classList.remove('vc-visible');\n            return;\n        }\n\n        var f1x = rpm \/ 60;\n        var freq = parseFloat($('vc-freq').value);\n        var orderInput = parseFloat($('vc-order').value);\n        var blades = parseInt($('vc-blades').value) || 0;\n        var order;\n\n        \/\/ Auto-calculate between freq and order\n        if (lastInputField === 'order' && !isNaN(orderInput) && orderInput >= 0) {\n            order = orderInput;\n            freq = order * f1x;\n            $('vc-freq').value = fmt(freq, 2);\n        } else if (!isNaN(freq) && freq >= 0) {\n            order = freq \/ f1x;\n            $('vc-order').value = fmt(order, 3);\n        } else {\n            $('vc-results').classList.remove('vc-visible');\n            return;\n        }\n\n        \/\/ Display results\n        $('vc-r-1x').innerHTML = fmt(f1x, 2) + ' <span class=\"vc-rcard-unit\">Hz (1\\u00d7)<\/span>';\n        $('vc-r-order').innerHTML = fmt(order, 3) + ' <span class=\"vc-rcard-unit\">\\u00d7 RPM<\/span>';\n\n        \/\/ Match faults\n        var matches = [];\n        var lineFreq50 = (Math.abs(freq - 100) < 3 || Math.abs(freq - 120) < 3);\n        var bpfOrder = blades > 0 ? blades : 0;\n        var gmfOrder = blades > 0 ? blades : 0;\n\n        FAULTS.forEach(function(fault) {\n            var matched = false;\n            var matchScore = 0;\n\n            if (fault.isLineFreq) {\n                if (lineFreq50) { matched = true; matchScore = 90; }\n            } else if (fault.isBPF) {\n                if (bpfOrder > 0 && Math.abs(order - bpfOrder) < 0.5) { matched = true; matchScore = 80; }\n            } else if (fault.isGMF) {\n                if (gmfOrder > 0 && Math.abs(order - gmfOrder) < 0.5) { matched = true; matchScore = 80; }\n            } else if (fault.isHighFreq) {\n                if (order > 5) { matched = true; matchScore = order > 10 ? 70 : 50; }\n            } else if (fault.orderMin !== undefined && fault.orderMax !== undefined) {\n                if (order >= fault.orderMin && order <= fault.orderMax) { matched = true; matchScore = 85; }\n            } else if (fault.order !== undefined) {\n                var diff = Math.abs(order - fault.order);\n                var tol = fault.tol || 0.05;\n                if (diff <= tol) { matched = true; matchScore = 95 - diff * 100; }\n                else if (diff <= tol * 3) { matched = true; matchScore = 60 - diff * 50; }\n            }\n\n            if (matched) {\n                if (fault.prob === 'high') matchScore += 10;\n                else if (fault.prob === 'low') matchScore -= 10;\n                matches.push({ fault: fault, score: matchScore });\n            }\n        });\n\n        \/\/ Sort by score\n        matches.sort(function(a, b) { return b.score - a.score; });\n\n        \/\/ Primary source\n        if (matches.length > 0) {\n            $('vc-r-source').textContent = matches[0].fault.name;\n        } else {\n            $('vc-r-source').textContent = 'No common fault at ' + fmt(order, 2) + '\\u00d7';\n        }\n\n        \/\/ Matched faults cards\n        var html = '';\n        if (matches.length > 0) {\n            html += '<h3 style=\"font-family:var(--vc-display);font-size:17px;font-weight:700;margin:0 0 12px;\">Matched Fault Sources (' + matches.length + ')<\/h3>';\n            matches.forEach(function(m) {\n                var probClass = m.fault.prob === 'high' ? 'vc-prob-high' : (m.fault.prob === 'med' ? 'vc-prob-med' : 'vc-prob-low');\n                var probLabel = m.fault.prob === 'high' ? 'HIGH' : (m.fault.prob === 'med' ? 'MEDIUM' : 'LOW');\n                html += '<div class=\"vc-fault-card\">' +\n                    '<div class=\"vc-fault-card-title\">' + m.fault.name + ' <span class=\"' + probClass + '\">' + probLabel + '<\/span><\/div>' +\n                    '<div class=\"vc-fault-card-desc\">' + m.fault.desc + '<\/div>' +\n                    '<div class=\"vc-fault-card-action\">\\u2192 ' + m.fault.action + '<\/div>' +\n                    '<\/div>';\n            });\n        } else {\n            html += '<div class=\"vc-info-box\"><p>No common fault patterns match the frequency ' + fmt(freq, 2) + ' Hz (' + fmt(order, 3) + '\\u00d7). Consider: unusual speed ratios, structural resonances, or external excitation sources.<\/p><\/div>';\n        }\n        $('vc-matched-faults').innerHTML = html;\n\n        \/\/ Full reference table\n        var refHTML = '<table class=\"vc-fault-table\"><thead><tr><th>Order<\/th><th>Fault Source<\/th><th>Probability<\/th><th>Match<\/th><\/tr><\/thead><tbody>';\n        var refRows = [\n            { ord: '1\\u00d7', src: 'Unbalance, bent shaft, resonance', probC: 'vc-prob-high', prob: 'HIGH', match: Math.abs(order - 1) < 0.15 },\n            { ord: '2\\u00d7', src: 'Misalignment, looseness, bearing clearance', probC: 'vc-prob-high', prob: 'HIGH', match: Math.abs(order - 2) < 0.15 },\n            { ord: '3\\u00d7', src: 'Severe misalignment, looseness', probC: 'vc-prob-med', prob: 'MED', match: Math.abs(order - 3) < 0.24 },\n            { ord: '0.42\\u20130.48\\u00d7', src: 'Oil whirl (journal bearings)', probC: 'vc-prob-high', prob: 'HIGH', match: order >= 0.42 && order <= 0.48 },\n            { ord: '0.5\\u00d7', src: 'Looseness, rub, sub-harmonic', probC: 'vc-prob-med', prob: 'MED', match: Math.abs(order - 0.5) < 0.06 },\n            { ord: '<0.4\\u00d7', src: 'Oil whip, fluid instability', probC: 'vc-prob-med', prob: 'MED', match: order > 0.15 && order < 0.4 },\n            { ord: '>10\\u00d7', src: 'Bearing defects, gear mesh, electrical', probC: 'vc-prob-med', prob: 'MED', match: order > 10 },\n            { ord: '100\/120 Hz', src: 'Electrical (2\\u00d7 line frequency)', probC: 'vc-prob-high', prob: 'HIGH', match: lineFreq50 }\n        ];\n        if (bpfOrder > 0) {\n            refRows.push({ ord: bpfOrder + '\\u00d7 (BPF\/GMF)', src: 'Blade pass \/ Gear mesh (' + blades + ' blades\/teeth)', probC: 'vc-prob-med', prob: 'MED', match: Math.abs(order - bpfOrder) < 0.5 });\n        }\n        refRows.forEach(function(r) {\n            refHTML += '<tr class=\"' + (r.match ? 'vc-fault-match' : '') + '\"><td>' + r.ord + '<\/td><td>' + r.src + '<\/td><td><span class=\"' + r.probC + '\">' + r.prob + '<\/span><\/td><td>' + (r.match ? '\\u2705' : '') + '<\/td><\/tr>';\n        });\n        refHTML += '<\/tbody><\/table>';\n        $('vc-fault-ref-table').innerHTML = refHTML;\n\n        $('vc-results').classList.add('vc-visible');\n\n        \/\/ URL params\n        var u = new URL(window.location);\n        u.searchParams.set('rpm', rpm);\n        u.searchParams.set('freq', freq);\n        if (blades > 0) u.searchParams.set('blades', blades);\n        history.replaceState(null, '', u.toString());\n\n        \/\/ History\n        saveHistory({\n            rpm: rpm,\n            freq: freq,\n            order: order,\n            source: matches.length > 0 ? matches[0].fault.name : 'Unknown',\n            _summary: rpm + ' RPM, ' + fmt(freq, 1) + ' Hz (' + fmt(order, 2) + '\\u00d7) \\u2192 ' + (matches.length > 0 ? matches[0].fault.name : 'Unknown')\n        });\n    }\n\n    \/* -- INPUT TRACKING -- *\/\n    $('vc-freq').addEventListener('input', function() { lastInputField = 'freq'; });\n    $('vc-order').addEventListener('input', function() { lastInputField = 'order'; });\n    $('vc-rpm').addEventListener('input', function() { lastInputField = null; });\n    $('vc-blades').addEventListener('input', function() { lastInputField = null; });\n\n    \/* -- PRESETS -- *\/\n    document.querySelectorAll('.vc-preset-btn').forEach(function(btn) {\n        btn.addEventListener('click', function(e) {\n            e.preventDefault();\n            $('vc-rpm').value = this.getAttribute('data-rpm');\n            $('vc-freq').value = this.getAttribute('data-freq');\n            $('vc-blades').value = this.getAttribute('data-blades');\n            $('vc-order').value = '';\n            lastInputField = 'freq';\n            calculate();\n        });\n    });\n\n    \/* -- AUTO-CALCULATE -- *\/\n    $('vc-form').addEventListener('input', calculate);\n    $('vc-form').addEventListener('change', calculate);\n\n    \/* -- COPY -- *\/\n    $('vc-copy-btn').addEventListener('click', function() {\n        var text = 'Vibration Source Identification\\n' +\n            '\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\n' +\n            'Running speed: ' + $('vc-rpm').value + ' RPM\\n' +\n            'Vibration frequency: ' + $('vc-freq').value + ' Hz\\n' +\n            'Order: ' + $('vc-order').value + '\\u00d7\\n' +\n            'Most likely source: ' + $('vc-r-source').textContent + '\\n' +\n            '\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\u2501\\n' +\n            'vibromera.eu\/calculators\/vibration-source-identifier\/';\n\n        if (navigator.clipboard) {\n            navigator.clipboard.writeText(text).then(function() {\n                var btn = $('vc-copy-btn');\n                btn.classList.add('vc-copied');\n                btn.innerHTML = '<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg> Copied!';\n                setTimeout(function() {\n                    btn.classList.remove('vc-copied');\n                    btn.innerHTML = '<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\/><\/svg> Copy';\n                }, 2000);\n            });\n        }\n    });\n\n    \/* -- COLLAPSIBLE SECTIONS -- *\/\n    document.querySelectorAll('.vc-section-toggle').forEach(function(btn) {\n        btn.addEventListener('click', function() {\n            var section = this.closest('.vc-section');\n            var isOpen = section.classList.contains('vc-open');\n            section.classList.toggle('vc-open');\n            this.setAttribute('aria-expanded', !isOpen);\n        });\n    });\n\n    \/* -- FAQ -- *\/\n    var faqData = [\n        { q: 'How do I identify a vibration source from frequency?', a: '<p>Most mechanical faults produce vibration at characteristic frequencies related to shaft speed:<\/p><ul><li><strong>1\\u00d7 RPM:<\/strong> Unbalance (most common), bent shaft, looseness<\/li><li><strong>2\\u00d7 RPM:<\/strong> Misalignment (primary indicator)<\/li><li><strong>0.42\\u20130.48\\u00d7:<\/strong> Oil whirl in journal bearings<\/li><li><strong>Non-synchronous:<\/strong> Bearing defects<\/li><\/ul><p>Express the vibration frequency as a multiple (order) of the shaft speed, then match to known fault patterns. Always correlate with phase, amplitude trend, and operating conditions.<\/p>' },\n        { q: 'What is 1\\u00d7 vibration?', a: '<p>1\\u00d7 (or synchronous) vibration occurs at exactly the shaft rotational frequency. For a 3000 RPM machine, 1\\u00d7 = 50 Hz.<\/p><p>1\\u00d7 vibration is <strong>always present<\/strong> to some degree due to residual unbalance. It becomes concerning when amplitude exceeds acceptable limits per ISO 10816\/20816.<\/p><p>Primary causes: mass unbalance, bent shaft, eccentricity, resonance. Phase angle analysis helps distinguish between these causes.<\/p>' },\n        { q: 'What causes sub-synchronous vibration?', a: '<p>Sub-synchronous vibration (below 1\\u00d7 RPM) causes include:<\/p><ul><li><strong>Oil whirl (0.42\\u20130.48\\u00d7):<\/strong> Journal bearing instability, frequency tracks with speed<\/li><li><strong>Oil whip:<\/strong> More severe \\u2014 frequency locks at rotor natural frequency, does not track speed<\/li><li><strong>Rub (0.5\\u00d7, fractional):<\/strong> Rotor-stator contact creates sub-harmonics<\/li><li><strong>Looseness (0.5\\u00d7):<\/strong> Mechanical looseness at mounting points<\/li><li><strong>Belt resonance:<\/strong> Belt natural frequency in belt-driven systems<\/li><\/ul><p>Sub-synchronous vibration is often more dangerous than synchronous because it can lead to catastrophic instability.<\/p>' },\n        { q: 'What causes high-frequency vibration?', a: '<p>High-frequency vibration (above 10\\u00d7 RPM) sources:<\/p><ul><li><strong>Rolling element bearing defects:<\/strong> BPFO (outer race), BPFI (inner race), BSF (ball spin), FTF (cage)<\/li><li><strong>Gear mesh:<\/strong> Number of teeth \\u00d7 RPM, with sidebands<\/li><li><strong>Blade\/vane pass:<\/strong> Number of blades \\u00d7 RPM<\/li><li><strong>Electrical noise:<\/strong> Slot pass frequency, commutation<\/li><li><strong>Cavitation:<\/strong> Random high-frequency broadband<\/li><li><strong>Structural resonance:<\/strong> Natural frequencies of components<\/li><\/ul>' },\n        { q: 'What role does phase angle play in vibration diagnosis?', a: '<p>Phase angle is the angular relationship between the vibration peak and a shaft reference mark (measured with a tachometer).<\/p><p><strong>Key diagnostic uses:<\/strong><\/p><ul><li><strong>Unbalance:<\/strong> Stable, repeatable phase at 1\\u00d7<\/li><li><strong>Misalignment:<\/strong> ~180\\u00b0 phase difference across coupling at 1\\u00d7 and\/or 2\\u00d7<\/li><li><strong>Looseness:<\/strong> Unstable, drifting phase<\/li><li><strong>Resonance:<\/strong> ~90\\u00b0 phase shift at natural frequency, high amplification<\/li><li><strong>Bent shaft:<\/strong> 1\\u00d7 phase shift of ~180\\u00b0 from inboard to outboard bearing<\/li><\/ul><p>Without phase data, it is often impossible to distinguish between faults that produce the same frequency (e.g., unbalance vs. misalignment at 1\\u00d7).<\/p>' }\n    ];\n\n    var faqList = $('vc-faq-list');\n    faqData.forEach(function(faq) {\n        faqList.innerHTML += '<div class=\"vc-faq-item\"><button type=\"button\" class=\"vc-faq-q\"><span>' + faq.q + '<\/span><svg class=\"vc-faq-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/button><div class=\"vc-faq-a\"><div class=\"vc-faq-a-inner\">' + faq.a + '<\/div><\/div><\/div>';\n    });\n    faqList.addEventListener('click', function(e) {\n        var btn = e.target.closest('.vc-faq-q');\n        if (!btn) return;\n        btn.closest('.vc-faq-item').classList.toggle('vc-open');\n    });\n\n    \/* -- HISTORY -- *\/\n    function saveHistory(entry) {\n        var key = 'vc_history_' + SLUG;\n        var arr = [];\n        try { arr = JSON.parse(localStorage.getItem(key)) || []; } catch(e) {}\n        entry._ts = new Date().toISOString();\n        arr.unshift(entry);\n        if (arr.length > 10) arr = arr.slice(0, 10);\n        try { localStorage.setItem(key, JSON.stringify(arr)); } catch(e) {}\n    }\n\n    \/* -- URL PARAMS -- *\/\n    function loadParams() {\n        var p = new URLSearchParams(window.location.search);\n        if (p.has('rpm')) $('vc-rpm').value = p.get('rpm');\n        if (p.has('freq')) $('vc-freq').value = p.get('freq');\n        if (p.has('blades')) $('vc-blades').value = p.get('blades');\n        if (p.has('order')) { $('vc-order').value = p.get('order'); lastInputField = 'order'; }\n    }\n\n    \/* -- INIT -- *\/\n    function init() {\n        loadParams();\n        lastInputField = 'freq';\n        calculate();\n    }\n\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', init);\n    } else {\n        init();\n    }\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Ferramenta gratuita e interativa para diagn\u00f3stico de vibra\u00e7\u00f5es. Insira a frequ\u00eancia de vibra\u00e7\u00e3o em ordem de velocidade de opera\u00e7\u00e3o para identificar as poss\u00edveis causas de falhas: desbalanceamento, desalinhamento, defeitos em rolamentos, folga e muito mais.<\/p>","protected":false},"featured_media":0,"template":"","meta":{"ai_generated_summary":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-100297","calculator","type-calculator","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vibromera.eu\/pt_br\/wp-json\/wp\/v2\/calculator\/100297","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibromera.eu\/pt_br\/wp-json\/wp\/v2\/calculator"}],"about":[{"href":"https:\/\/vibromera.eu\/pt_br\/wp-json\/wp\/v2\/types\/calculator"}],"version-history":[{"count":1,"href":"https:\/\/vibromera.eu\/pt_br\/wp-json\/wp\/v2\/calculator\/100297\/revisions"}],"predecessor-version":[{"id":100605,"href":"https:\/\/vibromera.eu\/pt_br\/wp-json\/wp\/v2\/calculator\/100297\/revisions\/100605"}],"wp:attachment":[{"href":"https:\/\/vibromera.eu\/pt_br\/wp-json\/wp\/v2\/media?parent=100297"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibromera.eu\/pt_br\/wp-json\/wp\/v2\/categories?post=100297"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibromera.eu\/pt_br\/wp-json\/wp\/v2\/tags?post=100297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}