Marcador de Combustivel com Ad do LPC1768

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

Marcador de Combustivel com Ad do LPC1768

Mensagempor cristian » 09 Jan 2012 08:33

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 ???
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor RobL » 09 Jan 2012 11:12

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.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor leoabubauru » 09 Jan 2012 12:53

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.
Tento, tento e tento...
Me arrebento!
Também bato!
Ô negocim bunitim essa tal eletrônica de barco!
leoabubauru
Byte
 
Mensagens: 227
Registrado em: 21 Nov 2006 19:08
Localização: São Paulo

Mensagempor cristian » 09 Jan 2012 14:13

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
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor ELFS » 09 Jan 2012 15:25

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.
ELFS
Byte
 
Mensagens: 371
Registrado em: 16 Ago 2007 14:10
Localização: Brasil- Pr- Curitiba

Mensagempor cristian » 09 Jan 2012 20:28

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
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor leoabubauru » 09 Jan 2012 21:03

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.
Tento, tento e tento...
Me arrebento!
Também bato!
Ô negocim bunitim essa tal eletrônica de barco!
leoabubauru
Byte
 
Mensagens: 227
Registrado em: 21 Nov 2006 19:08
Localização: São Paulo

Mensagempor Silvio51 » 09 Jan 2012 22:19

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...
Silvio51
Byte
 
Mensagens: 383
Registrado em: 02 Nov 2006 14:04
Localização: Brasil

Mensagempor cristian » 10 Jan 2012 14:01

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
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor barboza » 10 Jan 2012 22:21

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.
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor leoabubauru » 11 Jan 2012 13:10

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!
Tento, tento e tento...
Me arrebento!
Também bato!
Ô negocim bunitim essa tal eletrônica de barco!
leoabubauru
Byte
 
Mensagens: 227
Registrado em: 21 Nov 2006 19:08
Localização: São Paulo


Voltar para ARM

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x