[TUTORIAL] - Computador de bordo através do TID

Faça você mesmo as instalações e manutenções em o seu Corsa.
Responder
fialho
:: Wind ::
Mensagens: 9
Registrado em: Quinta-feira 30 2015f Abril 2015 07:33:20 PM
Localização: São Paulo - SP
Modelo do veiculo: CORSA (DEMAIS)
Ano de fabricação: N/I

Re: [TUTORIAL] - Computador de bordo através do TID

Mensagem por fialho »

cansei escreveu:
fialho escreveu:2 Duvidas:

1) o meu é aquele 12/12 com airbag, como faço pra saber se ele tem BCM? (eu acho que tem mas queria confirmar)
Só pelo ano já da pra dizer que não tem. Até onde sei só os corsas até 2006 saiam com BCM.

Pra saber se tem ou não é só ver como vc faz pra acender a luz do teto. Se no seu carro vc puxa o botão pra acender então seu carro não tem BCM. Se vc aperta o botão pra acender então ele tem BCM.

Mas já te falo que pro computador de bordo é indiferente ter BCM ou não viu, o que muda é só a questão da alavanca R/S.
Blz, muito obrigado por ajudar e manter esse projeto ativo por tanto tempo, é um dos poucos projetos que tem aqui que quero fazer que ainda está ativo
cansei
:: Piquet ::
Mensagens: 319
Registrado em: Quinta-feira 06 2008f Março 2008 10:30:35 PM
Localização: São Paulo - SP
Modelo do veiculo: CORSA HATCH 1 8 FLEXPOWER
Ano de fabricação: 2004

Mensagem por cansei »

ChavesHe escreveu:Achei o problema do cr.


Obs. Não sei como edita o post.
Seria bom vc fazer o contador de tempo pra chamar essas funções viu. Duplica as funções zera_intervalo e calcula_intervalo (criando variáveis novas pra não contaminar as outras). Chamar esse termômetro toda hora não é bom.

Mais pra baixo do coisas a fazer sempre tem um contador que roda a cada 1 segundo, vc pode chamar essas duas funções do termômetro lá de dentro que já ajuda bastante.
fialho escreveu:Blz, muito obrigado por ajudar e manter esse projeto ativo por tanto tempo, é um dos poucos projetos que tem aqui que quero fazer que ainda está ativo
De nada. Na medida do possível eu sempre dou uma passada aqui.
Avatar do usuário
thiiagoarts
:: Wind ::
Mensagens: 21
Registrado em: Quarta-feira 01 2012f Agosto 2012 09:36:38 PM
Localização: São Sebastião do Passé - BA
Modelo do veiculo: CORSA HATCH 1.0 MPFI 8V 71CV
Ano de fabricação: 2004

Mensagem por thiiagoarts »

Salve galera vi Aqui que teve novidades [emoji122][emoji122][emoji122][emoji122] show de bola

Enviado de meu XT1563 usando Tapatalk
ChavesHe
:: Super ::
Mensagens: 54
Registrado em: Sexta-feira 29 2016f Janeiro 2016 10:49:16 AM
Localização: Osasco - SP
Modelo do veiculo: CORSA HATCH PREMIUM 1.4 ECONOFLEX
Ano de fabricação: 2009

Mensagem por ChavesHe »

Cansei,

Não estou conseguindo, criei as novas funções de tempo e mesmo assim continua dando o bug do até logo.
Tirei o simbolo e tbm aparece o até logo.
E está atrapalhando o consumo, ele não identifica direto se o carro está andado.

Se poder da uma olhada como fiz.

Chamada das funções.

Código: Selecionar todos

//Calculo de Vel, vel max e Consumo em L/h
  calcula_intervalo_C();
  if (intervaloSecsC >= 1)
  {
    zera_intervalo_C();
    //Coloque abaixo a chamada de funções extras que precisam rodar a cada 1 segundo em background sem precisar exibir nada no TID
    tempe_ac(); // Função do termometro
     re_ac(); // Função acionamento do A\C
    
    //Calculo vel e vel max
    VelKmPorHBKG = (DistVelCountBKG/16) * fatorVel * 3.6;
    DistVelCountBKG = 0.0;
    if (VelKmPorHBKG > VelKmMax)
    {
      VelKmMax = VelKmPorHBKG;
    }

As funções novas.

Código: Selecionar todos

void exibe_simbolo_cr()
{
  if (flag_simbolo_cr == 0)
  {
    mydisplay.display_symbol(4);
    flag_simbolo_cr = 1;
  }
}

void apaga_simbolo_cr()
{
  
   if (flag_simbolo_cr == 1)
  {
    mydisplay.clear_symbol(4);
    flag_simbolo_cr = 0;
  }
}

void zera_intervalo_Ac() //Momento zero/inicial. Marca o instante que começa a contagem
{
  milisecac = millis();
  secsac = milisecac/1000;
}

void calcula_intervalo_Ac() //Calcula o tempo que passou desde o momento 0
{
  milisec1ac = millis();
  secs1ac = milisec1ac/1000;
  intervaloMiliSecsac = milisec1ac - milisecac;
  intervaloSecsac = secs1ac - secsac;
}

void tempe_ac()
{
      byte type_s;
      byte data[12];
      byte addr[8];
      
      if ( !ds.search(addr)) {
        ds.reset_search();
        return;
      }

      // the first ROM byte indicates which chip
      switch (addr[0]) {
        case 0x10:
          type_s = 1;
          break;
        case 0x28:
          type_s = 0;
          break;
        case 0x22:
          type_s = 0;
          break;
        default:
          return;
      }

      ds.reset();
      ds.select(addr);
      ds.write(0x44, 1);        // start conversion, with parasite power on at the end

      ds.reset();
      ds.select(addr);
      ds.write(0xBE);         // Read Scratchpad

      for (byte i = 0; i < 9; i++) {           // we need 9 bytes
        data[i] = ds.read();
      }

      int16_t raw = (data[1] << 8) | data[0];
      if (type_s) {
        raw = raw << 3; // 9 bit resolution default
        if (data[7] == 0x10) {
          // "count remain" gives full 12 bit resolution
          raw = (raw & 0xFFF0) + 12 - data[6];
        }
      } else {
        byte cfg = (data[4] & 0x60);
        if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
        else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
        else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
        //// default is 12 bit resolution, 750 ms conversion time
      }
      celsius = (float)raw / 16.0;
}

void re_ac()
{
  
  calcula_intervalo_Ac();
  if ( intervaloMiliSecsac <3) {
  //Aciona o rele
  if ( celsius > 24 ){
  //digitalWrite(8, HIGH);
  exibe_simbolo_cr();
  zera_intervalo_Ac();
  }
  else  if (celsius < 24) {
    //Desliga o rele
  //digitalWrite(8, LOW);
  apaga_simbolo_cr();
  zera_intervalo_Ac();
  }
  }
}

void menu_Ac()
{
  if (flagAc == 0)
  {
    calcula_intervalo();
    if (intervaloMiliSecs < 100)
      mydisplay.display_message(F("A/C"),255);
    else if (intervaloSecs >= 4)
      flagAc = 1;
  }
  else if (flagAc == 1)
  {
    calcula_intervalo();
    if (intervaloMiliSecs >= 2000)
    {
      dtostrf(celsius,4,0,texttemp);
      sprintf(textfinal, "Ti %s c", texttemp);
      mydisplay.display_message(textfinal,254);
      exibe_simbolo_colchete();
      zera_intervalo();
    }
  }
}
Muito obrigado!
cansei
:: Piquet ::
Mensagens: 319
Registrado em: Quinta-feira 06 2008f Março 2008 10:30:35 PM
Localização: São Paulo - SP
Modelo do veiculo: CORSA HATCH 1 8 FLEXPOWER
Ano de fabricação: 2004

Mensagem por cansei »

Acho que é a leitura do termômetro que ta causando isso. Deleta a chamada da função tempe_ac(); e faz um teste, vê se sem ler o termômetro o problema ainda acontece.

Supondo que isso resolveu o problema, o negócio é ler essa temperatura em intervalos maiores.
As funções que vc criou zera_intervalo_Ac() e calcula_intervalo_Ac() tão ok, então tira a chamada das funções tempe_ac(); e re_ac(); de onde elas tão e coloca elas logo abaixo da chamada da função LED_atividade(); da seguinte forma:

Código: Selecionar todos

  LED_atividade();
  
  calcula_intervalo_Ac();
  if (intervaloSecsac >= 30) {
    tempe_ac();
    re_ac();
    zera_intervalo_Ac();
  }
  
  //Calculo vel e vel max
  VelKmPorHBKG = (DistVelCountBKG/16) * fatorVel * 3.6;  
  
A função re_ac(); vc vai mudar e deixar da seguinte forma:

Código: Selecionar todos

void re_ac()
{
  //Aciona o rele
  if ( celsius > 24 ){
  //digitalWrite(8, HIGH);
  exibe_simbolo_cr();
  }
  else  if (celsius < 24) {
    //Desliga o rele
  //digitalWrite(8, LOW);
  apaga_simbolo_cr();
  }
}
Faz um teste e veja se assim resolveu.
ChavesHe
:: Super ::
Mensagens: 54
Registrado em: Sexta-feira 29 2016f Janeiro 2016 10:49:16 AM
Localização: Osasco - SP
Modelo do veiculo: CORSA HATCH PREMIUM 1.4 ECONOFLEX
Ano de fabricação: 2009

Mensagem por ChavesHe »

cansei escreveu:Acho que é a leitura do termômetro que ta causando isso. Deleta a chamada da função tempe_ac(); e faz um teste, vê se sem ler o termômetro o problema ainda acontece.
Na verdade o bug era na hora de ligar e desligar o A\C, estava rodando com a leitura do termômetro sem problema, mas na hora que chamava a função de ligar e desligar ai dava o erro.

cansei escreveu: Supondo que isso resolveu o problema, o negócio é ler essa temperatura em intervalos maiores.
As funções que vc criou zera_intervalo_Ac() e calcula_intervalo_Ac() tão ok, então tira a chamada das funções tempe_ac(); e re_ac(); de onde elas tão e coloca elas logo abaixo da chamada da função LED_atividade(); da seguinte forma:

Código: Selecionar todos

  LED_atividade();
  
  calcula_intervalo_Ac();
  if (intervaloSecsac >= 30) {
    tempe_ac();
    re_ac();
    zera_intervalo_Ac();
  }
  
  //Calculo vel e vel max
  VelKmPorHBKG = (DistVelCountBKG/16) * fatorVel * 3.6;  
  
A função re_ac(); vc vai mudar e deixar da seguinte forma:

Código: Selecionar todos

void re_ac()
{
  //Aciona o rele
  if ( celsius > 24 ){
  //digitalWrite(8, HIGH);
  exibe_simbolo_cr();
  }
  else  if (celsius < 24) {
    //Desliga o rele
  //digitalWrite(8, LOW);
  apaga_simbolo_cr();
  }
}
Faz um teste e veja se assim resolveu.
Problema resolvido =D

Apenas uma duvida, eu conseguira fazer a mudança de temperatura do acionamento apertando os botões, pensei em algo assim:

- Apertando o botão do pino 11 diminuiria a temperatura.
- Apertando os dois botões aumentaria a temperatura.

Já criei um sub item (apertando o botão do pino 11) e uma variável para a temperatura, mas o lance dos botões estou apanhando um pouco.
cansei
:: Piquet ::
Mensagens: 319
Registrado em: Quinta-feira 06 2008f Março 2008 10:30:35 PM
Localização: São Paulo - SP
Modelo do veiculo: CORSA HATCH 1 8 FLEXPOWER
Ano de fabricação: 2004

Mensagem por cansei »

ChavesHe escreveu:Problema resolvido =D

Apenas uma duvida, eu conseguira fazer a mudança de temperatura do acionamento apertando os botões, pensei em algo assim:

- Apertando o botão do pino 11 diminuiria a temperatura.
- Apertando os dois botões aumentaria a temperatura.

Já criei um sub item (apertando o botão do pino 11) e uma variável para a temperatura, mas o lance dos botões estou apanhando um pouco.
Então, bolar essa parte é meio chatinho mesmo... apertar os dois botões juntos é uma opção mas vc precisa levar em conta que nunca vai conseguir apertar os dois botões ao mesmo tempo, sempre vai ter uns milissegundos de diferença entre um botão e outro, aí vc precisa fazer um código que leve isso em conta.

Quando eu tava pensando em fazer isso no meu carro (pro caso de um dia eu conseguir instalar o A/C), eu pensei em fazer o menu de temperatura interna agir como menu de opções, onde apertando o botão R eu entraria nele e passaria a usar o botão R pra aumentar a temperatura e o S pra reduzir, até imaginei como ficaria mostrado no TID:

Código: Selecionar todos

"<S  25  R>" ou "-S  25  R+"
Aí pra sair do menu eu apertaria e seguraria um dos botões por alguns segundos mas nesse caso eu teria que fazer um código que diferenciasse o aperto rápido do aperto longo do botão (eu até tenho código pra isso mas é chatinho...)

Outra opção mais simples é fazer tipo menu opções tb mas quando vc entra no menu o botão R serve só pra aumentar a temperatura, tipo assim:

Código: Selecionar todos

"    25  R>"
aí qdo vc aperta o botão S vc passa a usar o botão R pra reduzir a temperatura:

Código: Selecionar todos

"<R  25    "
e se apertar o S mais uma vez vc sai do menu:

Código: Selecionar todos

"<     Sair"
Pensando bem essa última sugestão parece ser a melhor, é a mais simples e viável de fazer...
Ikaro
:: Moderador ::
Mensagens: 2837
Registrado em: Domingo 28 2004f Novembro 2004 12:58:12 AM
Localização: São Paulo - SP
Modelo do veiculo: CORSA WAGON GLS 1.6 MPFI
Ano de fabricação: 2001

Mensagem por Ikaro »

Cansei,

Peguei um kit com o Guilherme, já instalei e já fiz uma calibração para acertar a distância.

Está praticamente tudo funcionando, menos a velocidade média total (VM). Ela sempre fica marcando 0 km/h

Tem noção do que pode estar acontecendo?
cansei
:: Piquet ::
Mensagens: 319
Registrado em: Quinta-feira 06 2008f Março 2008 10:30:35 PM
Localização: São Paulo - SP
Modelo do veiculo: CORSA HATCH 1 8 FLEXPOWER
Ano de fabricação: 2004

Mensagem por cansei »

Hum... acho que encontrei o problema mas preciso simular pra ter certeza.

Me faz um favor, me diz quanto ta marcando a distância total (DT) e o tempo total (TT)
Ikaro
:: Moderador ::
Mensagens: 2837
Registrado em: Domingo 28 2004f Novembro 2004 12:58:12 AM
Localização: São Paulo - SP
Modelo do veiculo: CORSA WAGON GLS 1.6 MPFI
Ano de fabricação: 2001

Mensagem por Ikaro »

cansei escreveu:Hum... acho que encontrei o problema mas preciso simular pra ter certeza.

Me faz um favor, me diz quanto ta marcando a distância total (DT) e o tempo total (TT)
Opa!

Nesse exato momento está 5.3km na DT e 0:21:00 no TT.

Fiz um reset há pouco tempo, como dá pra perceber.
Responder
  • Tópicos Semelhantes
    Respostas
    Exibições
    Última mensagem

Voltar para “Tutoriais”