Alcance: análisis de primer orden para guiar la decisión de fab. Para validación final (especialmente fatiga 25 Hz × 10⁸ ciclos), recomiendo FEA o ensayo de banco. Las recomendaciones son robustas a las incertidumbres en los cálculos abajo.
Item 6 — Bump stop sizing contra el límite motor↔estructura Tier 2
Pablo aclaró 2026-05-08: "el motor abajo de la tray no puede pegarle a la tray de abajo, así que tenemos un límite duro." Eso convierte la decisión de bump-stop sizing de heurística a cálculo concreto.
Geometría Z (de spec.py)
| Componente | Z (mm) | Notas |
|---|---|---|
| Sub-frame underside (cara inferior) | −50 | desde bin underside z=0 |
| Motor mount plate (cara superior) | −50 | contacto con sub-frame underside |
| Motor mount plate (cara inferior) | −62 | −50 menos 12 mm de espesor |
| Cuerpo del motor (cara superior) | −62 | cuelga del mount plate |
| Cuerpo del motor (cara INFERIOR — el punto crítico) | −382 | −62 menos 320 mm body height |
| Frame top rail (top face) | ≈ −445 | top_rail_z=−470 + 25 mm de half-tube |
| Frame top rail (centro) | −470 | de spec.py |
Clearance estática motor↔frame top rail
= |−382 − (−445)| = 63 mm en condición de reposo (springs en deflexión estática).
Presupuesto de compresión del spring (de spec.py)
| Caso | Deflexión total (mm) | Δ vs reposo (mm) |
|---|---|---|
| Spring libre (sin carga) | 0 | −17.1 |
| Reposo (m_vib=350 kg, 87.5 kg/spring) | 17.1 | 0 |
| Slug transient simétrico (300 kg/spring per spec) | 58.5 | +41.4 |
| Slug bajo descarga asimétrica + DAF=2 (item 4) | ~156 | +139 |
| Spring linear range max (104 mm de 200 mm libre) | 104 | +87 |
| Spring solid height (coil-on-coil) | ~145 | +128 |
Bump stop sizing
El motor body baja con la sub-frame. Cada mm de compresión adicional del spring = 1 mm que el motor se acerca al rail. Constraint: motor body bottom no puede tocar el frame top rail.
Δ máximo permitido = clearance estática − margen de seguridad
= 63 − 13 = 50 mm de compresión adicional desde reposo.
Bump stop fires en spring deflection total = 17.1 + 50 = 67 mm desde free length.
Equivalente: bump stop hace contacto cuando la spring height = 200 − 67 = 133 mm.
Cross-check contra cada caso de carga
| Caso | Δ vs reposo | Bump stop? |
|---|---|---|
| Reposo | 0 | No engages |
| Slug simétrico (300 kg/spring) | +41.4 | No engages (margen 8.6 mm) |
| Slug asimétrico + DAF=2 | +139 | SÍ engages — bump stop salva al motor + al spring |
Geometría del bump stop assembly
El bump stop tiene que cerrar la distancia vertical entre el sub-frame underside (z = −50, donde está fijo) y el frame top rail (z = −445), y firing exactamente cuando la sub-frame ha bajado Δ = 50 mm. Espacio total a cerrar en reposo: 395 mm. Cuando sub-frame baja 50 mm, queremos contacto → bump stop assembly debe ocupar exactamente 345 mm de longitud total en reposo (sub-frame underside a top de bump stop bracket + altura del bump stop = espacio − Δ = 395 − 50).
Configuración recomendada:
- Bracket de acero soldado al underside del sub-frame, longitud 295 mm, terminando en placa horizontal a z = −345.
- Bump stop de poliuretano de 50 mm de altura atornillado a la placa, top a z = −345, bottom a z = −395.
- Gap entre bottom del bump stop y frame top rail (z = −445): 50 mm en reposo.
- Bump stop engages cuando la sub-frame ha bajado Δ = 50 mm.
Cross-check de clearance al motor durante slug:
- En el momento de engage del bump stop, motor body bottom ha bajado de z = −382 a z = −432.
- Frame top rail está a z = −445.
- Clearance motor↔rail al engage = |−432 − (−445)| = 13 mm de margen residual.
Spec recomendado
- 4 × bump stops, uno bajo cada spring (X=250/2250, Y=180/820), montados en brackets soldados al underside del sub-frame.
- Bracket: A36 RHS 60×60×4 (mismo perfil del frame top rail) o placa 12 mm soldada en perfil de "L" invertida — 295 mm de longitud vertical, soldado al underside del sub-frame con fillet 6 mm continuo perimetral.
- Bump stop: poliuretano 60 Shore A, Ø 80 × altura 50 mm, perno M16 axial. Modelo de referencia: Misumi VBSAW-80-50, Vibracon MA-80-50 o equivalente MX.
- Gap nominal en reposo: 50 mm entre bottom del bump stop y top del frame top rail.
- Δ máxima permitida: 50 mm de compresión adicional desde reposo. Bump stop firing en Δ=50, motor↔rail residual = 13 mm. Coil-on-coil residual = 87 − 50 = 37 mm de range adicional en spring (bump stop absorbe toda esa carga).
- Costo: ~MXN $1,200/unidad × 4 + brackets ~MXN $400 = ~MXN $5,600 total.
Por qué no hacerlo más simple
La opción "bump stop directo entre motor body bottom y frame top rail" requiere un stop de solo 13 mm de altura (= clearance estática 63 menos Δ máxima 50). Esa altura es demasiado pequeña para un industrial poly stop — la curva fuerza-deformación necesita ~30-50 mm de altura para absorber la energía del slug sin transmitir spike de stress al rail. Por eso el bracket extiende desde el sub-frame hacia abajo, creando el espacio para el bump stop adecuado.
Item 3 — Stress local del piso 5 mm bajo descarga 1 t Tier 2
Geometría
- Bin floor: A36, espesor 5 mm, footprint 2500 × 1000 mm.
- Soporte perimetral: long rails sub-frame en y=25 y y=975.
- Crossmembers transversales en x = 250 / 500 / 1120 / 1380 / 2000 / 2250.
- Span máximo sin soporte (entre crossmembers): x = 500 → 1120 = 620 mm.
Carga del cargador
- 1 t (9.81 kN) distribuido en footprint del cucharón ≈ 0.5 × 0.3 m.
- Worst case ubicación: centro del bay 500-1120 (largo del bay 620 mm).
- Carga lineal (a lo ancho del bucket = 500 mm): 9.81 kN / 0.5 m = 19.6 kN/m.
Modelo: tira de placa simply-supported entre 2 crossmembers
| Variable | Valor | Notas |
|---|---|---|
| Span entre crossmembers (L) | 620 mm | peor caso |
| Carga distribuida (w) | 19.6 kN/m | 1 t / 0.5 m bucket width |
| Momento máximo (wL²/8) | 0.94 kN·m por m de ancho | |
| Section modulus (b·t²/6, b=1 m, t=5 mm) | 4167 mm³ por m | |
| σ_max | 226 MPa | peak en cara inferior, centro del bay |
| A36 yield | 250 MPa | |
| SF a fluencia | 1.10 | insuficiente — Andi tiene razón |
Veredicto
El piso falla. SF de 1.10 contra fluencia bajo descarga normal centrada — y ese es el escenario nominal, no worst-case. Cualquier descarga descentrada o desde altura mayor (que multiplica la fuerza dinámicamente, ver item 4) lleva el piso a fluencia plástica permanente.
Mitigación: agregar PTRs longitudinales bajo el piso
Agregar 2 PTRs (50×50×3 mismo material que sub-frame) corriendo longitudinalmente a lo largo del bin (X) en posiciones Y = 333 y Y = 667 (dividiendo el ancho en 3 bandas iguales de ~333 mm cada una).
Los PTRs cruzan transversalmente con los 6 crossmembers existentes, dividiendo el bay 620 mm en sub-bays más cortos. Pero el span longitudinal sigue siendo 620 mm — la mejora real es reducir el ancho efectivo de placa que carga la flexión, no acortar el span.
Mejor solución: 2 PTRs CROSSWISE (transversal) adicionales a la mitad de los bays largos:
- 1 nuevo crossmember en x = 810 (entre x=500 y x=1120, divide en 310+310 mm).
- 1 nuevo crossmember en x = 1690 (entre x=1380 y x=2000, divide en 310+310 mm).
- Esos coinciden con los X de los motores arriba — los crossmembers nuevos NO pueden ser por debajo del piso (ya hay motores ahí); van directamente al sub-frame motor cradle crossmembers existentes (que YA están en x=500/1120/1380/2000) — no, espera, los motores van EN x=810 y 1690, no encima de los crossmembers existentes. Hay que agregar los nuevos crossmembers en x=810/1690 sin chocar con motores.
Configuración limpia: 2 nuevos crossmembers transversales en x = 810 y 1690, soldados al sub-frame, pasando POR DEBAJO del piso del bin (no por arriba). Los motores ya colgan abajo — los nuevos crossmembers tienen que coexistir con la geometría motor. Si hay clash, alternativa: ribs longitudinales bajo el piso entre el sub-frame y la cara inferior del piso, anchored a los crossmembers existentes.
Recálculo con span L = 310 mm:
| M_max = wL²/8 | 0.236 kN·m por m |
| σ_max | 56.6 MPa |
| SF a fluencia | 4.4 ✓ |
Recomendación
Agregar 2 crossmembers transversales adicionales al sub-frame en x = 810 y x = 1690 (mismo PTR 50×50×3 que el resto). Verificar clash con motor cradle en SW antes de fab. Si hay clash, alternativa: 4 PTRs longitudinales bajo el piso entre crossmembers existentes (peor mitigación, pero sin clash con motores).
Item 4 — Slug bajo descarga asimétrica + drop-height Tier 2
Caso de carga base (de spec.py)
Slug analysis actual asume:
- 1 t total, 1.2 t total con margen, distribuido simétricamente entre 4 springs.
- 300 kg/spring, deflexión 58.5 mm, SF 1.78 vs max linear 533 kg.
Caso A — drop-height contribution
El cucharón típicamente libera la carga ~0.5-1.0 m sobre el piso. La energía cinética en el momento de impacto se convierte parcialmente a deflexión del spring.
Dynamic Amplification Factor (DAF) para impacto súbito sobre masa amortiguada por springs:
- Ideal (cero damping): DAF = 2.0 (textbook).
- Real con damping plastico de la pila de sargazo + sub-frame: DAF ≈ 1.4-1.8.
- Conservador para spec: DAF = 2.0.
Carga estática equivalente: 1000 × 2 = 2000 kg total.
Caso B — descarga asimétrica
El operador no siempre vuelca centrado. Peor caso plausible: 80% de la carga sobre la mitad del bin → 80% sobre 2 springs.
Por spring cargado: 0.8 × 2000 / 2 = 800 kg/spring.
Resultados combinados
| Caso | kg/spring | Deflexión (mm) | vs linear range (104) |
|---|---|---|---|
| Static rest | 88 | 17.1 | 17% |
| Slug spec actual (simétrico, sin DAF) | 300 | 58.5 | 56% — OK |
| Slug + DAF=2 (simétrico con drop-height) | 600 | 117 | 113% — BOTTOM-OUT |
| Slug asimétrico (80/20, sin DAF) | 480 | 94 | 90% — al límite |
| Slug asimétrico + DAF=2 | 800 | 156 | 150% — coil-on-coil |
Veredicto
El spring spec actual (k=50.27 N/mm) NO sobrevive a:
- Drop-height + DAF=2 simétrico (117 mm — bottoms out).
- Descarga asimétrica + DAF=2 (156 mm — coil-on-coil = pico de stress que rompe el spring).
El caso asimétrico + drop-height es el escenario realista en operación de hotel sin entrenamiento estricto del operador del cargador.
Mitigaciones
- Stiffer springs (k = 80-100 N/mm en vez de 50). A k=80, deflexión asimétrica + DAF=2 = 800 × 9.81 / 80 = 98 mm — dentro de linear range. Cost: spring change. Pro: más simple. Con: less isolation ratio (drive 25 Hz / nat 4.8 Hz = 5.2× — todavía OK).
- Procedural dump rule + bump stops como red de seguridad. Operador entrenado dumps centrado, bump stops (item 6) protegen ante el outlier. Pro: spring spec actual queda. Con: depende de comportamiento humano.
- Crash dampers de hule entre la base de la sub-frame y el rail (separados de los bump stops, que protegen el motor). Absorben la energía pico antes de transferir al spring. Pro: spring spec queda + protección anti-coil-on-coil. Con: más fab.
Recomendación
Combinación: Mitigación 1 (stiffer springs) + Mitigación 2 (bump stops + cover-sheet rule).
- Cambiar spring rate spec de k=50.27 → k=80 N/mm (mantener Ø, wire d, free length; reducir active turns más). Re-derivar deflexión slug (300 kg → 36.8 mm; 800 kg asimétrico+DAF → 98 mm dentro de range).
- Bump stops a 50 mm Δ vs reposo (item 6) como red de seguridad final.
- Cover-sheet rule: "operador volca centrado, altura de bucket ≤ 0.5 m sobre top edge del bin."
- Re-validar isolation ratio: ω_n nuevo = √(4×80/350) = 0.96 rad/ms = ~3.0 Hz. Drive 25 Hz / nat 3.0 = 8.3× isolation, mejor que el spec actual.
Item 11 — Fatiga del cordón en motor crossmembers Tier 2-3
Geometría
- Sub-frame motor cradle crossmembers: 4 × PTR 50×50×3, A36, span ~1000 mm entre long rails.
- Soldados a long rails con fillet (size variable; spec actual ahora especifica fillet 5 mm ambos lados + esmerilar talón post-weld).
- Motor: OLI MVE 800/3, 3-3.5 kN excitación a 25 Hz, 4 bolts por motor en patrón 620×290.
Carga por crossmember
2 motores counter-rotating → vibración linear en X. Cada motor tiene 4 bolts repartidos entre 2 crossmembers (un par a x=500/1120 para motor 1 en x=810; un par a x=1380/2000 para motor 2 en x=1690).
Por crossmember: 2 bolts × ¼ del peak motor force = ½ × 3 kN = 1.5 kN peak en X.
Pero la fuerza es en X (longitudinal del bin), y el crossmember corre en Y (transversal). El crossmember NO flexiona en su plano principal por la fuerza X — la fuerza X causa torsión del sub-frame globalmente.
Modo de carga real: torsión global del sub-frame
La fuerza X de 6 kN total (2 motores × 3 kN) aplicada a la mitad del sub-frame genera:
- Torsión sobre el long rail.
- Bending de los crossmembers en el plano horizontal (no vertical).
- Stress en los cordones de fillet de cada crossmember al long rail.
Cálculo simplificado (Tier 3 — análisis exacto necesita FEA):
- Long rail visto como viga sometida a torsión distribuida.
- Crossmember bend en plano horizontal con peak moment ~1.5 kN × 0.5 m = 0.75 kN·m.
- Sección PTR 50×50×3, S ≈ 8326 mm³ → σ_peak ≈ 90 MPa.
- Stress range (peak-to-peak) ≈ 180 MPa.
Cycle count
25 Hz × 8 h/día × 250 días/año = 1.8 × 10⁸ ciclos/año.
Vida útil target: 5 años → 9 × 10⁸ ciclos. Régimen de muy alta fatiga.
Verificación FAT (Eurocode 3 EN 1993-1-9)
| Detail | FAT class | σ_allow @ 9e8 ciclos | vs σ_range = 180 MPa |
|---|---|---|---|
| Fillet weld basic (no post-weld) | FAT 36 | ~5 MPa | Falla en horas |
| Fillet + esmerilar talón | FAT 50 | ~7 MPa | Falla en días |
| Tubular intersection welded smooth | FAT 71 | ~10 MPa | Falla en semanas |
| Hand-machined tubular joint, NDT inspected | FAT 90 | ~12 MPa | Falla en meses |
Veredicto
El sub-frame con PTR 50×50×3 NO sobrevive 5 años a 1.8×10⁸ ciclos/año, sin importar la calidad del cordón. Aun el caso optimista (FAT 90, hand-machined) tiene σ_allow ≈ 12 MPa contra σ_range real ~180 MPa — factor ~15× sobre el límite.
Esto coincide con la observación práctica de la industria: vibrating screen frames fallan por fatiga en 1-3 años bajo uso continuo. RUBISCO2 opera 8 h/día × 250 días = aproximación razonable.
Mitigaciones
- Aumentar wall thickness: PTR 50×50×3 → 50×50×4. S aumenta de 8326 → 10,461 mm³ (~25%). σ_range baja a ~145 MPa. Aún excede FAT — no suficiente.
- Aumentar tube section: PTR 50×50×3 → 60×60×4. S = 17,500 mm³ (~2.1×). σ_range ~85 MPa. Aún excede FAT 36 pero entra en FAT 50-71 con post-weld treatment para vida ~1-2 años.
- Cambiar a PTR 80×80×4 (mismo perfil que el static frame). S = 41,500 mm³ (~5×). σ_range ~36 MPa. Con FAT 71 (welded smooth + esmerilar) → vida ≥ 5 años.
- Bolted motor mount (no welded): el motor se atornilla al sub-frame, pero el mount plate va atornillada (no soldada) al crossmember. Se elimina el cordón crítico. Requiere placas de transición + más fab.
- Aceptar la falla y diseñar para reemplazo: PTR 50×50×3 + cordones diseñados para 1-año, plan de mantenimiento que cambie el sub-frame antes de la falla. Industrial standard en feeders económicos.
Recomendación
Tier-3 honesto: el cálculo dice que PTR 50×50×3 falla, pero la incertidumbre en σ_range es alta porque la torsión del sub-frame requiere FEA para acotar.
Forks reales:
- Fork A — FEA antes de fab. Dejar geometría como está + correr análisis de elementos finitos del sub-frame para σ real bajo motor reaction. Decidir mitigation con datos.
- Fork B — Upgrade preventivo. Cambiar PTR 50×50×3 → 60×60×4 (~2× section modulus, factor de fab ~30% más material). Lo más cercano a "no romper nada del diseño actual".
- Fork C — Diseño para reemplazo. Aceptar PTR 50×50×3 con vida útil 1-2 años para el sub-frame, programar reemplazo en plan de mantenimiento.
Mi recomendación (Tier 3): Fork B + esmerilar talón + Loctite + Nord-Lock washers. Combina mitigations 2, 12 y 18 sin requerir FEA externo. Si después aparece un budget para FEA, validar y posiblemente ahorrar el upgrade.
Resumen ejecutivo
| Item | Diagnóstico | Mitigación recomendada |
|---|---|---|
| 3 — piso 5 mm bajo dump 1 t | SF 1.10 → falla bajo carga centrada normal | 2 crossmembers extras en x=810/1690 (clash check vs motores) |
| 4 — slug + DAF + asimetría | SF < 1 con springs actuales bajo descarga asimétrica + drop-height | Springs k=50 → k=80 N/mm + bump stops + procedural rule |
| 6 — bump stops | Constraint duro: motor↔frame top rail = 63 mm | 4× poliuretano 60 ShA, 50 mm altura, en brackets colgando del sub-frame |
| 11 — fatiga motor crossmembers | PTR 50×50×3 falla en cycle count realista | Upgrade a 60×60×4 + esmerilar talón + Loctite/Nord-Lock |
Decisiones tomadas 2026-05-09 (Pablo):
(a) ✓ Springs k=75.4 N/mm (n_active=4) — defense-in-depth: springs solas manejan worst case en SF=1.0, bump stops son redundancia.
(b) ✓ Sub-frame 50×50×3 → 60×60×4 — preventive upgrade, no FEA antes de fab.
(c) ✓ Bump stop Config A (bracket 295 mm soldado al spring crossmember underside + poly Ø80×50 mm). Δ engagement=40 mm (no 50 — sub-frame deeper movió motor body bottom y la clearance estática a 53 mm).
(d) ✓ FEA sobre la primera unidad construida, antes del 100-unit fleet rollout.
Cambios aterrizados en spec.py: SPEC['spring_stack'] (k, n_active, deflexiones), SPEC['sub_frame'] (tube, depth, floor_support_crossmember_x_centers_mm), SPEC['bump_stops'] (nuevo bloque completo).
