Control de Amortiguación Skyhook para Suspensión Semi-Activa en Modelos de Cuarto de Vehículo

El modelo de suspensión semi-activa con control de amortiguación skyhook se implementa para evaluar la comodidad vehicular, enfocándose en la aceleración vertical de la carrocería. La entrada es un perfil de carretera aleatorio de nivel B, y las salidas incluyen aceleración vertical, carga dinámica del neumático y desplazamiento dinámico de la suspensión, calculando sus valores RMS para el análisis de estabilidad.

La generación del perfil de carretera es fundamental; para el nivel B, se utiliza ruido blanco. La siguiente función en Python modela el perfil:

def crear_perfil_ruta(v, t, nivel='B'):
    n_ref = 0.1
    coef = {'A':16e-6, 'B':64e-6, 'C':256e-6}[nivel]
    delta_t = t[1] - t[0]
    freq_ang = 2 * np.pi * n_ref * v
    fase = np.random.uniform(0, 2*np.pi)
    return np.sqrt(2 * coef * v * n_ref) * np.sin(freq_ang * t + fase)

Esta función convierte el nivel de carretera en un coeficiente de irregularidad, usando una onda sinusoidal para simular la excitación a diferentes velocidades. La fase aleatoria genera variaciones únicas en cada simulación, evitando el sobreajuste.

El núcleo del modelo de suspensión se basa en ecuaciones de estado. El sistema de ecuaciones diferenciales se implementa así en MATLAB:

function dx = sistema_suspension(t, x, u)
    m_body = 320;
    m_wheel = 45;
    k_susp = 27000;
    k_tire = 250000;
    c_passive = 1500;
    
    F_ctrl = -0.8 * x(2);
    
    dx = zeros(4,1);
    dx(1) = x(2);
    dx(2) = (-k_susp*(x(1)-x(3)) - c_passive*(x(2)-x(4)) + F_ctrl)/m_body;
    dx(3) = x(4);
    dx(4) = (k_susp*(x(1)-x(3)) + c_passive*(x(2)-x(4)) - k_tire*x(3) - F_ctrl)/m_wheel;
end

Aquí, la velocidad de la carrocería se usa como entrada de control, con el coeficiente 0.8 determinado por ajuste experimental. La signo de F_ctrl en la cuarta ecuación es crucial para la estabilidad, un detalle que requiere cuidado durante la implemantación.

Los resultados de la simulación se comparan en el dominio del tiempo. Un gráfico con subplots permite visualizar los tres indicadores clave:

fig, (ax1, ax2, ax3) = plt.subplots(3,1)
ax1.plot(t, acc_pasiva, '--', label='Pasiva')
ax1.plot(t, acc_semiactiva, '-', linewidth=1.5, label='Semi-Activa')
ax1.set_ylabel('Aceleración (m/s²)')
# Análisis similar para carga dinámica y desplazamiento...
plt.tight_layout()

Este enfoque visual destaca la reducción de picos y la atenuación más rápida de oscilaciones en el sistema semi-activo.

El cálculo de los valores RMS no debe usar directamente la media; es necesario elevar al cuadrado, promediar y luego tomar la raíz:

rms_acel = sqrt(mean(aceleracion.^2));
rms_carga = sqrt(mean(carga_neum.^2));
rms_desp = sqrt(mean(desplazamiento.^2));

Un punto importante es excluir el 20% inicial de los datos para evitar distorsiones por transitorios, filtrando con condiciones como t > 0.2 * T_total.

La estructura de archivos del modelo se organiza de manera modular para facilitar el mantenimiento:

/SuspensionSemiActiva
├── /codigo
│   ├── generador_ruta.m
│   ├── ode_suspension.m
│   └── procesamiento.py
├── /documentos
│   └── guia_ajustes.pdf
└── ejecutar_simulacion.m

Guardar los datos en archivos .mat evita recalcular; usar bucles parfor para exploraciones de parámetros acelera el proceso, especialmente al ajustar el coeficiente skyhook.

En cuanto a la experiencia de ajuste: cambios de ±10% en la masa sprung tienen poco impacto en el control, pero variaciones mayores al 5% en la masa unsprung requieren reajuste. Al cambiar de carretera B a C, se recomienda reducir el coeficiente skyhook de 0.8 a 0.6 aproximadamente para prevenir saturación del actuador.

Etiquetas: skyhook-control semi-active-suspension quarter-car-model road-profile-simulation vehicle-dynamics

Publicado el 5-31 01:52