Página 1 de 1

Marcador de Combustivel com Ad do LPC1768

MensagemEnviado: 09 Jan 2012 08:33
por cristian
bom dia , vamos quebrar a cabeça juntos ....

fiz o marcador com o AD do LPC1768 , agora falta tirar a oscilaçao do liquido para ter um marcação estavel mas q marque corretamente

o que tem no carro é uma bosta ele praticamente so atualiza quando , liga e desliga a chave

eu vi fabim comentando uma vez , nao me lembro onde , q descartava as leituras onde o valor fosse 10 pra mais ou pra menos do valor anterior

eu achei uma boa tecnica , mas e na hora do abasteciemento ???

MensagemEnviado: 09 Jan 2012 11:12
por RobL
Na hora do abastecimento o veículo está desligado.

Qualquer medidor deveria ter sua parte mecânica dentro de um tubo, aberto na parte mais baixa e apenas um furo de compensação na parte superior. Desta forma qualquer onda, ou turbulência superficial não afetaria o nível.

MensagemEnviado: 09 Jan 2012 12:53
por leoabubauru
Cristian

Que tal usar uma média de N medidas e atualizá-la no display a cada 1 ou X segundos?

Nos carros, além da média, o fato de exibir em barras ou num ponteiro sem muita resolução são opções para filtrar o ruído.

MensagemEnviado: 09 Jan 2012 14:13
por cristian
ja estou fazendo isso ...

tiro uma media de 900 leituras ... mas nao coloquei tempo ainda

o tempo vc quer dizer das leituras ou da exibiçao no display


estou tentando fazer o mais preciso possivel .... estou exibindo em barras e numeros tipo 15 litros

acho q vou colocar um capacitor na entrada de uns 220uF para diminuir a flutuaçao


RobL

esse é´o diferencial quero deixar o meu marcador sempre ligado idenpendente de chave ligada ou carro

MensagemEnviado: 09 Jan 2012 15:25
por ELFS
Pega N amostras calcula o desvio padrão e elimina os valores fara do padrão e calcula a média. Em um determinado intervalo pode ser feito a media das medias se a taxa de amostragem for alta.

MensagemEnviado: 09 Jan 2012 20:28
por cristian
Estou fazendo assim. Somo cada leitura e devido pelo número de leituras

depois vou e apago o valor e começa tudo do zero

MensagemEnviado: 09 Jan 2012 21:03
por leoabubauru
Cristian

Não confunda precisão com resolução. Eu disse resolução, ou seja, o menor valor que seu circuito/software conseguirá ler. Alta resolução geralmente traz mais ruido. Precisão é a capacidade de se obter a mesma medida repetidas vezes para o mesmo nível de sinal. Parece óbvio, mas o mesmo sinal pode conter ruidos e outros erros de medição e conversão.

Eu me referi ao tempo de atualização do display.

Medidor ligado direto significa consumo desnecessário da bateria. E acredite-me, qualquer miliampere da vida é capaz de esgotar uma bateria se for mantido em regime contínuo por muito tempo!

A idéia do ELFS é muito boa. Você pode calcular o desvio padrão das N amostras e, caso a próxima medida esteja fora deste desvio, ignorá-la.

Eu usaria um buffer com N posições/amostras. Por exemplo: 1000 medidas a uma taxa de 1kSa/s. Na inicialização apaga o buffer todo. Enche as 1000 posições do buffer, calcula a média e exibe no display. Repete o processo para mais 1000 medidas e exibe no display e assim por diante.

Apenas um detalhe. Nos carros atuais, o medidor só é atualizado 1x quando a chave é ligada. Se o motor não for ligado, ele não atualiza mais. Mas com o motor ligado, cada fabricante atualiza a uma taxa pre definida.

MensagemEnviado: 09 Jan 2012 22:19
por Silvio51
Cuidado com o que vai fazer... os sensores dentro dos tanques ficam imersos no combustível sem isolação alguma... a tensão/corrente encima do sensor não deve ser o suficiente para gerar faíscas e aí já viu né...

Outra coisa...Durante o abastecimento o compartimento está aberto... aí você tem uma mistura perigosa: Gases, líquidos inflamáveis, ar e corrente elétrica circulando (IGNITOR)... entendeu ?

Lembre-se que exatamente no momento do abastecimento, as tenões estão `cortadas`... o que diminue/extingue o risco de explosão...

MensagemEnviado: 10 Jan 2012 14:01
por cristian
realmente Silvio , nao vou monitorar mais com o carro desligado , estou usnado o mesmo circuito do painel , so pegando o sinal para a entrada do lpc1768

....
entao vou juntar a ideia do ELFS com o q ja tenho e ver na pratica , e vou atualizar a cada 30seg

MensagemEnviado: 10 Jan 2012 22:21
por barboza
Certa vez eu fiz um medidor de pressão que usava sensores 4-20ma e então fiz algo simples e foi funcional.

Como já dito, defini um número de medidas como já sugerido para assim calcular a média quando o valor adquirido for mostrado. Não usei buffer...


pseudo code:

Código: Selecionar todos
#define   ADC_FIM_ESCALA      (3300)   // mV
#define   ADC_RESOL_MAX      (1U<<9)   // 9 bits
#define   ADC_RESOL_MIN      (ADC_FIM_ESCALA/ADC_RESOL_MAX)   // ~6,44mV

#define   ADC_QTD_MED_MAX      (1U<<23)   // 23 bits, 2^32 / 2^9 = 2^32 / ADC_RESOL_MAX


1- Aquisição:

A cada INT, lê o valor do ADC, retira o bit LSB e acumula;
Se a quantidade de medidas máxima para a medida já tiver sido atingida, subtraia a metade do valor da resolução do ADC.

Código: Selecionar todos
static   void   p_adc_isr   (void)   __irq
{
   if ( ADSTAT & (1U<<4) )
   {
      u32_adc_1 += ((ADDR4>>7) & 0x1FF);
      if ( u32_count_med_adc_1 == ADC_QTD_MED_MAX )
         u32_adc_1 -= (ADC_RESOL_MAX>>1);
      else
         ++u32_count_med_adc_1;   
   }

   //Dummy
   VICVectAddr = 0x00000000;
}


2 - Impressão:

Quando for imprimir, calcule a média e prepare para nova sequencia:

Código: Selecionar todos
U32   p_adc_read_adc   (U8   u8_adc)
{
   U32   u32_adc;

   if ( u8_adc == 1 )
   {
      // Efetue o calculo da média
      u32_adc = (u32_adc_1 / u32_count_med_adc_1);
      // Prepare para nova serie de medidas
      u32_adc_1 = u32_count_med_adc_1 = 0;
   }

   return   u32_adc;
}


A quantidade de medidas deve ser igual ou maior a quantidade MAX para a média a cada vez que o resultado for mostrado.

MensagemEnviado: 11 Jan 2012 13:10
por leoabubauru
hehehe


Comecei a desenvolver outra idéias, desisti, mas o buffer ficou... De fato acumular numa variável e somente dividir no fim é a melhor solução!