PIC + MID
Se você chegou até aqui, esta procurando algo sobre o display do vectra, certo? 🙂
Bom, essa página possui alguma informações sobre meus projetos envolvendo o display original do Vectra.
Comecei e pesquisar sobre este display quando comprei o meu Vectra e acabei instalando o meu som Pioneer. Quando você retira o som original, parte do computador de bordo fica em branco, sem texto algum. Este pedaço do display é utilizado para exibir informações sobre a estação e o volume do rádio, uma vez que os aparelhos originais não possuem display frontal.
Cansado de ver o meu display em branco, resolvi pesquisar alguma maneira de ‘escrever’ neste display. Quando comecei a pesquisar, eu já tinha um projeto em andamento. Este projeto tem como principais funções:
- Exibir a temperatura do motor e temperatura interna do veiculo
- Injectar gasolina (partida frio) automaticament, dependendo da temperatura do motor e temp. ambiente
- Abrir/fechar travas eletricas quando a ignição é ligada/desligada
- Interface entre controles do volante e aparelhos Pioneer/Sony
- Sensor de estacionamento com medidor de distancia
- Hallmeter digital
- Velocimetro digital
- ‘Acelerometro’ (mede quanto % você esta pressionando o acelerador)
A saida de informações deste ‘computador’ será o display original do Vectra e os controles originais do volante irão ser utilizados para mudar o display/configurar. Caso não tenha os botoes de controle no volante original, será possivel utilizar botoes externos, pequenos e discretos
Massss….como funciona?
Bom, a maior parte das informações sobre o display eu encontrei no site de nossos amigos holandeses. O endereço deste site é http://www.eelkevisser.nl e possui muitas informações sobre display original de carros. Neste site, Eelke Visser conseguiu ‘decodificar’ o protocolo de comunicação do display e documentou este mesmo. Em seu site, ele publica o método como conseguiu isto e tambem disponibiliza arquivos de exemplo.
O problema é que o PIC utilizado por Eelke não é mais comercializado e os programas estao escritos em Assemble, o que dificulta para quem é iniciante como eu. O que eu fiz foi transportar o código escrito em Assembler para linguagem C e para o PIC16F877A. Tambem estou ‘decifrando’ quais são os BIT’s correspondentes aos códigos disponiveis em nossos displays (aqueles simbolos ao redor do display).
Vale apena lembrar que este protocolo tambem é válido para os displays de corsa, meriva e outros.
O protocolo de comunicação entre os dispositivos e o display é o I2C, criado pela Philips. Você pode baixar a especificação deste protocolo clicando aqui. A unica diferença no display do vectra é que este possui uma linha a+ de controle, chamada MR. Abaixo segue a sequencia de comunicação com o display:
- Todas as linhas em estado idle (nivel lógico ‘alto’) (1)
- MRQ é setado como nivel lógico ‘baixo’ (0) por um curto periodo de tempo e é alterado para ‘alto’ (1) novamente
- Envia o “I2C Start”
- Envia o byte com o endereço do display, 0x9B. (Conforme protocolo I2C)
- MRQ é setado como ‘baixo’ (0)
- Envia os 3 primeiros bytes que são para controle dos simbolos do display
- Envia os proximos 10 bytes correspondentes a cada letra do display
- MRQ é setado como alto (1)
- Envia “I2C Stop”
- Volta para o estado idle
Todos os bytes enviados devem conter 7 bits + bit de paridade, tanto para os bytes de simbolos como para os bytes de informações.
No caso das informações, os caracteres são os mesmos da tabela ASCII seguidos pelo bit de paridade. O bit de paridade é um bit que informa se o número de bits ‘1’ é impar ou par, isto é, se o número de bits ‘1’ for impar, o bit de paridade é ‘0’, caso contrário o bit de paridade é ‘1’.
Ex: A = ‘1000001’ = ‘10000011’ = 0x83
Este é o esquema que utilizei em meus testes com o display:
Este é um pequeno video demonstrando que é possivel escrever praticamente qualquer coisa no display Vectra 😀
http://www.youtube.com/watch?gl=BR&hl=pt&v=PHUi06QI4pM
06/09/2007
Após alguns cálculos, acredito que vai ser fácil montar o Hallmeter para este projeto. Sabendo-se que o 877A possui 8 canais A/D de 10 bits, temos como valor máximo de leitura 1023. A voltagem de referencia padrão que irei utilizar é 5v, sendo assim temos:
5/1023=> ~0,0048875855327468230694037145650049
Esse é o valor do ‘passo’. Na maioria dos casos a sonda lambda envia uma tensão de 0 a 1v (exceto em carros preparados, que pode chegar até 2v), sendo assim podemos dividir 1 pelo valor de cada passo e teremos o número de passos do nosso Hallmeter.
1/0,0048875855327468230694037145650049 => ~204,60
Isto quer dizer que quando o A/D ler ‘0’ a mistura será pobre (normalmente motor desligado) e quando ele ler 204,60 a mistura será rica (100%). A taxa de leitura do nosso Hallmeter será de 0,5% em 0,5% aproximadamente. Bem melhor que os 10 leds, né? 😛
18/09/2007
Tabela de simbolos do display de 10 caracteres:
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Byte1 | , | RDS | TP | ? | EON | AS | [ ] | PARIDADE |
Byte2 | DISC IN | Dolby | Dolby | Cr | Cps | N/A | ? | PARIDADE |
Byte3 | TMC | TRACK | RDM | PROG | DISC | N/A | N/A | PARIDADE |
17/02/2008
Bom, como continuo sem tempo para me dedicar ao projeto, estou disponibilizando o código fonte do PIC e as ultimas atualizações do mesmo. Foi implementado um timer, este será responsavel pela atualização do display e tambem será utilizado em algumas funções internas do PIC. Caso haja alguma dúvida, é só entrar em contato.
Lembrando que toda alteração efetuada neste código deve ser informada.
Clique aqui para baixar o arquivo rar com o código fonte.
Tambem adicionei um icone de doação na lateral de todas as páginas. Fazendo sua doação, você estara contribuindo com o projeto e acelerando o desenvolvimento do mesmo.
24/03/2008
Finalmente estou conseguindo algum resultado na questao do RPM. Após um dia inteiro de testes, consegui fazer funcionar o RPM digital! Ou quase…
Abaixo você pode conferir o video do primeiro teste funcional do RPM. O valor em exibição não é o valor real, preciso acertar alguns cálculos no programa do PIC mas a leitura dos pulsos esta funcionando perfeitamente.
O que eu preciso agora e imploro pela ajuda de quem souber é como fazer a leitura do sensor de velocidade. Semana que vem estarei fazendo alguns testes, mas por favor, qualquer informação é util!! Por favor enviar para jmaurin ARROBA jonis.com.br
27/03/2008
Novidades! O Velocimetro digital ja esta funcionando!
Depois de alguns testes, consegui fazer o velocimetro digital funcionar perfeitamente. O sinal vem do cabo azul e vermelho, direto do painel do carro. Este sinal é uma onda quadrada, com seu pico em 12v. A cada km por hora sao gerados 4 pulsos e a minha medição é feita de meio em meio segundo. Com essas informações, a formula final ficou assim:
Velocidade = (*2)/4
Simples não? 🙂
Feito isto e com o RPM já funcionando, agora só falta ler o sensor TPS (throttle position sensor, ou posição do acelerador), que eu já sei como, e arrumar um motor de passo confiavel…pronto, terei todos os itens do meu piloto automatico! Dai só falta a parte da programação, que nao é dificil.
No player acima você pode conferir o video com o teste do RPM e tambem dois videos mostrando a velocidade digital no computador de bordo do Vectra.
30/03/2008
Acabo de disponibilizar um video com o novo recurso do projeto, calibragem das variaveis internas. Quando o sistema é iniciado pela primeira vez, aparece a mensagem “Calibragem” no display. Após 2 segundos, aparece a mensagem “>” indicando que o usuario deve pressionar e segurar a tecla “>”. Passados mais dois segundos, o sistema começa a coletar os dados e apresenta a seguinte mensagem por 5 segundos: “Aguarde…”. Depois de coletar as informações e salvar na memoria, o sistema mostra a mensagem “OK” e faz o mesmo procedimento para todos os outros botões.
Após calibrar os botões, o sistema apresenta a seguinte mensagem: “ACEL. MIN.”. Neste momento, o usuario deve aguardar a mensagem “OK” sem pressionar nenhum botão ou o acelerador. Após receber a mensagem de OK, o sistema irá apresentar a seguinte mensagem: “ACEL. MAX.” e o usuario deverá pisar no acelerador o máximo que puder (faça isso com a ignição ligada e o motor desligado :)). Depois de receber a mensagem de OK, o sistema esta pronto para funcionar.
No menu de aceleração, o sistema irá apresentar a mensagem “Acel: 23%” indicando que o usuario esta acelerando ‘23%’ do máximo que ele pode acelerar. Não sei se esta informação é muito útil para o usuario, mas com certeza é de extrema importancia para o (futuro) sistema de piloto automatico.
Por enquanto é isso.
08/07/2008
Esta pronta a versão final da placa. Bom, pelo menos até que eu consiga um CD-Player com Wired-control para poder adicionar os recursos
de controle de som. Na figura abaixo, podemos ver os conectores para os cabos/sensores, os reles (injetor e portas), o soquete do processador
e outros componentes como o regulador de tensão, transistores, etc.
Os conectores da esquerda são (de cima para baixo): Press. no Coletor, TPS (Posição da borboleta), Sonda Lambda, Botões (do volante), RPM e Velocidade.
No meio: MRQ, SDA, SCL, Negativo (terra) e Positivo constante(12V).
Na direita: Ventoinha (12V), Shift-light, 12V constante ou pós-chave, Trava(fecha), Trava(abre) e 12V pós-chave.
O conector entre os reles é para o injetor de gasolina. Ele simplesmente fecha um curto entre os dois pinos quando é ligado.
Os dois conectores brancos de 4 pinos são para os sensores de temperatura (1 interno e 1 para o motor).
A figura abaixo mostra os dois sensores de temperatura utilizados (LM35). Utilizei um cabo com blindagem para evitar o máximo de interferencia,
mesmo assim tive que adicionar um resistor para filtrar ruidos (principalmente no do motor).
As possiveis configurações do sistema são: temperatura mínima do motor para injetar gasolina, tempo de injeção da gasolina e com qual velocidade
o sistema deve travar as portas. Essas configurações podem ser alteradas pressionando e mantendo pressionado a tecla “O” durante a inicialização do
sistema (quando a chave é virada). As configurações são apresentadas da seguinte maneira:
- CFG1 . Esta é a configuração da kilometragem minima por hora para que o sistema trave as portas.
- CFG2 . Esta é a configuração da temperatura minima para que o sistema injete gasolina.
- CFG3 . Esta é a configuração de quanto tempo o sistema manterá a bomba do injetor ligada.
Para aletrar as configurações, é só utilizar as teclas “+” e “-“. Para saltar para a próxima configuração, basta utilizar
a tecla “>”.
Com relação aos sensores, estas são as informações necessarias para a placa:
- Sensor RPM: Fio verde (43) da centralina.
- Velocidade: Fio Azul e Vermelho do painel.
- TPS: Direto no sensor, o fio de uma das pontas. Deve-se medir com um multimetro colocando uma ponta em um deles e a outra no terra. Quando marcar algo entre 0,5v e 5V (com a chave virada), é este.
Assim que conseguir um pouco mais de tempo irei postar aqui os outros fios.
A ultima versão de firmware (até agora) é 1.60 e conta com os seguintes recursos:
- Recebe e interpreta os controle de som no volante
- Recebe e interpreta o sinal da sonda lambda do veiculo
- RPM Digital
- Temperatura interna do veiculo
- ‘Acelerometro’ (mede quanto % você esta pressionando o acelerador)
- Velocimetro digital
- Travar as portas depois de 20km/h
- Injetar gasolina automaticamente dependendo da temp do motor
- Acende uma luz no painel se o RPM passar de XX ou a velocidade for superior a YYY
- Temperatura interna
- Temperatura do motor
Este é o esquema da placa atual:
02/06/2011
Infelizmente estou sem tempo para dar continuidade no projeto. Por este motivo, estou disponibilizando todos os arquivos do projeto até o momento, incluindo o layout de uma placa de teste que utilizo atualmente.
Para baixar o arquivo, clique aqui.
PS: Por falta de tempo, infelizmente não poderei ajudar a todos que me enviarem perguntas. Podem enviar e-mail a vontade, porem deixo avisado que posso demorar para responder.
Otimo trabalho amigo sempre quis encrementar este computador de bordo do vectra é possivel adicionar mais funções o meu comutador é um opel original mais é igual o nosso queria colocar todas funções nele vc deu continuidade depois disto oudesistiu vi alguns videos mais queria saber se encrementou mais, parabens belo trabalho