Volto a pedir ajuda aos companheiros, principalmente Murta e Rui que se interessaram pelo meu projeto. Recebi uma documentação bem precária do sensor(em anexo) e fiz uma sketch(em anexo) baseado nela para tentar ler. A temperatura está vindo bem, coloque a ponta do ferro de solda na entrada do sensor e ela começou a subir, porém, a pressão que deveria vir 0 porque o sensor está recebendo apenas a pressão ambiente, vem um numero absurdo 65.286. Alguém sabe me dizer se fiz algo errado?

Agradeço qualquer ajuda!

Zé Roberto   

Nota: Criei novo tópico porque não estou conseguindo enviar arquivos no tópico anterior.

Exibições: 151

Anexos

Responder esta

Respostas a este tópico

olá J. Roberto.

      Veja que no exemplo do PDF,  a variável "dat" está como "float".

      Mas vc pode manter como "unsigned long",   bastando alterar  o  trecho   "if (dat & 0x800000)"  como mostro a seguir, acrescentando a linha "dat |= 0xFF800000"

      Veja:

     if (dat & 0x800000){
         dat |= 0xFF800000;
         fadc = dat-16777216.0;
        } else {
        fadc=dat;
     }

    Analisei o código rapidamente, mas acredito que fazendo apenas alteração acima, vc já irá obter o valor correto.

    Explicando: provavelmente está vindo um valor próximo a zero, mas negativo (algo como -2, -3, etc). Como o valor é um inteiro sinalizado de 24 bits,  vc precisa fazer a "extensão de sinal", que o código C não faz automaticamente pra vc. A linha que acrescentei faz exatamente isto.

 

     Abrçs,

     Elcids

Olá Elcids. Resolvi colocando alterando o tipo das variáveis, assim:

float fadc;
unsigned long dat;
float adc;
float p;

Zé Roberto.

Ok.

    Na solução que postei, depois da "extensão de sinal", o número inteiro já estará correto em 32 bits, então não é preciso descontar o "zero" da faixa numérica.

     Então o trecho de código fica assim:

     if (dat & 0x800000){
         dat |= 0xFF800000;
         fadc = dat;
        } else {
        fadc=dat;
     }

      e claro, caso vc não queira valores negativos, basta clipar "dat" em "zero".

      Abrçs

      Elcids

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço