Página 1 de 1
Marcador de Combustivel com Ad do LPC1768

Enviado:
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 ???

Enviado:
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.

Enviado:
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.

Enviado:
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

Enviado:
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.

Enviado:
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

Enviado:
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.

Enviado:
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...

Enviado:
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

Enviado:
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.

Enviado:
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!