Modelación de un kart eléctrico utilizando OpenModelica
Proyecto de grado
Juan Nicolás Sánchez Romero
Universidad de los Andes Facultad de Ingeniería
Departamento de Ingeniería Mecánica
Profesor asesor
Andrés Leonardo González Mancera, PhD
Bogotá D.C., Colombia 2020
Contenido
1. Introducción ... 4
2. Objetivos ... 4
3. Dinámica Vehicular... 4
3.1 Dinámica Vehicular Longitudinal ... 5
3.2 Dinámica Vehicular Lateral... 7
3.3 Tren de potencia ... 8
3.4 Fuerzas oposición a movimiento ... 10
3.5 Dirección y velocidad ... 10
3.6 Ganancia de aceleración lateral y ganancia de velocidad de derrape ... 13
4. Descripción partes kart eléctrico ... 15
4.1 Sistema de Potencia ... 15
4.1.1 Motor... 15
4.1.2 Sistema de baterías ... 16
4.2 Sistema de dirección ... 16
4.3 Sistema de transmisión ... 17
4.4 Sistema de Frenado ... 17
4.4.1 Ruedas ... 17
5. Modelamiento ... 18
5.1 Sistema de Potencia ... 18
5.1.1 Motor... 18
5.2 Sistema de transmisión ... 21
5.3 Sistema de Frenado ... 22
5.3.1 Frenos ... 23
5.3.2 Ruedas ... 24
5.4 Fuerzas ... 25
5.4.1 Fuerzas generan movimiento ... 25
5.4.2 Fuerzas de oposición al movimiento... 25
5.5 Sistema de dirección ... 29
5.5.1 Maniobra ... 29
6. Validación y Resultados ... 32
7. Conclusiones ... 35
8. Trabajo futuro ... 35
9. Referencias ... 36 10. Anexo- Modelo Dinámica Longitudinal ... 37 11. Anexo- Modelo Dinámica Longitudinal y Lateral ... 40
1. Introducción
El presente trabajo hace parte del grupo BTA Racing de la Universidad de los Andes, el cual fabricó un kart eléctrico. El presente proyecto está centrado en el desarrollo de un digital twin de dicho kart. Se tiene como principal motivación hacer un modelo computacional del kart, ya que a través de éste se pueden hacer diferentes iteraciones bajo diferentes condiciones de frontera, en este caso diversas maniobras (step steering, skidpad y aceleración), para evaluar el desempeño del mismo y últimamente realizar cambios en el modelo físico si es pertinente.
Para lograr ello, primero se hace una introducción a la dinámica vehicular (lateral y longitudinal) y se describen las diferentes partes del kart eléctrico. Cabe recalcar que este trabajo se centra en hacer la primera iteración en el programa OpenModelica a partir de las librerías Modelica.Mechanics, Modelica.Blocks y wbEHPTlib. Por otro lado, se hace una descripción detallada de cada uno de los bloques utilizados para hacer el modelo con sus respectivos parámetros. Por último, se presentará el resultado obtenido y se plantea un trabajo futuro.
2. Objetivos
Generales:
Desarrollar un modelo dinámico en el software OpenModelica, que permita evaluar su rendimiento bajo diferentes condiciones.
Específicos:
Definir los diferentes elementos necesarios para el modelo del kart, parámetros de configuración y entradas y salidas del mismo.
Implementar y validar de manera individual las diferentes partes necesarias del modelo.
Implementar y validar en conjunto las diferentes partes necesarias del modelo, bajo diferentes pruebas (step steering, skidpad y aceleración).
3. Dinámica Vehicular
La dinámica vehicular juega un papel importante al diseñar y desarrollar los autos, debido a que las fuerzas a las que se somete el mismo determinan el rendimiento de éste. Dichas fuerzas principales a las que se ve sometido son: aerodinámicas, gravedad y reacción de las llantas. Por este motivo, se modela el comportamiento de las fuerzas que actúan en el
vehículo a partir de una serie de ecuaciones diferenciales, teniendo como principal interés los movimientos de acelerar, frenar y conducir en línea recta y giro [1].
Por otro lado, se debe tener en cuenta el sistema coordenado a utilizar según la convención dictada por la SAE J670e:
Figura 1. Sistema coordenado SAE J670 [1]
De la figura Figura 1. Sistema coordenado SAE J670 se tiene que las fuerzas aplicadas en el vehículo en la dirección hacia adelante son llamadas longitudinales y laterales si son ejercidas en un costado del auto. De igual forma, se tiene que la dinámica vehicular sigue dicha convención y se divide en dinámica vehicular lateral y longitudinal.
Igualmente, es importante aclarar algunos términos que describen el movimiento del automóvil como lo es el ángulo de deslizamiento 𝛽. Dicho ángulo es la diferencia entre la dirección del movimiento en el centro de gravedad y la dirección de la velocidad de las llantas. Otro ángulo que se debe recalcar es el ángulo de dirección de las llantas 𝛿. Igualmente el término 𝑙𝑟 (distancia de rueda trasera a centro de gravedad) y 𝑙𝑓 (distancia de rueda delantera a centro de gravedad).
3.1 Dinámica Vehicular Longitudinal
Por su parte, en la dinámica vehicular longitudinal se ven involucradas las siguientes fuerzas:
reacción de ruedas (traseras y delanteras), aerodinámica, resistencia a rodadura y de gravedad. Ver fFigura 2. Diagrama de Cuerpo Libre para dinámica vehicular longitudinal .
Figura 2. Diagrama de Cuerpo Libre para dinámica vehicular longitudinal [2].
La cual se puede ver modelada a partir de la siguiente ecuación:
𝑚𝒙̈ = 𝑭𝑥𝑓+ 𝑭𝑥𝑟 − 𝑭𝑎𝑒𝑟𝑜 − 𝑹𝑥𝑓− 𝑹𝑥𝑟 − 𝑚𝒈 sin(𝛼) [1]
La ecuación 1 se puede simplificar si se considera lo siguiente:
𝑭𝑥= 𝑭𝑥𝑓+ 𝑭𝑥𝑟 𝑹𝑥 = 𝑹𝑥𝑓+ 𝑹𝑥𝑟
sin(𝛼) ≈ 𝛼 Reduciéndose a
𝑚𝒙̈ = 𝑭𝑥− 𝑭𝑎𝑒𝑟𝑜 − 𝑹𝑥− 𝑚𝒈𝛼 [2]
Donde −𝑭𝑎𝑒𝑟𝑜− 𝑹𝑥− 𝑚𝒈𝛼 se hace referencia a las fuerzas totales de resistencia al movimiento, 𝐹𝑥 fuerza de tracción y 𝑚𝑥̈ como el término inercial. La anterior fuerza aerodinámica depende de la densidad del aire, área frontal y velocidad del vehículo, sin embargo, ésta se puede simplificar a partir del coeficiente 𝐶𝛼 si el auto se encuentra bajo presión atmosférica y forma fija del vehículo. Por su parte, la resistencia a la rodadura depende de la fuerza normal que sienten las llantas dado el contacto con el suelo, la presión de las llantas y la velocidad del vehículo. La anterior expresión se puede simplificar por medio de un coeficiente de resistencia a rodadura lineal 𝐶𝑟1 [2].
Modelo Modelo Simplificado
𝑭𝑎𝑒𝑟𝑜 = 1
2𝐶𝛼𝜌𝐴𝒙̇2 [3.a] 𝑭𝑎𝑒𝑟𝑜 = 𝑐𝛼𝒙̇2 [3.b] [3]
𝑹𝑥 = 𝑁(𝑐𝑟,𝑜+ 𝑐𝑟,1𝒙̇ + 𝑐𝑟,2𝒙̇2) [4.a] 𝑹𝑥 = 𝐶𝑟1𝒙̇ [4.b] [4]
Por otro lado, la fuerza de tracción 𝑭𝑥 se puede modelar de la siguiente manera:
𝑭𝑥 =𝑇𝑒∗ 𝑁𝑡𝑓
𝑟 − {(𝐼𝑒+ 𝐼𝑡)𝑁𝑡𝑓2 + 𝐼𝑑𝑁𝑓2+ 𝐼𝑤}𝑎𝑥
𝑟2 [5]
Donde:
𝑇𝑒 Torque producido por el motor
𝑁𝑡𝑓 Razón numérica de combinación transmisión y transmisión final
𝑟 Radio de llanta
𝐼𝑒 Inercia rotacional de motor 𝐼𝑡 Inercia rotacional de transmisión
𝐼𝑑 Inercia rotacional del eje de accionamiento 𝑁𝑓 Razón numérica de transmisión final 𝐼𝑤 Inercia rotacional de llantas
𝑎𝑥 Aceleración en eje x
3.2 Dinámica Vehicular Lateral
El modelamiento lateral se centra en modelar la tasa de rotación del vehículo basado en los momentos que afectan al vehículo cuando se conduce. Para éste se asumen que la velocidad longitudinal de avance es constante, haciendo que los modelos lateral y longitudinal se desacoplen y que se puedan tener inexactitudes cuando se acelera y desacelera en curvas.
También se asume un modelo de bicicleta, es decir que las ruedas delanteras y traseras se vuelven una. Igualmente se desprecia el movimiento de la suspensión, la inclinación de la calle y las fuerzas aerodinámicas [2]. Entonces se tiene que las aceleraciones que interactúan son lateral ([6]) y angular (Ec.7). Ver Figura 3. Diagrama representación de fuerzas, aceleraciones y ángulos en vehículo para dinámica vehicular lateral .Se formulan continuación:
𝑚𝑉(𝛽̇ + 𝜓̇) = 𝐹𝑦𝑓+ 𝐹𝑦𝑟 [6]
𝐼𝑧𝜓̈ = 𝑙𝑓𝐹𝑦𝑓− 𝑙𝑟𝐹𝑦𝑟 [7]
Figura 3. Diagrama representación de fuerzas, aceleraciones y ángulos en vehículo para dinámica vehicular lateral [2].
De acuerdo a lo anterior, se tiene que las fuerzas que sienten las llantas se pueden modelar para ángulos de deslizamiento (𝛽) pequeños, debido a que las fuerzas modeladas dependen de la variación lineal de 𝛽. En el modelo de ésta se tiene el ángulo de deslizamiento en la rueda delantera 𝛼𝑓 y trasera 𝛼𝑟. Ver Figura 3. Diagrama representación de fuerzas, aceleraciones y ángulos en vehículo para dinámica vehicular lateral . [2]. Por otro lado, en las ruedas se tiene la rigidez en curvas, la cual es la habilidad de la llanta en resistir a deformación mientras el vehículo gira. Ver Figura 4. Rigidez en curvas para una llanta . Se puede ver que la rigidez en curvas depende de la fuerza lateral y ángulo de deslizamiento y se puede ver que para ángulos pequeños de ángulo de deslizamiento tiene un comportamiento lineal, el cual se seguirá. En consecuencia, se modelarían las fuerzas de manera lineal.
Figura 4. Rigidez en curvas para una llanta [2].
De esta manera, la fuerza que sienten las llantas delantera y trasera, 𝐹𝑦𝑟 y 𝐹𝑦𝑓, se pueden modelar siguiendo:
𝐹𝑦𝑟 = 𝐶𝑟(−𝛽 −𝑙𝑟𝜓̇
𝑉 ) [8]
𝐹𝑦𝑓 = 𝐶𝑓(𝛿 − 𝛽 −𝑙𝑟𝜓̇
𝑉 ) [9]
Donde 𝐶𝑓 es la rigidez en curvas linealizado de la llanta delantera y 𝐶𝑟 es la rigidez en curvas linealizado de la llanta trasera.
Si se tienen en cuenta las ecuaciones presentadas anteriormente para la dinámica vehicular lateral y longitudinal, éstas se pueden desarrollar para obtener:
𝛽̇ = −𝐶𝑟+ 𝐶𝑓
𝑚𝑉 𝛽 + (𝐶𝑟𝑙𝑟− 𝐶𝑓𝑙𝑓
𝑚𝑉2 − 1) 𝜓̇ +𝐶𝑓𝛿
𝑚𝑉 [10]
𝜓̈ =𝐶𝑟𝑙𝑟− 𝐶𝑓𝑙𝑓
𝐼𝑧 𝛽 −𝐶𝑟𝑙𝑟2+ 𝐶𝑓𝑙𝑓2
𝐼𝑧𝑉 𝜓̇ +𝐶𝑓𝑙𝑓𝛿
𝐼𝑧 [11]
3.3 Tren de potencia
Se tiene que el tren de potencia de un carro está compuesto por fuerzas generadas para vencer aquellas resistivas al movimiento del mismo. La potencia en este caso para un vehículo eléctrico está generada por reacciones electroquímicas en las baterías del kart, que al final se distribuyen por la línea de transmisión y, por último, se genera un torque en las llantas para avanzar [2]. Ver Figura 5. Esquema vehículo . La línea de transmisión es una secuencia de componentes entre el motor y las llantas, típicamente conformado por:
Convertidor de torque (clutch)
Transmisión (caja de cambios)
Diferencial
Figura 5. Esquema vehículo [2].
Los frenos proveen un torque resistente al cubo de la rueda directamente. Debido a la directa conexión entre las llantas y el motor, se puede modelar la relación de velocidades de éstos como una constante cinemática, donde la velocidad de rotación de las llantas es:
𝜔𝑤 = 𝐺𝑅𝜔𝑡= 𝐺𝑅𝜔𝑒
[12]
Dónde 𝐺𝑅 es la relación de transmisión combinada, 𝜔𝑡 es la velocidad angular de la turbina y 𝜔𝑒 la velocidad angular de la rueda. De igual forma, la velocidad y aceleración longitudinal se representan por:
𝑥̇ = 𝑟𝑒𝑓𝑓𝜔𝑤 [13]
𝑥̈ = 𝑟𝑒𝑓𝑓𝐺𝑅𝜔̇𝑒 [14]
En la cual 𝑟𝑒𝑓𝑓 es el radio efectivo de las llantas.
Entonces el tren de potencia se puede modelar de la siguiente manera:
Llanta 𝑇𝑤= 𝐼𝑤𝜔̇𝑤+ 𝑟𝑒𝑓𝑓𝐹𝑥 [15]
Caja de Transmisión 𝐼𝑡𝜔̇𝑡= 𝑇𝑡− 𝐺𝑅(𝐼𝑤𝜔̇𝑤+ 𝑟𝑒𝑓𝑓𝐹𝑥) [16]
Convertidor de Torque 𝑇𝑡= (𝐼𝑡+ 𝐼𝑤𝐺𝑅2)𝜔̇𝑒+ 𝐺𝑅𝑟𝑒𝑓𝑓𝐹𝑥 [17]
Motor 𝐼𝑒𝜔𝑒 = 𝑇𝑒− (𝐼𝑡+ 𝐼𝑤𝐺𝑅2)𝜔̇𝑒+ 𝐺𝑅𝑟𝑒𝑓𝑓𝐹𝑥 [18]
En la cual 𝑇𝑤 es el torque de la llanta y es la combinación del torque de frenado y salida de la caja de transmisión. Por su parte, 𝑇𝑡 es el torque aplicado a la transmisión y viene del convertidor de torque que empareja el motor a la transmisión. Para llegar a la expresión del convertidor de torque se asumió 𝜔𝑡 = 𝜔𝑒, que se cumple cuando el motor está acoplado.
Teniendo en cuenta la ecuación [2] y que 𝑭𝑙𝑜𝑎𝑑 = 𝑭𝑎𝑒𝑟𝑜− 𝑹𝑥− 𝑚𝒈𝛼 , ésta se puede reescribir de la siguiente manera:
𝑭𝑥 = 𝑚𝑟𝑒𝑓𝑓𝐺𝑅𝝎̇𝑒+ 𝑭𝑙𝑜𝑎𝑑 [19]
Y combinando las ecuaciones [17] y [18], se tiene
(𝐼𝑒+ 𝐼𝑡+ 𝐼𝑤𝐺𝑅2+ 𝑚𝐺𝑅2𝑟𝑒𝑓𝑓2 )𝜔𝑒̇ = 𝑇𝑒− 𝐺𝑅𝑟𝑒𝑓𝑓𝐹𝑥 [20]
De igual forma, el anterior modelo se puede simplificar si se tiene en cuenta 𝐽𝑒 = 𝐼𝑒+ 𝐼𝑡+ 𝐼𝑤𝐺𝑅2+ 𝑚𝐺𝑅2𝑟𝑒𝑓𝑓2 para obtener que el modelo dinámico del motor se reduce a
𝐽𝑒𝜔𝑒̇ = 𝑇𝑒− 𝐺𝑅𝑟𝑒𝑓𝑓𝐹𝑥 [21]
3.4 Fuerzas oposición a movimiento
Para este punto, se tendrán en cuenta las fuerzas aerodinámicas y de resistencia a la rodadura.
Las cuales están dadas por las siguientes ecuaciones:
𝐷𝐴 =1
2𝜌𝐶𝐷𝐴𝑉2 [22]
𝑅𝑋 = 𝑓𝑟𝑊 [23]
Donde 𝜌: densidad del aire, 𝐶𝐷: coeficiente aerodinámico de arrastre, 𝐴: área frontal del kart, 𝑉: velocidad del kart 𝑓𝑟: coeficiente de resistencia a la rodadura y 𝑊: peso del kart.
3.5 Dirección y velocidad
Primero se muestra el modelo de bicicleta en una curva, con su respectivo ángulo de dirección 𝛿 y el mismo con las fuerzas de tracción involucradas. Ver Figura 6.
a) b)
Figura 6. a) Modelo de bicicleta en curva. b) Modelo de bicicleta en curva con fuerzas de tracción [1].
De acuerdo a [1], para un vehículo que avanza con una velocidad V la suma de las fuerzas en la dirección lateral de las llantas debe ser igual a la multiplicación de la masa y la aceleración centrípeta. De igual forma, se debe asegurar en equilibrio alrededor del centro de gravedad la sumatoria de momentos debe ser cero. Ver ecuaciones 24 y 25.
∑𝐹𝑦 = 𝐹𝑦𝑓+ 𝐹𝑦𝑟 = 𝑀𝑉2/𝑅 [24]
𝐹𝑦𝑓𝑏 − 𝐹𝑦𝑟𝑐 = 0 [25]
Donde
𝐹𝑦𝑓 Fuerza lateral de giro en el eje frontal.
𝐹𝑦𝑟 Fuerza lateral de giro en el eje trasero.
𝑀 Masa del vehículo.
𝑉 Velocidad de avance.
𝑅 Radio del giro.
De esta manera, los ángulos de deslizamiento de cada rueda se expresa de la siguiente manera:
𝛼𝑓 = 𝑊𝑓𝑉2
𝐶𝛼𝑓𝑔𝑅 [26]
𝛼𝑟 = 𝑊𝑟𝑉2
𝐶𝛼𝑟𝑔𝑅 [27]
Donde 𝑊𝑓 y 𝑊𝑟 son las cargas del vehículo sentidas en el eje delantero y trasero. Se expresan como:
𝑊𝑓 = 𝑊 (𝑐 𝐿−𝑎𝑥
𝑔 ℎ
𝐿) [28]
𝑊𝑟 = 𝑊 (𝑏 𝐿−𝑎𝑥
𝑔 ℎ 𝐿)
[29]
𝑎𝑥 = 1
𝑀𝐹𝑥 [30]
Entonces, el ángulo de dirección 𝛿 está regido por:
𝛿 =57.3𝐿
𝑅 + 𝛼𝑓− 𝛼𝑟 [31]
Reordenando las ecuaciones 28, 29 y 31, se tiene:
𝛿 =57.3𝐿
𝑅 + (𝑊𝑓 𝐶𝛼𝑓 − 𝑊𝑟
𝐶𝛼𝑟)𝑉2
𝑔𝑅 [32]
Igualmente, se tiene que de acuerdo a [1] la ecuación 32 es conocida como el gradiente de subviraje K.
𝐾 = 𝑊𝑓 𝐶𝛼𝑓 − 𝑊𝑟
𝐶𝛼𝑟 [33]
Por lo tanto, la ecuación queda reducida en 𝛿 =57.3𝐿
𝑅 + 𝐾𝑎𝑦 [34]
Se tienen tres casos para diferentes gradientes de subviraje K:
Dirección neutra, cuando 𝑊𝑓
𝐶𝛼𝑓 = 𝑊𝑟
𝐶𝛼𝑟 → 𝐾 = 0 → 𝛼𝑓 = 𝛼𝑟
Cuando se tiene una dirección neutra corresponde a que se tiene un balance en el vehículo tal que la fuerza lateral delantera y trasera deben ser igual para mantener el vehículo en el radio de giro sin resbalarse [1].
Subviraje, cuando 𝑊𝑓
𝐶𝛼𝑓 > 𝑊𝑟
𝐶𝛼𝑟 → 𝐾 > 0 → 𝛼𝑓 > 𝛼𝑟
En este caso, se tiene que el ángulo de giro tendría que incrementar con la velocidad en proporción a K multiplicado por la aceleración lateral en g’s. Por lo tanto, incrementa linealmente con la aceleración lateral y con el cuadrado de la velocidad. Cuando K>0, la aceleración lateral en el CG causa que las llantas frontales se deslicen hacia los lados más que las traseras. Entonces, para que se desarrolle la fuerza lateral en las ruedas delanteras y éstas se mantengan en el radio de giro, se tiene un mayor ángulo de dirección [1].
Sobreviraje, cuando 𝑊𝑓
𝐶𝛼𝑓< 𝑊𝑟
𝐶𝛼𝑟 → 𝐾 < 0 → 𝛼𝑓< 𝛼𝑟
Para el caso de K<0 el ángulo de dirección tiene que disminuir a medida de que la velocidad y aceleración lateral incrementan. Así, la aceleración lateral en el CG hace que el ángulo de deslizamiento de las llantas traseras sea mayor que las delanteras. El desvío exterior en la parte posterior del vehículo hace que las ruedas delanteras se giren hacia dentro, causando que se reduzca el radio de giro. El incremento en la aceleración lateral hace que las ruedas traseras se desvíen más y el proceso continúa al menos que el ángulo de dirección se reduzca para mantener el radio de giro [1].
De acuerdo a lo anterior, se puede ver la incidencia que tiene la velocidad en el ángulo de giro. Ver Figura 7.
Figura 7. Cambio de ángulo de dirección con la velocidad [1].
Para el caso de subviraje se puede cuantificar por un parámetro conocido como la velocidad característica [1]. Dicha velocidad característica es la velocidad a la que el ángulo de giro requerido para el giro es el doble del ángulo de Ackerman. Se calcula de la siguiente manera:
𝑉𝑐ℎ𝑎𝑟 = √57.3𝐿𝑔/𝐾 [35]
En el caso de sobreviraje, existe una velocidad crítica a la que el vehículo será inestable [1].
Se calcula de la siguiente manera:
𝑉𝑐𝑟𝑖𝑡 = √−57.3𝐿𝑔/𝐾 [36]
Se debe recordar que gradiente de subviraje, K, para este caso es negativo haciendo que la raíz sea positiva y tenga un valor real.
3.6 Ganancia de aceleración lateral y ganancia de velocidad de derrape
Uno de los propósitos para conducir un vehículo es producir aceleración lateral, es por esto que se puede estudiar el rendimiento de la misma resolviendo la ecuación 34 para la razón entre la aceleración lateral 𝑎𝑦 y el ángulo de dirección 𝛿 , para obtener la ganancia de aceleración lateral:
𝑎𝑦 𝛿 =
𝑉2 57.3𝐿𝑔 1 + 𝐾𝑉2
57.3𝐿𝑔
[37]
De esta manera, dicha razón entre 𝑎𝑦
𝛿 posibilita analizar qué tanta aceleración lateral y, por lo tanto, qué tanta fuerza lateral se necesita para conducir en una curva a unas condiciones dadas de velocidad y giro. Cuando K=0, dirección neutra, la ganancia de aceleración lateral se determina únicamente por el numerador y sería directamente proporcional al cuadrado de la velocidad. Cuando K>0, subviraje, la ganancia de aceleración lateral se ve disminuida por el
segundo término en el denominador y siempre será menor que la de un vehículo de dirección neutra. La última condición, cuando K<0, sobreviraje, el segundo término del denominador sustrae de 1 e incrementa la ganancia de aceleración lateral. Se puede ver claramente que la razón entre la aceleración lateral y el ángulo de dirección depende del cuadrado de la velocidad y cuando se alcanza el valor de velocidad crítica, el denominador es cero y se tiene una ganancia infinita significando que el vehículo está girando sin control.
Por otro lado, otra razón para conducir un vehículo es cambiar el ángulo de su dirección y así generar una velocidad de derrape. Por medio de ésta, se puede evaluar la respuesta en cambiar la dirección dado un ángulo de dirección a cierta velocidad. Dicha velocidad de derrape, r, es la razón de rotación en dirigirse a un ángulo y esta descrita por:
𝒓 = 57.3𝑉/𝑅 [38]
Reemplazando la ecuación [38] en la [34], se tiene 𝒓
𝛿= 𝑉/𝐿
1 + 𝐾𝑉2 57.3𝐿𝑔
[39]
Dicha razón entre r y 𝛿 representa una ganancia, la cual es proporcional a la velocidad en el caso de un vehículo de dirección neutra (K=0). Ver Figura 8. Ganancia de velocidad de derrape en función de la velocidad .Para el caso de un vehículo en sobreviraje la ganancia de velocidad de derrape se vuelve infinita cuando la velocidad alcanza la velocidad crítica, más allá de esta velocidad el vehículo es inestable y giraría con una ganancia infinita, si esto llegase a suceder en la realidad las llantas ya no estarían en la condición estática y el vehículo derraparía hacia dentro. Cuando se tenga la condición de sobreviraje, la velocidad de derrape incrementa hasta la velocidad característica del vehículo y luego empieza a decrecer. Luego, la velocidad característica gana importancia ya que es a ésta que el vehículo responde mejor en derrape [1].
Figura 8. Ganancia de velocidad de derrape en función de la velocidad [1].
4. Descripción partes kart eléctrico
Antes de empezar a modelar el kart eléctrico, se tendrán en cuenta las siguientes componentes que tiene el mismo y que fueron descritas en [3].
4.1 Sistema de Potencia 4.1.1 Motor
El kart cuenta con un motor eléctrico síncrono de imanes permanentes de tres fases, conectado en Y sin escobillas de referencia ME1117. Éste cuenta con las siguientes características:
De igual manera, a continuación se presenta la curva característica del mismo [4].
Tabla 1. Datos motor ME1117 [3].
Referencia Pares de polos
Armature Inercia (kgm2)
Eficiencia (%)
Potencia continua (kW)
Potencia máximo (kW)
Voltaje operación
Velocidad angular máxima
Torque continuo (Nm/amp)
Torque máximo (Nm)
ME1117 4 0.0052 90 4.47 14.47 48 5000 0.13 38
Figura 9. Potencia contra velocidad angular para motor del kart eléctrico ME1117 [4].
A partir de la Figura 9, se obtuvo la gráfica de torque entregado contra velocidad angular, para el motor ME1117. Ver Figura 10.
Figura 10. Torque contra velocidad angular para motor del kart eléctrico ME1117.
4.1.2 Sistema de baterías
Por su parte, el kart tiene 4 baterías y un arreglo de 16 celdas de la referencia GBS 12.8V 100Ah, teniendo las siguientes características:
Tabla 2. Datos batería GBS 12.8V 100 Ah [3].
4.2 Sistema de dirección
El kart eléctrico tiene un sistema de dirección compuesto por: un volante, columna de dirección, bieleta, tirantes, rótulas y brazos de dirección [3]. Ver color rojo de Figura 11.
Figura 11. Sistema de dirección del kart eléctrico (color rojo) [4].
4.3 Sistema de transmisión
El kart cuenta con un sistema de transmisión está compuesto por piñón, corona y cadena. De igual manera, la corona y el piñón son de acero 1040 y se encuentran tratados térmicamente.
A continuación, se encuentran las principales características:
4.4 Sistema de Frenado
Por otro lado, el sistema de frenado del kart está dividido en los frenos frontales y traseros.
Los anteriores constan de un disco de freno perforado y unido al eje de cada una de las ruedas, las pinzas y mordazas están unidas al chasis del kart. Por medio de un pedal que está conectado por una guaya, se acciona una bomba hidráulica y ésta ejerce una presión a las
Referencia Voltaje nominal (V)
Capacidad
(Ah) Química
Rango de voltaje operacional
(V)
Temperatura de operación
(°C) GBS 12.8V
100 Ah 4 100 LiFeMnPO4 11.2-14.4 -20 a 65
Número dientes cadena
Número dientes
piñón
Referencia cadena
Relación óptima
DID219 1.9
40 21
Tabla 3. Datos Sistema de transmisión [3] [5].
pastillas por medio de un fluido y, por fricción entre las pastillas y el disco se frena el kart [3]. Ver Figura 12.
Figura 12. Sistema de frenado del kart eléctrico. Tomado de [3].
4.4.1 Ruedas
Para las ruedas, se tiene la referencia YZ MGtires Racing, se tiene que el coeficiente de fricción variará entre 0.6-0.8 debido al uso de las mismas y por lo que se asume que encuentra en piso seco.
Tabla 4. Datos llantas YZ MGtires Racing del kart eléctrico [5].
5. Modelamiento
A continuación, se mostrarán cada uno de los elementos utilizados para modelar el kart según la anterior descripción del mismo. Para la modelación, se tuvieron en cuenta las siguientes librerías de OpenModelica:
Modelica.Mechanics
Modelica.Blocks
wbEHPTlib
5.1 Sistema de Potencia 5.1.1 Motor
Éste se modeló de la siguiente manera:
Referencia Coeficiente fricción
Presión recomendada
(psi)
Diámetro
(mm) Ancho (mm) Rin (mm)
Delantera:
131 Trasera: 205
126.20 YZ MGtires
Racing
0.6-0.8 11.6
Delantera:
260 Trasera: 274
Figura 13. Modelamiento motor del kart eléctrico
Figura 14. Modelo de acelerador del kart eléctrico Dirección:
Modelica.Blocks.Sources.Constant
Por medio de éste, se simula una entrada que tendría el piloto. Este bloque de señal constante representa el acelerador del kart eléctrico, donde 1 es que éste actúa totalmente y 0 se cierra el acelerador.
Figura 15. Modelo del motor.
Dirección:
Modelica.Blocks.Tables.CombiTable2D
El principal objetivo del presente bloque es tener como salida el torque generado en Nm por el motor, dada una velocidad angular y acelerador. Para lograr dicho objetivo, se debe tener en cuenta la curva característica del mismo. Ver Figura 10. Igualmente, este bloque tiene
como entradas: la velocidad angular y el acelerador. Cabe aclarar que si se encuentra en un rango donde no tiene un valor introducido, se realiza una interpolación para encontrar el mismo.
Como parámetros del bloque, se introdujo en “Table data definition” manualmente los valores de torque producido a su respectiva velocidad angular de la Figura 10. Igualmente, se configuró la interpolación como “Continous derivative”. Ver Figura 16.
Figura 16. Parámetros del bloque MotorData en OpenModelica.
Igualmente, para traducir los datos de torque generado de señal tipo Edata Real por el motor descrito a un dato tau. Se utiliza el siguiente bloque:
Figura 17. Bloque traducción de señal de torque, de Edata Real a tau en OpenModelica Dirección:
Modelica.Mechanics.Rotational.Sources.Torque
El volante de inercia se modela de por medio del siguiente bloque:
Figura 18. Bloque de inercia del motor en OpenModelica
Dirección:
Modelica.Mechanics.Rotational.Components.Inertia
El bloque representa un componente rotacional con un momento de inercia. A continuación los parámetros introducidos en el bloque. Ver Figura 19.
Figura 19. Parámetros del bloque MotorInertia en OpenModelica.
Para en este caso se introdujo como parámetro el valor de momento de inercia del motor 5.2x10-3 kgm2. Por su parte, para la inicialización del mismo se introdujo un valor de w.start de 83.77 rad/s para tener en cuenta el ralentí que tiene el motor [7].
La velocidad angular del volante de inercia se mide por medio del siguiente bloque de sensor de velocidad:
Figura 20. Bloque sensor de velocidad en OpenModelica.
Dirección:
Modelica.Mechanics.Rotational.Sensors.SpeedSensor
La velocidad medida por dicho bloque en el volante de inercia funciona para mandarle dicha información al bloque MotorData para que éste retorne el torque deseado a dicha velocidad angular.
Por último, se tiene un multiplicador que se modela por medio de
Figura 21. Bloque multiplicador en OpenModelica.
Dirección:
Modelica.Blocks.Math.Gain
Este bloque sirve para convertir los rad/s medidos por el bloque sensorVelocidad a rpm.
5.2 Sistema de transmisión
Para la transmisión, se tuvo en cuenta la relación ideal de la misma 1.9 [5] como parámetro del siguiente bloque:
Figura 22. Bloque transmisión en OpenModelica.
Dirección:
Modelica.Mechanics.Rotational.Components.IdealGear Para la línea de transmisión se modeló lo siguiente:
Figura 23. Modelo de línea de transmisión para el kart eléctrico en OpenModelica.
De igual forma, dado a que la inercia de la transmisión es desconocida se modela después de ésta una inercia cercana a cero (1x10-7) para que sea despreciable. Se hace por medio del siguiente bloque:
Figura 24. Bloque inercia de transmisión en OpenModelica.
Dirección:
Modelica.Mechanics.Rotational.Components.Inertia
5.3 Sistema de Frenado
Para frenar el kart, primero se modela el kart como si éste fuese una masa conectada al sistema de potencia, dirección y potencia por medio del siguiente:
Figura 25. Bloque masa kart en OpenModelica.
Dirección:
Modelica.Mechanics.Translational.Components.Mass
Este bloque está conectado a las fuerzas de oposición al movimiento (fuerza de arrastre, f_f y f_r) y aquellas que causan el movimiento (conexión con ruedas). Para los parámetros de la anterior se necesita el peso que está suspendido en las llantas, la distancia longitudinal del kart y el centro de masa del mismo siendo 154 kg, 1040 mm y 760 mm en el eje X [5] [6].
Los parámetros son los siguientes:
5.3.1 Frenos
Por otro lado, para modelar los frenos se utilizó el siguiente bloque:
Figura 26. Bloque de frenos en OpenModelica Dirección:
Modelica.Mechanics.Rotational.Components.Brake
El freno recibe una señal del tren de potencia y lo que hace es aplicar un torque negativo para disminuir la velocidad del kart como consecuencia. Dicho torque de frenado accionado aumenta por una fuerza normal ‘fn’ que presiona la brida para aumentar la fricción. Dicha fuerza ‘fn’ es una señal de entrada de una forma normalizada (0≤f_normalized≤1) donde
fn= fn_max*f_normalized
fn_max es un parámetro de entrada. La siguiente es la configuración dada para el bloque
Figura 27. Parámetros para bloque de frenado en OpenModelica.
Para activar los frenos se utiliza una señal normalizada, para cuando ésta sea 1 actúen los frenos y 0 no lo hagan. Se modela con el siguiente bloque:
Figura 28 Bloque de señal step que activa los frenos en OpenModelica.
Dirección:
Modelica.Blocks.Sources.Step
5.3.2 Ruedas
Para las ruedas del kart, se modelaron las ruedas traseras del mismo y se hace a partir del siguiente bloque:
Figura 29. Bloque llantas en OpenModelica.
Dirección:
Modelica.Mechanics.Rotational.Components.IdealRollingWheel
Este bloque recibe señales de velocidad angular y torque que vienen del tren de potencia del kart y las traduce a movimiento longitudinal. Se tiene como único parámetro el radio de las llantas que es de 137 mm y 130 mm.
a) b)
Figura 30. Parámetros para bloque de llantas en OpenModelica. a) Rueda delantera b) Rueda trasera
5.4 Fuerzas
5.4.1 Fuerzas generan movimiento Se da debido a la [5], presentada nuevamente:
𝐹𝑥= 𝑇𝑒∗ 𝑁𝑡𝑓
𝑟 − {(𝐼𝑒 + 𝐼𝑡)𝑁𝑡𝑓2 + 𝐼𝑑𝑁𝑓2+ 𝐼𝑤}𝑎𝑥 𝑟2
De igual forma, se tiene [2] para encontrar la aceleración 𝑎𝑥, presentada de nuevo:
𝑚𝑎𝑥 = 𝐹𝑥− 𝐹𝑎𝑒𝑟𝑜 − 𝑅𝑥𝑓− 𝑅𝑥𝑟− 𝑚𝑔𝑠𝑖𝑛(𝛼) 5.4.2 Fuerzas de oposición al movimiento
Para modelar las fuerzas externas de arrastre y resistencia a rodadura se tuvo en cuenta el bloque DragForce:
Figura 31. Bloque fuerzas opuestas a movimiento en OpenModelica Dirección:
wbEHPTlib.SupportModels.Miscellaneous.DragForce
Antes de insertar los parámetros para modelar este bloque, se tuvo en cuenta el trabajo desarrollado por Riccardo Baudille en Ottimizzazione delle prestazioni aerodinamiche di kart da competizione, en el cual éste encuentra el coeficiente aerodinámico de arrastre de un kart por medio de una simulación. Se encuentra en el trabajo mencionado que se tiene una geometría semejante a la del kart desarrollado de interés y teniendo en cuenta el piloto. Ver Figura 32 y Tabla 5.
Tabla 5. Parámetros de interés para bloque de fuerzas opuestas a movimiento.
Á𝑟𝑒𝑎 (𝑚2) 𝐶𝑥 𝑓𝑟 0.575 0.273 0.01
Figura 32. Geometría y simulación para encontrar coeficiente aerodinámico de arrastre de un kart [9].
Entonces, estos serían los parámetros insertados en el bloque:
Figura 33. Parámetros utilizados para el bloque dragForce en OpenModelica.
De igual manera, se modelaron las fuerzas de tracción de las llantas delantera y trasera, como 𝑓_𝑓 y 𝑓_𝑟. Se modelaron a partir de los siguientes bloques:
a) b)
Figura 34. Bloques utilizados para modelar las fuerzas de tracción en OpenModelica. a) Llanta frontal b) Llanta trasera.
Dado a que dichas fuerzas de tracción son una incógnita, se modelan a partir de un bloque para que éstas se puedan encontrar a partir del movimiento del carro. En cada llanta se encuentran dos bloques de éstos para modelar que ésta se descompone en dos componentes X y Y. Se modelan mediante:
a) b)
Figura 35. Bloque fuerza de tracción en llanta trasera en OpenModelica. a) Componente en X b) Componente en Y.
Dirección:
Modelica.Blocks.Sources.RealExpression
Los siguientes son los parámetros del bloque:
a) b)
Figura 36. Parámetros del bloque fuerza de tracción en llanta trasera en OpenModelica.
a) Componente en X b) Componente en Y.
Para que dichos bloques puedan conectarse con el bloque que modela la fuerza a la llanta es necesario el siguiente bloque:
Figura 37. Bloque multiplexer en OpenModelica.
Dirección:
Modelica.Blocks.Routing.Multiplex2
En este caso dicho bloque funciona para que las dos componentes de las fuerzas de tracción puedan conectarse con el bloque fuerza, ya que este último solo espera una entrada. Estos son sus parámetros:
Figura 38. Parámetros bloque multiplexer en OpenModelica Para modelar la fuerza se utilizó el siguiente bloque
Figura 39. Bloque modelación fuerza en OpenModelica.
Dirección:
Modelica.Mechanics.Translational.Sources.Force
Para modelar las fuerzas en una curva, se siguen las siguientes ecuaciones:
𝐹𝑦𝑓+ 𝐹𝑦𝑟 =𝑚𝑉2 𝑅 𝐹𝑦𝑓𝑏 − 𝐹𝑦𝑟𝑐 = 0 𝑊𝑓𝑉2
𝑅𝑔 = 𝐹𝑦𝑓cos(𝛼𝑓+ 𝛿) + 𝐹𝑥𝑓sin (𝛼𝑓+ 𝛿) 𝑊𝑟𝑉2
𝑅𝑔 = 𝐹𝑦𝑟cos(𝛼𝑟) + 𝐹𝑥𝑟sin (𝛼𝑟) Donde
𝛼𝑓 =(𝑊𝑓𝑉2) 𝐶𝛼𝑓𝑔𝑅
𝛼𝑟 = (𝑊𝑟𝑉2) 𝐶𝛼𝑟𝑔𝑅 Y
𝑊𝑓 = 𝑊 (𝑐 𝐿−𝑎𝑥
𝑔 ℎ 𝐿) 𝑊𝑟 = 𝑊 (𝑏
𝐿−𝑎𝑥 𝑔
ℎ 𝐿) 5.5 Sistema de dirección
5.5.1 Maniobra
Para evaluar el modelo del kart eléctrico hecho, se escogió la maniobra de “step steer” para hacerlo, teniendo un giro hacia la derecha de 15 °. Para que se realice la maniobra, se tiene que insertar la variación del ángulo 𝛿, ángulo de dirección, durante el periodo total de la simulación. La simulación se inicializa con una velocidad inicial, se realiza la maniobra y el kart se detiene al aplicarse los frenos haciendo que se detenga. Los principales parámetros de la maniobra se presentan a continuación:
Tabla 6. Parámetros de la maniobra “step steer”.
Tiempo (s) Velocidad inicial (km/h) Ángulo de dirección (°) Step (1/s)
10 30 15 (por 0.5s) 0.1
Para mayor simplicidad, se muestra el ángulo de dirección 𝛿 en la siguiente figura:
Figura 40. Variación del ángulo de dirección, δ, en la maniobra “step steer”
De esta manera, la maniobra se ve reflejada por los siguientes bloques en OpenModelica:
Figura 41. Sistema de dirección en OpenModelica.
Para poder insertar el valor de ángulo de dirección, 𝛿 se utilizó el bloque
Figura 42. Bloque ángulo de dirección en OpenModelica.
Dirección:
Modelica.Blocks.Tables.CombiTable1D
Para tener la variación del ángulo en el programa se tiene como único parámetro de entrada el tiempo que transcurre en la maniobra y como salida el valor en el cual se encuentra el ángulo de dirección en grados. Los siguientes son los parámetros que se tienen para el bloque:
Figura 43. Parámetros bloque ángulo de dirección en OpenModelica.
Se siguió el mismo método que se hizo para modelar el motor. En table definition se insertaron los valores del ángulo de dirección de la maniobra.
El único valor de entrada que tiene el bloque es el tiempo en el que se encuentra la simulación, empezando en 0s, se ve representado por
Figura 44. Reloj de simulación en OpenModelica.
Dirección:
Modelica.Blocks.Sources.Clock
Los siguientes son los parámetros del reloj:
Figura 45. Parámetros del reloj en OpenModelica.
Por último, la señal de ángulo de dirección 𝛿 se debe convertir a tipo tau debido a que la llanta delantera solo espera como entrada ese tipo de datos. Por ello, se utiliza el siguiente bloque para pasarlo a señal tipo tau:
Figura 46. Bloque cambio de señal ángulo de dirección a tipo tau en OpenModelica.
Dirección:
Modelica.Mechanics.Rotational.Sources.Torque
6. Validación y Resultados
Antes de mostrar los resultados, se debe enfatizar que al simular el modelo aparece el siguiente error:
Se encontró en foros de OpenModelica que dicho error se debe a que el programa presenta fallas en el uso de matrices y arroja dicho error, en este caso se utilizan dos veces el bloque
de matrices Modelica.Blocks.Tables.CombiTable1D y
Modelica.Blocks.Tables.CombiTable2D. Por ello, se entró primero a validar un modelo más sencillo con solo dinámica longitudinal. Ver Figura 47.
Figura 47. Modelo kart eléctrico dinámica longitudinal en OpenModelica.
Se debe recalcar que para la simulación se utilizaron los siguientes parámetros:
𝐶𝛼𝑓 ( 𝑁
𝑟𝑎𝑑) [10] 𝐶𝛼𝑟( 𝑁
𝑟𝑎𝑑) [10] 𝑅(𝑚) 𝑉𝑜(𝑘𝑝ℎ)
4000 10000 0.1 30
Tabla 7.Parámetros simulación
Para verificar los resultados obtenidos en la simulación, se calculará la velocidad máxima a la que llega el kart eléctrico considerando que a esa velocidad no hay aceleración y la sumatoria de fuerzas es igual a cero. Igualmente, la potencia producida por las fuerzas que se oponen al movimiento debe ser igual a la potencia producida por el tren de potencia.
Debido a que la resistencia aerodinámica es la fuerza que se opone al movimiento dominante [1], se calcula de la siguiente manera:
𝑃𝑚𝑜𝑡𝑜𝑟 = 𝐹𝑣 𝑃𝑚𝑜𝑡𝑜𝑟 =1
2𝜌𝐶𝑥𝐴𝑣2𝑣
Donde 𝑃 = 14.17 𝑘𝑊, 𝜌 = 1.225 𝑘𝑔/𝑚3, 𝐶𝑥 = 0.273, 𝐴 = 0.575 𝑚2.
Se obtiene 𝑣𝑚𝑎𝑥= 52.82 𝑚/𝑠 , sin embargo en dicha ecuación no se tienen en cuenta ninguna pérdida en el tren de potencia y por deslizamiento. Por ello, [1] propone
𝑣𝑚𝑎𝑥𝑇𝑒𝑜 = 0.8𝑣𝑚𝑎𝑥 𝑣𝑚𝑎𝑥𝑇𝑒𝑜 = 42.25 𝑚/𝑠
En la simulación, se tiene el siguiente resultado
Figura 48. Resultado de velocidad del modelo kart eléctrico dinámica longitudinal en OpenModelica.
En la Figura 48 se puede evidenciar que
𝑣𝑚𝑎𝑥𝑆𝑖𝑚 = 44.41 𝑚/𝑠
Si se compara la velocidad de simulación con la teórica (𝑣𝑚𝑎𝑥𝑆𝑖𝑚 = 44.41 𝑚/𝑠 y 𝑣𝑚𝑎𝑥𝑇𝑒𝑜 = 42.25 𝑚/𝑠) se tiene un error:
%𝑒𝑟𝑟𝑜𝑟 = 5.11%
Por otro lado, se presentan los resultados de posición y velocidad cuando el modelo de kart eléctrico de dinámica longitudinal tiene una velocidad inicial de 30 kph y se accionan los frenos a los 7 s. Ver Figura 49 y Figura 50.
Figura 49. Resultado de posición en maniobra del modelo kart eléctrico dinámica longitudinal en OpenModelica.
Figura 50. Resultado de velocidad en maniobra del modelo kart eléctrico dinámica longitudinal en OpenModelica.
Por medio de la Figura 50 se puede evidenciar que se parte de una velocidad inicial (8.33 m/s) y no se alcanza a llegar a la velocidad máxima del kart eléctrico 44.41 m/s ya que antes se acciona el freno al transcurrir 7 s hasta 8.15 s que se frena el kart. Mientras que en la Figura 49 se puede ver que la posición incrementa hasta un máximo de 84 m.
7. Conclusiones
Se modeló y simuló la dinámica longitudinal del kart, verificando su alcance por medio de la velocidad máxima que puede alcanzar.
Solamente se pudo modelar el kart eléctrico utilizando la dinámica longitudinal y lateral debido a un problema en el programa OpenModelica. De esta manera, no se pudo evaluar el comportamiento del mismo bajo distintas maniobras.
8. Trabajo futuro
Implementar y evaluar el modelo ya desarrollado de dinámica longitudinal y lateral del kart eléctrico, utilizando Dymola ya que OpenModelica presenta problemas al usar matrices.
9. Referencias
[1] T. D. Gillespie, Fundamentals of Vehicle Dynamics, Estados Unidos, 1992.
[2] University of Toronto, «Module 4: Vehicle Dynamics,» de Introduction to Self- Driving Cars.
[3] F. Rivera Osorio, «Diseño, construcción y caracterización de un kart eléctrico,»
Bogotá, 2016.
[4] D. G. Clavijo Pelayo, «Análisis, simulación e implementación de mejora del rendimiento para un kart eléctrico,» Bogotá, 2017.
[5] C. Lacharro Volart, «Diseño mecánico de un kart eléctrico,» Escola Tècnica Superior d'Enginyeria Industrial de Barcelona- Grau en Enginyeria en Tecnologies Industrials , Barcelona, 2015.
[6] E. A. Robayo Baron, «Diseño e implementación del modelo computacional de un kart eléctrico,» Bogotá, 2019.
[7] F. Gao, Q. Zhang, D. Zhang y W. He, «Study on Engine Idle Speed Control Considering Vehicle Power Balance,» 2013.
[8] J. Mikler A., «Construction of a Computational Model of a Go-Kart for Dynamic Analysis,» Bogotá, 2018.
[9] R. Baudille, «Ottimizzazione delle prestazioni aerodinamiche di kart da competizione,» Università degli Studi di Roma "Tor Vergata", Roma, 2003.
[10] G. Mirone, «Multi-body elastic simulation of a go-kart: Correlation between frame stiffness and dynamic performance,» Catania, 2009.
[11] Formula E, «History. The Formula E History,» 2019. [En línea]. Available:
https://www.fiaformulae.com/en/discover/history. [Último acceso: 28 Junio 2020].
[12] M. Córdoba Parra, «Diseño de un tren de Potencia para un kart eléctrico,» Bogotá, 2016.
[13] S. Jaramillo Arango, «Construcción de un kart eléctrico y caracterización de su freno regenerativo,» Bogotá, 2017.
[14] N. Hernández, «‘Digital Twin’: los objetos físicos buscan a su gemelo digital,» 16 Marzo 2018. [En línea]. Available: https://www.nobbot.com/negocios/digital-twin-los- objetos-fisicos-buscan-a-su-gemelo-digital/. [Último acceso: 29 Mayo 2020].
[15] J. Gómez Fernández, «A Vehicle Dynamics Model for Driving Simulators,»
Göteborg, 2012.
10. Anexo- Modelo Dinámica Longitudinal
model ModeloKartElectricoDinamicaLong
Modelica.Mechanics.Rotational.Sensors.SpeedSensor sensorVelocidadMotor annotation(
Placement(visible = true, transformation(origin = {-170, -14}, extent = {{-18, -18}, {18, 18}}, rotation = 90)));
Modelica.Mechanics.Rotational.Components.Inertia
MotorInertia(J = 0.0052, w(fixed = true, start = 87.77)) annotation(
Placement(visible = true, transformation(origin = {-214, -60}, extent = {{-22, -22}, {22, 22}}, rotation = 0)));
Modelica.Mechanics.Rotational.Components.IdealGear Transmision(ratio = 1.9) annotation(
Placement(visible = true, transformation(origin = {-100, -60}, extent = {{-22, -22}, {22, 22}}, rotation = 0)));
Modelica.Mechanics.Rotational.Components.Inertia InerciaTransmision(J = 0.0000001) annotation(
Placement(visible = true, transformation(origin = {0, - 60}, extent = {{-26, -26}, {26, 26}}, rotation = 0)));
Modelica.Blocks.Sources.Step Step(startTime = 7) annotation(
Placement(visible = true, transformation(origin = {66, 20}, extent = {{-20, -20}, {20, 20}}, rotation = 0)));
Modelica.Mechanics.Rotational.Components.IdealRollingWheel LlantasTraseras(radius = 0.137) annotation(
Placement(visible = true, transformation(origin = {234, - 60}, extent = {{-26, -26}, {26, 26}}, rotation = 0)));
Modelica.Mechanics.Rotational.Sources.Torque torque annotation(
Placement(visible = true, transformation(origin = {-281, -59}, extent = {{-21, -21}, {21, 21}}, rotation = 0)));
Modelica.Blocks.Tables.CombiTable2D MotorData(smoothness = Modelica.Blocks.Types.Smoothness.ContinuousDerivative, table
= [0, 0, 1; 100, 0, 14.55; 500, 0, 14.99; 1000, 0, 15.20;
1500, 0, 15.18; 2000, 0, 14.95; 2500, 0, 14.50; 3000, 0, 13.84; 3500, 0, 12.97; 4000, 0, 11.89; 4500, 0, 10.59; 5000, 0, 9.8]) annotation(
Placement(visible = true, transformation(origin = {-367, -59}, extent = {{-21, -21}, {21, 21}}, rotation = 0)));
Modelica.Blocks.Math.Gain gain(k = 9.54) annotation(
Placement(visible = true, transformation(origin = {-274, 12}, extent = {{-10, -10}, {10, 10}}, rotation = 180)));
Modelica.Mechanics.Rotational.Components.Brake Freno(cgeo = 1, fn_max = 500, mue_pos = [0, 0.6], peak = 1) annotation(
Placement(visible = true, transformation(origin = {100, - 60}, extent = {{-22, -22}, {22, 22}}, rotation = 0)));
Modelica.Mechanics.Translational.Components.Mass MasaKart(L
= 1.04, m = 154, s(start = 0.52), v(start = 8.33)) annotation(
Placement(visible = true, transformation(origin = {346, - 60}, extent = {{-24, -24}, {24, 24}}, rotation = 0)));
Modelica.Mechanics.Translational.Sensors.SpeedSensor SensorVelocidad annotation(
Placement(visible = true, transformation(origin = {467, - 1}, extent = {{-23, -23}, {23, 23}}, rotation = 0)));
wbEHPTlib.SupportModels.Miscellaneous.DragForce dragForce(Cx = 0.20, S = 0.575, fc = 0.01, m = 154, rho(displayUnit = "kg/m3") = 0.95) annotation(
Placement(visible = true, transformation(origin = {460, - 60}, extent = {{-26, -26}, {26, 26}}, rotation = 180)));
Real F_tracc;
//Declarar fuerza de tracción generada Real a_x;
//Declarar la aceleración en X
Modelica.Blocks.Sources.Constant const(k = 1) annotation(
Placement(visible = true, transformation(origin = {-435, -71}, extent = {{-19, -19}, {19, 19}}, rotation = 0)));
Modelica.Mechanics.Translational.Sensors.PositionSensor SensorPosition annotation(
Placement(visible = true, transformation(origin = {465, 47}, extent = {{-23, -23}, {23, 23}}, rotation = 0)));
equation
////DINÁMICA LONGITUDINAL////
MasaKart.m * a_x = F_tracc - dragForce.f - MasaKart.m * 9.81 * sin(0);
F_tracc = MotorInertia.flange_b.tau * Transmision.ratio / LlantasTraseras.radius - ((MotorInertia.J +
InerciaTransmision.J) * Transmision.ratio ^ 2 +
InerciaTransmision.J * Transmision.ratio ^ 2) * (a_x / LlantasTraseras.radius ^ 2);
connect(MotorInertia.flange_b, sensorVelocidadMotor.flange) annotation(
Line(points = {{-192, -60}, {-170, -60}, {-170, -32}}));
connect(sensorVelocidadMotor.w, gain.u) annotation(
Line(points = {{-170, 6}, {-170, 12}, {-262, 12}}, color
= {0, 0, 127}));
connect(torque.flange, MotorInertia.flange_a) annotation(
Line(points = {{-260, -59}, {-234, -59}, {-234, -51.5}, {-236, -51.5}, {-236, -60}}));
connect(MotorData.y, torque.tau) annotation(
Line(points = {{-344, -59}, {-306, -59}}, color = {0, 0, 127}));
connect(Freno.flange_b, LlantasTraseras.flangeR) annotation(
Line(points = {{122, -60}, {208, -60}}));
connect(Step.y, Freno.f_normalized) annotation(
Line(points = {{88, 20}, {100, 20}, {100, -36}}, color = {0, 0, 127}));
connect(Transmision.flange_b, InerciaTransmision.flange_a) annotation(
Line(points = {{-78, -60}, {-26, -60}}));
connect(InerciaTransmision.flange_b, Freno.flange_a) annotation(
Line(points = {{26, -60}, {78, -60}}));
connect(MotorInertia.flange_b, Transmision.flange_a) annotation(
Line(points = {{-192, -60}, {-122, -60}}));
connect(gain.y, MotorData.u1) annotation(
Line(points = {{-285, 12}, {-410, 12}, {-410, -46.4}, {- 391.1, -46.4}, {-391.1, -46}, {-392, -46}}, color = {0, 0, 127}));
connect(SensorVelocidad.flange, MasaKart.flange_b) annotation(
Line(points = {{444, -1}, {370, -1}, {370, -60}}, color = {0, 127, 0}));
connect(dragForce.flange, MasaKart.flange_b) annotation(
Line(points = {{434, -60}, {370, -60}}, color = {0, 127, 0}));
connect(LlantasTraseras.flangeT, MasaKart.flange_a) annotation(
Line(points = {{260, -60}, {322, -60}}, color = {0, 127, 0}));
connect(const.y, MotorData.u2) annotation(
Line(points = {{-414, -71}, {-396, -71}, {-396, -72}, {- 392, -72}}, color = {0, 0, 127}));
connect(MasaKart.flange_b, SensorPosition.flange) annotation(
Line(points = {{370, -60}, {370, -60}, {370, 50}, {442, 50}, {442, 48}}, color = {0, 127, 0}));
annotation(
Diagram(coordinateSystem(extent = {{-600, -200}, {600, 200}})),
Icon(coordinateSystem(extent = {{-600, -200}, {600, 200}})),
version = "",
uses(Modelica(version = "3.2.3")));
end ModeloKartElectricoDinamicaLong;
11. Anexo- Modelo Dinámica Longitudinal y Lateral
model ModeloKartElectrico
Modelica.Mechanics.Rotational.Components.IdealGear Transmision(ratio = 1.9) annotation(
Placement(visible = true, transformation(origin = {-90, - 3.55271e-15}, extent = {{-22, -22}, {22, 22}}, rotation = 0)));
Modelica.Mechanics.Rotational.Components.Inertia InerciaTransmision(J = 0.0000001) annotation(
Placement(visible = true, transformation(origin = {10, 0}, extent = {{-26, -26}, {26, 26}}, rotation = 0)));
Modelica.Mechanics.Rotational.Components.Brake Freno(cgeo = 1, fn_max = 500, mue_pos = [0, 0.6], peak = 1) annotation(
Placement(visible = true, transformation(origin = {110, 0}, extent = {{-22, -22}, {22, 22}}, rotation = 0)));
Modelica.Blocks.Sources.Step Step(startTime = 7) annotation(
Placement(visible = true, transformation(origin = {76, 80}, extent = {{-20, -20}, {20, 20}}, rotation = 0)));
Modelica.Mechanics.Rotational.Components.IdealRollingWheel LlantasTraseras(radius = 0.137) annotation(
Placement(visible = true, transformation(origin = {244, - 52}, extent = {{-26, -26}, {26, 26}}, rotation = 0)));
Modelica.Mechanics.Translational.Components.Mass MasaKart(L
= 1.04, m = 154, s(start = 0.52)) annotation(
Placement(visible = true, transformation(origin = {356, - 2.44249e-15}, extent = {{-24, -24}, {24, 24}}, rotation = 0)));
wbEHPTlib.SupportModels.Miscellaneous.DragForce dragForce(Cx = 0.20, S = 0.575, fc = 0.01, m = 154, rho(displayUnit = "kg/m3") = 0.95) annotation(
Placement(visible = true, transformation(origin = {470, 8.88178e-16}, extent = {{-26, -26}, {26, 26}}, rotation = 180)));
Modelica.Blocks.Sources.RealExpression Force_realExpTras(y
= f_r[1]) annotation(
Placement(visible = true, transformation(origin = {-12, - 121}, extent = {{-38, -25}, {38, 25}}, rotation = 0)));
Modelica.Mechanics.Rotational.Components.IdealRollingWheel LlantaDelantera(radius = 0.130) annotation(
Placement(visible = true, transformation(origin = {241, 37}, extent = {{-29, -29}, {29, 29}}, rotation = 0)));
////Fuerzas de tración en llantas del Kart////
//Declarar fuerza f llanta frontal Modelica.SIunits.Force[2] f_f;
//Declarar fuerza f llanta trasera (rear) Modelica.SIunits.Force[2] f_r;
////Constantes entro de masa del Kart////
//Declarar constante distancia a centro de masa desde llanta frontal [m]
Real b = 3;
//Declarar constante distancia a centro de masa desde llanta trasera [m]
Real c = 4;
//Declarar constante distancia a centro de masa desde piso [m]
Real h = 1;
////Radio de giro de maniobra////
//Declarar constante radio de giro de vuelta [m]
Real R = 0.2;
////Slip Angles////
//Declarar ángulo de deslizamiento trasero (rear slip angle)
Real alpha_r;
//Declarar ángulo de deslizamiento delantero (front slip angle)
Real alpha_f;
//Declarar constante ángulo deslizamiento trasero [N/rad]
Integer C_alpha_r = 10000;
//Declarar constante ángulo deslizamiento frontal [N/rad]
Integer C_alpha_f = 4000;
////Fuerzas////
Real W_f;
//Declarar fuerza normal sentida en rueda delantera (front normal load)
Real W_r;
//Declarar fuerza normal sentida en rueda trasera (rear normal load)
Real F_tracc;
//Declarar fuerza de tracción generada Real a_x;
//Declarar la aceleración en X
Modelica.Blocks.Tables.CombiTable2D MotorData(smoothness = Modelica.Blocks.Types.Smoothness.ContinuousDerivative, table
= [0, 0, 1; 100, 0, 14.55; 500, 0, 14.99; 1000, 0, 15.20;
1500, 0, 15.18; 2000, 0, 14.95; 2500, 0, 14.50; 3000, 0, 13.84; 3500, 0, 12.97; 4000, 0, 11.89; 4500, 0, 10.59; 5000, 0, 9.8]) annotation(
Placement(visible = true, transformation(origin = {-357, 1}, extent = {{-21, -21}, {21, 21}}, rotation = 0)));
Modelica.Mechanics.Rotational.Sources.Torque torque annotation(
Placement(visible = true, transformation(origin = {-271, 1}, extent = {{-21, -21}, {21, 21}}, rotation = 0)));
Modelica.Mechanics.Rotational.Components.Inertia
MotorInertia(J = 0.0052, w(fixed = true, start = 87.77)) annotation(
Placement(visible = true, transformation(origin = {-204, 0}, extent = {{-22, -22}, {22, 22}}, rotation = 0)));
Modelica.Mechanics.Rotational.Sensors.SpeedSensor sensorVelocidad annotation(
Placement(visible = true, transformation(origin = {-160, 46}, extent = {{-18, -18}, {18, 18}}, rotation = 90)));
Modelica.Blocks.Math.Gain gain(k = 9.54) annotation(
Placement(visible = true, transformation(origin = {-264, 72}, extent = {{-10, -10}, {10, 10}}, rotation = 180)));
Modelica.Blocks.Sources.RealExpression Force_realExpDel(y = f_f[1]) annotation(
Placement(visible = true, transformation(origin = {-12, 252}, extent = {{-32, -22}, {32, 22}}, rotation = 0)));
Modelica.Mechanics.Translational.Sources.Force force1 annotation(
Placement(visible = true, transformation(extent = {{162, 210}, {236, 284}}, rotation = 0)));
Modelica.Mechanics.Translational.Sources.Force force annotation(
Placement(visible = true, transformation(extent = {{176, -176}, {246, -106}}, rotation = 0)));
Modelica.Mechanics.Rotational.Sources.Torque torque1 annotation(
Placement(visible = true, transformation(origin = {173, 151}, extent = {{-21, -21}, {21, 21}}, rotation = 0)));
Modelica.Blocks.Routing.Multiplex2 multiplex2_2 annotation(
Placement(transformation(extent = {{72, 236}, {92, 256}})));
Modelica.Blocks.Sources.RealExpression Force_realExpDel1(y
= f_f[2]) annotation(
Placement(visible = true, transformation(origin = {-12, 220}, extent = {{-32, -22}, {32, 22}}, rotation = 0)));
Modelica.Blocks.Routing.Multiplex2 multiplex2_3 annotation(
Placement(visible = true, transformation(origin = {116, - 140}, extent = {{-16, -16}, {16, 16}}, rotation = 0)));
Modelica.Blocks.Sources.RealExpression Force_realExpTras1(y
= f_r[2]) annotation(
Placement(visible = true, transformation(origin = {-12, - 161}, extent = {{-38, -25}, {38, 25}}, rotation = 0)));
Modelica.Blocks.Sources.Clock clock annotation(
Placement(visible = true, transformation(origin = {2, 150}, extent = {{-16, -16}, {16, 16}}, rotation = 0)));
Modelica.Blocks.Tables.CombiTable1D AnguloDireccion(table = [0, 0; 0.1, 0; 0.2, 0; 0.3, 0; 0.4, 0; 0.5, 0; 0.6, 0; 0.7,
0; 0.8, 0; 0.9, 0; 1, 0; 1.1, 0; 1.2, 0; 1.3, 0; 1.4, 0; 1.5, 0; 1.6, 0; 1.7, 0; 1.8, 0; 1.9, 0; 2, 0; 2.1, -15; 2.2, -15;
2.3, -15; 2.4, -15; 2.5, -15; 2.6, -15; 2.7, -15; 2.8, -15;
2.9, -15; 3, -15; 3.1, -15; 3.2, -15; 3.3, -15; 3.4, -15;
3.5, -15; 3.6, -15; 3.7, -15; 3.8, -15; 3.9, -15; 4, -15;
4.1, -15; 4.2, -15; 4.3, -15; 4.4, -15; 4.5, -15; 4.6, -15;
4.7, -15; 4.8, -15; 4.9, -15; 5, -15; 5.1, -15; 5.2, -15;
5.3, -15; 5.4, -15; 5.5, -15; 5.6, -15; 5.7, -15; 5.8, -15;
5.9, -15; 6, -15; 6.1, -15; 6.2, -15; 6.3, -15; 6.4, -15;
6.5, -15; 6.6, -15; 6.7, -15; 6.8, -15; 6.9, -15; 7, -15;
7.1, -15; 7.2, -15; 7.3, -15; 7.4, -15; 7.5, -15; 7.6, -15;
7.7, -15; 7.8, -15; 7.9, -15; 8, -15; 8.1, -15; 8.2, -15;
8.3, -15; 8.4, -15; 8.5, -15; 8.6, -15; 8.7, -15; 8.8, -15;
8.9, -15; 9, -15; 9.1, -15; 9.2, -15; 9.3, -15; 9.4, -15;
9.5, -15; 9.6, -15; 9.7, -15; 9.8, -15; 9.9, -15; 10, -15]) annotation(
Placement(visible = true, transformation(origin = {92, 152}, extent = {{-28, -28}, {28, 28}}, rotation = 0)));
Modelica.Blocks.Sources.Constant Accel(k = 1) annotation(
Placement(visible = true, transformation(origin = {-455, -13}, extent = {{-21, -21}, {21, 21}}, rotation = 0)));
Modelica.Mechanics.Translational.Sensors.SpeedSensor SensorVelocidad annotation(
Placement(visible = true, transformation(origin = {477, 59}, extent = {{-23, -23}, {23, 23}}, rotation = 0)));
Modelica.Mechanics.Translational.Sensors.PositionSensor SensorPosicion annotation(
Placement(visible = true, transformation(origin = {477, 107}, extent = {{-23, -23}, {23, 23}}, rotation = 0)));
initial equation equation
////FUERZAS////
//Sumatoria de momentos en centro de gravedad del kart //f_f[2] * b + f_r[2] * c = 0;
//Sumatoria de fuerzas en eje Y
f_f[2] + f_r[2] = MasaKart.m * MasaKart.v ^ 2 / R;
//Front normal load
W_f = MasaKart.m * (c / MasaKart.L - a_x / 9.81 * (h / MasaKart.L));
//Rear normal load
W_r = MasaKart.m * (b / MasaKart.L - a_x / 9.81 * (h / MasaKart.L));
////SLIP ANGLES////
//Front slip angle
alpha_f = W_f * MasaKart.v ^ 2 / (C_alpha_f * 9.81 * R);
//Rear slip angle
alpha_r = W_r * MasaKart.v ^ 2 / (C_alpha_r * 9.81 * R);