Autor Tema: Usar mandos volante Opel Astra  (Leído 6907 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado warriorfenix@hotmail.com

  • PIC10
  • *
  • Mensajes: 23
Usar mandos volante Opel Astra
« en: 02 de Marzo de 2009, 13:17:16 »
Hola tengo un opel astra G del 98 con mandos en el volante, y quiero usarlo para controlar una radio con pantalla que me compre en ebay. La cosa es que necesito adaptar las señales de los botones, porque no hay interface para mi radio. Los mandos del volante tienen tres cables: Masa, VCC (+12v) y señal de datos, el mando tiene seis botones después de desmontar los botones, he descubierto que en el cable de salida de datos, funciona como una resistencia variable, cuando no se pulsa ningún botón, da una resistencia de 3K7, y conforme vamos pulsando botones, se van seleccionando las siguientes resistencias: 468 oh, 800 oh, 1480 oh, 170 oh, 87 oh y 288 oh. La idea que tenía era seleccionar estas resistencias con el pic y mediante las salidas actuar sobre el mando a distancia de la radio y asi controlar la radio sin interface, necesitaría que me ayudarais a saber como hacer que el pic entienda esos valores de resistencia y poder trabajar con ellos. Gracias por vuestra ayuda

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Usar mandos volante Opel Astra
« Respuesta #1 en: 02 de Marzo de 2009, 13:19:28 »
Hola.

Segun lo que te entendi, la mejor manera seria con el ADC del micro.
El papel lo aguanta todo

Desconectado warriorfenix@hotmail.com

  • PIC10
  • *
  • Mensajes: 23
Re: Usar mandos volante Opel Astra
« Respuesta #2 en: 02 de Marzo de 2009, 17:29:57 »
Pero el ADC del micro, solo lee valores en voltios y esto es resistencia, no se como se podría implementar.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Usar mandos volante Opel Astra
« Respuesta #3 en: 03 de Marzo de 2009, 00:40:11 »
Hola.

Pues has un divisor de voltaje, como la resistencia cambia, el voltaje tambien cambiara.

Saludos
El papel lo aguanta todo

Desconectado warriorfenix@hotmail.com

  • PIC10
  • *
  • Mensajes: 23
Re: Usar mandos volante Opel Astra
« Respuesta #4 en: 04 de Marzo de 2009, 22:09:29 »
Gracias, al hacer el divisor de voltaje, e implementandolo con el PIC he conseguido utilizar los mandos de mi coche con la Radio, sin gastarme un pastón en el interface. Ahora quiero intentar usar la pantalla del coche, he encontrado información en varias paginas pero son holandesas y alemanas, y el codigo esta en ensamblador, del cual no tengo ni idea, si pudierais echarme una mano para poder desarrollar el protocolo en C, podría ser un proyecto muy chulo para controlar la pantalla que viene en el coche con los mandos del volante además de la radio, os dejo el elink: http://www.eelkevisser.nl/fabio.html

Ahi se puede descargar el codigo fuente completo en Emsamblador, espero su respuesta.

Gracias ante todo por su interes

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Usar mandos volante Opel Astra
« Respuesta #5 en: 04 de Marzo de 2009, 23:39:00 »
Hola.

La pantalla se controla por I2C segun lei -muy por encima, ya que estoy de salida-. Luego veo con mas detalle a ver si completas todo el proyecto, seria muy chulo.
El papel lo aguanta todo

Desconectado warriorfenix@hotmail.com

  • PIC10
  • *
  • Mensajes: 23
Re: Usar mandos volante Opel Astra
« Respuesta #6 en: 16 de Marzo de 2009, 16:22:37 »
Hola he encontrado en una web el codigo en c para PCW, pero no consigo enviar ni un mensaje a la pantalla con el 16f876 adaptando el codigo, os dejo los fuentes para que le hecheis un vistazo y me digais como debería de ser para enviar solo mensajes a la pantalla, gracias

http://www.jonis.com.br/novo/index.php?option=com_content&view=article&id=47&Itemid=59


Desconectado warriorfenix@hotmail.com

  • PIC10
  • *
  • Mensajes: 23
Re: Usar mandos volante Opel Astra
« Respuesta #7 en: 18 de Marzo de 2009, 23:36:13 »
Hola despues de seguir volviendome loco adaptando el codigo para hacerlo simplemente enviar a la pantalla letras, sin leer mandos ni nada, tengo este codigo, y no me funciona a ver si me podeis echar una mano, hay dos funciones una valeo y otra borg, por que hay dos modelos de dysplay en opel uno que mrq funciona con pulso ascendente y otro descendente por favor ayudadme os ajunto mi codigo, en el post anterior os puse para que descargarais los ficheros, y ahi podris comparar el original con el mio gracias por adelantado

Código: [Seleccionar]
#include <16f876.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES XT                       //Cristal

#use delay(clock=4000000)
#use I2C(MASTER,SDA=PIN_C4,SCL=PIN_C3,RESTART_WDT)   //Configuración I2C
#byte STATUS = 0x03
#define RP0     5
//#define DEBUG
#define WORKING

// Prototipos
void Initi2c(void);
void Starti2c(void);
void Stopi2c(void);
void EscreveDisplayValeo();
void EscreveDisplayBorg();

void main()
{

   set_tris_b(0);

while (1)
{

   EscreveDisplayValeo();
   delay_ms(10000);
   EscreveDisplayBorg();
   delay_ms(10000);
}}

void EscreveDisplayValeo()
{

   #ifdef WORKING
   Initi2c();
   #endif

   //MRQ = 0;
   output_bit (pin_b0,0);   
   delay_ms(1);
   //MRQ = 1;
   output_bit (pin_b0,1);   
   delay_ms(1);

   #ifdef WORKING
   Starti2c();
   i2c_write(0x9b);     // Endereço do display
   #endif

   //MRQ = 0;
   output_bit (pin_b0,0);   

   #ifdef WORKING
   // Display symbols
   delay_ms(1);
   i2c_write(0x01);
   delay_ms(1);
   i2c_write(0x01);
   delay_ms(1);
   i2c_write(0x01);
   delay_ms(1);
   #endif

         #ifdef WORKING
         
         i2c_write(0x61);
         i2c_write(0x62);
         i2c_write(0x64);
         i2c_write(0x67);
         i2c_write(0x68);
         i2c_write(0x6B);
         i2c_write(0x6D);
         i2c_write(0x6E);
         i2c_write(0x70);
         i2c_write(0x73);

      #endif

      delay_ms(1);

   //MRQ = 1; // MRQ = 1 // (Entrada?)
   output_bit (pin_b0,1);
   #ifdef WORKING
   Stopi2c();
   #endif

   delay_ms(5);

   return;

}
void EscreveDisplayBorg()
{

   #ifdef WORKING
   Initi2c();
   #endif

   //MRQ = 1;
   output_bit (pin_b0,1);   
   delay_ms(1);
   //MRQ = 0;
   output_bit (pin_b0,0);   
   delay_ms(1);

   #ifdef WORKING
   Starti2c();
   i2c_write(0x9b);     // Endereço do display
   #endif

   //MRQ = 0;
   output_bit (pin_b0,0);   

   #ifdef WORKING
   // Display symbols
   delay_ms(1);
   i2c_write(0x01);
   delay_ms(1);
   i2c_write(0x01);
   delay_ms(1);
   i2c_write(0x01);
   delay_ms(1);
   #endif

         #ifdef WORKING
         
         i2c_write(0x61);
         i2c_write(0x61);
         i2c_write(0x61);
         i2c_write(0x67);
         i2c_write(0x68);
         i2c_write(0x6B);
         i2c_write(0x6D);
         i2c_write(0x6E);
         i2c_write(0x70);
         i2c_write(0x73);

      #endif

      delay_ms(1);

   //MRQ = 1; // MRQ = 1 // (Entrada?)
   output_bit (pin_b0,1);
   #ifdef WORKING
   Stopi2c();
   #endif

   delay_ms(5);

   return;

}
void Starti2c()
{
#asm
   bsf STATUS,RP0
#endasm
   //SDA = 0; // SDA
   output_bit (pin_c4,0);
   //SCL = 0; // SCL
   output_bit (pin_c3,0);   
#asm
   bcf STATUS,RP0
#endasm
   //SDA = 1;
   output_bit (pin_c4,1);   
   //SCL = 1;
   output_bit (pin_c3,1);   
   delay_ms(1);
#asm
   bcf STATUS,RP0
#endasm
   //SDA = 0;
   output_bit (pin_c4,0);   
  return;
}

void Stopi2c()
{
#asm
   bsf  STATUS,RP0
#endasm
   //SDA = 0; // SDA
   output_bit (pin_c4,0);
   //SCL = 0; // SCL
   output_bit (pin_c3,0);
#asm
   bcf STATUS,RP0
#endasm
   //SDA = 0;
   output_bit (pin_c4,0);   
   //SCL = 1;
   output_bit (pin_c3,1);   
   delay_ms(1);
#asm
   bcf STATUS,RP0
#endasm
   //SDA = 1;
   output_bit (pin_c4,1);   
   delay_ms(1);
   return;
}

void Initi2c()
{
#asm
   bsf STATUS,RP0
#endasm
  // Seta os pinos C3, C4 e D0 como saida (0)
set_tris_c (0b00000000);
  //trisc4 = 0;
  //trisd0 = 0;
  //trisb0 = 0;
set_tris_b (0b00000000); 
#asm
   bcf STATUS,RP0
#endasm
  // Sobe o nivel das portas
  //SDA = 1;
  output_bit (pin_c4,1); 
  //SCL = 1;
  output_bit (pin_c3,1); 
  //MRQ = 1;
   output_bit (pin_b0,1); 
  return;
}

Desconectado Akone

  • PIC10
  • *
  • Mensajes: 29
Re: Usar mandos volante Opel Astra
« Respuesta #8 en: 20 de Marzo de 2009, 14:25:09 »
suerte con el proyecto, lo seguiré de cerca

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Usar mandos volante Opel Astra
« Respuesta #9 en: 27 de Marzo de 2009, 19:28:57 »
yo llegue a realizar un circuito que lee los voltages de la tecla pulsada en el volante,y despues de reconocer la tecla pulsada.se grava el valor emitido por el mando a distancia por infrarrojos.de la funcion que quiera que haga el autoradio.se podian grabar muchas teclas.incluso combinacion de ellas.
yo lo dispuse para grabar los datos en una 24lc512.
y funciono a la perfeccion.solo que por agrandar el proyecto y otras prioridades.pare el proyecto,pero creo que voy a continuarlo.almenos lo que llegue a realizar lo posteare como una primera version.sin complicaciones.ya habra tiempo de implementarle mas cosas.
Montando mi primera impresora 3D (Raprep Prusa i3)


 

anything