Repetibilidade de medição de temperatura com módulo HX-711 e termopar tipo K

Boa tarde pessoal!

Tenho tentado montar um circuito para medição de temperatura com termopar tipo K utilizando um módulo HX-711 e um Arduíno, como mostra a imagem. Porém apesar do módulo ler os valores de entrada esses valores não dão repetibilidade, como mostra o gráfico anexado, pra uma mesma temperatura ele lê valores diferentes em instantes distintos, e normalmente o valor lido em sequencia é menor que valor anterior, fica mais claro olhando o gráfico. 

Sei que o módulo HX, a priori, é utilizado para leitura de célula de carga, porém ele nada mais é do que um conversor ADC com um amplificador diferencial na entrada. Então não vejo problema nesse sentido, porem não tenho mais nenhuma ideia do que possa causar esse tipo de problema.

Caso alguém alguém tenha alguma ideia a respeito eu ficaria muito agradecido.

Valeu!

Imagens do circuito e do gráfico:


Exibições: 3280

Responder esta

Respostas a este tópico

Não recebi suas respostas, mas analisando o diagrama incompleto da sua montagem.

Favor enviar o diagrama com as ligações do Arduino também. 

Uma informação importante = Não conecte o terra (GND) da parte analógica com o terra (GND) digital - interface com o Arduino. 

Quando eu fiz medições com scope ao fazer a revisão do tutorial, percebi anomalias nos sinais analógicos, se os dois terras estivessem conectados. 

A entrada do ADC é diferencial e portanto não precisa ser aterrada com a parte digital. 

http://blog.eletrogate.com/balanca-digital-com-arduino-aprenda-a-us...

Use capacitores de 10 nano Farads. Não entendi o valor do seu capacitor. 

Use resistores de 1 % . 

Estou achando 10 Mega ohms exagero. Eu usaria 1 Mega ohms. 

Não dá para ver direito a cor dos resistores, mas parece que não refletem os valores do diagrama. 

Boa tarde José!

Fiz as alterações sugeridas e o resultado foi bem similar. Observe o gráfico, os picos estão todos na mesma temperatura e os traços de baixo estão na temperatura ambiente.

Boa tarde, 

Sugiro que insira um delay de no mímino 100 ms entre cada amostragem. 

Conte-nos o resultado. 

Boa tarde!

Tentei, só muda o tempo de resposta, porém o problema persiste.

Fala José!

Com relação ao circuito:

-Os capacitores são de 1n. Mas já tentei variá-los e não surtiu efeito.

-O SCK > pino 6 e DT> pino 7.

-Os resistores são exatamente dos valores indicados no diagrama.

-A tensão do termistor para o que eu preciso vai variar entre -6 e 1mV.

O ganho está em 128 utilizando o canal A. Mas já testei o canal B com 32 e 64 no canal A e o resultado foi o mesmo.

Amanhã vou tentar isolar os GNDs e trocar os resistores aí posto aqui o resultado.

Segue o sketch, baixei no canal WR Kits, só tirei o delay e fiz as alterações no ganho quando precisei:

/*
Teste de função em C para funcionamento do CI HX711

Conversor AD para célula de carga


Eng. Wagner Rambo
Outubro de 2016
*/

// --- Mapeamento de Hardware ---
#define ADDO 7 //Data Out
#define ADSK 6 //SCK


// --- Protótipo das Funções Auxiliares ---
unsigned long ReadCount(); //conversão AD do HX711


// --- Variáveis Globais ---
unsigned long convert;


// --- Configurações Iniciais ---
void setup()
{
pinMode(ADDO, INPUT_PULLUP); //entrada para receber os dados
pinMode(ADSK, OUTPUT); //saída para SCK

Serial.begin(9600);

} //end setup


// --- Loop Infinito ---
void loop()
{

convert = ReadCount();

Serial.println(convert);

//delay(2000);

} //end loop


// --- Funções ---
unsigned long ReadCount()
{
unsigned long Count = 0;
unsigned int i;

digitalWrite(ADSK, LOW);

while(digitalRead(ADDO));

for(i=0;i<24;i++)
{
digitalWrite(ADSK, HIGH);
Count = Count 1;
digitalWrite(ADSK, LOW);
if(digitalRead(ADDO)) Count++;

} //end for

digitalWrite(ADSK, HIGH);
Count = Count^0x800000;
digitalWrite(ADSK, LOW);

return(Count);


} //end ReadCount

Boa noite!

Heitor, bom dia 

Sabia que a taxa de amostragem do HX711 para esse módulo é de apenas 10 Hz ??

O pino 15 (RATE) do chip HX711 define o data rate:

pin 15 - RATE -  Digital Input Output data rate control, 0: 10Hz; 1: 80Hz

https://www.mouser.com/ds/2/813/hx711_english-1022875.pdf

No caso do meu módulo, o pino 15 esta conectado no terra, portanto o data Rate é de 10 Hz ( 10 amostragens por segundo) . 

T = 1 / f = 1 /10 hz = 100 ms 

Portanto é permitido fazer uma leitura a cada 100 ms ! 

Não é toa , que o comandante Rambo inseriu um delay no programa dele. 

Sugiro que insira um delay de no mímino 100 ms entre cada amostragem. 

Conte-nos o resultado. 

Sugiro que use a Biblioteca HX711, deve facilitar as coisas ...

https://github.com/bogde/HX711

bom dia Murta.

     Também pensei o mesmo que vc sobre a questão da Taxa. Porém ao analisar o datasheet do HX711 e o código do Heitor, ficou claro que realmente não é preciso o delay.

      Veja a figura a seguir que extraí do datasheet:

      E no código do Heitor, na função que lê o ADC do HX711, está um "while" que garante a temporização:

      Nas Bibliotecas disponíveis para o HX711, também é usado um "while" para aguardar o SDOUT do HX711 ir a "0" antes de iniciar a cadência de leitura.

      Em minha opnião, o circuito de polarização das entradas que o Heitor usou, está inadequado para esta aplicação com Termopar, pois além de gerar uma carga resistiva para a energia gerada pelo Termopar (via os dois resistores de 1M que acabam formando uma malha em paralelo com o Termopar), o circuito que ele usou ainda favorece a influência da Corrente de Bias do PGA interno ao HX711, já que os resistores do "GND virtual" dele são muito altos (os dois resistores de 10M) acarretando flutuações DC ao longo do tempo (já que a Corrente de Bias é dependente da temperatura). O ruim, é que o datasheet é daqueles típicos da China, e nem sequer fala qual é a Corrente de Bias do PGA (os chineses estão sensacionais com fabricação, mas a documentação ainda tem muito que melhorar).

     Por isso sugeri que o Heitor alterasse o circuito conforme postei neste link deste mesmo tópico : "sugestão alteração"

     Essas alterações garantem que não haja carga resistiva em paralelo com o Termopar, e diminuem drasticamente o efeito da Corrente de Bias do PGA ao longo do tempo.

    Abrçs

    Elcids

Elcids, 

O programa do Heitor pode entrar no meio de uma transmissão de dados e confundir os valores ( Data Out LOW). 

Acho que isso pode estar ocorrendo ...

Usando um analisador lógico pode ser possível confirmar isso. 

Sobre misturar os terras, eu já havia alertado ele. 

Como funciona a comunicação serial do HX711 com  o Arduino: 

  • o HX711 fica cuspindo dados numa taxa de 10 Hz, independentemente do Arduino.
  • o Arduino tem que detectar o primeiro pulso de dados e começar a recepção dos dados
  • Se o Arduino não fizer a distinção correta do primeiro pulso de dado, os dados poderão ser incorretos.
  • o Arduino envia  25 pulsos de clock para receber os dados ( no caso do canal A - ganho 128).

Obs - se o pino CLOCK IN for HIGH o conversor ADC será desligado ! 

A biblioteca HX711 tem mais outros recursos de leitura de dados, por isso recomendei o uso.  

https://github.com/bogde/HX711

Acho que saturei as possibilidades esquemáticas do circuito. Amanhã vou tentar usar a biblioteca pra ver se dá alguma diferença e posto aqui o resultado.

Fez o teste com delay de 100 ms (ou mais) entre as amostragens ?

http://labdegaragem.com/xn/detail/6223006:Comment:675973

Bom dia! Respondi a sua pergunta no comentário acima.

O problema persiste. Hoje vou tentar mais algumas ideias e posto o resultado.

Valeu!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço