viernes, 26 de noviembre de 2010

Diagramas del controlador LCD

Sobre el control que realizaré voy especular un poco, ya que se puede llegar a complicar bastante. El modelo más sencillo sería este:
Diagrama Control 1
Con este control simplemente haríamos de puente entre la información del bus CAN y el display, teniendo que programar en el microcontrolador los parámetros que queremos mostrar. Como querría poder interactuar con este display para poder ir cambiando el texto e implementar el botón de INFO necesitaré conectarle unos pulsadores:
Diagrama Control 2
Este sería el primer diseño a realizar para poder evolucionarlo más adelante. Para tener el control sobre el bus CAN tengo varias opciones:
  1. Usar un microcontrolador para controlar el LCD y el ELM327 para gestionar el bus comunicándome con él por el puerto serie del micro. Una solución algo costosa ya que el chip de ELM vale 19$ y además con un software cerrado.
  2. Usar un microcontrolador con un periférico de CAN y controlar el LCD con ese mismo micro. Tendría que usar las librerías software de gestión del bus por lo que sería algo más complicado.
  3. Usar un interfaz de CAN como el MCP2515. Me permitiría tener una solución hardware par la gestión del bus, y las funciones de enmascarar mensajes y de filtrado que hace este chip pueden ser muy útiles. Una opción muy probable a usar, ya que no dependo de ninguna librería software ni software propietario de terceros.
  4. Usar algún módulo de microcontrolador con un añadido hardware para gestion del bus CAN, como es el proyecto ARCAN sobre la plataforma Arduino o este otro shield Arduino de SKPang. Soluciones de rápida implementación ya que todo el hardware y las librerías software está resuelto, pero al ser una solución de terceros y a tenerlo todo masticado no tendría mérito realizar el control, solo programaría el Arduino. A mi me gusta cacharrear más, aunque no descarto esta opción si me doy por vencido con el hardware.
La evolución de este control viene cuando este primer escalón esté implementado, entonces será hora de ir pensando en una conexión con el futuro PC para solventar ciertos problemas. Primero es que el volante creo que está conectado directamente a la radio a través de un bus LIN, a la venta hay adaptadores para diferentes marcas de equipos de audio, por lo que habría que añadir esta conexión para recuperar estos controles. Segundo es que estos controles tendrían que actuar sobre el software del PC, emulando un teclado o mediante algún chip de periférico USB, o si el propio micro tiene puerto USB también. Elegiré la opción que no me implique crear un driver de teclado en el PC o modificar en exceso la aplicación del PC para aceptar estos comandos.
También existe la vía inversa de modo que mediante una aplicación en el PC pueda enviar mensajes al bus CAN, aunque creo que los softwares de carPC ya tienen conexión con el OBD para mostrar datos en pantalla, así que es posible que reutilice el cable OBD para ello si es posible, estaría bien que tuvieras un botón en pantalla para cerrar las puertas, o subir ventanillas, o incluso controlar el climatizador. O que la aplicación reaccionase a situaciones del coche como que cambie el skin a uno nocturno al encender las luces, o que muestre la cámara trasera al conectar la marcha atrás.
Otra tarea del circuito controlador podría ser la de gestionar la iluminación, ya que el coche posee una regulación de la iluminación del cuadro de mandos y de la radio. Esta regulación no se si se realiza mediante una tensión en algún punto o través de mensajes de CAN, pero contemplaré que el circuito sea capaz de gestionarla y actuar sobre la retroiluminación del LCD o de la pantalla TFT, si fuera necesario.
Así que con toda esta cantidad de conexiones y posibilidades podría legar a tener un controlador tal que así:

Diagrama control full equip
    Así que el proyecto puede crecer mucho, es cuestión de las ganas que le ponga y sobretodo si implica una mejora sustancial en la usabilidad del sistema, ya veremos hasta donde llego.

    Introducción y primeros pasos.

    Recientemente he adquirido un Mazda 3 de segunda mano del año 2004, al cual ya tenía previsto meterle mano al equipo de música y sustituirlo por un carputer al estilo de los vistos en SoloCarputer o mp3Car pero me encuentro con un gran problema para ello.
    El nuevo pequeñín
    Si sustituyo la radio de serie por una comercial de tamaño 2DIN o 1DIN pierdo por completo la funcionalidad del display, ya que este va conectado a la radio y no tiene su propia conexión al bus CAN. En este display se muestra la información de las emisoras de radio o del CD, pero también se muestra el reloj, el ordenador de a bordo (consumo instantáneo, consumo medio, velocidad media y km restantes con la gasolina actual) y la información del sistema de aire acondicionado y calefacción (velocidad ventilador, toberas de salida de aire seleccionadas, temperatura seleccionada y temperatura exterior).

    La radio con su display.
    Realmente toda esa información es muy útil en el coche, casi básica hoy en día. Para tener una conducción eficiente necesitas saber el consumo medio e instantáneo de la gasolina, y para poder controlar el climatizador pues como mínimo la temperatura seleccionada. Es por esto que la sustitución de la radio pasa por conservar a toda costa este display y sus funcionalidades.
    Otros han tenido el mismo problema y lo han solucionado o bien comprando la radio DSS NAV M3 por unos 800€ (sistema caro y cerrado para lo que quiero) o incluso conservando la radio original en la guantera o detrás de la nueva radio y cableando el display hasta ella, soluciones poco elegantes para mi gusto.
    También hay gente que ha utilizado este display para mostrar mensajes interceptando las comunicaciones entre la radio y el display e insertando información proveniente del bus CAN  o bien interpretando los mensajes de CAN que permiten mostrar texto en el display y utilizándolos para mostrar información del sensor de aparcamiento. Todos estos ejemplos suponen mantener la radio original y sobrescribir la información que va al display de una manera u otra, por lo que me servirán de base para el diseño de un interfaz con el display.



    Para comenzar con todo esto lo primero será mapear correctamente todos los mensajes de CAN que pueda. Ya hay algunos que me han adelantado trabajo (Madox,TorontoMazda, Mazda6Club). La idea es mapear cuantos más mensajes mejor, lo ideal sería algo tal que así pero creo que supondría una tarea titánica, así que me conformaré con mantener la información actual y añadir otra información de interés que pulule por el bus CAN. Para ello he comprado un cable OBD basado en un chip ELM327 de ELM Electronics con la versión 1.3a. Este chip es un PIC18F248 con un software creado por ELM para interpretar el bus CAN y crear un terminal serie para interactuar con él a través del puerto serie utilizando comandos. Hay muchos softwares que funcionan con el ELM327, así que iré probando con cual me siento más cómodo.
    Otro tema sobre el bus CAN es que hay dos buses en el coche, uno de alta velocidad HS-CAN (1mbps, 500kbps?) del cual cuelgan las centralitas de seguridad, luces y de control de motor , el otro bus MS-CAN (125kbps, 256kbps?) donde se conectan las centralitas de confort e interiores. El cuadro de mandos hace de firewall entre las dos redes y permite pasar ciertos mensajes de un bus a otro para no saturar ninguno de los dos. En el conector de OBD hay especificados varios buses , pero en el caso de Mazda creo que solo me encontraré el bus CAN de alta velocidad, por lo que quizás para acceder al de confort tenga que interceptarlo detrás de la radio. También es posible que el bus del conector OBD se un tercer bus suma de los otros dos creado por el cuadro de mandos precisamente para poder diagnosticar todos las centralitas del coche. Espero aclarar todas estas especulaciones próximamente cuando le meta mano al coche con el portátil y el cable OBD.