Data Logging para un auto

Buenas a todos, mi nombre es Agustín y estoy en el último año de ingeniería mecánica. Tengo muy poca experiencia en Arduino pero quiero aprender.

Tengo un proyecto a realizar, que consiste en adquirir señales análogicas de un auto de competición en una tarjeta SD, para luego analizarlas mediante el software Labview. El Arduino a utilizar sería el Arduino Mega. Dicho proyecto constaría de los siguientes sensores:

-GPS
-IMU
-Sensor de posición de pedal de freno (potenciómetro lineal)
-Sensor de posición de pedal de acelerador (potenciómetro lineal)
-Sensor de posición de volante.
-Sensor de velocidad de cada rueda (x4)
-Sensor de posición de cada rueda (x4)

Antes que todo, es factible de realizar? Tengo tiempo para dedicar. Si la respuesta a esta pregunta es sí, paso a detallar mis dudas.

Cabe señalar que este post está en la sección de Hardware porque antes de pasar a la programación de cada uno de los sensores quiero cercionarme antes de comprar que estoy en un buen camino. Voy a poner ejemplos de cada uno a ver si son correctos o no.

Tengo entendido que el Arduino Mega tiene 16 entradas analógicas, por lo que estaría usando 13 en este caso. Es así? O estoy cometiendo algún error?

De los primeros 4 sensores, estuve buscando y creo que hay suficientes tutoriales acerca de la programación de cada uno, tendría que cercionarme que funcionen dentro del rango de voltajes y de que sean compatibles con Arduino.

GPS: Modulo GPS Neo6

IMU: Acelerómetro Giroscopo Mpu6050

Potenciómetro lineal: Potenciómetro lineal 10k

Para el caso del sensor del volante, según lo que leí podría usar un potenciómetro multivueltas. Es así? No encuentro mucha información de ellos.

Para la velocidad de cada rueda, usaría encoders ópticos con un disco ranurado. Tendría que ver la forma de instalarlo, pero creo que es la mejor opción.

Encoder: Sensor óptico reflectivo

Finalmente, para la posición de cada rueda tendría que usar unos sensores que se le dicen extensómetros, o sensores de posición extensométricos. Que tienen forma similar a un amortiguador, pero de dimensiones reducidas. De estos no encuentro casi nada de información, no sé si los estoy buscando con el nombre equivocado, o es que realmente son muy raros. Por ahí existe otra forma de medir eso, y me simplifica la búsqueda.

No es un sensor, pero agrego el módulo de la SD: Modulo SD

Pido disculpas de ante mano por lo largo del texto, pero realmente encontré poca información acerca de esto y agradecería mucho una ayuda.

Desde ya muchas gracias,

Agustín.

Antes que todo, es factible de realizar?

Claro que si es posible.

Tengo entendido que el Arduino Mega tiene 16 entradas analógicas, por lo que estaría usando 13 en este caso. Es así? O estoy cometiendo algún error?

Es correcto, tiene 16 y por ahora vas bien encaminado.

Para el caso del sensor del volante, según lo que leí podría usar un potenciómetro multivueltas. Es así? No encuentro mucha información de ellos.

Busca información de como usan los volantes de los SIMCAR o sea los juegos de simulación de autos de carrera. Tal vez sea un enconder que puede girar a izq o derecha y tu siempre sabras para donde lo hace. Necesitarás alguna referencia que te diga cual es 0 grados.
Un potenciometro multivueltas podria servir también pero no sería mi primer opción. Luego lo debatimos si quieres

Para la velocidad de cada rueda, usaría encoders ópticos con un disco ranurado. Tendría que ver la forma de instalarlo, pero creo que es la mejor opción

Velocidad de la rueda, solo requiere algo mas simple. Un sensor de efecto Hall te dirá cuando la rueda giró 1 vuelta, si quieres algo mas le pones 2 o 4. Cada giro de rueda serán X cmts
distancia / tiempo te da velocidad. Que mejor y mas simple que eso.

para la posición de cada rueda tendría que usar unos sensores que se le dicen extensómetros, o sensores de posición extensométricos

Con estos no te digo nada. Hay muchas cosas para aconsejarte y no son baratas.

Pido disculpas de ante mano por lo largo del texto,

Por el contrario, pocas veces alguien se explica como lo has hecho tu. Te felicito, hace tiempo que no leo a un estudiante universitario expresarse tan bien y plantear su proyecto de la forma que lo has hecho.

Quedo a la espera de posibles repreguntas y podemos debatir en profundidad cada sensor si asi lo quieres.
Será mi punto de vista, puedes esperar a que otros den el suyo también.

Claro que si es posible.

Me dijeron que puede ser que tenga mucho ruido e interferencias dentro del auto, es posible de contrarrestar?

Busca información de como usan los volantes de los SIMCAR o sea los juegos de simulación de autos de carrera. Tal vez sea un enconder que puede girar a izq o derecha y tu siempre sabras para donde lo hace. Necesitarás alguna referencia que te diga cual es 0 grados.
Un potenciometro multivueltas podria servir también pero no sería mi primer opción. Luego lo debatimos si quieres

Estuve mirando lo del encoder rotativo, creo que sería la mejor opción. Hay muchos videos de simuladores caseros hechos con eso, la verdad es que no se me había ocurrido.

Lo que ví es que además del encoder usan un motor. No entiendo por qué, y si sería necesario en mi caso también.

Velocidad de la rueda, solo requiere algo mas simple. Un sensor de efecto Hall te dirá cuando la rueda giró 1 vuelta, si quieres algo mas le pones 2 o 4. Cada giro de rueda serán X cmts
distancia / tiempo te da velocidad. Que mejor y mas simple que eso.

Es una muy buena opción también. Lo que no me queda muy claro sería la posición. En la misma que el sensor del ABS?

Con estos no te digo nada. Hay muchas cosas para aconsejarte y no son baratas.

Este es mi talón de aquiles. No encuentro nada a precio razonable y que sirva como para medir.

Por el contrario, pocas veces alguien se explica como lo has hecho tu. Te felicito, hace tiempo que no leo a un estudiante universitario expresarse tan bien y plantear su proyecto de la forma que lo has hecho.

Agradezco enormemente tu respuesta y tu ayuda.

La pregunta que me queda pendiente es, que componentes no estoy teniendo en cuenta? Es decir (y sólo a modo de ejemplo): resistencias, capacitores, etc?

Puedes necesitar mas componentes pero no te adelantes, ve trabajando con cada uno y prueba cada cosa y asegúrate de que funcione bien. No pongas todo junto hasta estar completamente seguro de cada sensor.

sensor de posicion de rueda o en tu caso hablas del despegue del amortiguador.
Yo use unos sensores magnetoresistivos que son francamente maravilosos. Son tan buenos que los usan en F1. Queda claro? peroo… son caros. Me costaba un sensor de 30 cmts algo como 200 dolares. Como mi cliente era una empresa petrolera no había problema. No se en tu caso.

Sensor Magnetoresistivo para medir distancias

No entiendo lo del ruido,hablas del MEGA?

Entiendo perfectamente, ir de a poco probando cada uno. Para que si haya algún inconveniente sepa de qué sensor es.

No creo que me pueda permitir ese tipo de sensores. Creo que la parte de la suspensión va a ser la última. Creo que con medir velocidad de cada rueda me ayudaría bastante.

Me han dicho, gente más especializada en electrónica (yo lo creí porque no tengo experiencia), que dentro de un vehículo pueden haber muchas señales o interferencias que perturben los datos obtenidos.

Otra pregunta, estuve investigando y el MEGA no es multitarea, por lo que la programación para que pueda almacenar todos los datos en el orden correcto es crítica. Mi pregunta es, es mucho más complejo separar el sistema en varios Arduinos UNO? En lugar de que sólo un Mega haga todo el trabajo?

Otra pregunta, estuve investigando y el MEGA no es multitarea, por lo que la programación para que pueda almacenar todos los datos en el orden correcto es crítica.

Ningún arduino es multitarea.
El único por el momento que no es Marca Arduino pero que lo programas estilo arduino que puede hacer dos tareas simultáneas es el ESP32 de los que yo conozco, supon que habrá muchos mas de STM32 y otras empresas.

Toda programación que no use delay() da la sensación de que estas trabajando sin demoras y en un código fluído. Asi que todo depende de como lo hagas.

Mi consejo como le digo a todos es que uses millis() para tus consultas y máquina de estados para ir resolviendo las tareas que el micro debe atender. Eso generamente resuelve la mayor parte de los problemas de programación de modo prolijo y eficaz.

Ahora bien, para qué necesitas multitarea?
Si sabes programar en multitarea ni siquiera planteas esta duda. Se debe básicamente a que conoces el entorno en el que te manejas.
Desde mi punto de vista se pueden hacer muy buenas cosas con FreeRTOS así que te dejo un link introductorio
También puedes usar FreeRTOS con ESP32 o usando estilo Arduino en dos nucleos.

Espero te ayude la respuesta o tal vez alguien mas pueda dar una respuesta mas rica.

Ahora bien, para qué necesitas multitarea?

La verdad es que no sé si necesitaba algo que sea multitarea, me lo comentaron y por eso la duda.

Pero si se puede con Arduino mejor, hay muchisimos tutoriales y es más fácil encontrar soluciones.

Voy a empezar con la programación y las pruebas, voy a ir manteniendo al tanto.

Muchas gracias por la ayuda.

Ve a Documentación => Indice de temas tutoriales => millis() y también lee máquina de estados.