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

Faça você mesmo as instalações e manutenções em o seu Corsa.
Responder
AlexSGP
:: Wind ::
Mensagens: 23
https://www.facebook.com/lodz.meble.kuchenne/
Registrado em: Quarta-feira 23 2016f Março 2016 09:25:19 PM
Localização: São João de Meriti - RJ
Modelo do veiculo: CORSA (DEMAIS)
Ano de fabricação: N/I

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

Mensagem por AlexSGP »

Cansei,

Sobre a memoria externa eu estava falando sobre a EEPROM externa, a própria ATMEL fabrica uma de 256k (AT24C256) custa uns R$ 9,00 com ciclo igual do arduino 100k (100.000 R/W) e 40 anos de duração dos dados gravado e a concorrente Microhip 24LC256 custa R$ 8,50 com ciclo de 1000k (1.000.000) e 200 anos de duração.

AT24C256
Imagem

Mas vamos buscando possibilidades, no projeto que estou tocando em paralelo esse display de 5" tem 1mb de memoria que posso enviar e guardar qualquer coisa e outra vantagem é um relógio real-time que eu posso enviar o comando pelo arduino e dar o start/stop nele e o arduino não precisa se ocupar com o cronometro. UFAAA!!!

VLW
gui_srs
:: Super ::
Mensagens: 81
Registrado em: Quinta-feira 19 2016f Maio 2016 05:31:31 PM
Localização: Santa Rita do Sapucaí - MG
Modelo do veiculo: MONTANA SPORT 1.8 MPFI FLEXPOWER
Ano de fabricação: 2007
Contato:

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

Mensagem por gui_srs »

AlexSGP escreveu: Gravar em cada X segundos causa um problema de lentidão, pois o arduino para gravar na EEPROM ele perde segundos preciosos que seriam para enviar os dados para o display e fazer outros cálculos. (Cansei me corrija se estiver errado), tem a possibilidade de incluir mais um componente EEPROM (memoria externa), existem EEPROM com comunicação I2c o que ficaria bem mais tranquilo para o arduino, pois ele só enviaria para a memoria externa via I2C o que ela tem que gravar e todas as vezes que o arduino for ligado ele consulta via I2C a memoria externa e atualiza as variáveis com os dados gravados na mesma.

Alimentação extra vc pode utilizar um rele temporizador para manter o arduino ligado por X segundos/minutos apos a chave do veiculo desligado, tempo suficiente para guardar os dados na EEPROM. (há outras formas)
Então Alex, foi algo que passou pela minha cabeça mas não sabia da viabilidade por causa desses pontos aí.
Agora acho que a melhor forma de se fazer isso é mesmo utilizando um Timer. Parece que nem é complicado. Meu pai acho que vai me ajudar nisso.
cansei escreveu: Deixar ela mais devagar, pra da tempo pro seu TID processar todos os comandos, aí não fica a sensação de engasgo. Faz um teste com esse código abaixo:
Cansei,
Vou tentar modificar meu programa com esse código e posto os resultados em breve.

cansei escreveu: Eu cheguei a pensar nessa alternativa antes de montar a função que tem hoje, o problema dela é que a memória do Arduino não aguenta que fiquem gravando coisas nela indefinidamente. Ela aguenta cerca de 100 mil ciclos de gravação antes de começar a falhar, isso até parece um número alto só que se a gente fica gravando toda hora rapidinho a gente chega nesse número.
Sim, como eu disse ali encima. Foi algo que passou pela cabeça, mas eu imaginava que poderia ter essas limitações (ciclos da memória/lentidão do processamento).
robsonlobinho escreveu:Sera que não teria como colocar alguma alimentação extra que depois de 10 seg por exemplo desligue,um capacitor por exemplo, posso estar falando besteira rs
Sim e acho que a melhor opção é um timer mesmo.

cansei escreveu: Eu tb acho que o caminho é por aí, um tempo atrás cheguei a ver um relé que fazia isso só que não fui muito atrás dele pq eu queria ver se tinha algo menor e mais simples. Se tiver mais informações posta aí.
Pois é, conversando com meu pai e dando uma rápida pesquisada na internet, vi que dá pra fazer um Timer utilizando o CI LM555, que é barato, fácil de achar, e o circuito é simples. Tem até varios e varios videos no youtube de tutorial para se fazer isso. Esse timer vc pode ajustar de segundos a minutos ou até horas se não me engano. Vou tentar pegar um tempo amanhã para a gente mexer com isso e fazer alguns testes. Qual seria um tempo ideal para o Timer? Uns 15segs seria suficiente?
Meu pai trabalha com desenvolvimento e também é 'layoutista' então a parte do layout da placa já temos quem faça, rsrs.
E como será necessário o Timer, acho que já irei incluir ele no layout da placa, então já teremos tudo integrado na mesma placa. Se tudo der certo, resolveremos o problema do Astra e até de outros veículos que tenham o pós chave funcionando da mesma maneira.

Acho que vou tirar o dia amanhã pra mexer com isso.
unBond
:: Wind ::
Mensagens: 7
Registrado em: Segunda-feira 23 2016f Maio 2016 11:04:09 AM
Localização: Brasília - DF
Modelo do veiculo: CORSA HATCH SS 1.8 FLEXPOWER
Ano de fabricação: 2006

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

Mensagem por unBond »

gui_srs escreveu:Estive conversando com meu pai e pensamos tambem na possibilidade de se utilizar um timer para alimentar o Arduino. Parece que não é dificil de fazer. Após desligar o pós chave ele manteria o Arduino alimentado por cerca de alguns segundos ou o tempo que for necessário e desativa em seguida. Acho uma solução bem interessante também.
Também pensei na mesma coisa, tavez alguns capacitores com maior capacitância antes da entrada afim de segurar alguns segundos.
gui_srs escreveu:
AlexSGP escreveu:Como meu MID esta com o display danificado não posso ajudar na verificação do código :(... Mas não seria a frequência de atualização do display? Já vi um problema sobre o Arduíno na hora que alimentado pela bateria do veiculo ter alguns problemas de ruídos, vou verificar aqui o que eu li e a solução.

Alex,

Eu infelizmente não manjo da parte de programação, rsrs.
Só tenho um pouco de noção da parte eletronica da coisa. E imaginei mesmo que poderia ser algo relacionado a ruido.
Meu pai é técnico em eletronica e me disse que em alguns casos é necessário ter um capacitor na entrada e na saída do regulador de voltagem pois ele pode oscilar e gerar problemas na alimentação.
Hoje pela manhã medi a tensão na entrada do Arduino e ela está realmente estável, fixa em 7,82v (Estou usando um regulador 7808). De qualquer forma resolvi colocar os capacitores conforme recomenda no datasheet do 7808. Coloquei dois capacitores de 4,7uF, um na entrada e outro na saída. E nada, não fez nenhuma diferença.

Pensei também nessa questão de taxa de atualização do display viu... Mas sei lá.
Vc chegou a dar uma olhada no video que eu gravei?

Vamos esperar também uma posição do Cansei, talvez ele saiba.
Seu pai pensou certo, é necessário mesmo os capacitores (pelo menos) pra filtrar o ruído.
Astra SS
gui_srs
:: Super ::
Mensagens: 81
Registrado em: Quinta-feira 19 2016f Maio 2016 05:31:31 PM
Localização: Santa Rita do Sapucaí - MG
Modelo do veiculo: MONTANA SPORT 1.8 MPFI FLEXPOWER
Ano de fabricação: 2007
Contato:

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

Mensagem por gui_srs »

E aí turma!

Cansei,
Resolvi o problema da animação do Bem-vindo. Usei o código que vc passou com os atrasos, ajustei ele para 60 (melhor resultado) e retirei os simbolos debaixo. Só de ter colocado o atraso melhorou uns 80% o movimento, mas ainda dava umas travadas. Mas a coisa ficou legal mesmo quando eu removi os simbolos, acho que o envio de dados ficou bem mais leve agora e a animação tá correndo sem problemas.

Segue código do jeito que eu deixei:

Código: Selecionar todos

void texto_boas_vindas()
{
  byte i;
  zera_intervalo();
  for (i=0;i<11;i++)
  {
    mydisplay.display_message(F("           Bem-vindo!"),20);
    //mydisplay.display_symbol(i);
    atraso(60);
    coisas_a_fazer_sempre();
  }
  mydisplay.clear_message();
  coisas_a_fazer_sempre();
  mydisplay.display_message(F("Bem-vindo!"),20);
  while(intervaloMiliSecs <= 5000)
  {
    calcula_intervalo();
    coisas_a_fazer_sempre();
  }
  for (i=11;i>0;i--)
  {
    mydisplay.display_message(F("Bem-vindo!           "),255);
    //mydisplay.clear_symbol(i);
    atraso(60);
    coisas_a_fazer_sempre();
  }
}
Acho que essa é a solução para esses TID mais antigos, que ao meu ver são mais lentos para processar os dados recebidos. Como não sabemos qual TID a galera ta usando, acho legal deixar o código assim para funcionar bem em qualquer situação.

Segue vídeo da animação rodando:
https://youtu.be/Hy9YeesnVJ8

Por enquanto é isso.
Abraço pessoal.
AlexSGP
:: Wind ::
Mensagens: 23
Registrado em: Quarta-feira 23 2016f Março 2016 09:25:19 PM
Localização: São João de Meriti - RJ
Modelo do veiculo: CORSA (DEMAIS)
Ano de fabricação: N/I

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

Mensagem por AlexSGP »

E ai galera!

Ontem em busca de comunicar o Arduíno com o radio original, verifiquei algumas coisa referente a forma que o TID/MID guarda as informações com o veiculo desligado e com a chave fora do comutador.

Na verdade ele não desliga, deixei o Arduíno monitorando o SDA, SCL e MRQ durante 1h e meia (pausa para o almoço) com o carro desligado e trancado e o MRQ do MID se manteve ativo durante todo esse tempo e também a monitoração da porta AA do MID ficou ativa, por isso que quando desligamos a bateria ele "ZERA" o MID/TID, na verdade ele não guarda as informações na EEPROM ele simplesmente não desliga mantendo os dados ativo.

Depois que desliga a chave e tira a chave do comutador o MID (no meu caso) fica com o display ligado durante 30 segundos, eu imediatamente acreditei que era este momento que ele guardava os dados na EEPROM e depois desligava, mas acabei descobrindo que ele não desliga, apagas as lampadas e desliga o display, não sei se ele entra em modo standbay, o arduino tem esta possibilidade, onde você o coloca em standby e ele é "acordado" somente pela porta digital D2 ou D3, de repente poderemos fazer algo assim, colocando o pos-chave e o AA do radio nestas portas, e se os dois forem desligado o Arduíno entra em standby mantendo somente as variáveis, tenho que ler mais sobre sleep watchdog do arduino, pelo que sei é possível manter um pequeno código nesta situação, assim ele ficaria preso em um loop (função) somente guardando as variaveis e assim que o D2 ou D3 for energizado ele retorna ao código completo.

Vamos ver!
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

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

Mensagem por cansei »

gui_srs escreveu:Pois é, conversando com meu pai e dando uma rápida pesquisada na internet, vi que dá pra fazer um Timer utilizando o CI LM555, que é barato, fácil de achar, e o circuito é simples. Tem até varios e varios videos no youtube de tutorial para se fazer isso. Esse timer vc pode ajustar de segundos a minutos ou até horas se não me engano. Vou tentar pegar um tempo amanhã para a gente mexer com isso e fazer alguns testes. Qual seria um tempo ideal para o Timer? Uns 15segs seria suficiente?
Sei, já usei ele na faculdade... na época tinha achado ele meio impreciso mas aqui não é um caso que precisamos de grande precisão.
A gravação atualmente acontece após 3 segundos do motor ser desligado, e o símbolo do EON apaga após 6 segundos. Vc pode deixar uns 10 segundos.
AlexSGP escreveu:Na verdade ele não desliga (...) por isso que quando desligamos a bateria ele "ZERA" o MID/TID, na verdade ele não guarda as informações na EEPROM ele simplesmente não desliga mantendo os dados ativo.
Isso não me causa muita surpresa justamente por causa da existência do fio de 12V permanente. Eles não ficam 100% desligados pq eles precisam continuar contando a hora e a data. E no caso do MID, já que essa alimentação permanente já ta ali, os caras devem ter projetado deixar as informações de consumo na própria memória RAM do processadorzinho que faz os cálculos.
AlexSGP escreveu:não sei se ele entra em modo standbay, o arduino tem esta possibilidade, onde você o coloca em standby e ele é "acordado" somente pela porta digital D2 ou D3, de repente poderemos fazer algo assim
Ter ele tem mas se vc ver o começo do texto http://playground.arduino.cc/Learning/ArduinoSleepCode vai ver que eles falam que não existe grande benefício em fazer isso:

Putting these boards to sleep will cut a few mA off the total power consumption however it will still be high.

Então em nome da simplicidade, o mais fácil seria deixar logo o Arduino alimentado com o 12V permanente pq aí não precisa mexer no código. Eu particularmente sou contra ir pra esse lado por dois motivos, o primeiro é que eu percebi que o Arduino consegue retroalimentar o TID (admito que não fui atrás pra ver se da pra inibir isso), e o outro motivo é meio que pessoal pois o meu corsa hoje não é mais o meu carro principal e desde que perdi meu emprego o carro tem ficado mais tempo parado, então o consumo da bateria com o carro desligado é um fator muito importante pra mim.

Mas assim, cada situação pode exigir medidas diferentes, não tem certo e errado aqui.
AlexSGP
:: Wind ::
Mensagens: 23
Registrado em: Quarta-feira 23 2016f Março 2016 09:25:19 PM
Localização: São João de Meriti - RJ
Modelo do veiculo: CORSA (DEMAIS)
Ano de fabricação: N/I

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

Mensagem por AlexSGP »

Cansei,

Realmente eu tinha visto que no nosso caso não é vantajoso, somente no caso de projeto que usa alimentação por bateria e/ou paineis solar seria uma boa para economizar a batera, mas é um recurso interessante, na verdade o watchdog deixa o arduino no máximo 8s em sleep e se não houver variação no D2/D3 ele volta ao estado sleep, mas muito pouco iria nos ajudar na economia de da bateria.

VLW!
gui_srs
:: Super ::
Mensagens: 81
Registrado em: Quinta-feira 19 2016f Maio 2016 05:31:31 PM
Localização: Santa Rita do Sapucaí - MG
Modelo do veiculo: MONTANA SPORT 1.8 MPFI FLEXPOWER
Ano de fabricação: 2007
Contato:

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

Mensagem por gui_srs »

Boa noite galera!

Final de semana até que rendeu algum progresso. Vamos lá:

Como tinha dito ontem, consegui resolver o problema com o "engasgo" das animações no meu TID. Agora a animação de Boas Vindas tá rodando legal, sem enroscos. Valeu pela dica, Cansei.

Bom, hoje resolvi ficar o dia todo por conta disso e aproveitei pra instalar a chave do limpador, que foi totalmente plug and play, só precisei fazer o chicote dos botões para levar até o Arduino. Tudo OK.

E o mais importante, fiz um circuito de timer usando o LM555 e até onde testei deu tudo certo.
Montei na gambiarra mesmo na protoboard só pra testar. É um circuto que ativa quando o pós-chave é ligado, alimenta normal a saída e, assim que o pós chave é desligado, o temporizador começa a contar até desligar o circuito do Arduino por completo. Há um relé na saída e um 12V constante que deve ser usado para alimentar o mesmo e a carga até que a contagem seja totalmente finalizada e o relé desarmado. Depois disso o consumo é zero.
Foi um circuito que encontrei na internet, muito simples de fazer, só precisei fazer o ajuste do tempo alterando os valores dos componentes R1 e C1, que devem ser escolhidos de acordo com o tempo que se deseja do timer. No meu caso, utilizei um capacitor de 100uF e um resistor de 100K Ohms, e deu um tempo cronometrado de 11 segundos para desligar o circuito. Testei no carro, e boa, é tempo suficiente para o Arduino detectar o motor desligado e salvar as informações na sua memória.

Quem quiser dar uma olhada e até mesmo testar, segue link do esquema:
http://forum.allaboutcircuits.com/proxy ... f91d5c4d6b

Agora que tudo funcionou acho que essa semana iremos fazer o layout da placa final, já com o timer integrado.

Bom, por enquanto é isso
Abraços!
gui_srs
:: Super ::
Mensagens: 81
Registrado em: Quinta-feira 19 2016f Maio 2016 05:31:31 PM
Localização: Santa Rita do Sapucaí - MG
Modelo do veiculo: MONTANA SPORT 1.8 MPFI FLEXPOWER
Ano de fabricação: 2007
Contato:

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

Mensagem por gui_srs »

Acho que o link não saiu certo ali encima. Segue novamente:

http://home.cogeco.ca/~rpaisley4/LM555P ... Delay1.GIF
AlexSGP
:: Wind ::
Mensagens: 23
Registrado em: Quarta-feira 23 2016f Março 2016 09:25:19 PM
Localização: São João de Meriti - RJ
Modelo do veiculo: CORSA (DEMAIS)
Ano de fabricação: N/I

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

Mensagem por AlexSGP »

Salve galera!!

Hoje em fim chegou o display, infelizmente ele chegou no meu ultimo dia de ferias... :(

Mas hoje correndo consegui fazer uns testes e confirmar se as medidas do protótipo da moldura que ira fixar o display ficaram corretas, segue abaixo uma previa.

Imagem

Não ficou como esperava.
Isso é só Para confirmar se o tamanho estava correto, levei em uma empresa para fazer corte eletrônico de um acrílico mais me pediram 2 dias .....

Imagem Imagem

No local: As medidas ficaram como esperado.
Imagem Imagem

Andamento:

Comprei a moldura (acabamento) original pelo ML e estou esperando chegar, pelo que vi preciso cortar alguns centímetros da parte de trás da moldura já que o display ficou mais para frente (adiantado) do que o original, e como a moldura vai aumentando quanto mais para frente, vai ficar bom. Se por algum motivo não ficar perfeito vou mandar imprimir também a moldura dianteira de uma forma que o display seja prezo a ela e encaixe no local original sem falhas. (ninguém disse que ia ser fácil).

O maior problema que estou enfrento no momento é desenhar a moldura em 3D porque não manjo nada de CAD e outros, no site do fabricante do display consegui o CAD de uma moldura para o mesmo, mas tem que ser modificado para as medidas esterna do meu esboço para caber, e agora voltando a trabalhar terei tempo para continuar no código fonte do Arduíno mas sem tempo para a parte física do projeto, pois no meu trabalho eu viajo muito quase não fico no RJ.

Abaixo um vídeo que fiz no 1º teste la no carro.

https://youtu.be/CW3Dd_D28I0

VLW, galera... como é de pratica... Duvidas/Sugestões/Criticas sempre bem vindas.

Obrigado!
Responder
  • Tópicos Semelhantes
    Respostas
    Exibições
    Última mensagem

Voltar para “Tutoriais”

Clube do Corsa - Fórum do Chevrolet Corsa