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

Faça você mesmo as instalações e manutenções em o seu Corsa.

Moderadores: Eduardo Lirani, WJUNIOR, MatheusM, Organizadores do Fórum



ChavesHe
:: Wind ::
Mensagens: 45
Registrado em: Sexta-feira 29th 2016f Janeiro 2016 09:49:16 AM
Localização: Osasco - SP
Modelo do veiculo: CORSA HATCH PREMIUM 1.4 ECONOFLEX
Ano de fabricação: 2009

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

Mensagempor ChavesHe » Terça-feira 12th 2017f Setembro 2017 10:10:43 PM

ChavesHe escreveu:Canse,

Show de bola!

O rele aciona e desliga mas o simbolo cr não some da tela kkkk mas deve ser alguma coisa q eu fiz errado, vou olhar com calma e te falo.

Como pedido segue a chamada das funções.

Código: Selecionar todos

void coisas_a_fazer_sempre(bool extras)
{
  if (extras == 1)
  {
    /*
      Colocar dentro deste if a chamada de funções extras ao computador de bordo
      que vocês venham a desenvolver que precisem rodar em background e que em
      algum momento use a função "atraso".
     
      Dentro dessas funções extras que vocês criarem, use a função atraso com o
      segundo parâmetro igual a 0, da seguinte forma "atraso(TempoEmMiliSegundos,0);"
     
      Esta ação é obrigatória para evitar um loop infinito.
     
      Caso a função extra não use a função "atraso" mas precise trabalhar em background
      (independente do menu selecionado no TID), faça a chamada para ela de fora
      deste if.
     
      Caso a função extra não precise rodar em background, pode chamá-la de dentro
      do "switch (IndiceMenu)" criando um menu específico para sua função.
    */
   
   

  } 
  /* Coloque logo abaixo a chamada de funções extras que não vão usar a função "atraso"
     mas que precisam trabalhar em background */
 // LED_atividade();
  tempe_ac();
  re_ac();

 
  //Leitura do min e max da bateria
  int sensorValue = analogRead(A0);
  float voltage = sensorValue * (5.0 / 1023.0);
  vin = voltage / (R2/(R1+R2));
  if (vin < vmin)
  {
    vmin = vin;
  }
  if (vin > vmax)
  {
    vmax = vin;
  }


Achei o problema do cr.


Obs. Não sei como edita o post.





fialho
:: Wind ::
Mensagens: 9
Registrado em: Quinta-feira 30th 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

Mensagempor fialho » Quarta-feira 13th 2017f Setembro 2017 01:53:31 AM

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: 251
Registrado em: Quinta-feira 06th 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

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

Mensagempor cansei » Quarta-feira 13th 2017f Setembro 2017 10:48:39 AM

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: 20
Registrado em: Quarta-feira 01st 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

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

Mensagempor thiiagoarts » Segunda-feira 18th 2017f Setembro 2017 05:49:17 PM

Salve galera vi Aqui que teve novidades show de bola

Enviado de meu XT1563 usando Tapatalk





ChavesHe
:: Wind ::
Mensagens: 45
Registrado em: Sexta-feira 29th 2016f Janeiro 2016 09:49:16 AM
Localização: Osasco - SP
Modelo do veiculo: CORSA HATCH PREMIUM 1.4 ECONOFLEX
Ano de fabricação: 2009

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

Mensagempor ChavesHe » Sexta-feira 22nd 2017f Setembro 2017 11:17:51 PM

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: 251
Registrado em: Quinta-feira 06th 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

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

Mensagempor cansei » Sábado 23rd 2017f Setembro 2017 12:56:21 PM

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
:: Wind ::
Mensagens: 45
Registrado em: Sexta-feira 29th 2016f Janeiro 2016 09:49:16 AM
Localização: Osasco - SP
Modelo do veiculo: CORSA HATCH PREMIUM 1.4 ECONOFLEX
Ano de fabricação: 2009

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

Mensagempor ChavesHe » Segunda-feira 25th 2017f Setembro 2017 11:30:48 PM

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: 251
Registrado em: Quinta-feira 06th 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

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

Mensagempor cansei » Quarta-feira 27th 2017f Setembro 2017 11:08:47 AM

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: 2678
Registrado em: Sábado 27th 2004f Novembro 2004 11:58:12 PM
Localização: São Paulo - SP
Modelo do veiculo: CORSA WAGON GLS 1.6 MPFI
Ano de fabricação: 2001

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

Mensagempor Ikaro » Terça-feira 03rd 2017f Outubro 2017 08:21:29 AM

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: 251
Registrado em: Quinta-feira 06th 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

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

Mensagempor cansei » Terça-feira 03rd 2017f Outubro 2017 12:01:22 PM

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)








Voltar para “Tutoriais”

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes

Publicidade