{"id":100015,"date":"2026-02-15T20:06:08","date_gmt":"2026-02-15T20:06:08","guid":{"rendered":"https:\/\/vibromera.eu\/?post_type=calculator&#038;p=100015"},"modified":"2026-07-11T18:40:17","modified_gmt":"2026-07-11T18:40:17","slug":"bearing-defect-frequencies","status":"publish","type":"calculator","link":"https:\/\/vibromera.eu\/vi\/calculators\/bearing-defect-frequencies\/","title":{"rendered":"C\u00f4ng c\u1ee5 t\u00ednh to\u00e1n t\u1ea7n s\u1ed1 l\u1ed7i \u1ed5 tr\u1ee5c | BPFO BPFI BSF FTF"},"content":{"rendered":"\r\n<script type=\"application\/ld+json\">\r\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"WebApplication\",\"name\":\"Bearing Defect Frequency Calculator\",\"alternateName\":[\"BPFO BPFI Calculator\",\"Bearing Fault Frequency Calculator\",\"Rolling Element Bearing Frequency Calculator\"],\"description\":\"Free online engineering calculator for bearing defect frequencies. Computes BPFO, BPFI, BSF, FTF and their harmonics from bearing geometry and shaft speed.\",\"url\":\"https:\/\/vibromera.eu\/calculators\/bearing-defect-frequencies\/\",\"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\":\"2026-02-14\",\"inLanguage\":\"en\",\"isAccessibleForFree\":true,\"featureList\":[\"BPFO, BPFI, BSF, FTF calculation\",\"Harmonics (2\u00d7 and 3\u00d7)\",\"Example geometry presets\",\"Auto-calculation on input change\",\"URL parameter sharing\",\"Calculation history\"],\"keywords\":\"bearing defect frequency, BPFO, BPFI, BSF, FTF, vibration analysis, bearing diagnostics\"}\r\n<\/script>\r\n\r\n<script type=\"application\/ld+json\">\r\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[\r\n{\"@type\":\"Question\",\"name\":\"What are bearing defect frequencies?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Bearing defect frequencies are characteristic vibration frequencies generated when a rolling element bearing has a localized defect on one of its components (outer race, inner race, rolling elements, or cage). Each component produces a unique frequency based on bearing geometry and shaft speed.\"}},\r\n{\"@type\":\"Question\",\"name\":\"How can an outer race fault appear in a spectrum?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"An outer-race defect can produce components near BPFO and its harmonics. FTF or other sidebands can also occur because load, slip, transfer path and modulation affect the spectrum. A frequency match alone does not prove a defect; confirm with envelope analysis, trends and inspection context.\"}},\r\n{\"@type\":\"Question\",\"name\":\"What is the difference between inner and outer race indicators?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Outer-race defects are investigated around BPFO; inner-race defects around BPFI. Shaft-speed modulation is common around BPFI, while BPFO can also show FTF or other sidebands. Interpret the pattern together with loading, measurement position and envelope spectrum.\"}},\r\n{\"@type\":\"Question\",\"name\":\"Why do harmonics matter in bearing analysis?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Harmonics and sidebands can strengthen a bearing-fault hypothesis, but their count is not a universal severity scale or remaining-life calculation. Evaluate amplitude trends, envelope spectra, noise floor, operating condition and corroborating measurements.\"}},\r\n{\"@type\":\"Question\",\"name\":\"Where can I find bearing geometry data?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Bearing geometry data (number of rolling elements, ball diameter, pitch diameter, contact angle) can be found in manufacturer catalogs from SKF, FAG\/Schaeffler, NSK, Timken, NTN, and others. Many manufacturers also provide online tools and databases. Some vibration analysis software includes built-in bearing databases.\"}}\r\n]}\r\n<\/script>\r\n\r\n<script type=\"application\/ld+json\">\r\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[\r\n{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/vibromera.eu\/\"},\r\n{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculators\",\"item\":\"https:\/\/vibromera.eu\/calculators\/\"},\r\n{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Bearing Defect Frequencies\",\"item\":\"https:\/\/vibromera.eu\/calculators\/bearing-defect-frequencies\/\"}\r\n]}\r\n<\/script>\r\n\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\r\n\r\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\">\r\n\r\n<link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/katex@0.16.11\/dist\/katex.min.css\">\r\n\r\n<style>\r\n:root {\r\n    --vc-bg: #f4f1ec;\r\n    --vc-surface: #ffffff;\r\n    --vc-surface-alt: #f8f6f2;\r\n    --vc-ink: #1a1a1a;\r\n    --vc-ink-secondary: #5a5650;\r\n    --vc-ink-muted: #8a857e;\r\n    --vc-accent: #c85a2a;\r\n    --vc-accent-hover: #b04d22;\r\n    --vc-accent-light: #fdf0ea;\r\n    --vc-blue: #2a5c8c;\r\n    --vc-blue-light: #eaf1f8;\r\n    --vc-green: #2a7a4b;\r\n    --vc-green-light: #eaf8ef;\r\n    --vc-yellow: #a67c00;\r\n    --vc-yellow-light: #fef9e8;\r\n    --vc-red: #b91c1c;\r\n    --vc-red-light: #fef2f2;\r\n    --vc-border: #d9d4cc;\r\n    --vc-border-light: #e8e4dd;\r\n    --vc-shadow: 0 1px 3px rgba(26,26,26,0.06), 0 4px 12px rgba(26,26,26,0.04);\r\n    --vc-shadow-lg: 0 4px 12px rgba(26,26,26,0.08), 0 16px 40px rgba(26,26,26,0.06);\r\n    --vc-radius: 8px;\r\n    --vc-radius-lg: 12px;\r\n    --vc-font: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\r\n    --vc-mono: 'JetBrains Mono', 'Consolas', 'Monaco', monospace;\r\n    --vc-display: 'Fraunces', Georgia, serif;\r\n}\r\n\r\n.vc-calculator {\r\n    font-family: var(--vc-font);\r\n    font-size: 15px;\r\n    line-height: 1.65;\r\n    color: var(--vc-ink);\r\n    max-width: 960px;\r\n    margin: 0 auto;\r\n    padding: 20px 16px 40px;\r\n    -webkit-font-smoothing: antialiased;\r\n}\r\n.vc-calculator *, .vc-calculator *::before, .vc-calculator *::after { box-sizing: border-box; }\r\n\r\n\/* \u2500\u2500 HEADER \u2500\u2500 *\/\r\n.vc-header { text-align: center; padding: 48px 24px 40px; position: relative; }\r\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; }\r\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; }\r\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; }\r\n.vc-header-subtitle { font-size:15px; color:var(--vc-ink-secondary); margin:0 auto 20px; max-width:600px; }\r\n.vc-badges { display:inline-flex; gap:8px; flex-wrap:wrap; justify-content:center; }\r\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); }\r\n\r\n\/* \u2500\u2500 CARD \u2500\u2500 *\/\r\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; }\r\n\r\n\/* \u2500\u2500 UNIT TOGGLE \u2500\u2500 *\/\r\n.vc-unit-bar { display:flex; border-bottom:1px solid var(--vc-border-light); background:var(--vc-surface-alt); }\r\n.vc-unit-btn { flex:1; padding:12px; border:none; background:transparent; font-family:var(--vc-font); font-size:13px; font-weight:600; color:var(--vc-ink-muted); cursor:pointer; transition:all 0.2s; position:relative; }\r\n.vc-unit-btn:hover { color:var(--vc-ink-secondary); background:rgba(200,90,42,0.04); }\r\n.vc-unit-btn.vc-active { color:var(--vc-accent); background:var(--vc-surface); }\r\n.vc-unit-btn.vc-active::after { content:''; position:absolute; bottom:-1px; left:16px; right:16px; height:2px; background:var(--vc-accent); border-radius:1px 1px 0 0; }\r\n\r\n\/* \u2500\u2500 FORM \u2500\u2500 *\/\r\n.vc-form { padding:24px; }\r\n.vc-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; }\r\n@media(max-width:600px) { .vc-form-grid { grid-template-columns:1fr; } }\r\n.vc-field { display:flex; flex-direction:column; }\r\n.vc-field-full { grid-column: 1 \/ -1; }\r\n.vc-label { font-size:12px; font-weight:600; letter-spacing:0.04em; text-transform:uppercase; color:var(--vc-ink-secondary); margin-bottom:6px; }\r\n.vc-label-hint { font-weight:400; text-transform:none; letter-spacing:0; color:var(--vc-ink-muted); font-size:11px; }\r\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; }\r\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; }\r\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); }\r\n.vc-select:hover, .vc-input:hover { border-color:var(--vc-ink-muted); }\r\n\r\n\/* \u2500\u2500 PRESETS \u2500\u2500 *\/\r\n.vc-presets { display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; padding-top:18px; border-top:1px solid var(--vc-border-light); }\r\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; }\r\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; }\r\n.vc-preset-btn:hover { border-color:var(--vc-accent); color:var(--vc-accent); background:var(--vc-accent-light); }\r\n\r\n\/* \u2500\u2500 RESULTS \u2500\u2500 *\/\r\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; }\r\n.vc-results.vc-visible { max-height:4000px; padding:24px; }\r\n.vc-results-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:18px; }\r\n.vc-results-title { font-family:var(--vc-display); font-size:20px; font-weight:700; color:var(--vc-ink); margin:0; }\r\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; }\r\n.vc-copy-btn:hover { border-color:var(--vc-accent); color:var(--vc-accent); }\r\n.vc-copy-btn.vc-copied { background:var(--vc-green-light); border-color:var(--vc-green); color:var(--vc-green); }\r\n\r\n.vc-result-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:20px; }\r\n@media(max-width:500px) { .vc-result-grid { grid-template-columns:1fr; } }\r\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; }\r\n.vc-rcard:hover { transform:translateY(-1px); }\r\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; }\r\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; }\r\n.vc-rcard-value { font-family:var(--vc-mono); font-size:22px; font-weight:600; color:var(--vc-ink); line-height:1.2; }\r\n.vc-rcard-primary .vc-rcard-value { font-size:30px; color:var(--vc-accent); }\r\n.vc-rcard-unit { font-size:14px; font-weight:400; color:var(--vc-ink-secondary); }\r\n\r\n\/* \u2500\u2500 HARMONICS TABLE \u2500\u2500 *\/\r\n.vc-harmonics-table { width:100%; border-collapse:collapse; margin-top:16px; font-size:13px; }\r\n.vc-harmonics-table th, .vc-harmonics-table td { padding:10px 12px; border:1px solid var(--vc-border-light); text-align:left; }\r\n.vc-harmonics-table th { background:var(--vc-surface-alt); font-family:var(--vc-mono); font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:0.05em; color:var(--vc-ink-secondary); }\r\n.vc-harmonics-table tr:nth-child(even) { background:var(--vc-surface-alt); }\r\n.vc-harmonics-table td { font-family:var(--vc-mono); font-size:13px; }\r\n@media(max-width:600px) { .vc-harmonics-table { font-size:12px; } .vc-harmonics-table th, .vc-harmonics-table td { padding:8px; } }\r\n\r\n\/* \u2500\u2500 COLLAPSIBLE SECTIONS \u2500\u2500 *\/\r\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; }\r\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; }\r\n.vc-section-toggle:hover { background:var(--vc-surface-alt); }\r\n.vc-section-toggle-text { display:flex; align-items:center; gap:10px; }\r\n.vc-section-icon { font-size:20px; line-height:1; }\r\n.vc-section-title { font-family:var(--vc-display); font-size:18px; font-weight:700; color:var(--vc-ink); margin:0; }\r\n.vc-section-chevron { width:20px; height:20px; color:var(--vc-ink-muted); transition:transform 0.3s; flex-shrink:0; }\r\n.vc-section.vc-open .vc-section-chevron { transform:rotate(180deg); }\r\n.vc-section-body { max-height:0; overflow:hidden; transition:max-height 0.4s cubic-bezier(0.4,0,0.2,1); }\r\n.vc-section.vc-open .vc-section-body { max-height:20000px; }\r\n.vc-section-inner { padding:0 24px 24px; border-top:1px solid var(--vc-border-light); }\r\n\r\n\/* \u2500\u2500 THEORY \u2500\u2500 *\/\r\n.vc-theory h3 { font-family:var(--vc-display); font-size:17px; font-weight:700; color:var(--vc-ink); margin:28px 0 10px; }\r\n.vc-theory h3:first-child { margin-top:20px; }\r\n.vc-theory p { font-size:14px; color:var(--vc-ink-secondary); margin:0 0 10px; }\r\n.vc-theory ul, .vc-theory ol { font-size:14px; color:var(--vc-ink-secondary); margin:0 0 12px 18px; padding:0; }\r\n.vc-theory li { margin-bottom:5px; }\r\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; }\r\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; }\r\n.vc-info-box p { margin:0; font-size:14px; color:var(--vc-ink-secondary); }\r\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; }\r\n.vc-example-box { background:var(--vc-surface-alt); border:1px solid var(--vc-border-light); border-radius:6px; padding:16px; margin:14px 0; }\r\n.vc-example-title { font-family:var(--vc-mono); font-size:13px; font-weight:600; color:var(--vc-accent); margin-bottom:8px; }\r\n.vc-table { width:100%; border-collapse:collapse; margin:14px 0; font-size:13px; }\r\n.vc-table th, .vc-table td { padding:10px 12px; border:1px solid var(--vc-border-light); text-align:left; }\r\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); }\r\n.vc-table tr:nth-child(even) { background:var(--vc-surface-alt); }\r\n@media(max-width:600px) { .vc-table { font-size:12px; } .vc-table th, .vc-table td { padding:8px; } }\r\n\r\n\/* \u2500\u2500 FAQ \u2500\u2500 *\/\r\n.vc-faq-list { display:flex; flex-direction:column; gap:8px; margin-top:20px; }\r\n.vc-faq-item { border:1px solid var(--vc-border-light); border-radius:6px; overflow:hidden; }\r\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; }\r\n.vc-faq-q:hover { background:#ede9e3; }\r\n.vc-faq-chevron { width:16px; height:16px; color:var(--vc-ink-muted); flex-shrink:0; transition:transform 0.25s; }\r\n.vc-faq-item.vc-open .vc-faq-chevron { transform:rotate(180deg); }\r\n.vc-faq-a { max-height:0; overflow:hidden; transition:max-height 0.35s; }\r\n.vc-faq-item.vc-open .vc-faq-a { max-height:1200px; }\r\n.vc-faq-a-inner { padding:14px 16px; border-top:1px solid var(--vc-border-light); font-size:14px; color:var(--vc-ink-secondary); }\r\n.vc-faq-a-inner p { margin:0 0 8px; }\r\n.vc-faq-a-inner p:last-child { margin-bottom:0; }\r\n.vc-faq-a-inner ul { margin:4px 0 8px 16px; padding:0; }\r\n.vc-faq-a-inner li { margin-bottom:3px; }\r\n\r\n\/* \u2500\u2500 RELATED \u2500\u2500 *\/\r\n.vc-related { display:flex; flex-wrap:wrap; gap:10px; margin-top:16px; }\r\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; }\r\n.vc-related-link:hover { border-color:var(--vc-accent); color:var(--vc-accent); background:var(--vc-accent-light); }\r\n\r\n\/* \u2500\u2500 PROMO \u2500\u2500 *\/\r\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; }\r\n.vc-promo-text { flex:1; font-size:14px; color:var(--vc-ink-secondary); }\r\n.vc-promo-text strong { color:var(--vc-ink); }\r\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; }\r\n.vc-promo-link:hover { background:var(--vc-accent-hover); }\r\n\r\n\/* \u2500\u2500 FOOTER \u2500\u2500 *\/\r\n.vc-footer { text-align:center; padding:32px 16px; font-size:13px; color:var(--vc-ink-muted); }\r\n.vc-footer a { color:var(--vc-accent); text-decoration:none; }\r\n.vc-footer a:hover { text-decoration:underline; }\r\n.vc-footer-links { margin-top:8px; font-size:12px; }\r\n.vc-footer-links a { margin:0 8px; }\r\n\r\n\/* \u2500\u2500 PRINT \u2500\u2500 *\/\r\n@media print {\r\n    .vc-section-body { max-height:none!important; }\r\n    .vc-faq-a { max-height:none!important; }\r\n    .vc-results { max-height:none!important; padding:24px!important; }\r\n    .vc-copy-btn, .vc-section-chevron, .vc-faq-chevron, .vc-presets, .vc-promo { display:none!important; }\r\n}\r\n.vc-results.vc-visible{max-height:5000px}\r\n.vc-viz{margin:20px 0;background:var(--vc-surface);border:1px solid var(--vc-border-light);border-radius:var(--vc-radius);padding:16px;overflow:hidden}\r\n.vc-viz svg{width:100%;height:auto;display:block}\r\n.vc-viz-title{font-family:var(--vc-mono);font-size:11px;font-weight:500;letter-spacing:0.1em;text-transform:uppercase;color:var(--vc-ink-muted);margin-bottom:12px}\r\n<\/style>\r\n\r\n<div class=\"vc-calculator\" id=\"vc-bearing-defect\">\r\n\r\n<!-- Header -->\r\n<header class=\"vc-header\">\r\n    <p class=\"vc-header-eyebrow\">Free Engineering Tool #035<\/p>\r\n    <h1 class=\"vc-header-title\">Bearing Defect Frequency Calculator<\/h1>\r\n    <p class=\"vc-header-subtitle\">Calculate BPFO, BPFI, BSF, and FTF from bearing geometry and shaft speed. Includes 2\u00d7 and 3\u00d7 harmonics for vibration diagnostics.<\/p>\r\n    <div class=\"vc-badges\">\r\n        <span class=\"vc-badge\">BPFO<\/span>\r\n        <span class=\"vc-badge\">BPFI<\/span>\r\n        <span class=\"vc-badge\">BSF<\/span>\r\n        <span class=\"vc-badge\">FTF<\/span>\r\n    <\/div>\r\n<\/header>\r\n\r\n<!-- Calculator Card -->\r\n<div class=\"vc-card\">\r\n    <div class=\"vc-unit-bar\">\r\n        <button type=\"button\" class=\"vc-unit-btn vc-active\" data-system=\"metric\">Metric (mm)<\/button>\r\n        <button type=\"button\" class=\"vc-unit-btn\" data-system=\"imperial\">Imperial (in)<\/button>\r\n    <\/div>\r\n\r\n    <form class=\"vc-form\" id=\"vc-form\" autocomplete=\"off\">\r\n        <div class=\"vc-form-grid\">\r\n            <div class=\"vc-field\">\r\n                <label class=\"vc-label\" for=\"vc-z\">Number of Rolling Elements <span class=\"vc-label-hint\">(Z)<\/span><\/label>\r\n                <input class=\"vc-input\" type=\"text\" id=\"vc-z\" inputmode=\"numeric\" autocomplete=\"off\" placeholder=\"e.g. 9\" value=\"9\">\r\n            <\/div>\r\n            <div class=\"vc-field\">\r\n                <label class=\"vc-label\" for=\"vc-bd\">Ball \/ Roller Diameter <span class=\"vc-label-hint\" id=\"vc-bd-unit\">(mm)<\/span><\/label>\r\n                <input class=\"vc-input\" type=\"text\" id=\"vc-bd\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"e.g. 7.94 or 7,94\" value=\"7.94\">\r\n            <\/div>\r\n            <div class=\"vc-field\">\r\n                <label class=\"vc-label\" for=\"vc-pd\">Pitch Diameter <span class=\"vc-label-hint\" id=\"vc-pd-unit\">(mm)<\/span><\/label>\r\n                <input class=\"vc-input\" type=\"text\" id=\"vc-pd\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"e.g. 38.5 or 38,5\" value=\"38.5\">\r\n            <\/div>\r\n            <div class=\"vc-field\">\r\n                <label class=\"vc-label\" for=\"vc-alpha\">Contact Angle <span class=\"vc-label-hint\">(degrees)<\/span><\/label>\r\n                <input class=\"vc-input\" type=\"text\" id=\"vc-alpha\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"0 to less than 90\" value=\"0\">\r\n            <\/div>\r\n            <div class=\"vc-field\">\r\n                <label class=\"vc-label\" for=\"vc-rpm\">Shaft Speed <span class=\"vc-label-hint\">(RPM)<\/span><\/label>\r\n                <input class=\"vc-input\" type=\"text\" id=\"vc-rpm\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"e.g. 1500 or 1500,0\" value=\"1500\">\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- Presets -->\r\n        <div class=\"vc-presets\">\r\n            <div class=\"vc-presets-label\">Quick presets<\/div>\r\n            <button type=\"button\" class=\"vc-preset-btn\" data-z=\"9\" data-bd=\"7.94\" data-pd=\"38.5\" data-a=\"0\" data-rpm=\"1500\">Example A \u00b7 Z9 \u00b7 1500 RPM<\/button>\r\n            <button type=\"button\" class=\"vc-preset-btn\" data-z=\"8\" data-bd=\"17.46\" data-pd=\"72.5\" data-a=\"0\" data-rpm=\"1500\">Example B \u00b7 Z8 \u00b7 1500 RPM<\/button>\r\n            <button type=\"button\" class=\"vc-preset-btn\" data-z=\"14\" data-bd=\"10\" data-pd=\"65\" data-a=\"0\" data-rpm=\"3000\">Example C \u00b7 Z14 \u00b7 3000 RPM<\/button>\r\n        <\/div>\r\n    <\/form>\r\n\r\n    <!-- Results -->\r\n    <div class=\"vc-results\" id=\"vc-results\">\r\n        <div class=\"vc-results-head\">\r\n            <h2 class=\"vc-results-title\">Results<\/h2>\r\n            <button type=\"button\" class=\"vc-copy-btn\" id=\"vc-copy-btn\">\r\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>\r\n                Copy\r\n            <\/button>\r\n        <\/div>\r\n        <div class=\"vc-result-grid\">\r\n            <div class=\"vc-rcard vc-rcard-primary\">\r\n                <div class=\"vc-rcard-label\">BPFO \u2014 Outer Race Defect Frequency<\/div>\r\n                <div class=\"vc-rcard-value\" id=\"vc-r-bpfo\">\u2014<\/div>\r\n            <\/div>\r\n            <div class=\"vc-rcard\">\r\n                <div class=\"vc-rcard-label\">BPFI \u2014 Inner Race Defect Frequency<\/div>\r\n                <div class=\"vc-rcard-value\" id=\"vc-r-bpfi\">\u2014<\/div>\r\n            <\/div>\r\n            <div class=\"vc-rcard\">\r\n                <div class=\"vc-rcard-label\">BSF \u2014 Ball Spin Frequency<\/div>\r\n                <div class=\"vc-rcard-value\" id=\"vc-r-bsf\">\u2014<\/div>\r\n            <\/div>\r\n            <div class=\"vc-rcard\">\r\n                <div class=\"vc-rcard-label\">FTF \u2014 Cage (Train) Frequency<\/div>\r\n                <div class=\"vc-rcard-value\" id=\"vc-r-ftf\">\u2014<\/div>\r\n            <\/div>\r\n            <div class=\"vc-rcard\">\r\n                <div class=\"vc-rcard-label\">Shaft Frequency<\/div>\r\n                <div class=\"vc-rcard-value\" id=\"vc-r-shaft\">\u2014<\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <h3 style=\"font-family:var(--vc-display);font-size:17px;font-weight:700;margin:8px 0 12px;\">Harmonics Table<\/h3>\r\n        <div style=\"overflow-x:auto;\">\r\n            <table class=\"vc-harmonics-table\" id=\"vc-harmonics-tbl\">\r\n                <thead>\r\n                    <tr>\r\n                        <th>Frequency<\/th>\r\n                        <th>1\u00d7 (Hz)<\/th>\r\n                        <th>1\u00d7 (Order)<\/th>\r\n                        <th>2\u00d7 (Hz)<\/th>\r\n                        <th>2\u00d7 (Order)<\/th>\r\n                        <th>3\u00d7 (Hz)<\/th>\r\n                        <th>3\u00d7 (Order)<\/th>\r\n                    <\/tr>\r\n                <\/thead>\r\n                <tbody id=\"vc-harmonics-body\"><\/tbody>\r\n            <\/table>\r\n        <\/div>\r\n        <div class=\"vc-viz\" id=\"vc-spectrum-viz\"><\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<!-- Theory & Reference -->\r\n<div class=\"vc-section vc-open\" id=\"vc-sec-theory\">\r\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"true\">\r\n        <span class=\"vc-section-toggle-text\">\r\n            <span class=\"vc-section-icon\">\ud83d\udcd8<\/span>\r\n            <span class=\"vc-section-title\">Theory &amp; Formulas<\/span>\r\n        <\/span>\r\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>\r\n    <\/button>\r\n    <div class=\"vc-section-body\">\r\n        <div class=\"vc-section-inner vc-theory\">\r\n            <h3>Bearing Defect Frequencies<\/h3>\r\n            <p>When a rolling element bearing develops a localized defect, the repetitive impact generates characteristic frequencies that depend on the bearing geometry and shaft speed. The four fundamental defect frequencies are:<\/p>\r\n\r\n            <h3>Fundamental Train Frequency (FTF)<\/h3>\r\n            <div class=\"vc-formula-box\" id=\"vc-katex-ftf\"><\/div>\r\n            <p>The cage rotational frequency. An elevated FTF indicates cage wear or damage.<\/p>\r\n\r\n            <h3>Ball Pass Frequency \u2014 Outer Race (BPFO)<\/h3>\r\n            <div class=\"vc-formula-box\" id=\"vc-katex-bpfo\"><\/div>\r\n            <p>The rate at which rolling elements pass a point on the outer race. Peaks near BPFO can support an outer-race fault diagnosis, but occurrence and amplitude depend on load zone, transfer path, slip and measurement position.<\/p>\r\n\r\n            <h3>Ball Pass Frequency \u2014 Inner Race (BPFI)<\/h3>\r\n            <div class=\"vc-formula-box\" id=\"vc-katex-bpfi\"><\/div>\r\n            <p>The rate at which rolling elements pass a point on the inner race. Inner race faults typically show sidebands at shaft speed around BPFI.<\/p>\r\n\r\n            <h3>Ball Spin Frequency (BSF)<\/h3>\r\n            <div class=\"vc-formula-box\" id=\"vc-katex-bsf\"><\/div>\r\n            <p>The rotational frequency of a rolling element about its own axis. Rolling element defects often appear at 2\u00d7 BSF because the defect contacts both races per revolution.<\/p>\r\n\r\n            <div class=\"vc-info-box\">\r\n                <p><strong>Note:<\/strong> These kinematic formulas assume pure rolling with no slip. Actual frequencies can shift with load, clearance, lubrication, speed and slip; use calculated values as search markers rather than exact proof of a defect.<\/p>\r\n            <\/div>\r\n\r\n            <h3>Practical Example<\/h3>\r\n            <div class=\"vc-example-box\">\r\n                <div class=\"vc-example-title\">Worked example \u2014 stated geometry, 1500 RPM<\/div>\r\n                <p><strong>Given:<\/strong> Z = 9, B<sub>d<\/sub> = 7.94 mm, P<sub>d<\/sub> = 38.5 mm, \u03b1 = 0\u00b0, RPM = 1500<\/p>\r\n                <p>Shaft freq = 1500\/60 = 25 Hz<\/p>\r\n                <p>B<sub>d<\/sub>\/P<sub>d<\/sub> = 0.2062, cos(0\u00b0) = 1<\/p>\r\n                <p>FTF = 25\/2 \u00d7 (1 \u2212 0.2062) = <strong>9.92 Hz<\/strong><\/p>\r\n                <p>BPFO = 9\/2 \u00d7 25 \u00d7 (1 \u2212 0.2062) = <strong>89.30 Hz<\/strong><\/p>\r\n                <p>BPFI = 9\/2 \u00d7 25 \u00d7 (1 + 0.2062) = <strong>135.70 Hz<\/strong><\/p>\r\n                <p>BSF = (38.5\/(2\u00d77.94)) \u00d7 25 \u00d7 (1 \u2212 0.2062\u00b2) = <strong>58.03 Hz<\/strong><\/p>\r\n            <\/div>\r\n\r\n            <div class=\"vc-warning-box\">\r\n                <p style=\"margin:0;font-size:14px;color:var(--vc-ink-secondary);\"><strong>\u26a0\ufe0f Note:<\/strong> Use the bearing manufacturer\u2019s internal geometry and contact angle for the exact bearing variant. Do not infer contact angle or rolling-element dimensions from the designation alone.<\/p>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<!-- Related Calculators -->\r\n<div class=\"vc-section\" id=\"vc-sec-related\">\r\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"false\">\r\n        <span class=\"vc-section-toggle-text\">\r\n            <span class=\"vc-section-icon\">\ud83d\udd17<\/span>\r\n            <span class=\"vc-section-title\">Related Calculators<\/span>\r\n        <\/span>\r\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>\r\n    <\/button>\r\n    <div class=\"vc-section-body\">\r\n        <div class=\"vc-section-inner\">\r\n            <div class=\"vc-related\">\r\n                <a class=\"vc-related-link\" href=\"\/calculators\/gear-mesh-frequency\/\">Gear Mesh Frequency<\/a>\r\n                <a class=\"vc-related-link\" href=\"\/calculators\/blade-pass-frequency\/\">Blade Pass Frequency<\/a>\r\n                <a class=\"vc-related-link\" href=\"\/calculators\/motor-electrical-frequencies\/\">Motor Electrical Frequencies<\/a>\r\n                <a class=\"vc-related-link\" href=\"\/calculators\/vibration-velocity\/\">Vibration Velocity (ISO 10816)<\/a>\r\n                <a class=\"vc-related-link\" href=\"\/calculators\/residual-unbalance-iso1940\/\">Residual Unbalance (ISO 1940)<\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<!-- FAQ -->\r\n<div class=\"vc-section\" id=\"vc-sec-faq\">\r\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"false\">\r\n        <span class=\"vc-section-toggle-text\">\r\n            <span class=\"vc-section-icon\">\u2753<\/span>\r\n            <span class=\"vc-section-title\">Frequently Asked Questions<\/span>\r\n        <\/span>\r\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>\r\n    <\/button>\r\n    <div class=\"vc-section-body\">\r\n        <div class=\"vc-section-inner\">\r\n            <div class=\"vc-faq-list\" id=\"vc-faq-list\"><\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<!-- Promo -->\r\n<div class=\"vc-promo\">\r\n    <div class=\"vc-promo-text\">\r\n        <strong>Vibromera \u2014 Portable Balancing &amp; Vibration Analysis<\/strong><br>\r\n        Professional vibration analysis instruments for bearing diagnostics, field balancing, and condition monitoring. Used in 50+ countries.\r\n    <\/div>\r\n    <a class=\"vc-promo-link\" href=\"https:\/\/vibromera.eu\/\" target=\"_blank\" rel=\"noopener\">Learn More<\/a>\r\n<\/div>\r\n\r\n<!-- Footer -->\r\n<footer class=\"vc-footer\">\r\n    <p>&copy; 2024\u20132026 <a href=\"https:\/\/vibromera.eu\/\">Vibromera<\/a> \u2014 Engineering Calculators<\/p>\r\n    <p style=\"font-size:12px;margin-top:4px;\">Bearing defect frequency formulas per standard kinematic equations. Last updated: February 2026<\/p>\r\n    <div class=\"vc-footer-links\">\r\n        <a href=\"\/calculators\/engineering-calculators\/\">All Calculators<\/a>\r\n        <a href=\"https:\/\/vibromera.eu\/contacts\/\">Contact<\/a>\r\n    <\/div>\r\n<\/footer>\r\n\r\n<\/div>\r\n\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/katex@0.16.11\/dist\/katex.min.js\"><\/script>\r\n<script>\r\n(function() {\r\n    'use strict';\r\n\r\n    var SLUG = 'bearing-defect-frequencies';\r\n    var unitSystem = 'metric';\r\n    var MM2IN = 1 \/ 25.4;\r\n\r\n    function $(id) { return document.getElementById(id); }\r\n    function fmt(n, d) { if (isNaN(n) || !isFinite(n)) return '\u2014'; var f = n.toFixed(d === undefined ? 2 : d); return f.replace(\/(\\.\\d*?)0+$\/, '$1').replace(\/\\.$\/, ''); }\r\n    function parseLocaleNumber(raw) {\r\n        var normalized = String(raw).trim().replace(\/\\s+\/g, '');\r\n        if (!\/^[+-]?(?:\\d+(?:[.,]\\d*)?|[.,]\\d+)$\/.test(normalized)) return NaN;\r\n        return Number(normalized.replace(',', '.'));\r\n    }\r\n\r\n    \/* \u2500\u2500 CALCULATION \u2500\u2500 *\/\r\n    function calculate() {\r\n        var Z = parseLocaleNumber($('vc-z').value);\r\n        var BdVal = parseLocaleNumber($('vc-bd').value);\r\n        var PdVal = parseLocaleNumber($('vc-pd').value);\r\n        var alpha = parseLocaleNumber($('vc-alpha').value);\r\n        var RPM = parseLocaleNumber($('vc-rpm').value);\r\n\r\n        if (!Number.isInteger(Z) || Z < 3 || !isFinite(BdVal) || BdVal <= 0 || !isFinite(PdVal) || PdVal <= 0 || BdVal >= PdVal || !isFinite(alpha) || alpha < 0 || alpha >= 90 || !isFinite(RPM) || RPM <= 0) {\r\n            $('vc-results').classList.remove('vc-visible');\r\n            return;\r\n        }\r\n\r\n        \/\/ Convert to mm if imperial\r\n        var Bd = unitSystem === 'imperial' ? BdVal * 25.4 : BdVal;\r\n        var Pd = unitSystem === 'imperial' ? PdVal * 25.4 : PdVal;\r\n\r\n        var cosA = Math.cos(alpha * Math.PI \/ 180);\r\n        var ratio = Bd \/ Pd;\r\n        var shaftFreq = RPM \/ 60;\r\n\r\n        var FTF = (shaftFreq \/ 2) * (1 - ratio * cosA);\r\n        var BPFO = (Z \/ 2) * shaftFreq * (1 - ratio * cosA);\r\n        var BPFI = (Z \/ 2) * shaftFreq * (1 + ratio * cosA);\r\n        var BSF = (Pd \/ (2 * Bd)) * shaftFreq * (1 - Math.pow(ratio * cosA, 2));\r\n\r\n        \/\/ Display results\r\n        $('vc-r-bpfo').innerHTML = fmt(BPFO, 2) + ' <span class=\"vc-rcard-unit\">Hz<\/span> <span class=\"vc-rcard-unit\">(' + fmt(BPFO \/ shaftFreq, 2) + '\u00d7)<\/span>';\r\n        $('vc-r-bpfi').innerHTML = fmt(BPFI, 2) + ' <span class=\"vc-rcard-unit\">Hz<\/span> <span class=\"vc-rcard-unit\">(' + fmt(BPFI \/ shaftFreq, 2) + '\u00d7)<\/span>';\r\n        $('vc-r-bsf').innerHTML = fmt(BSF, 2) + ' <span class=\"vc-rcard-unit\">Hz<\/span> <span class=\"vc-rcard-unit\">(' + fmt(BSF \/ shaftFreq, 2) + '\u00d7)<\/span>';\r\n        $('vc-r-ftf').innerHTML = fmt(FTF, 2) + ' <span class=\"vc-rcard-unit\">Hz<\/span> <span class=\"vc-rcard-unit\">(' + fmt(FTF \/ shaftFreq, 3) + '\u00d7)<\/span>';\r\n        $('vc-r-shaft').innerHTML = fmt(shaftFreq, 2) + ' <span class=\"vc-rcard-unit\">Hz<\/span> <span class=\"vc-rcard-unit\">(' + fmt(RPM) + ' RPM)<\/span>';\r\n\r\n        \/\/ Harmonics table\r\n        var freqs = [\r\n            { name: 'BPFO', val: BPFO },\r\n            { name: 'BPFI', val: BPFI },\r\n            { name: 'BSF', val: BSF },\r\n            { name: 'FTF', val: FTF }\r\n        ];\r\n        var tbody = $('vc-harmonics-body');\r\n        tbody.innerHTML = '';\r\n        freqs.forEach(function(f) {\r\n            var row = '<tr>';\r\n            row += '<td><strong>' + f.name + '<\/strong><\/td>';\r\n            for (var h = 1; h <= 3; h++) {\r\n                var hVal = f.val * h;\r\n                row += '<td>' + fmt(hVal, 2) + '<\/td>';\r\n                row += '<td>' + fmt(hVal \/ shaftFreq, 2) + '\u00d7<\/td>';\r\n            }\r\n            row += '<\/tr>';\r\n            tbody.innerHTML += row;\r\n        });\r\n\r\n        $('vc-results').classList.add('vc-visible');\r\n\r\n        \/\/ URL params\r\n        var u = new URL(window.location);\r\n        u.searchParams.set('z', Z);\r\n        u.searchParams.set('bd', $('vc-bd').value);\r\n        u.searchParams.set('pd', $('vc-pd').value);\r\n        u.searchParams.set('alpha', alpha);\r\n        u.searchParams.set('rpm', RPM);\r\n        u.searchParams.set('system', unitSystem);\r\n        history.replaceState(null, '', u.toString());\r\n\r\n        \/\/ History\r\n        saveHistory({\r\n            z: Z, bd: $('vc-bd').value, pd: $('vc-pd').value, alpha: alpha, rpm: RPM,\r\n            _summary: 'Z=' + Z + ', Bd=' + $('vc-bd').value + ', Pd=' + $('vc-pd').value + ', ' + RPM + ' RPM'\r\n        });\r\n        drawSpectrumViz(BPFO, BPFI, BSF, FTF, shaftFreq);\r\n    }\r\n\r\n    function drawSpectrumViz(BPFO, BPFI, BSF, FTF, shaft){\r\n        var el=$('vc-spectrum-viz');if(!el)return;\r\n        var maxF=Math.max(BPFI*3,BPFO*3)*1.15+shaft;\r\n        var SW=700,SH=250,ml=50,mr=20,mt=50,mb=55,pw=SW-ml-mr,ph=SH-mt-mb;\r\n        function fx(f){return ml+f\/maxF*pw;}\r\n        var s='<svg viewBox=\"0 0 700 250\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"font-family:var(--vc-mono)\">';\r\n        s+='<line x1=\"'+ml+'\" y1=\"'+(mt+ph)+'\" x2=\"'+(ml+pw)+'\" y2=\"'+(mt+ph)+'\" stroke=\"var(--vc-ink)\" stroke-width=\"1.5\"\/>';\r\n        s+='<line x1=\"'+ml+'\" y1=\"'+mt+'\" x2=\"'+ml+'\" y2=\"'+(mt+ph)+'\" stroke=\"var(--vc-ink)\" stroke-width=\"1\"\/>';\r\n        var tStep=Math.pow(10,Math.floor(Math.log10(maxF\/5)));\r\n        if(maxF\/tStep>10)tStep*=2;if(maxF\/tStep<4)tStep\/=2;\r\n        for(var t=0;t<=maxF;t+=tStep){\r\n            var tx=fx(t);\r\n            s+='<line x1=\"'+tx+'\" y1=\"'+(mt+ph)+'\" x2=\"'+tx+'\" y2=\"'+(mt+ph+5)+'\" stroke=\"var(--vc-ink)\" stroke-width=\"1\"\/>';\r\n            s+='<text x=\"'+tx+'\" y=\"'+(mt+ph+17)+'\" text-anchor=\"middle\" fill=\"var(--vc-ink-muted)\" font-size=\"8.5\">'+Math.round(t)+'<\/text>';\r\n            s+='<line x1=\"'+tx+'\" y1=\"'+mt+'\" x2=\"'+tx+'\" y2=\"'+(mt+ph)+'\" stroke=\"var(--vc-border-light)\" stroke-width=\"0.5\"\/>';\r\n        }\r\n        s+='<text x=\"'+(ml+pw\/2)+'\" y=\"'+(SH-mb+35)+'\" text-anchor=\"middle\" fill=\"var(--vc-ink-secondary)\" font-size=\"10\">Frequency (Hz)<\/text>';\r\n        var hts=[0.85,0.55,0.35];\r\n        var peaks=[];\r\n        function addP(freq,h,color,name){\r\n            var ht=hts[h-1]*ph;var x=fx(freq);\r\n            if(x<ml||x>ml+pw)return;\r\n            s+='<rect x=\"'+(x-2.5)+'\" y=\"'+(mt+ph-ht)+'\" width=\"5\" height=\"'+ht+'\" fill=\"'+color+'\" rx=\"1\" opacity=\"0.85\"\/>';\r\n            peaks.push({x:x,y:mt+ph-ht,name:name,color:color});\r\n        }\r\n        s+='<line x1=\"'+fx(shaft)+'\" y1=\"'+mt+'\" x2=\"'+fx(shaft)+'\" y2=\"'+(mt+ph)+'\" stroke=\"var(--vc-ink-muted)\" stroke-width=\"1\" stroke-dasharray=\"4,3\"\/>';\r\n        peaks.push({x:fx(shaft),y:mt+8,name:'1\\u00D7',color:'var(--vc-ink-muted)'});\r\n        for(var h=1;h<=3;h++)addP(BPFO*h,h,'var(--vc-accent)',h===1?'BPFO':h+'\\u00D7BPFO');\r\n        for(var h=1;h<=3;h++)addP(BPFI*h,h,'var(--vc-blue)',h===1?'BPFI':h+'\\u00D7BPFI');\r\n        for(var h=1;h<=3;h++)addP(BSF*h,h,'var(--vc-green)',h===1?'BSF':h+'\\u00D7BSF');\r\n        addP(FTF,1,'var(--vc-yellow)','FTF');\r\n        peaks.sort(function(a,b){return a.x-b.x;});\r\n        for(var i=0;i<peaks.length;i++){var p=peaks[i];\r\n            s+='<text x=\"'+p.x+'\" y=\"'+(p.y-5)+'\" text-anchor=\"start\" fill=\"'+p.color+'\" font-size=\"8\" font-weight=\"500\" transform=\"rotate(-45,'+p.x+','+(p.y-5)+')\">'+p.name+'<\/text>';\r\n        }\r\n        var lg=[{c:'var(--vc-accent)',n:'BPFO'},{c:'var(--vc-blue)',n:'BPFI'},{c:'var(--vc-green)',n:'BSF'},{c:'var(--vc-yellow)',n:'FTF'},{c:'var(--vc-ink-muted)',n:'1\\u00D7 Shaft'}];\r\n        var lx=ml;\r\n        for(var i=0;i<lg.length;i++){\r\n            s+='<rect x=\"'+lx+'\" y=\"'+(SH-14)+'\" width=\"10\" height=\"6\" fill=\"'+lg[i].c+'\" rx=\"1\"\/>';\r\n            s+='<text x=\"'+(lx+14)+'\" y=\"'+(SH-8)+'\" fill=\"var(--vc-ink-muted)\" font-size=\"8\">'+lg[i].n+'<\/text>';\r\n            lx+=lg[i].n.length*5.5+22;\r\n        }\r\n        s+='<\/svg>';\r\n        el.innerHTML='<div class=\"vc-viz-title\">Frequency Spectrum<\/div>'+s;\r\n    }\r\n\r\n    \/* \u2500\u2500 UNIT TOGGLE \u2500\u2500 *\/\r\n    var unitBtns = document.querySelectorAll('.vc-unit-btn');\r\n    unitBtns.forEach(function(btn) {\r\n        btn.addEventListener('click', function() {\r\n            var nextSystem = this.getAttribute('data-system');\r\n            if (nextSystem !== unitSystem) {\r\n                var currentBd = parseLocaleNumber($('vc-bd').value);\r\n                var currentPd = parseLocaleNumber($('vc-pd').value);\r\n                if (isFinite(currentBd) && currentBd > 0) $('vc-bd').value = fmt(nextSystem === 'imperial' ? currentBd * MM2IN : currentBd \/ MM2IN, 5);\r\n                if (isFinite(currentPd) && currentPd > 0) $('vc-pd').value = fmt(nextSystem === 'imperial' ? currentPd * MM2IN : currentPd \/ MM2IN, 5);\r\n                unitSystem = nextSystem;\r\n            }\r\n            unitBtns.forEach(function(b) { b.classList.toggle('vc-active', b.getAttribute('data-system') === unitSystem); });\r\n            var hint = unitSystem === 'imperial' ? '(in)' : '(mm)';\r\n            $('vc-bd-unit').textContent = hint;\r\n            $('vc-pd-unit').textContent = hint;\r\n            try { localStorage.setItem('vc_units_' + SLUG, unitSystem); } catch(e) {}\r\n            calculate();\r\n        });\r\n    });\r\n\r\n    \/* \u2500\u2500 PRESETS \u2500\u2500 *\/\r\n    document.querySelectorAll('.vc-preset-btn').forEach(function(btn) {\r\n        btn.addEventListener('click', function(e) {\r\n            e.preventDefault();\r\n            var bd = parseFloat(this.getAttribute('data-bd'));\r\n            var pd = parseFloat(this.getAttribute('data-pd'));\r\n            $('vc-z').value = this.getAttribute('data-z');\r\n            $('vc-bd').value = unitSystem === 'imperial' ? fmt(bd * MM2IN, 4) : bd;\r\n            $('vc-pd').value = unitSystem === 'imperial' ? fmt(pd * MM2IN, 4) : pd;\r\n            $('vc-alpha').value = this.getAttribute('data-a');\r\n            $('vc-rpm').value = this.getAttribute('data-rpm');\r\n            calculate();\r\n        });\r\n    });\r\n\r\n    \/* \u2500\u2500 AUTO-CALCULATE \u2500\u2500 *\/\r\n    $('vc-form').addEventListener('input', calculate);\r\n    $('vc-form').addEventListener('change', calculate);\r\n\r\n    \/* \u2500\u2500 COPY \u2500\u2500 *\/\r\n    $('vc-copy-btn').addEventListener('click', function() {\r\n        var text = 'Bearing Defect Frequency Calculation\\n' +\r\n            '\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n' +\r\n            'Rolling elements (Z): ' + $('vc-z').value + '\\n' +\r\n            'Ball diameter: ' + $('vc-bd').value + (unitSystem === 'imperial' ? ' in' : ' mm') + '\\n' +\r\n            'Pitch diameter: ' + $('vc-pd').value + (unitSystem === 'imperial' ? ' in' : ' mm') + '\\n' +\r\n            'Contact angle: ' + $('vc-alpha').value + '\u00b0\\n' +\r\n            'Shaft speed: ' + $('vc-rpm').value + ' RPM\\n' +\r\n            '\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n' +\r\n            'BPFO: ' + $('vc-r-bpfo').textContent + '\\n' +\r\n            'BPFI: ' + $('vc-r-bpfi').textContent + '\\n' +\r\n            'BSF: ' + $('vc-r-bsf').textContent + '\\n' +\r\n            'FTF: ' + $('vc-r-ftf').textContent + '\\n' +\r\n            '\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n' +\r\n            'vibromera.eu\/calculators\/bearing-defect-frequencies\/';\r\n\r\n        if (navigator.clipboard) {\r\n            navigator.clipboard.writeText(text).then(function() {\r\n                var btn = $('vc-copy-btn');\r\n                btn.classList.add('vc-copied');\r\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!';\r\n                setTimeout(function() {\r\n                    btn.classList.remove('vc-copied');\r\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';\r\n                }, 2000);\r\n            });\r\n        }\r\n    });\r\n\r\n    \/* \u2500\u2500 COLLAPSIBLE SECTIONS \u2500\u2500 *\/\r\n    document.querySelectorAll('.vc-section-toggle').forEach(function(btn) {\r\n        btn.addEventListener('click', function() {\r\n            var section = this.closest('.vc-section');\r\n            var isOpen = section.classList.contains('vc-open');\r\n            section.classList.toggle('vc-open');\r\n            this.setAttribute('aria-expanded', !isOpen);\r\n        });\r\n    });\r\n\r\n    \/* \u2500\u2500 FAQ \u2500\u2500 *\/\r\n    var faqData = [\r\n        { q: 'What are bearing defect frequencies?', a: '<p>Bearing defect frequencies are characteristic vibration frequencies generated when a rolling element bearing has a localized defect. Each bearing component \u2014 outer race, inner race, rolling elements, and cage \u2014 produces a unique frequency pattern based on bearing geometry and shaft speed.<\/p><p>The four key frequencies are: <strong>BPFO<\/strong> (Ball Pass Frequency Outer), <strong>BPFI<\/strong> (Ball Pass Frequency Inner), <strong>BSF<\/strong> (Ball Spin Frequency), and <strong>FTF<\/strong> (Fundamental Train\/Cage Frequency).<\/p>' },\r\n        { q: 'How can an outer race fault appear in a spectrum?', a: '<p>An outer-race defect can produce components near BPFO and its harmonics. FTF or other sidebands can also be present because load, slip and modulation affect the response.<\/p><p>A frequency match alone is not proof. Confirm with envelope analysis, trends, operating condition and inspection context.<\/p>' },\r\n        { q: 'What is the difference between inner and outer race indicators?', a: '<p>Outer-race defects are investigated around BPFO; inner-race defects around BPFI. Shaft-speed modulation is common around BPFI, while BPFO can also show FTF or other sidebands.<\/p><p>Interpret both patterns together with load, measurement position, envelope spectrum and trends.<\/p>' },\r\n        { q: 'Why do harmonics matter in bearing analysis?', a: '<p>Harmonics and sidebands can strengthen a bearing-fault hypothesis, but their count is not a universal severity scale or remaining-life calculation.<\/p><p>Evaluate amplitudes and trends together with envelope spectra, noise floor, operating condition and corroborating measurements.<\/p>' },\r\n        { q: 'Where can I find bearing geometry data?', a: '<p>Use geometry supplied by the bearing manufacturer or a verified bearing database for the exact designation and internal design suffix.<\/p><p>Bore and outside diameter do not uniquely determine rolling-element diameter, pitch diameter or contact angle. If exact geometry is unavailable, report the calculated frequencies as an estimate and validate against measured spectra; do not present inferred geometry as manufacturer data.<\/p>' }\r\n    ];\r\n\r\n    var faqList = $('vc-faq-list');\r\n    faqData.forEach(function(faq) {\r\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>';\r\n    });\r\n    faqList.addEventListener('click', function(e) {\r\n        var btn = e.target.closest('.vc-faq-q');\r\n        if (!btn) return;\r\n        btn.closest('.vc-faq-item').classList.toggle('vc-open');\r\n    });\r\n\r\n    \/* \u2500\u2500 HISTORY \u2500\u2500 *\/\r\n    function saveHistory(entry) {\r\n        var key = 'vc_history_' + SLUG;\r\n        var arr = [];\r\n        try { arr = JSON.parse(localStorage.getItem(key)) || []; } catch(e) {}\r\n        entry._ts = new Date().toISOString();\r\n        arr.unshift(entry);\r\n        if (arr.length > 10) arr = arr.slice(0, 10);\r\n        try { localStorage.setItem(key, JSON.stringify(arr)); } catch(e) {}\r\n    }\r\n\r\n    \/* \u2500\u2500 URL PARAMS \u2500\u2500 *\/\r\n    function loadParams() {\r\n        var p = new URLSearchParams(window.location.search);\r\n        var requestedSystem = p.get('system');\r\n        if (requestedSystem === 'metric' || requestedSystem === 'imperial') unitSystem = requestedSystem;\r\n        if (p.has('z')) $('vc-z').value = p.get('z');\r\n        if (p.has('bd')) $('vc-bd').value = p.get('bd');\r\n        if (p.has('pd')) $('vc-pd').value = p.get('pd');\r\n        if (p.has('alpha')) $('vc-alpha').value = p.get('alpha');\r\n        if (p.has('rpm')) $('vc-rpm').value = p.get('rpm');\r\n        unitBtns.forEach(function(b) { b.classList.toggle('vc-active', b.getAttribute('data-system') === unitSystem); });\r\n        var hint = unitSystem === 'imperial' ? '(in)' : '(mm)';\r\n        $('vc-bd-unit').textContent = hint;\r\n        $('vc-pd-unit').textContent = hint;\r\n    }\r\n\r\n    \/* \u2500\u2500 KATEX \u2500\u2500 *\/\r\n    function renderFormulas() {\r\n        try {\r\n            katex.render('\\\\text{FTF} = \\\\frac{f_s}{2} \\\\left(1 - \\\\frac{B_d}{P_d} \\\\cos\\\\alpha\\\\right) \\\\quad [\\\\text{Hz}]', $('vc-katex-ftf'), { displayMode: true, throwOnError: false });\r\n            katex.render('\\\\text{BPFO} = \\\\frac{Z}{2} \\\\cdot f_s \\\\left(1 - \\\\frac{B_d}{P_d} \\\\cos\\\\alpha\\\\right) \\\\quad [\\\\text{Hz}]', $('vc-katex-bpfo'), { displayMode: true, throwOnError: false });\r\n            katex.render('\\\\text{BPFI} = \\\\frac{Z}{2} \\\\cdot f_s \\\\left(1 + \\\\frac{B_d}{P_d} \\\\cos\\\\alpha\\\\right) \\\\quad [\\\\text{Hz}]', $('vc-katex-bpfi'), { displayMode: true, throwOnError: false });\r\n            katex.render('\\\\text{BSF} = \\\\frac{P_d}{2 B_d} \\\\cdot f_s \\\\left[1 - \\\\left(\\\\frac{B_d}{P_d} \\\\cos\\\\alpha\\\\right)^2\\\\right] \\\\quad [\\\\text{Hz}]', $('vc-katex-bsf'), { displayMode: true, throwOnError: false });\r\n        } catch(e) {}\r\n    }\r\n\r\n    \/* \u2500\u2500 INIT \u2500\u2500 *\/\r\n    function init() {\r\n        try {\r\n            var saved = localStorage.getItem('vc_units_' + SLUG);\r\n            if (saved === 'imperial') {\r\n                unitSystem = 'imperial';\r\n                unitBtns.forEach(function(b) { b.classList.toggle('vc-active', b.getAttribute('data-system') === 'imperial'); });\r\n                $('vc-bd-unit').textContent = '(in)';\r\n                $('vc-pd-unit').textContent = '(in)';\r\n            }\r\n        } catch(e) {}\r\n\r\n        loadParams();\r\n        renderFormulas();\r\n        calculate();\r\n    }\r\n\r\n    if (document.readyState === 'loading') {\r\n        document.addEventListener('DOMContentLoaded', init);\r\n    } else {\r\n        init();\r\n    }\r\n})();\r\n<\/script>\r\n","protected":false},"excerpt":{"rendered":"<p>C\u00f4ng c\u1ee5 t\u00ednh to\u00e1n t\u1ea7n su\u1ea5t l\u1ed7i \u1ed5 bi tr\u1ef1c tuy\u1ebfn mi\u1ec5n ph\u00ed. T\u00ednh to\u00e1n BPFO, BPFI, BSF, FTF v\u00e0 c\u00e1c s\u00f3ng h\u00e0i c\u1ee7a ch\u00fang t\u1eeb h\u00ecnh d\u1ea1ng h\u00ecnh h\u1ecdc c\u1ee7a \u1ed5 bi v\u00e0 t\u1ed1c \u0111\u1ed9 tr\u1ee5c. H\u1ed7 tr\u1ee3 c\u00e1c thi\u1ebft l\u1eadp s\u1eb5n cho c\u00e1c lo\u1ea1i \u1ed5 bi th\u00f4ng d\u1ee5ng.<\/p>","protected":false},"featured_media":0,"template":"","meta":{"ai_generated_summary":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-100015","calculator","type-calculator","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vibromera.eu\/vi\/wp-json\/wp\/v2\/calculator\/100015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibromera.eu\/vi\/wp-json\/wp\/v2\/calculator"}],"about":[{"href":"https:\/\/vibromera.eu\/vi\/wp-json\/wp\/v2\/types\/calculator"}],"version-history":[{"count":2,"href":"https:\/\/vibromera.eu\/vi\/wp-json\/wp\/v2\/calculator\/100015\/revisions"}],"predecessor-version":[{"id":102308,"href":"https:\/\/vibromera.eu\/vi\/wp-json\/wp\/v2\/calculator\/100015\/revisions\/102308"}],"wp:attachment":[{"href":"https:\/\/vibromera.eu\/vi\/wp-json\/wp\/v2\/media?parent=100015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibromera.eu\/vi\/wp-json\/wp\/v2\/categories?post=100015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibromera.eu\/vi\/wp-json\/wp\/v2\/tags?post=100015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}