Instalación sencilla de un display avanzado en un coche


Los HUD (Head-Up Display) básicamente son  displays orientados a la seguridad,  pues la idea fundamental de este tipo de dispositivos es que el conductor mantenga su mirada en dirección al frente  sin perder de vista la carretera mostrando a  la vez superpuesta esta información relevante  por tanto sin obligar al conductor a girar la cabeza cada vez que quiera comprobar algo. Actualmente  gracias a la fusión de estos displays  HUD  de nueva tecnología  con  la información proporcionada por el puerto de diagnóstico o OBDII de su vehículo , podemos proyectar la información útil de conducción  en su parabrisas  de modo que  no tenga que apartar la vista de la carretera para dirigirla  al cuadro de instrumentos por ejemplo  para saber a la velocidad  a la que se circula  o  las revoluciones del motor .

Una novedad ademas de los nuevos HUDs es que gracias a la evolución de la información  del OBDII   se  puede suministrar incluso mas información que el propio vehículo podía ofrecer por defecto  como por ejemplo  temperatura del agua ,varias  alarmas (voltaje,posición de la válvula de mariposa, ángulo de avance de encendido, tiempo de 100 km aceleración), consumo de combustible, kilometraje, aviso de   poco combustible, detalle de fallo del motor, indicación de marcha incorrecta, optimización de consumo, recordatorio de parada para el conductor, etc.

En esta ocasión vamos  a ver el modelo VGEBY Universal HUD  que  cuenta con una pantalla gigante de 5,5″  y se conecta al ODB 2  mediante  un cable especial que en un extremo cuenta con mini-usb ( para conectar al HUD)  y por otro un conector ODBII  para conectar al vehículo

Por cierto ,este cable suele ser muy fino para que pase desapercibido,por lo que  debe tenerse cuidado con el,  pues puede partirse fácilmente si hacemos mucha presión sobre el para disimularlo.Si llegase a romper el cable, no se alarme pues el cable es standard para este tipo de diplay: es decir conexión micro-usb por un lado y un conector ODB2 por el otro.

 

Aunque  podamos ver este  HUD    bajo diferentes marcas   y acabados , en realidad casi todos  se basan en el mismo modelo , con ligeras variaciones lo cual se traduce en diferentes calidades  o precios, pero todos pueden adaptarse automáticamente al tipo de vehículo que está en línea con OBDII o EUOBD (Sistema de diagnóstico a bordo).

La información ofrecida por  el   modelo VGEBY Universal HUD    es mucho mas rica que la mostrada por otros modelos anteriores  pues es concreto es la siguiente:

  • Velocidad en km/h
  • Revoluciones por minuto del motor
  • Consumo de combustible
  • Tiempo en marcha
  • Temperatura del radiador
  • Indicador del numero de  marcha engranada
  • Avisos de fallos del motor
  • Tensión de la batería
  • Presiones del sistema de admisión
  • Recordatorio de descanso
  • Tiempo de aceleración en 100 km
  • Alarmas , etc

El modo  de visualización puede ser seleccionado  por el propio conductor  , el cual puede elegir el modo de visualización normal, alta velocidad modo de visualización y modo de visualización automática.

Mediante la función de visualización se pueden mostrar : Velocidad de conducción, velocidad del motor(RPM)  , temperatura del agua, voltaje de la batería, consumo de combustible, conmutación libre entre kilómetro y milla, conmutación libre entre C y F.

En cuanto las alarmas  cuenta con las siguientes:  Alarma de sobre velocidad, alarma de alta temperatura, alarma de baja tensión, alarma de falla del motor y posibilidad de  eliminación del código de fallo, etc

Una peculiaridad  necesaria   es tenerlo configurado por defecto en   Km y no en  millas, función que viene configurada  normalmente en Europa (como otros parámetros)

Es interesante destacar que estos modelos incluyen un  sistema para  apagarse automáticamente   y por supuesto  para iniciarse   cuando el vehículo se ha arrancado (es  decir implementa la función  de   AUTO ENCENDIDO / APAGADO) , apagándose pues  cuando  el vehículo se  haya detenido  para proteger la batería del vehículo.

Por otra parte, aunque debería manipularse  lo mínimo posible , se pueden cambiar  las funciones  con una sola  mano para controlar el HUD, aunque no hace falta decir que debería hacerse con el vehículo parado.

Asimismo,  buscando la máxima comodidad  es muy útil el  modo de ajuste automático  del brillo de la pantalla  , aunque también en casi  todos los HUID  , este ajuste  se puede realizar  manualmente.

En cuanto   a la información que puede proporcionar  modelo VGEBY Universal HUD  es la siguiente:

 

Es muy importe destacar  que este tipo de dispositivos están  disponibles para coches con una interfaz OBD2 / EUOBD que en la mayoría de vehículos  de 8 a 10 años esta presente aunque no son compatible con Blade Electric Vehicle pero si en muchos modelos hibridos  ,y como vamos a  ver ,  son  muy fáciles de instalar , tanto es así  que podríamos decir que es “plug and play”.

Veamos en este breve video el  modelo VGEBY Universal HUD   en funcionamiento;

ATENCION:  Por favor, revise las reglas y regulaciones locales para el uso de este  tipo de dispositivos en  carretera   verificando que las regulaciones locales  autorizan  este tipo de instalaciones y es conforme  que  la posición del indicador esté dentro de distancias fijas del tablero para algunas ubicaciones.

Instalación del HUD

  • Antes de nada casi todos los vehículos modernos cuentan  con una interfaz OBD2 / EUOBD.  Para conocer si su  vehículo  lo es  puede abrir el capó del motor y debería encontrar una pegatina, si la etiqueta tiene la letra “OBDII CERTIFIED”, significa que puede instalar el HUD.   No obstante , aunque el vehículo no cuente con esta pegatina, lo normal es que si es un vehículo del 2010  en adelante , esta característica la soporte. 
ond2.PNG
  • Deberíamos ahora  comprobar  que disponemos del cable usb-odb2, el display  , el adhesivo para fijarlo  y la lamina translucida( en caso de que vayamos a ponerla)

  • Para verificar el conector de diagnóstico del vehículo debajo del volante, puede encontrar la  toma de 16 pins del vehículo.
figura2 IMG_20180120_162125[1].jpg
Una vez localizado  conecte el extremo del cable  suministrado en el conector del vehículos
IMG_20180120_162216[1].jpg
  • Haga pasar el cable por el borde de la puerta
IMG_20180120_162249[1].jpg
  • Ahora bordee  el parabrisas  con  el cable hasta llegar a su la posición  donde coloque  el  aparato
IMG_20180120_162352[1].jpg
  • Ahora ya conducido el cable  debe poner el circular antideslizante en posición plana delante sobre el  HUD  .Puede ajustar  ángulo del  HUD de modo qeu la imagen  reflejada en el parabrisas este  nivelada.
IMG_20180120_163331[1].jpg
  •  Pegar OPCIONALMENTE  la película reflectante sobre el parabrisas pues realmente eliminara el doble reflejo del display , aunque personalmente prefiero no pegar nada en el parabrisas pues de este modo no obstaculiza en absoluto la visión a través de este . Si se decide pegarlo , algunos consejos para pegar la película antirreflectante:
    • Puede rociar uniformemente agua sobre el parabrisas.
    • Rasgue la capa protectora de la película y rocíe un poco de agua para ambos lados, luego pégalo en el lugar que quiera.
    • Nivelar el agua debajo de la película con un objeto liso hasta que no haya agua y burbuja dentro.
    • Cuando el agua se evapore, puede limpiar el agua y el polvo alrededor del película.
  •  Para probar el dispositivo , debe encender el host de HUD y debería ver el voltaje de la batería del vehículo, y luego entrará  en el estado de investigación de
    la versión del ordenador de a bordo del vehículo reconociendo este con un pitido indicando con esto de que esta listo. 
  • Después de estos simples pasos podemos decir que HUD está instalado exitosamente.   

 

Ajustes   

Este display tiene una rueda en unlateral qeu cuenta con tres posiciones: izquierda , derecha y central

Una vez encendido puedem pulsar el botón  de control a  la izquierdo  para alternar la visualización de : 

  • reloj,
  • temperatura del agua,
  • presión de admisión
  • RPM del motor
  • angulo de aceleración
  • tiempo de acelaracion  para 100sg

Una pulsación, por cierto larga de 5 segundos, hacia el lado derecho conmuta entre sonidos activos  o no del HUD

Una vez encendido ,también puede pulsar el botón  de control a  la derecha  para alternar la visualización de : 

  • consumo de combustible
  • posición del throttle

Si pulsa el botón central  con una pulsación corta entra en el menú de configuración de un menú de 0 a 23 opciones  que vamos a  ver  a continuación (  una pulsación corta incrementa el menú)

Estas son las diferentes opciones del menú con sus valores por defecto , su función y el rango de valores posibles::

 

 

 

IMPORTANTE ; Observe especialmente   el menú nº 23 (Factory Reset)   , pues si se ajusta a la izquierda al valor 1, y luego con una pulsación larga  en el botón central por 5 segundos para salvar y salir  , llevara al modelo VGEBY Universal HUD a la  configuración de fábrica.

 

Borrar   Códigos de fallo

Es sin duda   una gran  utilidad  del modelo VGEBY Universal HUD  muy interesante y que incluso , si es  fortuita , nos puede ahorrar bastante  dinero en desplazamiento   y  taller   que sin duda amortizaran  la compara de este dispositivo .

El modo de borrar los codigos de  error de la centralita  de  nuestro vehículo es muy sencillo en este modelo VGEBY Universal HUD :cuando tenemos conectado el display al coche por el ODB2 , no arrancar al motor   pasando a ON , y esperar que se vaya a OFF el display . Ahora entonces  pulse el botón derecho  por 5 segundos  : el HUD   producirá un sonido   y finalmente el HUD borrara el código de error

 

 

Por cierto , si le interesa el HUD descrito  en este post  (modelo VGEBY Universal HUD)  , puede comprarlo en Amazon por unos 42€  en este enlace

Como construir display gigantes


En efecto podemos construir nosotros mismos nuestros propios Display de  leds  de la medidas que necesitemos  simplemente con una placa Arduino  ( y todos  su derivados) o una  Raspberry Pi ( y todos su clónicos y derivados ) y !por supuesto  un poco de bricolaje!

Un dígito led  en realidad esta formado por  7 segmentos  o mas   y es un componente que se utiliza para la representación de caracteres o números en muchos dispositivos, debido en gran medida a su simplicidad y bajo coste

Aunque externamente difiere considerablemente de un led típico, internamente están constituidos por una serie de leds con unas determinadas conexiones internas, estratégicamente ubicados de tal forma que forme un número ‘8’.

Cada uno de los segmentos que forman la pantalla están marcados con siete primeras letras del alfabeto (‘a’-‘g’), y se montan de forma que permiten activar cada segmento por separado, consiguiendo formar cualquier dígito numérico

Por ejemplo para representar el numero 15 lo conseguiremos , activando los segmentos B y C del primer dígito  y  los segmentos AF,G C y D  para el segundo dígito

 

15

 

En la imagen podemos ver el desmontaje de la estructura interna de un display led de 4 cifras comercial, apreciándose unos puntos minúsculos que en realidad son leds SMD (lo demás es un plástico difusor que se coloca encima).

Los displays de 7 segmentos pueden ser de dos tipos principales: ánodo común y cátodo común. En un display de ánodo común, todos los ánodos de los segmentos están conectados juntos y cada segmento se activa encendiendo el cátodo correspondiente. En un display de cátodo común, todos los cátodos están conectados juntos (es decir el positivo) y cada segmento se activa encendiendo el ánodo correspondiente (o negativo). La elección entre estos tipos depende del diseño del circuito y las preferencias del diseñador, pero es obvio que sólo no son compatibles unos modelos con otros especialmente en el aspecto de que sean de cátodo o ánodo común.

En la siguiente imagen mostramos un display muy conocido ( el 5643BS) de ánodo común y que usaremos en la reparación de una olla de cocción lenta. Claramente lo importante es destacar la correspondencia de los pines : los 7 segmentos A,B,C,D,E, F (que se conectan a negativo) y las 4 cifras: D1,D2,D3 y D4 ( que se conectan al positivo común de cada cifra ).

5643BS

Existen dos diferentes métodos para controlar los displays de 7 segmentos:

    • Multiplexación: Esta técnica implica alternar rápidamente los dígitos mostrados, creando la ilusión de visualización simultánea de múltiples dígitos. Esta técnica es la mas comúnmente utilizada en casi todos los electrodomésticos serie blanca. Es especialmente habitual cuando usamos microcontroladores pues se necesitan mucha menos electrónica para su control (normalmente 7 segmentos mas 1 línea más por cada cifra) .
    • Decodificadores BCD: Los decodificadores BCD convierten datos binarios en señales de control específicas para activar los segmentos individuales, representando así el número deseado.

 

Montaje

Ahora que entendemos como funciona un display de 7 segmentos, la idea  es realmente sencilla  pues básicamente  consiste en auto-construirnos  dicho dígito  pensando en los  7 segmentos    de los que lo compone   usando para ellos  7 leds  acoplados a un caja  con    difusores para todos los leds  ¿sencillo verdad ?

Para el montaje  necesitaremos los siguientes elementos:

  • Trozos de cartón
  • Trozos de cartulina
  • 7 LEDs difusa
  • 7 resistencias de 50 ohm
  • Cinta carrocera (usada por los pintores )
  • Pegamento
  • Soporte con Esquema del display
  • Cables
  • Arduino uno
  • Un trozo de papel contacto

Una vez que tengamos el dígito compuesto por 7 los leds lo conectaremos a 7 salidas binarias de Arduino  siguiendo el siguiente esquema de conexiones;

  • PD2  segmento a;
  • PD3 segmento b
  • PD4 segmento c
  • PD5 segmento d
  • PD6 segmento e
  • PD7 segmento f
  • PD8 segmento g

Y para facilitar la gestión del display  también dos pulsadores ( para avanzar o retroceder en el conteo):

  •  PP1
  • PB2

Y finalmente   en la siguiente imagen podemos ver el esquema donde se aprecian claramente las resistencias de 50ohm para los leds   y las de 10 K para los pulsadores.

 

arduino

 

Según la configuración ya decidida  para gestionar el display solo necesitamos mapear  cada combinación  de segmentos asociado a cada numero que queramos representar  ,  y por medio delos pulsadores incrementamos o decrementamos una unidas representando el siguiente o el anterior digito respectivamente

Como en muchos otros casos ,es de señalar que debemos controlar los rebotes en las pulsaciones para lo cual leeremos varias veces el valor de la entrada hasta asegurarnos que el valor esta estables.

Y finalmente en este vídeo  podemos ver el proceso constructivo al mas estilo casero y el sencillo  montaje en funcionamiento:

Veamos el código para nuestro proyecto

El código Arduino es bien sencillo:

//definiciones de segmentos con las primeras pines digitales puerto A

const int a = 2;
const int b = 3;
const int c = 4;
const int d = 5;
const int e = 6;
const int f = 7;
const int g = 8;

//Definición de pines de entrada para los pulsadores
const int botonIncremento = 9;
const int botonDecremento = 10;

//valor para controlar los antirrebotes

const int tiempoAntirebote = 10;

//Al encender parece este numero

int cuenta = 0;  
int estadoBotonIncremento;
int estadoBotonAnteriorIncremento;
int estadoBotonDecremento;
int estadoBotonAnteriorDecremento;

boolean antirebote(int pin) {
int contador = 0;
boolean estado;
boolean estadoAnterior;

do {
estado = digitalRead(pin);
if(estado != estadoAnterior) {
contador = 0;
estadoAnterior = estado;

}
else {
contador = contador + 1;
}
delay(1);
} while(contador < tiempoAntirebote);

return estado;

}

void actualizarNumero() {
switch(cuenta) {
case 0:     // digito 1
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
break;

case 1:// valor 2

digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
break;
case 2:
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
break;
case 3: //digito 3
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
break;
case 4://digito 4
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
break;
case 5: //digito 5
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
break;
case 6: //digito 6
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
break;
case 7: //digito 7
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
break;
case 8: //digito 8
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
break;
case 9: //digito 9
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
break;
}

}

//programamos lo 7 primeros pines del puerto A como salida 

//y los dos primeros del puerto B como entrada 
void setup() {
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(botonIncremento, INPUT);
pinMode(botonDecremento, INPUT);
}
void loop() {
estadoBotonIncremento = digitalRead(botonIncremento);
if(estadoBotonIncremento != estadoBotonAnteriorIncremento) {
if(antirebote(botonIncremento)) {
cuenta++;
if(cuenta > 9) {
cuenta = 9;

}
}
}
estadoBotonAnteriorIncremento = estadoBotonIncremento;

estadoBotonDecremento = digitalRead(botonDecremento);

if(estadoBotonDecremento != estadoBotonAnteriorDecremento) {
if(antirebote (botonDecremento)) {
cuenta–;
if(cuenta < 0)

{
cuenta = 0;
}
}
}
estadoBotonAnteriorDecremento = estadoBotonDecremento;

actualizarNumero();
}

Este código Arduino es un ejemplo de cómo controlar un display de 7 segmentos utilizando dos botones para incrementar y decrementar un número mostrado en el display. Te explicaré paso a paso qué hace cada parte del código:

  1. Definición de pines: Se definen constantes para los pines del Arduino que están conectados a los segmentos del display de 7 segmentos (a, b, c, d, e, f, g) y para los pines que están conectados a los botones de incremento y decremento (botonIncremento y botonDecremento).
  2. Variables y constantes adicionales: Se define una constante tiempoAntirebote que controla el tiempo de antirrebote de los botones, y algunas variables para el estado actual y anterior de los botones y el número que se está mostrando en el display (cuenta).
  3. Función antirrebote: Esta función se encarga de evitar los falsos disparos cuando se presionan los botones. Utiliza un contador que se incrementa cada vez que el estado del botón es igual al estado anterior, y devuelve el estado del botón solo si el contador supera el tiempo de antirrebote definido.
  4. Función actualizarNumero: Esta función actualiza los segmentos del display de 7 segmentos según el valor de cuenta utilizando un switch-case. Cada case representa un dígito del 0 al 9 y enciende o apaga los segmentos correspondientes para mostrar ese dígito.
  5. Configuración inicial en el setup: Se configuran los pines como entrada o salida en el setup().
  6. Bucle principal en el loop(): En el bucle principal se lee el estado de los botones de incremento y decremento. Si se detecta un cambio en el estado de alguno de los botones, se llama a la función antirrebote y se incrementa o decrementa el valor de cuenta según corresponda. Se asegura que cuenta no exceda los límites (0-9). Luego, se actualiza el número mostrado en el display llamando a la función actualizarNumero().

En resumen, este código controla un display de 7 segmentos para mostrar un número que puede ser incrementado o decrementado mediante dos botones, evitando falsos disparos utilizando la técnica de antirrebote.