Proyecto Indicadores coche Rally

Buenas días a todos.

Un amigo mío me ha pedido ayuda para crear una pantalla para su coche de carreras (Renault 5 GT Turbo MKII de 1989). Para este proyecto he pensado utilizar un arduino Mega y una pantalla nextion de 7". Me gusta hacer cosas con arduino pero no tengo todos los conocimientos que preciso. Esto va a ser un proyecto largo yo creo

Este coche no tiene ninguna ecu o obd desde la que poder obtener los datos, por lo que utilicé sus actuales indicadores analógicos para saber los valores de los sensores que necesito (Presion de aceite, Temperatura de aceite, Temperatura de agua, Presion de turbo y voltaje de bateria.

Para medir los valores he alimentado cada gauge con un alimentador de 12v y 1,5 Amp. además de un potenciometro de 10K. Variando el potenciometro y comprobando en el indicador conseguí obtener los valores en voltios para cada parte escala.
Por ejemplo. en temperatura de agua a 40ºC son 4.5v y para 100ºC son 3v.

He revisado ejemplos de código para medir sensores y mostrar el valor en pantalla, pero todos utilizan las mediciones en ohmnios.
Como puedo utilizar el voltaje para indicar correctamente los valores en pantalla??
Alguna idea o sugerencia??

Muchas gracias.

Hola, con la instruccion “analogRead()” te da un valor de los voltios presentes en el pin medido, si los sensores que has visto te dan el resultado en ohmios es porque realiza algun calculo con esta lectura.
Posiblemente tambien tengas que usar la instruccion “map()”, pol los 12v del coche que tendras que convertir a los 5V max. que soporta el arduino.
Saludos.

Hola gonpezzi. Gracias por tu respuesta

Ok. los sensores que dan los valores en ohmnios era todos de ejemplos de codigo que he indagado. Los que tengo aqui me muestran todos valores en voltios y varian su rango desde 0,5 a 4,5v por lo que no creo que tenga problema en usarlos directamente.
La función “map()” nunca la he usado, voy a investigar como puedo emplearla en mi proyecto.

Disculpa pero ningún código de Arduino usa ohmios para expresar valores, porque ningún Arduino mide Ohmios. Solo miden tensión porque asi estan diseñandos la mayoría de los ADC.
Puede medir según la tensión de referencia que este usando. Si es un UNO/NANO hablamos de 5V (aprox) o de 1.1V (Referencia Interna). Si es un MEGA tienes mas opciones.
Es posible que tengas una valor indicativo en ohmios del sensor y lo que debas hacer es usar un divisor de tensión para que el Arduino pueda medirlo adecuadamente.
Busca en Google: calculadora divisor de tensión y te acercarás a tu objetivo.

Moderador:
Estaré observando el tema a ver si da con los lineamientos de un proyecto. Por el momento tengo dudas, si es así lo moveré a la sección que crea conveniente.

Hola Surbyte. Tengo pensado utilizar un Arduino Mega para este proyecto, por el momento estoy haciendo pruebas sobre un Uno. Los sensores no entregan ninguno más de 4,8v por lo que creo que no me harán falta divisores.

Tengo que darle una vuelta a lo de utilizar funcion “map()”, hasta ahora nunca la tengo utilizado puesto que siempre usaba por ejemplo los termopares, etc… para mis proyectos

Entiendo entonces que un codigo tal que este podría valer¿? (es un codigo muy simple a ejemplo ilustrativo. Ya se ampliará muuuuucho)

int analogPin = A3; // señal de temperatura agua en pin analogico3
                    
int val = 0;  // variable para almacenar el valor medido

void setup() {
  Serial.begin(9600);           
}

void loop() {
  val = analogRead(analogPin);  // lectura del pin de entrada
  Serial.println(val);          // depuración
}

A esto habría que sumarle una función “map()” no?
Gracias

Hola, para el proyecto tienes pensado seguir utilizando los indicadores originales o pretendes remplazarlo, según eso tendrás que realizar las conexiones, ahora para los sensores de temperatura necesitas necesitas hacer un divisor de tensión porque estos sensores suelen ser thermistores NTC y estos no son lineales por lo que para estos sensores no puedes utilizar la función map().

Mucho ojo con este tema. Que el sensor te entregue 4.8V no significa que no tenga un WARNING o ALARMA a mayor tensión. Te recomiendo que pongas un diodo zener de 5.1V con Catodo para la señal y Anodo a GND. SI la tensión supera 5.1 irá todo a GND y proteges la entrada del Arduino.
Normalmente se pone un zener de 4.7V que seguramente si quieres probar irá bien pero a 4.8 tendrá cierta distorsión por flujo de corriente a GND asi que mejor usa el de 5.1V

Map es una función para enteros normales y largos (int y long) asi que ojo. Si lo vas a usar contempla su uso cuando el conversor toma el dato asi en crudo. Sino debes crear una función con floats.

Hola. Perdón por la tardanza en contestar.

Swift. Voy a reemplazar los indicadores totalmente y sacar la señal de los sensores originales del coche. Tienes razón, no son lineales, utilizé a modo de prieba la funcion “map()” y … fiasco.

Surbyte; Gracias por el aporte de los diodos zener, voy a ver como los tengo que colocar (soy novato en estos lides), por otro lado nunca he utilizado la función “Float”. Ya tengo para estudiar estas noches.

Gracias mil. Os iré contando progresos :+1:

Buenas Setenta9 , acabo de ver tu proyecto y veo que es casi lo mismo que en lo que estoy , porque aunque yo es para el motor de un avion como estoy avionizando un motor de coche , en concreto un turbodiesel , pues te puede servir igual , este proyecto esta muy avanzado por un colega frances , de hecho ya controla 10 parametros , temperaturas agua , aceite ,escape , compartimento motor y del aire a la salida del intercooler ,voltimetro amperimetro , presion de aceite y de presion admision turbo y por supuesto rpm .
Yo lo unico que he modificado son los sensores de las temperaturas , creo que son inexactos , y prefiero los 18B20 creo que son mas exactos y ahora estoy intentando pasar de una pantalla de 3,5" que me parece muy pequeña a una de 5" , lo puedes ver aqui ( Visualizacion parametros de motor), ya me diras que te parece y si encaja con tu proyecto .
Saludos