Sand Separator · Análisis de pre-fabricación

Análisis ingenieril pre-fabricación

Fresh · 1d

Cuatro análisis cuantitativos para los puntos abiertos antes de que Pedro corte metal: stress local del piso bajo descarga 1 t (item 3), análisis de slug bajo descarga asimétrica + drop-height (item 4), fatiga del cordón de soldadura en motor crossmembers (item 11), dimensionamiento de bump stops contra el límite duro motor↔estructura (item 6).

2026-05-09 — Decisiones tomadas (Pablo): (a) springs k=50 → k=75.4 N/mm (n_active 6 → 4), (b) sub-frame PTR 50×50×3 → 60×60×4, (c) bump stop Config A (bracket 295 mm + poly 50 mm), (d) FEA sobre la primera unidad construida (no antes de fab). Las cuatro decisiones aterrizadas en spec.py. Las recomendaciones de cada item abajo siguen siendo el razonamiento — el spec actual reflejá la decisión.

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)

ComponenteZ (mm)Notas
Sub-frame underside (cara inferior)−50desde bin underside z=0
Motor mount plate (cara superior)−50contacto con sub-frame underside
Motor mount plate (cara inferior)−62−50 menos 12 mm de espesor
Cuerpo del motor (cara superior)−62cuelga del mount plate
Cuerpo del motor (cara INFERIOR — el punto crítico)−382−62 menos 320 mm body height
Frame top rail (top face)≈ −445top_rail_z=−470 + 25 mm de half-tube
Frame top rail (centro)−470de 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)

CasoDeflexión total (mm)Δ vs reposo (mm)
Spring libre (sin carga)0−17.1
Reposo (m_vib=350 kg, 87.5 kg/spring)17.10
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 reposoBump stop?
Reposo0No engages
Slug simétrico (300 kg/spring)+41.4No engages (margen 8.6 mm)
Slug asimétrico + DAF=2+139SÍ 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:

Cross-check de clearance al motor durante slug:

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

Carga del cargador

Modelo: tira de placa simply-supported entre 2 crossmembers

VariableValorNotas
Span entre crossmembers (L)620 mmpeor caso
Carga distribuida (w)19.6 kN/m1 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
σ_max226 MPapeak en cara inferior, centro del bay
A36 yield250 MPa
SF a fluencia1.10insuficiente — 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:

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²/80.236 kN·m por m
σ_max56.6 MPa
SF a fluencia4.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:

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:

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

Casokg/springDeflexión (mm)vs linear range (104)
Static rest8817.117%
Slug spec actual (simétrico, sin DAF)30058.556% — OK
Slug + DAF=2 (simétrico con drop-height)600117113% — BOTTOM-OUT
Slug asimétrico (80/20, sin DAF)4809490% — al límite
Slug asimétrico + DAF=2800156150% — 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

  1. 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).
  2. 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.
  3. 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

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:

Cálculo simplificado (Tier 3 — análisis exacto necesita FEA):

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)

DetailFAT classσ_allow @ 9e8 ciclosvs σ_range = 180 MPa
Fillet weld basic (no post-weld)FAT 36~5 MPaFalla en horas
Fillet + esmerilar talónFAT 50~7 MPaFalla en días
Tubular intersection welded smoothFAT 71~10 MPaFalla en semanas
Hand-machined tubular joint, NDT inspectedFAT 90~12 MPaFalla 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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

ItemDiagnósticoMitigación recomendada
3 — piso 5 mm bajo dump 1 tSF 1.10 → falla bajo carga centrada normal2 crossmembers extras en x=810/1690 (clash check vs motores)
4 — slug + DAF + asimetríaSF < 1 con springs actuales bajo descarga asimétrica + drop-heightSprings k=50 → k=80 N/mm + bump stops + procedural rule
6 — bump stopsConstraint duro: motor↔frame top rail = 63 mm4× poliuretano 60 ShA, 50 mm altura, en brackets colgando del sub-frame
11 — fatiga motor crossmembersPTR 50×50×3 falla en cycle count realistaUpgrade 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).