Sensor de temperatura barato com MCU

13

Estou procurando uma solução barata para detectar a temperatura com um MCU. Meus requisitos são:

  • 2 canais
  • faixa de temperatura: 30-35 ° C
  • resolução temp: 1-2 K
  • distância do cabo (MCU -> sensor) 10cm - 2m são aceitáveis
  • temperatura relativa entre dois canais é suficiente, não é necessária temperatura absoluta

Meu ponto de partida é dois termopares com amplificadores de termopares, mas isso parece ser um exagero para a minha aplicação. Os termopares custam 10 $ em Radiospares, amplificadores em 5 $, o que custaria 30 $ apenas para estimar uma temperatura.

Qual é uma boa direção para procurar uma solução mais barata. NTCs?


Editar 18 de julho de 2012

Depois que stevenvh estendeu sua resposta para mostrar o alto grau de linearidade que pode ser obtido com os NTCs, investi algum tempo para reconsiderar se os NTCs não são uma solução melhor.

Não tenho certeza, no entanto, de que sou capaz de seguir stevenvh em seu raciocínio sobre o erro que pode ser obtido com os NTCs baratos, em comparação com os chips semicondutores.

Para obter a temperatura com um NTC, as seguintes funções entram em jogo:

  1. função de transferência convertendo a temperatura ambiente, a uma resistênciaHTumaRNTC(R25,B25/85)
  2. a tensão produzida pelo divisor de tensão HRNTCV(VexcEutumatEuon,RNTC,ReuEun)
  3. Conversão AD HVbEuts(V,Vref,σconversEuon)
  4. aproximação linear da curva: HbEutsTest(bEuts,σumapprox)

As fontes de erro que eu vejo são assim:

  1. Erros de valor NTC: 1% cada para os valores e B 25 - 85 : total cerca de 2%R25B25-85
  2. 1% para o valor do resistor de linearização e digamos 0,5% para a fonte de tensão de excitação
  3. Para um PIC16F1825, a tensão de referência interna usada para o ADC possui 6% de incerteza. Além disso, o próprio ADC possui erros integrais, diferenciais, de compensação e de ganho, cada um da ordem de 1,5 lsb. Aos 10 bits, os últimos combinados são no máximo 0,5%.
  4. Como stevenvh demonstrou em sua resposta, a aproximação linear tem um erro de apenas 0,0015% na faixa de interesse.

O erro na estimativa da temperatura será claramente dominado pelo erro da referência de tensão ADV e pelos erros nos valores do resistor. Claramente excederá os 6%. O erro devido à aproximação linear é totalmente desprezível como stevenvh apontou.

Uma incerteza de 6% a 300 Kelvin é equivalente a um erro de temperatura de 18K. Os chips de temperatura têm um erro de cerca de 1K. A 300K isso corresponde a uma incerteza de 0,3%.

Parece-me que está fora de questão superar isso com um NTC sem uma calibração e verificação de desempenho extremamente cuidadosas. A incerteza nos resistores de linearização, a tensão de excitação ou o ADC visualizados isoladamente empurram a incerteza da solução NTC acima disso. Ou tenho um grande erro no meu raciocínio?

No momento, estou convencido de que os NTCs podem ser uma solução de detecção de temperatura de alta precisão, mas, barato, parece-me que o desempenho deles será um tiro no escuro.

ARF
fonte

Respostas:

12

1-2 graus é uma resolução fácil (mesmo quando você quer dizer precisão, que não é a mesma!). Eu consideraria o LM75 e vários clones, ou um DS1820 / 18S20 / 18B20 / 1822. O microchip possui muitos sensores de temperatura , incluindo clones LM75 por menos de US $ 1. As versões de saída de tensão são baratas, mas eu preferiria uma digital.

Wouter van Ooijen
fonte
Todas as respostas que recebi sobre esta questão foram muito úteis. Aceitei isso devido à facilidade de uso dos clones LM75. Não ter que se preocupar com linearização etc. é uma grande vantagem no meu caso.
ARF
Apenas curioso: por que você prefere um sensor digital?
m.Alin
5
Não se preocupe com referências, linearização, configuração do conversor A / D e o hardware é trivial. A desvantagem é que você precisa lidar com o protocolo.
Wouter van Ooijen
15

Eu diria NTC, sim. Este é o mais barato que eu poderia encontrar no Digikey. Cerca de meio dólar, é muito mais barato que os CIs de sensores de temperatura, que têm a mesma precisão. A vantagem de um NTC é que ele só precisa de um resistor em série e de uma entrada ADC no seu microcontrolador, o que a maioria tem atualmente.

O preço baixo também tem uma desvantagem: os NTCs são tudo menos lineares. Você precisa usar sua função de transferência (com um exponencial, do qual talvez não goste, ou usar uma tabela de pesquisa, que para o intervalo especificado pode ser a melhor solução.

editar dd. 13/07/2012
Bah, derrotado por um miserável LM75. Eu não vou deixar isso passar. :-)

Vou usar o * 103 * MT * desta série NTC . Primeiro a função de transferência:

R=10kΩe-13.4096+4481,80T-150522T2+1877103T3

T

Não parece promissor, e de fato entre 0 ° C e 100 ° C, a curva é assim:

insira a descrição da imagem aqui

tudo menos linear, como eu disse. Podemos tentar linearizar isso, mas lembre-se de que faremos um divisor de resistor com ele, e eles também não são lineares; portanto, qualquer linearização agora será arruinada pelo resistor em série. Então, vamos começar com o resistor e ver o que acontece. Eu tenho uma fonte de 3,3 V e escolho um resistor de 5,6 kΩ para Vcc, então a saída se torna

insira a descrição da imagem aqui

Nada mal! A curva púrpura é a tangente em nossa faixa de interesse: 30 ° C a 35 ° C. Eu poderia plotar o gráfico ampliado nisso, mas isso nos dá duas linhas coincidentes, então vamos dar uma olhada no erro:

insira a descrição da imagem aqui

Também não parece bom, mas é preciso observar a escala vertical, que fornece o erro relativo da aproximação linear em comparação com a nossa característica NTC entre 30 ° C e 35 ° C. O erro é menor que 15 ppm, ou 0,0015% .

Mathematica diz que a equação para a nossa aproximação linear quase perfeita é

VOvocêT=-0,0308 T 1V/°C+2,886 V

Isso resultará em leituras ADC de 609 e 561, respectivamente. para um ADC de 10 bits. É um intervalo de 48 para uma diferença de 5 ° C ou resolução de cerca de 0,1 ° C. Apenas o NTC e um resistor.

Quem precisa de um LM75 !?



editar dd. 13/08/2012

Fato: a solução NTC precisa de calibração.

Prometi a Arik voltar ao cálculo do erro, mas é muito mais complicado do que eu pensava e não pode ser concluído por causa de dados incompletos. Por exemplo, eu tenho números muito precisos para os coeficientes na função de transferência do NTC (os sete dígitos significativos já estão arredondados!), Mas nenhuma informação sobre sua precisão. Alguns comentários embora.

ββ

±

A referência ADC do PIC tem uma tolerância muito ruim de 6%. Arik diz que uma incerteza de 6% a 300 kelvin é equivalente a um erro de temperatura de 18 K , o que obviamente é absurdo e absurdo. Fiz uma verificação rápida: calculei a saída do divisor de tensão para uma temperatura de 20 ° C. Adicionado 6% a isso, e calculado de volta ao valor de resistência do NTC e à temperatura que seria. O erro não é de 18 ° C, mas de 1 ° C ou inferior a 0,5%, referido como 0 K.

Mesmo assim, o erro de 6% é completamente irrelevante ! Se você usar a tensão de referência do ADC para o divisor do resistor, essa tensão nem aparecerá nos cálculos. Eu não me importaria se o erro fosse de 50%. Use outra referência se a referência interna incorreta não estiver disponível fora do controlador. Como a fonte de alimentação de 3,3 V, ou qualquer outra tensão CC que você tenha.

A calibração não é o que você deseja para um projeto único, mas para a produção em massa não se preocupe, especialmente nos eletrônicos de consumo, onde cada centavo conta, é mais provável que você encontre o NTC do que um caro LM75.

stevenvh
fonte
3
A coisa agradável sobre pedir os especialistas é que você começa cada resposta (analógico contra digital), agora Arik só precisa de um especialista para escolher entre os especialistas :)
Wouter van Ooijen
Cerca de meio dólar? Não é este o mesmo item que você mencionou? É $ 0,15 / 100pcs. E o MCP9701A custa cerca de US $ 0,25 / 100pcs. Uau, eu pensei que os digitais eram tão caros, como US $ 2 ou US $ 3 cada!
abdullah kahraman
2
@abdullah - tudo é relativo. Um grande engenheiro provavelmente apontaria para a resistência em série de 1% de tolerância e seu coeficiente de temperatura de 100 ppm / ° C. De qualquer forma, se tivermos erros de leitura, não será devido à aproximação! :-)
stevenvh
1
@stevenvh Sua resposta estendida me deu motivos para revisar minha avaliação original. No entanto, não sei se entendi completamente como você pode obter uma medição de alta precisão com os NTCs baratos. Eu apreciaria se você olhasse para minha pergunta editada e me dissesse se eu tenho uma falha no meu raciocínio. Muito obrigado pela sua ajuda!
ARF
1
@Arik - atualizei minha resposta. Senti-me especialmente a suposta 18 erro K necessária uma resposta :-)
stevenvh
6

Parece um trabalho para termistores, ou dois termistores, para ser mais preciso. Como você só precisa distinguir três estados diferentes de temperatura e está procurando apenas a temperatura relativa, é possível conectar os dois termistores para criar um único sinal analógico. Isso pode ser medido com um A / D embutido no micro. A maioria dos micros possui A / Ds, portanto isso não custa nada mais. Eu provavelmente adicionaria alguns resistores e capacitores como filtros passa-baixo para reduzir o ruído.

Um termistor vai do terra ao sinal analógico e o outro da energia ao sinal analógico. Pode ser necessário fazer alguma calibração, mas com sua faixa de temperatura estreita e baixa resolução, você não precisa ser extravagante. Provavelmente, basta salvar a tensão com diferença zero e subtrair que da leitura futura é suficiente.

Olin Lathrop
fonte
Obrigado pela dica sobre o uso de dois termistores na configuração do divisor de tensão para medir uma tensão relativa. Eu não teria pensado nisso.
ARF
@Arik - os dois termistores em série só funcionam se a resistência deles variar linearmente com a temperatura, portanto, verifique isso. (Eu fiz na minha resposta.)
stevenvh
@stevenvh: Sim, você está certo, mas observe a faixa de temperatura muito estreita e a baixa resolução. Dois termistores, uma vez calibrados para a temperatura igual à do gabinete, devem se sair bem. Um nunca estará fora do outro em mais de 5 graus Celsius.
Olin Lathrop
@Olin - Tudo verdade. Acho que deveria ter acrescentado "caso você queira medir em uma faixa de temperatura muito mais ampla".
Stevenvh
5

Se você não conhece o método delta-Voltage da corrente de diodo escalonado de medição de temperatura e está interessado em medir a temperatura, leia este item - ele pode transformar suas idéias em medição de temperatura.


Estou um pouco atrasado para a festa.
Como a resposta já foi utilizada até agora, descreverei em grande parte um método alternativo que tem méritos consideráveis, mas que parece surpreendentemente pouco usado de forma discreta.

Esse método é comumente usado em CIs de medição de temperatura, mas ainda parece menos conhecido do que seria esperado.

Se um diodo de silício (digamos) é alimentado alternadamente com duas correntes conhecidas, a mudança de tensão delta com a mudança de corrente está relacionada à temperatura absoluta.

Este método é utilizado (pelo menos) nos sensores TI LM82, LM83, LM84, LM87 e LTC3880, LTC3883 e LTC2974.

Observe que esse método é diferente do método usual de medir a queda de tensão direta do diodo absoluto em uma determinada corrente para inferir a temperatura. Esse método é substancialmente mais preciso e não requer calibração específica do sensor.

Precisões de cerca de 0,1 graus C (ou K) são alcançáveis.
As resoluções dependem do método de medição.

O resultado é livre de calibração do dispositivo.
O resultado depende apenas do tipo de diodo básico (por exemplo, silício, germânio). Por
exemplo, se você usar um diodo de sinal 1N4148 inferior a 1 centavo, poderá alterar isso para outro 1N4148 e obter as mesmas precisões sem recalibração.

A precisão da configuração das duas correntes usadas obviamente afeta a precisão do resultado, mas como essas podem ser escolhidas para se adequar aos recursos disponíveis, os resultados podem ser muito bons.

Este método é usado por alguns, mas nem todos os sistemas de medição de temperatura do processador na matriz. Você geralmente descobrirá que, onde esse sistema é usado, as descrições técnicas são muito claras e um pouco ofuscadas - ou seja, parecem querer mantê-lo em segredo, embora o método provavelmente remonta ao trabalho de Widlar em meados da década de 1960.

Esse método rivaliza com as precisão alcançáveis ​​com cuidado razoável, usando termistores NTC ou PT100, etc. Resistores de platina e similares, com um grau muito competitivo de complexidade e dificuldade.


Esta excelente nota de aplicação do Analog Device 199 Medir temperaturas em chips de computador com velocidade e precisão afirma que a técnica é nova. Não tenho certeza de que eles estejam corretos - mas certamente é útil e menos conhecido que seria esperado.

No artigo acima (ligeiramente reescrito) para correntes de I e NI e queda de tensão de diodo Cv1 na corrente 1 e Vd2 na corrente 2:

Vd1 - Vd2 = DVd = (kT / q) ln (I / NI) = (kT / q) ln (1 / N)

Como N,
keq são constantes conhecidas, T = (Constante) (DVd)

_

Excelente nota do aplicativo de TI Sensor de temperatura com vários diodos remotos

Wikipedia - Sensor de temperatura de silício bandgap

[LT AN137 Sensor de temperatura preciso com uma junção PN externa] http://cds.linear.com/docs/Application%20Note/an137f.pdf
Usado em, por exemplo, LTC3880, LTC3883 e LTC2974.

Russell McMahon
fonte
3

Temperatura muito simples (Celsius), medida com termistor (10K) B25 / 100 = 4300, me inspirei no comentário acima, lido neste artigo.

Comprei termistores da DigiKey 10K 5% por US $ 1 cada. Eu queria obter uma medição justa da temperatura sem matemática flutuante e complexa. Conectando a um Arduino da seguinte forma: Vref para 3.3v; analog-0 A0 através de um resistor de 10K e 3.3v. ; Termistor A0 em terra. Eu obtenho a temperatura em Celcius da seguinte forma: Código parcial: analogReference (EXTERNAL);
ADC = leitura analógica (0);
Th = 10000 / (1023 / ADC) -1; // 10000 é o resitor de correção usado no divisor.
T = (775-Th) / 10;

A acumulação é: +1 a 25 ° C, +0 a 20 ° C, -1 a 0 ° C, +2 a -20 ° C. Você altera a constante 775 para se ajustar mais perto da faixa desejada. Por exemplo, use 765 em vez de 775 para obter 0 erro em torno de 25C. Como se trata de matemática inteira, adicionei 5 a 770 antes de dividir por 10 para arredondar.

Mostrando relação entre termistor, ADC, temperatura e resultado calculado

Alain Théroux
fonte
1

Estou usando o LM35DZ . A temperatura variou de 0 Celsius a 100 Celsius, saída linear e baixa impedância ; Eu tenho usado com conexão direta à minha entrada PIC ADC, funciona muito bem até agora.

Uma unidade custa cerca de US $ 3.

JeeShen Lee
fonte
3
E ele vai precisar de dois deles. Não parece uma solução barata para mim. Não comparado aos meus grandes NTCs! :-)
stevenvh
Também uso os chips LM35 (e gosto deles), mas acho que eles são um pouco exagerados para essa pergunta.
Johan
0

Temperatura muito simples (Celsius), medida com termistor ... a US $ 1 cada.

Que tal um chip STM32F0? Seu módulo ADC contém um sensor de temperatura interno E valores calibrados em dois pontos de temperatura E valor calibrado para seu gerador Vref interno.

Com tudo isso combinado, você pode usá-lo como um sensor de temperatura muito preciso - ADC de 12 bits e sigma com pouco mais de 1 lsb - em uma ampla faixa de tensão.

Também pode ser programado como um sensor de temperatura específico: principalmente no modo de suspensão e acorda para ler a temperatura e transmitir dados e depois voltar ao modo de suspensão.

tudo isso por menos de um dólar em pequenas quantidades.

dannyf
fonte