Emerson's Moretto Tech Blog Página Inicial Arduino Benchmark NoSQL Opensource Postgresql Tuning Type text to search here...
Página Inicial > Inicial > Arduino Arduino > > Projeto Arduino Turbo
Projeto Arduino Turbo 14/03/2011 emoretto Deixe um comentário Go to comments A ideia do projeto é montar uma injeção eletrônica suplementar para meu carro turbo. turbo. O grande grande desafio de todo todo carro sobrealimentado é o acerto da queima de com bustível. Usando Arduino e sensores de precisão, de precisão, acredito que seja possível fazer algo bastante interessante (como hobby). Então, para esse projeto, pretendo desenvolver as seguintes funcionalidades:
Fase 1 Fase 1 – Injeção Injeção eletrônica básica e funcional: Monitorar a pressão da turbina [100%] turbina [100%] Monitorar a queima de combustível combustível (através (através da leitura da sonda-lambda) [100%] Gerenciar um bico injetor de combustível suplementar [100%] suplementar [100%] Monitorar a temperatura [100%] Exibir o percentual do acelerador no LCD [0%] LCD [0%] (deixado de lado temporariamente por não ser tão util) Exibiir a força Exib força G em tempo real no LCD [100%]
Fase 2 – Controle Controle da Injeção pelo celular Android: Integ ntegração ração Arduino – Bluetooth [100%] Software (no celular Android) de controle da injeção eletrônica [100%] Alterar o mapa de injeção em runtime pelo celular [100%] celular [100%] Exibir o RPM no celular [100%]
Fase 1 Monitoramento da pressão da turbina Há diversos sensores de pressão de qualidade e precisão. O mais fácil e prático de usar é o MPX4250, é um sensor da GM até 3 bar com saída 0-5v, perfeito para o Arduino. No entanto, esse sensor não é tão barato, custa ~30 dólares. Primeiramente, optei em usar o sensor Motorola MPXM2202 GST1, por ser menor, muito barato e com muita precisão (comprei no ebay, aqui aqui). ). PS: Depois de um tempo (explico logo mais abaixo), resolvi não usar mais o sensor da motorola MPXM2202. De qualquer forma deixo como documentação aqui a instrução de como montar o circuito pra usa-lo. As características do sensor são: 0 a 29 psi (até 2bar) Saída linear com voltagem diferencial 0-40mV Compensação de temperatura automática (o sensor ajusta automaticamente a leitura independente da temperatura ambiente) Alimentação 10v ~ 17v O desafio desse sensor é a saída em voltagem diferencial. Então, não basta apenas plugar direto na porta analógica do Arduino. A porta analógica possui precisão de 0.4mv, então, teríamos apenas 10 valores possíveis em um range de 30 psi. Ou seja, precisão nenhuma. Então, precisamos fazer um circuito que amplifique apenas a diferença dessas voltagens, ou seja, usar um Instrumentation Amplifier . Existem vários CIs específicos pra issso (AD620,INA128…), porém não encontrei nenhum desses na Sta Efigência. De forma a substituir esse amplificador, é possível fazer um amplificador diferencial usando amplificadores operacionais. operacionais. Esses sim, são baratos e muito fáceis de ser encontrados. Comprei o LM324 (que possui 4 amplificadores operacionais dentro do mesmo CI) e que não custa nem 3 reais (tem na Multicomponentes) Abaixo está o esquemático para a montagem desse amplificador diferencial:
O sensor é facilmente encontrado por aí, comprei pelo eBay e paguei 10 dólares ( link ). Sua
Monitorar a temperatura O mais simples e barato de todos. Tudo o que precisamos é de 1 (ou mais) sensores de temperatura LM35. O sensor de temperatura LM35DZ é fácil de ser encontrado (ex Dabi Eletrônica, Sta Ifigênia, custa 3 reais) e possui características impressionantes: Range −55º a +150º C Precisão de 0,5ºC Trabalha de 4 até 30 volts Tempo de resposta para variação ~0,5s A montagem é muito simples:
LM35DZ :
O código, mais fácil ainda: float temperaturaEmCelsius = ( 5 * analogRead(TEMPERATURE_PIN) * 100.0 / 1024); No meu caso, estou usando este sensor para monitorar a temperatura do ar na admissão. Fisicamente, coloquei ele dentro da tubulação da pressurização que vem da turbina. Inicialmente estava usando esse sensor para medir a temperatura de trabalho da turbina. Para isso, basta montá-lo com contato na carcaça da turbina. As turbinas trabalham, geralmente, e em regime regular entre 110ºC e 160ºC. Medindo essa temperatura, dá pra evitar sobreaquecimento da turbina e/ou se o óleo está chegando legal no rotor. Turbinas com folga no eixo tendem a esquentar mais pois o rotor não trabalha muito linearmente.
Gerenciar um bico injetor de combustível suplementar Um bico injetor automotivo não passa de uma simples solenóide. O problema é que, no caso de bicos de baixa impedância, eles consomem 4A! Ou seja, você vai precisar de um chaveador pra isso. Esse chaveador não pode ser um simples relé, pois precisa de velocidade. Um bico injetor deve “pulverizar” combustível e pra isso, devemos oscilar ele a uma taxa de 5ms aproximadamente. Além disso, um bico injetor se diferencia de uma solenóide comum pelo fato de que você não precisa manter a corrente 100% nele durante o período de abertura, ou seja, para abrir o bico, ele precisa de 4 A, porém para mante-lo aberto, ele precisa de 1 A. Pra isso, existe um circuito chamado de Peak n Hold. O uso do bico sem esse circuito faz com que o bico esquente muito e o r isco de queima é alto. Pra montar esse circuito, resolvi pegar o mesmo esquema da MegaSquirt. Mais especificamente, montei um circuito muito bem feito e explicado e que achei no fórum do megasquirt brasil, feito pelo usuário piubrazil, (nesse link ). Todos os créditos à ele.
Seguir
Seguir “Emerson's Moretto Tech Blog” Obtenha todo post novo entregue na sua caixa de entrada. Insira seu endereço de e-mail
Cadastre-me
O esquema todo do circuito pode ser baixado daqui: link Crie um site com WordPress.com Todo os componentes podem ser encontrados com compra online pela Farnell (www.farnellnewark.com.br) — Como dito anteriormente, um bico injetor precisa pulverizar combustível e para isso, devemos fazer com que ele pulse em janelas de tempo, ou seja, em largura do pulso (pulse width). O cálculo da largura do pulso é simples, basta calcularmos janelas de abertura/fechamento dentro de uma janela de tempo. Exemplo: com 3000 rpm um motor leva 0.040 segundos ou 40 ms para completar um ciclo de rotação. Precisamos injetar combustível dentro desse ciclo. Pra isso, devemos fazer um cálculo dentro dessa janela e que tenha uma margem para pulsar. Assim, temos uma janela máxima de 40ms para 3000 rpm. Se deixarmos o bico aberto por 15ms dentro da janela de 40ms, teremos 37.5% de abertura. Esse cálculo vale principalmente para cálculo de bicos injetores para cada cilindro. No
projeto em questão, usei como parâmetro apenas a pressão da turbina. Ou seja, dependendo da pressão da tubina, o bico injetor é acionado. Assim, usei abertura de 8ms em uma janela de 30ms para início de pressão (0,1 bar) e 15ms/20ms para pressão total da turbina. Assim, fiz um mapa de injeção para cada 0,1 bar. A injeção eletrônica original de um carro possui um mapa de injeção similar a esse, só que mapeado em relação ao RPM do motor e outros mapas modificadores com valores em forma de fator de multiplicação. Quando alguém vai alterar o chip de injeção de um carro, basicamente é feito um novo mapa desses, com valores mais agressivos. Por enquanto, o circuito completo é esse:
Fase 2 Durante o desenvolvimento resolvi abandonar o display LCD e partir pra uma alternativa mais interessante: usar um Celular Android como interface de controle da injeção eletrônica. Para isso, precisava de um meio para conexão entre Arduino e Android, optei pelo bluetooth quase que por razões óbvias.
Integração Arduino – Bluetooth Para trocar informações com o Arduino e fazer com que seja possível controlar a injeção através do celular, encontrei esse módulo bluetooth serial. De uma forma bem simples, ele é simplesmente uma porta serial comum. Esse módulo, funciona tanto como slave ou
master.
Especificações:
Bluetooth Specification v2.0+EDR Frequência 2.4GHz ISM band Input: 3.3V-6V Pinos RX e TX 16mm x 40mm Montagem:
Extremamente simples, basta alimentar o módulo com +5v, conectar o RX do módulo com o TX da porta serial do Arduino e o TX do módulo com a RX do Arduino (basta inverter o RX/TX).
Um detalhe importante aqui, o Arduino Uno/Duelaminove possui apenas uma porta serial, que é a mesma do USB. Portanto, isso dará um grande trabalho durante o desenvolvimento/testes do projeto, pois teria que fazer um switch para revezar o uso da porta. No meu caso, usei um Arduino Mega, que tem 4 portas seriais. Caso for fazer algum projeto com bluetooth, opte pelo Arduino Mega sem dúvidas.Código do Arduino: void setup(){ Serial.begin(9600); // USB computador Serial1.begin(9600); // Bluetooth } void loop(){ // Chegou informação na Serial1 (do bluetooth)? if(Serial1.available() > 0){ // Se chegou, vamos ler ela int input = Serial1.read(); // Imprimindo a informação na Serial USB do computador Serial.println("Chegou pelo bluetooth:"); Serial.println(input); } }
Exibir o RPM no celular Todos os carros que possuem injeção eletrônica tem um sensor para medir a rotação do motor. E geralmente, é um sensor que retorna a frequência que o motor está girando. No meu caso, um gol monoponto injeção EEC IV (da ford, a mesma injeção do logus, mustang, etc), o pino 56 da centralina fica oscilando em +12v e 0v. Dessa forma, basta medir a frequêncianesse pino. Com um osciloscópio ou um multímetro que mede frequencia, basta medir para observar que na marcha lenta o sinal fica em ~30hz. Cada 100 rpm equivale a 3hz.Para ler essa informação, usei um simples regulador de tensão LM7905, que faz com que o sinal fique entre 0 ou +5v, o que é ideal para o arduino. Na parte de software, para medir a frequencia pelo arduino, usei uma interrupção e um contador. Me baseei nessa biblioteca: http://www.avdweb.nl/arduino/hardwareinterfacing/frequency-period-counter.html. Essa biblioteca já retorna a frequência em Hertz, assim, basta apenas fazer um “de-para” a rotação do motor.
LM7805
Software de controle da injeção eletrônica O software de controle da injeção ficou separado em 2 partes, a primeira, leitura e atuação de sensores ficou no Arduino; a segunda, exibição das informações e interação, no Android. Assim, no celular fica a parte de exibição dos sensores (força G, pressão turbo, sonda lambda e temperatura do ar na admissão) além da parte de interação, que é a montagem do mapa de injeção baseado no valor da sonda lambda. No microcontrolador Arduino, fica todo o software de leitura de sensores, tratamento dos valores de leitura e atuação (cálculo do tempo de abertura dos bicos). O principal código para controle da injeção fica no Arduino e é responsável por calcular o percentual de abertura dos bicos dado uma janela de tempo. Lembrando que o bico injetor deve pulverizar combustível, não basta apenas deixarmos ele aberto metade do tempo e a
outra metade fechado para conseguir 50%, isso fará com que ele derrame combustível, ao invés de pulverizar. Assim o código deve fazer um cálculo de fragmentação da janela de tempo com mínimo de 2ms de abertura e máximo de 7ms (esses 2 valores são empíricos, descobertos em testes e conversas com mecanicos, deve variar de acordo com o modelo do bico injetor). Abaixo o código que faz isso: void fuelInject(int percent){ int MAX_CYCLE = 7; int MIN_CYCLE_WIDTH = 2; // quanto menor, mais ele vai abrir e fechar float prop = ( (float) window * ( (float) percent/100)); float mod = 0; float div = 0; int i = MAX_CYCLE; for(; i >= 1 ; i‐‐){ mod = (int) prop % i; div = prop / i; if(mod == 0 && div >= MIN_CYCLE_WIDTH){ break; }
}
if(i==0) i++;
// se tiver apenas 1 ciclo, encaixar ele no meio da janela float gap = 0; if(i==1) gap = (window ‐ prop) / (i+1); else gap = (window ‐ prop) / (i); float qtdGaps = (window ‐ prop) / gap;
char foo1[100]; sprintf(foo1,"Janela: %i ms com Serial.println(foo1);
char foo2[100]; sprintf(foo2,"%i ciclo(s) de %i ms com intervalos de %i",i, (int) div, (int) gap); Serial.println(foo2);
%i percent, Tempo de injecao %i ms ",window,percent, round(prop));
for(int j=0; j < qtdGaps+i ; j++){ if(j % 2 == 0){ // sleep.. delay(gap); }else{ // injetando.. digitalWrite(injectorPin,HIGH); delay(div); digitalWrite(injectorPin,LOW); } }
}
N parte do Android, o código é em Java (Android) e não ficou tão simples. A parte de conexão com bluetooth ficou um pouco pesada, pois foi necessário fazer uma espécie de protocolo de comunicação, uma vez que os dados são trafegados de forma serial. A transmissão deve ser feita de byte em byte, por isso precisei fazer esse protocolo, para determinar início e fim da transmissão, que tipo de informação está trafegando e a informação em si. Assim sendo, na parte do Arduino, os sensores são lidos e enviados para o bluetooth da seguinte forma: byte sondaLambda = analogRead(sondaLambdaPin); Serial1.write("
");
Ou seja, é enviado “” pelo Bluetooth, sendo os caracteres de maior e menor (<>) início e fim da informação, “s” o indicador do tipo de dado enviado (no caso s = sondaLambda) e por fim o valor do sensor. No Android, irá chegar tudo quebrado, assim, é necessário fazer um buffer (pilha) e assim que fechar uma informação, devemos processar a pilha e interpretar os dados. Tudo isso está no código fonte: https://github.com/emersonmoretto/A2Turbo
Alterar o mapa de injeção em runtime pelo celular Com o hardware de injeção peak n hold montado e a leitura da sonda lambda ok, o trabalho de fazer um mapa de injeção em runtime agora é simples. No android fiz uma tela para fazer uma curva da relação entre o valor da sonda lambda pelo percentual de injeção do bico (0-80%). Dessa forma, para cada valor da sonda lambda (0 (pobre) a 12 (rico)) há um percentual de injeção dos bicos. Na tela, adicionei um botão para salvar e enviar essa curva, assim, essa curva é enviada via bluetooh pro arduino, que a recebe e monta o mapa da seguinte forma: /** * Recebendo novo Mapa via BT */ if(Serial1.available() > 0){ Serial.println("Chegando do BT: "); char c = Serial1.read(); if(c == 'm'){ // o mapa vem assim: m80,70,70,60,50,40,30,20,0,0,0 int buff[] = {0,0,0}; // acumulador int j=0,k=0;
while(Serial1.available() > 0){ int c = Serial1.read(); if(c == ','){ // ler e converter os valores, [0]*10+[1] int item = (buff[0] ‐ 48) * 10; mapa[k] = item; k++; Serial.println(item); j=0; }else{ buff[j] = c; j++; }
} } }
//usando o mapa fuelInject(mapa[lambda])
Screenshots Tela principal
Mapa de injeção
Tela de conexão com devices Bluetooth
—- Conforme o desenvolvimento do projeto, irei atualizando este post.
Curtir Um blogueiro curtiu disso.
Categorias:Arduino Tags: arduino, lm324, mma7260, mpx2202, mpxm2202, turbo Comentários (66) Trackbacks (0) Deixe um comentário Trackback 1.
Raphael Maciel 25/03/2011 às 18:51 Responder Daqui a pouco vc consegue fazer até um controle de tração hein!
2.
marcus vinicius 11/04/2011 às 09:22 Responder Muito bom.
3. Bruno 04/05/2011 às 09:34 Responder Olá !!! Muito legal seu projeto. É uma idéia bem original, ficou mais simples do que montar com um microcontrolador. Tenho interesse em acompanhar esse projeto. Parabéns !! 4. Thiago Hortencio 06/07/2011 às 02:12 Responder Cara so vc mesmo hennn.. Pena o junao nao estar vivo para acompanhar isso… Abraco 5. Victor Zeni 06/07/2011 às 16:00 Responder Daqui uns dias o goleta sai do chão! Parabéns meu brother! Vc como sempre surpreendendoa gente… fera demais teu projeto!!! Abração! 6.
Pairon Ovidio 25/07/2011 às 20:52 Responder cara muito bom esse projeto to querendo comprar um arduino pra fazer algo parecido vc sabe me diser de o arduino Duemilanove Usb 328 da para brincar um poco ? ou tem q ser o mega mesmo? aguardando atualizações no projeto vlw e prabens
emoretto 26/07/2011 às 10:17 Responder
Cara, com o duemilanove da pra fazer sim. Mas sugiro fortemente o mega, fica mais facil e vc vai ter menos problema (com qtd de portas). Tem um kit no ebay com mega + lcd + jumpers por uns 60 dolares com frete gratis, vale a pena 7. mslucas 03/04/2012 às 19:35 Responder Parabéns pelo projeto! 8.
Rui Duarte 27/04/2012 às 17:22 Responder Os meus parabéns pelo seu trabalho, hoje em dia é difícil encontrar quem dê sem querer receber. Em breve tenho um projecto automotivo, medir pressao turbo, temperatura gases escape, temperatura ar admissão e apresentar dados num displays LCD rgb 16×2. Será que posso ligar as entradas analógicas do arduino aos sensores já existentes no carro em paralelo com a centralina? Todos eles trabalham com 5v como sendo o valor max medido. Abraço
emoretto 27/04/2012 às 17:30 Responder Obrigado Rui! Dá pra fazer isso sim. Se todos trabalham com até 5v, só ligar direto. Só lembre de ligar o negativo do arduino com o negativo do carro também. No meu projeto faço a leitura da sonda lambda em paralelo com a centralina. O valor máx dela é 1v. Fica perfeito. Meu projeto já mudou bastante, vou atualizar o post, mas pra pegar a pressão da turbina usa o sensor MPX4250, ele é mais caro um pouco, mas é perfeito pra microcontrolador, o range dele é 1v a 5v. Qq coisa só falar. abs 9.
Helton 04/05/2012 às 13:50 Responder Deixou o projeto de lado amigo?
emoretto 04/05/2012 às 16:04 Responder Helton, não deixei não, preciso só atualizar mais frequentemente esse post. Atualizei ele semana passada com o novo sensor da pressão da turbina. Esse fds irei atualizar ele por completo. até mais
Helton 17/05/2012 às 10:33 Valeu Emoretto, estou muito ansioso por ver seu projeto funcionando por completo, pois tambem utilizo arduino junto com meu carro.. abrs 10. apzeiros 06/08/2012 às 15:37 Responder Cara, muito bom! Há anos que eu venho estudando uma forma de faze rum controlador para turbo. Parabéns! Vou tentar fazer um igual, mas a parte do Android eu ainda não manjo. Parabéns mesmo!!!!! Especialmente por ter compartilhado a façanha. 11.
Tarcisio Cardoso 02/10/2012 às 18:11 Responder Estou querendo transformar um motor estacionário 6hp de carburado para injeção eletrônica (para fins didáticos). Parabens por compartilhar e ajudar.
12.
Rui Duarte 27/10/2012 às 11:09 Responder Ola, o meu carro é diesel seat ibiza, tem sensor map de 4 bar da bosch, todos os sensores trabalham entre 0-5v. o meu grande problema é criar um menu com botoes no lcd 16×2 para alterar o bip de aviso quando algum valor do sensor passa do marcado como seguro, nao uso arduino mas sim uma placa só com atmega328 chamada eduino e programo por usbtiny isp. Tenho iphone, mas estou pensar seriamente adquirir um android so para o carro e comunicar por bluetooth. Mais uma vez os meus parabens, és fera mesmo em programação!
emoretto 29/10/2012 às 10:32 Responder Se possível faça isso mesmo, pegue um android e o módulo bluetooth.. não é tão difícil e fica perfeito… mas também tem uns LCD 16×2 com botões de controle: http://www.adafruit.com/products/714 Qualquer coisa estou a disposição!! 13.
Gregory 14/11/2012 às 13:01 Responder Muito legal seu projeto, tenho duvidas em relação aos sensores utilizados. O sensor lambda por exemplo, o arduino reconhece qualquer sensor automotivo?
emoretto 14/11/2012 às 15:11 Responder Valeu Gregory! Assim, o arduino aceita qualquer sensor desde que esteja dentro da faixa de voltagem dele (0 a 5v). A sonda lambda de qualquer carro trabalha também nessa faixa, então é só medir com um multímetro a voltagem da sonda lambda e ligar no arduino. É bem simples e fácil, você pode puxar o fio da sonda a partir da centralina do seu carro também.
Gregory 15/05/2013 às 16:45 Amigo, fiquei com uma duvida ainda.. eu gostaria de ligar a sonda lambda direto no arduino, sem utilizar a centralina… isso é possivel ? Procurei alguns sensores e eles possuem 4 fios e o sensor parece trabalhar a 12volts.. Isso me parece um problema!! Pode me ajudar?
emoretto 15/05/2013 às 17:33 Fala Gregory!!! A sonda lambda de 4 fios tem 12v só pra alimentar uma resistência que tem dentro dela, pra aquecer a sonda. Mas a saída dela é igual as demais (0-1v). Pelo menos a sonda bosch que eu tenho de 4 fios é assim… Liga um multímetro nela e veja que vai sair 0-1v no fio de saída de sinal. Você pode puxar o fio direto dela ou da centralina do carro… tanto faz. Na sonda da bosch é o fio preto. até mais 14.
André 13/03/2013 às 22:41 Responder Olá, gostei muito do seu projeto, porém estou com algumas duvidas, estou precisando desenvolver um sistema de turbo elétrico, pretendo instalar uma turbina edf de aeromodelsmo na entrada do filtro de ar, porém preciso ligar essa turbina em um esc que controla a velocidade dela, mas pra isso preciso saber como fazer para que o arduino reconheça a acelaraçao do tbi e envie o pulso para a turbina e conforme eu acelerar o carro a turbina aumenta a rotação, será que isso pode funcionar, pois essas turbinas edf com um motor brussless pode chegar a 30.000 rpm e gerar mais de 1,2kg de força, isso faria um sistema de turbo muito mais simples e
fácil de adaptar em qualquer veiculo com acelerador eletrônico sem grandes adaptações, preservando a originalidade do veiculo, no meu caso tenho um hb20 e se eu instalar um turbo convencional isso pode comprometer a garantia do veiculo e se fosse uma coisa mais eletrônica poderia funcionar, será que vc pode me ajudar. Se caso você puder, por favor entre em contato comigo, meu fone é 11 98171-2102 e meu e-mail é [email protected]
emoretto 14/03/2013 às 11:07 Responder Fala Andre! Legal a ideia.. mas precisava botar na prática pra ver se essas turbinas vão conseguir gerar pressão suficiente pro fluxo de ar que um motor puxa. Pois tem uma diferença em gerar determinada pressão para determinado fluxo.. Mas enfim, acho que vale a tentativa, pode ficar muito legal. Pra ler o sinal do TBI é bem fácil.. praticamente em todos carros ele já retorna um valor entre 1 e 5v.. é só ver qual o sensor de posição da borboleta do seu carro (TPS trottle position sensor) e puxar o fio do sinal dele e colocar numa porta de entrada do arduino. Aqui tem um material legal: https://www.google.com.br/url? sa=t&rct=j&q=&esrc=s&source=web&cd=5&cad=rja&ved=0CFkQFjAE&url=http%3A%2F%2Fava.mecatronica.org.br%2Fclaroline%2Fclaroline%2Fb Pra atuar no ESC, é simples também.. pois o ESC já praticamente ligação direta.. veja esse tutorial: http://techvalleyprojects.blogspot.com.br/2012/06/arduino-control-escmotortutorial.html Aqui também tem outro: http://dronesandrovs.wordpress.com/2012/11/24/how-to-control-a-brushlessmotor-esc-with-arduino/ O fio do TPS voce pode puxar da central do carro, que geralmente fica dentro do carro mesmo e fica mais elegante, ao inves de puxar lá direto do sensor. Como é um carro novo e nao tenha muito material na internet, talvez seja meio difícil de descobrir qual seja esse fio. Lembre-se de ligar o negativo do carro no pino GND (negativo) do arduino quando for testar.. Pois se alimentar o arduino por algum notebook, ele nao vai conseguir medir esses valores se os negativos não estivem “casados” Boa sorte aí!!! Qualquer coisa só falar!! 15.
Welington Jb 30/06/2013 às 03:31 Responder Como é feita a ligação do bico injetor de alta impedância, é usado um LM pra acionar? estou com dúvida nessa parte, se puder dar uma força agradeço
emoretto 01/07/2013 às 14:31 Responder Fala Welington, a ligação com bico de alta impedancia é exatamente a mesma. Atualmente estou usando 2 bicos de alta impedancia com esse mesmo circuito aí. Mudei para bicos de alta impedancia pois eles trabalham com menos amperes e assim o circuito esquenta menos. 16. Gabriel Andrade 26/08/2013 às 10:34 Responder Emoretto, A duas informações empiricas são window e percent correto ? Entao posso pegar quanto maior a window ele aumentar a percent!? Outra duvida vc falou logo acima que 3000rpm 40ms no caso 6000 ele dobra ? Fico no aguardo do seu retorno! E parabéns pela ótima explicação!
emoretto 28/08/2013 às 18:05 Responder Assim, como a minha ideia inicial era fazer uma injeção complementar, fiz aquele algoritmo baseado em um tempo específico de injeção (janelas). A janela que ficou melhor foi de 30ms. Mas isso não fica muito bom. No entanto, eu já mudei tudo isso.. acabei mexendo nesse código inteiro para
trabalhar como uma injeção regular de um carro. Ou seja, le todos os sensores e aplica o valor do mapa de injecao. É assim: 1 – ler a pressao da turbina 2 – ler a sonda lambda 3 – ler o rpm 4 – converter o valor do RPM (que tá em Hz) para o tempo (em ms) do ciclo do motor, ex: 4.1 – 4.000 RPM são 2.000 ciclos por minuto (pois o motor é 4 tempos, então ele leva 2 ciclos para abrir) 4.2 – Agora precisamos converter 2.000 ciclos por minuto para segundos (dividimos por 60) = 33.3 ciclos por segundo 4.3 – Agora precisamos converter os 33.3 ciclos por segundo para millisegundos por ciclo.. ou seja, 1.000 (ms = 1s) / 33.3 = 30 ms. 4.4 – Assim, a 4.000 RPM o motor vai levar 30 ms pra abrir (seria os 2 primeiros ‘tempos’ do motor.. e mais 30ms para fechar (os 2 outros ‘tempos’.. o ciclo completo (4 tempos) leva 60ms)) 5 – Agora, basta olhar no mapa de injeção o quanto foi mapeado para esse RPM x Pressao da turbina. Ex: se colocaram 40% de abertura para a rotação 4.000 e pressão 0.8, você deve abrir o bico injetor por 40% daqueles 30ms.. ou seja, 12ms! 6 – Por fim, você pode variar esses 12ms de acordo com o valor lido na sonda lambda.. se ela tiver baixa, você pode abrir por mais tempo.. aqui eu não lembro exatamente qual é o fator de multiplicação.. mas voce pode fazer exatamente pelo inverso do valor da sonda, ex: 12ms * (1 – 0.4) = 7.2 ms 17.
Gabriel Andrade 28/08/2013 às 17:21 Responder Emoretto, Com relação a esse esquema do bico injetor, a entrada naquele circuito seria uma saida digital? E naquela parte bancada seria o positivo do bico injetor?
emoretto 28/08/2013 às 17:38 Responder Entrada é o digital 0-5v e o bancada o negativo do bico 18. Gabriel Andrade 29/08/2013 às 08:44 Responder Emoretto por onde eu poderia lhe mandar o código para vc analisar e fazer criticas ? Fico no aguardo do seu retorno! E obrigado pelo seu auxilio e presteza! 19.
Gabriel Andrade 02/09/2013 às 16:13 Responder Emoretto, Fica bem mais complexo, porém mais estável, possuo um fiat oggi motor fiasa com injeção mpi, no caso eu queria usar como suplementar! Esse código nao fica bom o acerto ? Pq no caso eu tinha montado meus mapeamentos conforme o rpm (windows) maior o percent ( tempo de injecao)! Mais já que voce comentou que nao ficou estável, tentei sua lógica mais estou um pouco confuso ainda!
20.
Welington Bertoncelo 21/12/2013 às 00:31 Responder emoretto, estou querendo fazer um sistema complementar para meu carro, se puder enviar seu código para meu estudo eu agradeço, o meu mapa é assim, eu tenho um Gol G3 com motor AP 1.8 e estou usando a Fueltech race Pro F1 as primeirinhas, fiz um datalogger com o arduino, adquirindo MAP, TPS, Temp. Motor, sonda lambda, e
agora quero capturar o RPM que sai da Fueltech e o tempo de injeção pra dentro do datalog, estou com 2 dificuldades, a primeira é pra adquirir o RPM, tem que ser pelo esquema de leitura dos Hertz? e agora, estou querendo migrar o datalog para um controle suplementar, baseado na lambda ele injetar ou não, meu email é [email protected] desde já agradeço e parabenizo pelo projeto que encoraja os parceiros… Abraço
emoretto 19/02/2014 às 12:04 Responder Oi Welington!! Legal seu projeto.. vai ficar ótimo!! Desculpa pela demora.. tava de férias.. O RPM é o mais diferente pra pegar mesmo.. Usando o Arduino tem que pegar via Interrupção, ali no post tá explicando a biblioteca, veja esse tópico: “Exibir o RPM no celular”.. É só pegar o sinal da rotação do carro, colocar um regulador de tensão (pq ele vem 12v) e colocar em alguma porta que aceita interrupção no arduino (a 3 por exemplo). Daí o software é só usar aquela biblioteca no link e ela irá te retornar o Hz.. a conta pra RPM é bem simples. No meu carro, 33hz é 1.000 rpm.. e por aí vai 21.
marcelo cella 04/01/2014 às 11:48 Responder Muiiiito jóia isso que vc fez. Primeira vez que encontro esse blog. Pode me passar seu email pra trocarmos uma idéia sobre o projeto?
emoretto 19/02/2014 às 11:58 Responder Oi Marcelo, valeu cara!! Desculpe pelo atraso na resposta.. me manda e-mail pra trocar uma ideia: emoretto at gmail 22. Vinicius 21/01/2014 às 01:34 Responder Estou formando em Eng. De Controle e Automaçao pela UFOP e sou apaixonado por microcontroladores. Achei o seu projeto FANTÁSTICO!!! Parabéns. 23.
Paulo 11/02/2014 às 21:25 Responder vc tem o apk desenvolvido ? pode compartilhar ?
emoretto 19/02/2014 às 11:57 Responder Oi Paulo, o código fonte do apk tá no GitHub.. tem o link ali no final do post mesmo.. até mais
emoretto 19/02/2014 às 12:11 Responder Aqui: https://github.com/emersonmoretto/A2Turbo 24. Rene Andrade 14/02/2014 às 22:55 Responder Boa noite amigo seu projeto e ideia são excelentes parabéns, sou estudante de aeronáutica e gosto de mexer com carros tbm. conheço um pouco de eletrônica mas essa parte de Android que pega mesmo viu rrs. se poder me da uma força ficaria muito agradecido poderíamos trocas algumas informações, vc tem os esquemas de ligação dos sensores no modulo Arduino? Desde ja agradeço valeuu
emoretto 19/02/2014 às 11:56 Responder Olá Rene, boa tarde. Legal, te dou um help sim.. me manda um e-mail explicando o que vc precisa: emoretto at gmail até mais! 25. Paulo 27/03/2014 às 21:26 Responder emoretto boa noite, poderia me ajudar a só ler a rpm de uma ecu comum da gm ?
emoretto 28/03/2014 às 10:29 Responder Oi Paulo, qual carro e ano que é? Muito provavelmente é do mesmo jeito que fiz aí, só deve mudar o pino que vc deve pegar da ecu. Me passa qual o carro e procuro aqui 26. Paulo 28/03/2014 às 10:48 Responder Vlw cara, o carro é um prisma 2008 vou te passar minha ideia. quero montar uma ihm que me mostrara todos os dados do motor, como pressão de oleo, pressão de ar , temperatura da agua, temperatura do motor, e temperatura do ar da admissão, voltagem da bateria, e o rpm em tempo real e claro um shift progressivo. mas minha maior dificuldade é monitorar a rpm no momento.
emoretto 28/03/2014 às 15:45 Responder Fala Paulo, parece que é o pino 7 ou o pino 31 da ecu, depende do modelo, vi aqui: http://www.celtaclube.com.br/forum/index.php?showtopic=104643 Sobre pressão do ar e pressão do óleo, o seu carro originalmente não possui esse sensores né.. procura um sensor com saída não diferencial. Há alguns sensores que tem saída diferencial de voltagem, daí é necessário um circuito pra amplificar essa diferença. E dá muito trabalho. 27.
Paulo 28/03/2014 às 16:21 Responder então emoreto,para medir a pressão do oleo estou usando um sensor da ifm o pn2023 com saida de 0 a 10 v, mas como não vou chegar a full range dele não tem perigo de queimar a entrada do arduino, uma outrapergunta, sou leigo em programação de android, vc pode me indicar algum tutorial para desenvolver um apk do zero, ou edita-lo ?
emoretto 28/03/2014 às 16:55 Responder Paulo, coloca um regulador de tensão nisso aí.. senão tem perigo de queimar sim.. sensores no carro variam muito. Ex: quando liga o carro, a voltagem geral do carro vai a 6v e assim que o motor funciona chega a dar pico de 16v! E isso é passado pra todo o sistema né. Pra desenvolver pra Android, geralmente uso a documentação oficial do site… Mas na net tem vários tutoriais (youtube tem muitos). Só tenta ficar de olho em algum material mais recente, pois a plataforma de desenv. mudou muito pro android 4 28.
Paulo
31/03/2014 às 10:45 Responder ja estou atualizando o projeto.. vlw cara 29.
Paulo 01/04/2014 às 22:37 Responder Me desculpe, mas estou com duvidas na escrita do codigo, vc me da uma força por email ?
30.
Deivid Roza 19/04/2014 às 22:40 Responder Gostei muito da sua criação estou desenvolvendo um computador de bordo, e um tree step pro para monitorar giros RPM e fazer cortes, to acompanhando as postagens emoretto e paulo. se tiver como agente marcar sei lá uma sala para batepapo para discutir um projeto bacana, ou um forum. to a disposição para desenvolver e aprimorar.
emoretto 14/05/2014 às 10:36 Responder Seu projeto é bem interessante, deve ser mais simples que uma injeção. A ideia do forum ou sala de bate papo também é boa.. Se tiver uma sugestão, participo sim. 31.
Paulo 26/04/2014 às 14:49 Responder estava usando uma acoplador optico e estava funcionando bem, acabei de testa com o 7805 e meu arduino foi pro saco… comprando outro…
emoretto 14/05/2014 às 10:38 Responder acoplador ótico é sempre muito mais seguro.. tou usando o 7805 até hoje (mais de 1 ano) e nunca tive problema. Mas queria mudar pra acoplador também.. 32.
rui oliveira 13/05/2014 às 21:09 Responder paulo, tou fazendo um carro turbo, achas que o arduino aguenta com a gestao da parte electronica do motor? usar um arduino em vez da central do carro? para gerir gestao de gasolina,modulo de ignicao,pressao de turbo com todos os captores que vao no conjunto? sera que e capaz de gerir os tempos de ignicao e gasolina a partir de um captor de ponto de motor?
emoretto 14/05/2014 às 10:35 Responder Oi Rui, daria pra fazer sim, mas eu acho que seria um projeto difícil. Precisaria usar um Arduino com uma boa capacidade de processamento (Galileo ou Due). Através dos pinos de interrupção do arduino, você consegue pegar o sensor de frequência do ponto do motor com bastante precisão. Talvez seja mais simples utilizar separado, um arduino somente para ignição e outro somente para injeção. 33.
Paulo 07/06/2014 às 02:50 Responder Emorreto, tudo bem cara, eu to andando bem o meu projeto, mas não consigo deixar a parte do hallmeter legal, a sonda lamba ta variando muito
, vc usous valores fixos ou deixo o sinal analogico puro e só vez a conversão ?
emoretto 09/06/2014 às 09:58 Responder Mas ela varia muito mesmo.. Assim que liga o carro, ela demora mais ou menos 1 minuto pra começar a ler os valores certos. E quando está andando com o carro, ela fica variando loucamente entre 0.1 e 1 volt. A sua varia diferente disso? Eu leio o valor dela a cada 1 millisegundo e converto pra digital. Você ta fazendo um blog sobre seu projeto?? Queria ver como está ficando. abs 34.
Paulo 13/06/2014 às 09:02 Responder Bom dia emoretto, estou criando um blog sim assim qeu ficar pronto eu colocarei fotos, e detalhes da minha aplicação, mas cara ja é o segundo arduino q queimo, e sem ler a rpm, mas o problema é que agr danificou tbm meu lcd 5110, estou aguardando chegar mas das compras q realizei para dar continuidade, até abraços e vlw pela força.
35.
andre 16/06/2014 às 12:59 Responder Olá, o link para o projeto do peak and hold está quebrado, vc tem o tutorial para desenvolvimento do mesmo? Pretendo desenvolver um sistema de injeção para um motor monocilíndrico e seu blog está sendo o idealizador disso.
emoretto 16/06/2014 às 13:39 Responder Fala Andre, é.. realmente o link ta quebrado, tava apontando para o post do autor original do peak n hold. Mas não tem segredo, é exatamente aquele circuito que tem na imagem ali no post. Já tá com os componentes. E é o mesmo circuito da MegaSquirt. 36.
drausio 26/06/2014 às 11:22 Responder E ai Moretto ? Beles, cara to fazendo um porg. loko pra TB só to esbarrando no app pro android tipo esse seu analogico com barras deslizantes, só encontro lixo na net pra bx, vc poderia me informar onde encontrou esse seu ai? Meu email é [email protected], valeu depois te mostro o porg. vai gostar.
emoretto 26/06/2014 às 12:29 Responder Opa, beleza? o código desse apk que fiz ta aqui: https://github.com/emersonmoretto/A2Turbo/tree/master/src/br/eng/moretto/a2turbo/view Tem lá o analógico com barras deslizantes. 37. Drausio 27/06/2014 às 10:33 Responder Moretto me perdoe pela minha ignorância, esse cod é em java? tem alguns ifs elses fiquei perdido, se for em java coloco eles onde ?, q pergunta em.. Em um edit java e dentro do Android? Cara to com um controle de tb eletrico loko nas mãos mas pra por no Android ta meio fd. Se poder me dar maaaais essa forcinha fico mui grato, abraços.
38.
East Side Family 23/07/2014 às 17:48 Responder fala emoretto tranquilo cara ? então estou com problemas que queria saber passou por ele já, estou lendos os sensores em pararelo com a injeção original do carro e agora do nada o carro esta dando umas falhas quando ligo o monitor dos sensores. tem alguma dica ai parceiro ?
emoretto 24/07/2014 às 11:12 Responder opa, olha só, eu tive um problema parecido quando ligava o sensor do RPM o carro falhava e morria. Mas o problema era simples, era que eu não tinha ligado os 2 negativos juntos (bateria e arduino). Tenta ver qual dos sensores que tá dando, sei que esse do RPM é bem sensível, ex: ligar ele no negativo o carro apaga na hora.
East Side Family 27/02/2015 às 16:24 obrigado emoretto, mais acabei pausando o trbalho eestou reiniciando agora !, vlw pela dica. 1. No trackbacks yet.
Deixe um comentário Escreva o seu comentário aqui...
Tuning no PostgreSQL RSS feed
Posts Recentes
Arduino LCD/Led RPM Gauge O NoSQL de 1340 consultas por nome por segundo RapaNui Apache Bench + Gnuplot Tuning no PostgreSQL Projeto Arduino Turbo Categorias
Arduino Benchmark NoSQL Opensource Postgresql Tuning Lista de Links
Blog no WordPress.com. Blog no WordPress.com. Arquivos
outubro 2011 agosto 2011 julho 2011 março 2011
Meta
Registrar-se Entrar Topo Blog no WordPress.com. O tema INove.