Nivel 1 – Proyecto Telemetría en la Fórmula 1 Objetivo general El objetivo general de este proyecto es que usted practique los conceptos estudiados en el nivel 1 del curso. Recuerde que este proyecto debe realizarse de forma completamente individual. Objetivos específicos 1. Crear funciones. 2. Llamar funciones con parámetros. 3. Llamar funciones desde otras funciones (composición de funciones). 4. Crear y usar un módulo. 5. Probar las funciones de un módulo. 6. Construir interfaces de usuario basadas en consola. Para lograr lo anterior, en este proyecto se va a crear una aplicación que permite hacer cálculos de telemetría para el caso de la Fórmula 1. Contexto Telemetría en la Fórmula 1 Desde hace varias décadas se ha venido implementando el uso de sensores y servicios de monitoreo para recopilar datos relacionados con un problema específico. Deportes tales como las carreras de autos, específicamente la Fórmula 1, no son la excepción. La telemetría es la medición y control de variables físicas o químicas a través de datos que llegan a una central de control, y ha sido una herramienta fundamental para mejorar el desempeño de los equipos y sus autos. Los equipos se han dedicado a obtener información con ayuda de sensores, tanto externos como internos al vehículo, para calcular diferentes variables relacionadas a su desempeño. Radares de velocidad Uno de los sensores más antiguos que se ha usado es el radar de velocidad por radiofrecuencias. Este hace uso de fenómenos físicos como el efecto Doppler para el cálculo de la velocidad del vehículo. Los radares de velocidad utilizan la siguiente ecuación para calcular la velocidad (en km/h) de un cuerpo en movimiento: 𝛥𝑓 𝑐 ∗ 3.6 𝑓 2 Donde Δ𝑓 es diferencia entre la frecuencia emitida y la recibida por el radar en KHz, 𝑓 es la frecuencia 𝑚 que emite el radar en GHz y 𝑐 la constante de la velocidad de la luz que equivale a 3 ∗ 108 𝑠 . 𝑣𝑒𝑙 = Veamos este concepto aplicado a un ejemplo concreto. Suponga que el radar emite ondas a una frecuencia de 10.6 GHz y recibe ondas a una diferencia de frecuencia de 0.981 KHz. Tenemos que: 𝑣𝑒𝑙 = 0.981 ∗ 103 3 ∗ 108 ∗ 3.6 = 49.98 𝑘𝑚/ℎ 10.6 ∗ 109 2 Nótese que se realizó conversión de unidades (KHz a Hz, y GHz a Hz) utilizando notación científica (0.981*103 y 10.6*109) lo cual en Python podría realizarse de la siguiente forma: 0.981e3 y 10.6e9 para que sea más fácil de escribir en el código. Velocidad a partir de las revoluciones por minuto Otra técnica utilizada para calcular la velocidad (en km/h) de los vehículos es utilizar sensores que midan las revoluciones por minuto de las llantas y las transmitan a una unidad de cómputo que utiliza la siguiente ecuación: 𝑟𝑝𝑚𝑙𝑙𝑎𝑛𝑡𝑎𝑠 ∗ 𝑑𝑖𝑎𝑚𝑒𝑡𝑟𝑜𝑙𝑙𝑎𝑛𝑡𝑎𝑠 ∗ 𝜋 ∗ 60 𝑣𝑒𝑙𝑟𝑝𝑚 = 1000 Donde 𝑟𝑝𝑚𝑙𝑙𝑎𝑛𝑡𝑎𝑠 son las revoluciones por minuto de las llantas y 𝑑𝑖𝑎𝑚𝑒𝑡𝑟𝑜𝑙𝑙𝑎𝑛𝑡𝑎𝑠 el diámetro de las llantas del vehículo en metros. Veamos este concepto aplicado a un ejemplo concreto. Suponga que las llantas del vehículo van a 877 revoluciones por minuto y el diámetro de las llantas es de 0.58 metros. Tenemos que: 𝑣𝑒𝑙𝑟𝑝𝑚 = 877 ∗ 0.58 ∗ 𝜋 ∗ 60 = 95.83 𝑘𝑚/ℎ 1000 Tenga en cuenta que para π se utilizó un valor de 3.14 Distancia a partir de la velocidad Es posible calcular la distancia (en km) que se desplaza un vehículo si este va a una velocidad constante, con lo que los equipos pueden estimar la distancia que va a recorrer el vehículo y hacerle seguimiento. Para ello se utiliza la siguiente fórmula: 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎 = 𝑣𝑒𝑙𝑟𝑝𝑚 ∗ 𝛥𝑡 Donde 𝑣𝑒𝑙𝑟𝑝𝑚 es la velocidad obtenida a partir de las revoluciones por minuto de las llantas y Δ𝑡 el intervalo de tiempo en el que el vehículo está en movimiento. Veamos este concepto aplicado a un ejemplo concreto. Suponga que la velocidad del vehículo es de 95.83 km/h y viaja durante 0.5 horas. Tenemos que: 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎 = 95.83 ∗ 0.5 = 47.92 𝑘𝑚 Presión sobre los frenos Un elemento muy importante en las carreras son los frenos del vehículo. En estos se pueden colocar sensores que midan la presión (en Pascales) ejercida para evitar su deterioro y realizar mantenimiento oportuno. La presión ejercida sobre los frenos se puede calcular de la siguiente manera: 4 ∗ 𝑓𝑢𝑒𝑟𝑧𝑎 𝑝𝑟𝑒𝑠𝑖ó𝑛 = 𝜋 ∗ 𝑑𝑖𝑎𝑚𝑒𝑡𝑟𝑜2 Donde 𝑓𝑢𝑒𝑟𝑧𝑎 es la fuerza aplicada sobre el pedal del freno y 𝑑𝑖𝑎𝑚𝑒𝑡𝑟𝑜 es el diámetro de los cilindros del freno. Veamos este concepto aplicado a un ejemplo concreto. Suponga que el piloto ejerce 400 Newtons sobre el pedal y el diámetro de los cilindros es de 0.02 metros. Tenemos que: 𝑝𝑟𝑒𝑠𝑖ó𝑛 = 4 ∗ 400 = 1273885.35 𝑃𝑎 𝜋 ∗ 0.022 Tenga en cuenta que para π se utilizó un valor de 3.14 Relación de transmisión Todo vehículo hace uso de las relaciones de transmisión (conexión existente entre las velocidades de rotación de dos engranajes conectados entre sí) para modificar la velocidad y así mantener las revoluciones del motor en un rango que no afecte drásticamente su vida útil. De esta manera, la relación de transmisión se da entre la velocidad de entrada y de salida del engranaje, y a su vez esta velocidad depende de las dimensiones de los piñones de acuerdo con la siguiente fórmula. 𝑟𝑒𝑙𝑎𝑐𝑖ó𝑛 𝑑𝑒 𝑡𝑟𝑎𝑛𝑠𝑚𝑖𝑠𝑖ó𝑛 = 𝑑𝑖𝑒𝑛𝑡𝑒𝑠𝑒𝑛𝑡𝑟𝑎𝑑𝑎 ∗ (𝑔𝑟𝑜𝑠𝑜𝑟𝑒𝑛𝑡𝑟𝑎𝑑𝑎 + 𝑒𝑠𝑝𝑎𝑐𝑖𝑎𝑑𝑜 𝑑𝑒 𝑙𝑜𝑠 𝑑𝑖𝑒𝑛𝑡𝑒𝑠𝑒𝑛𝑡𝑟𝑎𝑑𝑎 ) 𝑑𝑖𝑒𝑛𝑡𝑒𝑠𝑠𝑎𝑙𝑖𝑑𝑎 ∗ (𝑔𝑟𝑜𝑠𝑜𝑟𝑠𝑎𝑙𝑖𝑑𝑎 + 𝑒𝑠𝑝𝑎𝑐𝑖𝑎𝑑𝑜 𝑑𝑒 𝑙𝑜𝑠 𝑑𝑖𝑒𝑛𝑡𝑒𝑠𝑠𝑎𝑙𝑖𝑑𝑎 ) Por ejemplo, si se tiene un engranaje donde la entrada tiene 40 dientes, un grosor de 12mm y un espaciado entre los dientes de 4mm, y una salida con 14 dientes, grosor de 12mm y espaciado de 2mm, la relación de transmisión sería la siguiente: 40 ∗ (12 × 10−3 𝑚 + 4 × 10−3 𝑚) 𝑟𝑒𝑙𝑎𝑐𝑖ó𝑛 𝑑𝑒 𝑡𝑟𝑎𝑛𝑠𝑚𝑖𝑠𝑖ó𝑛 = = 3.26 14 ∗ (12 × 10−3 𝑚 + 2 × 10−3 𝑚) Revoluciones por minuto del motor Como se mencionó en la relación de transmisión, los vehículos tienen un rango en el que las revoluciones por minuto (rpm) del motor mantienen la vida útil prevista por los fabricantes. Por esto, conocer las revoluciones en cada instante, permite tomar decisiones respecto a la relación de transmisión ideal en una situación y ayuda a disminuir el desgaste del motor. Este cálculo se puede realizar mediante la siguiente fórmula: 𝑟𝑝𝑚𝑚𝑜𝑡𝑜𝑟 = 𝑟𝑝𝑚𝑙𝑙𝑎𝑛𝑡𝑎𝑠 ∗ 𝑟𝑒𝑙𝑎𝑐𝑖ó𝑛 𝑑𝑒 𝑡𝑟𝑎𝑛𝑠𝑚𝑖𝑠𝑖ó𝑛 Siguiendo con el ejemplo de la relación de transmisión, si adicionalmente se tienen 900 rpm en las llantas, las revoluciones del motor son las siguientes: 𝑟𝑝𝑚𝑚𝑜𝑡𝑜𝑟 = 900𝑟𝑝𝑚 ∗ 3.26 = 2934𝑟𝑝𝑚 Actividad 1: Preparación del ambiente de trabajo 1. Cree una carpeta para trabajar, poniéndole su nombre o login. 2. Abra Spyder y cambie la carpeta de trabajo para que sea la carpeta que creó. Actividad 2: Construir un módulo de telemetría 3. Usando Spyder, cree en su carpeta de trabajo un nuevo archivo con el nombre “calculadora_formula_1.py”. En este archivo usted va a construir su módulo en el que va a hacer varios cálculos comunes sobre velocidades, distancias, revoluciones por minuto, transmisión y presión sobre los vehículos que participan en la Fórmula 1. En cada caso le indicaremos qué valores conocemos sobre las magnitudes físicas del vehículo y de su desplazamiento y qué queremos calcular. Los retornos de las funciones deben estar redondeados a dos decimales. 4. Defina e implemente funciones en su nuevo archivo de acuerdo con la siguiente información. ATENCIÓN: para asegurar que no haya problemas durante el proceso de calificación, usted debe definir las funciones con los nombres, parámetros y tipos exactos que se presentan a continuación. Las funciones deben estar definidas en el mismo orden. Nombre de la función Descripción de la función Parámetros Nombre df f Tipo float float Retorno float calcular_velocidad_radar Calcula la velocidad del vehículo de acuerdo con las mediciones de un radar de velocidad Descripción Diferencia de la frecuencia medida por el radar, en Hz Frecuencia transmitida por el radar, en Hz La velocidad del vehículo en kilómetros por hora (km/h) redondeada a 2 decimales Nombre de la función Descripción de la función calcular_velocidad_rpm Calcula la velocidad del vehículo de acuerdo con las revoluciones por minuto de sus llantas y su diámetro Parámetros Nombre rpm_llantas diametro_llanta Tipo float float Retorno float Nombre de la función Descripción de la función Descripción Revoluciones por minuto de las llantas Diámetro de las llantas en metros La velocidad del vehículo en kilómetros por hora (km/h) redondeada a 2 decimales calcular_distancia_recorrida_con_rpm_llantas Calcula la distancia que recorre un vehículo dado un intervalo de tiempo y suponiendo revoluciones por minuto constantes Parámetros Nombre Tipo dt rpm_llantas diametro_llanta float float float Retorno float Nombre de la función Descripción de la función Descripción Intervalo de tiempo en horas en el que el vehículo está en movimiento Revoluciones por minuto de las llantas Diámetro de las llantas en metros La distancia recorrida por el vehículo en kilómetros (km) redondeada a 2 decimales presion_aplicada_sobre_frenos Calcula la presión aplicada sobre los frenos. Parámetros Nombre fuerza diametro Retorno Tipo float float float Descripción Magnitud de la fuerza aplicada sobre el pedal del freno en newtons Diámetro de los cilindros del freno en metros La presión aplicada en Pascales (Pa) redondeada a 2 decimales Nombre de la función Descripción de la función Parámetros Nombre dientes_in grosor_in espaciado_dientes_in calcular_relacion_de_transmision Calcula la relación de transmisión de los engranajes de acuerdo con las dimensiones del engranaje Tipo int float float Descripción Cantidad de dientes del piñón de entrada Grosor del piñón de entrada en metros Distancia entre los dientes del piñón de entrada en metros dientes_out grosor_out espaciado_dientes_out Retorno int float float float Nombre de la función Descripción de la función Cantidad de dientes del piñón de salida Grosor del piñón de salida en metros Distancia entre los dientes del piñón de salida en metros La relación de transmisión redondeada a 2 decimales calcular_revoluciones_por_minuto Calcula las revoluciones por minuto del motor. Parámetros Nombre rpm_llantas dientes_in grosor_in espaciado_dientes_in dientes_out grosor_out espaciado_dientes_out Tipo float int float float int float float Retorno float Descripción Revoluciones por minuto de las llantas Cantidad de dientes del piñón de entrada Grosor del piñón de entrada en metros Distancia entre los dientes del piñón de entrada en metros Cantidad de dientes del piñón de salida Grosor del piñón de salida en metros Distancia entre los dientes del piñón de salida en metros. Las revoluciones por minuto del motor redondeadas a 2 decimales Actividad 3: Construir interfaces de usuario basadas en consola En esta actividad usted tiene que construir las interfaces basadas en consola para que el usuario interactúe con la aplicación. ATENCIÓN: las interfaces basadas en consola deben seguir el estándar de construcción de consolas visto en clase. 5. Construya un nuevo archivo Python para cada uno de los 6 problemas que se resuelven con la aplicación. Los nombres deben ser: consola_velocidad_radar.py consola_velocidad_rpm.py consola_distancia_recorrida.py consola_presion_frenos.py consola_ratio_engranajes.py consola_rpm_motor.py ATENCIÓN: estos archivos deben ser creados dentro de la misma carpeta donde se encuentra su módulo de telemetría. 6. Los nuevos archivos deben importar su módulo de telemetría para que puedan usar las funciones que definió en el módulo. Por ejemplo, podría usar la siguiente línea para importar el módulo: import calculadora_formula_1 as cf 7. Implemente cada uno de los seis programas de interfaz por consola. Cada uno de estos debe pedirle al usuario los datos necesarios para resolver el problema y debe informarle de su resultado. A modo de ejemplo, la siguiente imagen muestra lo que podría ser el resultado del ejecutar el programa “consola_velocidad_rpm.py” desde la consola de Windows y desde Spyder. Desde Spyder: Desde la consola: 8. Ejecute cada uno de los 6 programas para asegurar que estén funcionando. Actividad 4: Verificar el módulo de telemetría 9. Ejecute cada uno de los 6 programas utilizando los datos que se presentan a continuación y asegúrese que los resultados sean consistentes con lo que se presenta como resultado esperado en la tabla. Programa calcular_velocidad_radar calcular_velocidad_radar calcular_velocidad_rpm Entradas Diferencia de frecuencia: 0.981 ∗ 103 𝐻𝑧 Frecuencia: 10.6 ∗ 109 𝐻𝑧 Diferencia de frecuencia: 2.35 ∗ 103 Frecuencia: 10.6 ∗ 109 𝐻𝑧 Rpm llantas: 1698 Salidas 49.98 119.72 105.63 Diámetro llantas: 33.02cm = 0.3302m calcular_velocidad_rpm Rpm llantas: 875.66 Diámetro llantas: 48cm = 0.48m calcular_distancia_recorrida_con_rpm_llantas Intervalo de tiempo: 1.36 horas Rpm llantas: 1698 Diámetro llantas: 0.3302m calcular_distancia_recorrida_con_rpm_llantas Intervalo de tiempo: 0.69 horas Rpm llantas: 875.66 Diámetro llantas: 0.48m presion_aplicada_sobre_frenos Presión: 676 N Diámetro cilindros: 0.032m presion_aplicada_sobre_frenos Presión: 274 N Diámetro cilindros: 0.019m Dientes de entrada: 30 Grosor de entrada: 15 × 10−3 𝑚 Espaciado de dientes de entrada: 3 × 10−3 𝑚 Dientes de salida: 10 Grosor de salida: 15 × 10−3 𝑚 Espaciado de dientes de salida: 2 × calcular_relacion_de_transmision 10−3 𝑚 Dientes de entrada: 25 Grosor de entrada: 10 × 10−3 𝑚 Espaciado de dientes de entrada: 7× 10−3 𝑚 Dientes de salida: 14 Grosor de salida: 22 × 10−3 𝑚 Espaciado de dientes de salida: 8 × calcular_relacion_de_transmision 10−3 𝑚 Rpm llantas: 1470 Dientes de entrada: 30 Grosor de entrada: 15 × 10−3 𝑚 Espaciado de dientes de entrada: 3 × 10−3 𝑚 Dientes de salida: 10 Grosor de salida: 15 × 10−3 𝑚 Espaciado de dientes de salida: 2 × calcular_revoluciones_por_minuto 10−3 𝑚 Rpm llantas: 3550 Dientes de entrada: 25 Grosor de entrada: 10 × 10−3 𝑚 Espaciado de dientes de entrada: 7× 10−3 𝑚 calcular_revoluciones_por_minuto Dientes de salida: 14 79.19 143.66 54.64 840963.38 966882.51 3.18 1.01 4674.6 3585.5 Grosor de salida: 22 × 10−3 𝑚 Espaciado de dientes de salida: 8 × 10−3 𝑚 10. Si alguno de sus programas presenta algún error o si el resultado es diferente al esperado, revise y corrija su módulo de telemetría. Es posible que le aparezcan errores causados por fallos de tecleo en el nombramiento de las funciones, o causados por declarar los parámetros en el orden equivocado. Cada vez que corrija algo, vuelva a realizar las pruebas. Nota: Las pruebas que está realizando son un mecanismo para identificar posibles problemas con un programa, pero no pueden ser consideradas una garantía de su corrección. Entre más completas estén las pruebas, por ejemplo, verificando casos normales, extremos y anormales, más tranquilidad tendremos de que el programa está bien construido. Entrega 11. Comprima la carpeta con su proyecto resuelto. El archivo debería llamarse N1-PROY-login.zip, donde login es su nombre de usuario de Uniandes. 12. Entregue el archivo comprimido a través de Bloque Neón en la tarea designada como Proyecto del Nivel 1.