← Sensores · Núcleo Neon · aula 2

O NTC 10k e o logaritmo

O NTC não solta tensão nenhuma. Ele só muda de resistência, e é aí que a conta fica interessante.

começar ↓

Na aula 1, o LM35 entregava tensão pronta e a conta eram dois passos. Só que o LM35 custa mais caro, vai até 100 °C e não gosta de água. Quando você abre um chuveiro, uma geladeira, uma estufa ou um ar-condicionado, o que está lá dentro é quase sempre um NTC: uma pontinha de metal com dois fios. E ele não mede nada sozinho.

O NTC muda de resistência com o calor: esquentou, a resistência cai. A 25 °C vale 10.000 Ω, por isso “10k”. O Arduino não mede resistência, só tensão. Então a gente monta um divisor de tensão.

A peça por fora

ponta de metal 2 fios 10.000 Ω a 25 °C esquentou, a resistência cai sem polaridade: os dois fios servem
NTC 10k · não solta tensão nenhuma sozinho. Precisa do divisor com o resistor de 10k.

O divisor de tensão

5 V R fixo 10k A0 o Arduino lê aqui NTC GND quente → resistência do NTC cai → a tensão em A0 cai junto
o divisor de tensão · sem ele o Arduino não tem o que ler, porque o NTC só muda de resistência
com letra

Passo 1, a resistência do NTC. A tensão em A0 é a parte dos 5 V que “fica” no NTC:

V = 5 × RNTC ÷ (R + RNTC)  ⇒  RNTC = R × leitura ÷ (1023 − leitura)

Passo 2, de resistência pra temperatura, com a equação Beta (β = 3950, número do fabricante):

1/T = 1/T₀ + (1/β) · ln(RNTC ÷ R₀)

T em kelvin (°C + 273,15) · T₀ = 298,15 K (25 °C) · R₀ = 10.000 Ω

Quadro negro com a conta do LM35 conferida e o divisor de tensão do NTC
no quadro · o divisor de tensão, e por que o NTC precisa dele
Quadro negro com a equação Beta do NTC escrita à mão
no quadro · a equação Beta, e por que T tem que estar em kelvin
sem letra

O Arduino leu 400:

1resistência · 10000 × 400 ÷ (1023 − 400) = 4.000.000 ÷ 6236.420,5 Ω
2razão · 6420,5 ÷ 100000,64205
3logaritmo · ln(0,64205)−0,44308
4divide por β · −0,44308 ÷ 3950−0,00011217
51/T₀ · 1 ÷ 298,150,0033540
6soma · 0,0033540 − 0,000112170,0032418
7inverte · 1 ÷ 0,0032418308,47 K
8pra °C · 308,47 − 273,1535,3 °C

Confere pela lógica: a resistência caiu de 10.000 pra 6.420 Ω. Resistência menor, mais quente que 25 °C ✓

Bancada · os oito passos, em qualquer leitura

arrasta e a tabela inteira se refaz · repara que perto das pontas a conta fica sem jeito

A mesma conta, dentro do Arduino

O log() do Arduino é o logaritmo natural, o mesmo ln da equação. A linha de guarda no começo existe porque leitura 0 ou 1023 faria a conta dividir por zero:

const int PINO = A0;
const float R  = 10000.0;   // o resistor fixo
const float R0 = 10000.0;   // o NTC a 25 graus
const float T0 = 298.15;    // 25 graus em kelvin
const float BETA = 3950.0;  // do fabricante

void setup() {
  Serial.begin(9600);
}

void loop() {
  int leitura = analogRead(PINO);
  if (leitura < 5 || leitura > 1018) {      // fio solto ou curto
    Serial.println("leitura fora da faixa");
    delay(500);
    return;
  }

  float rntc   = R * leitura / (1023.0 - leitura);   // passo 1
  float kelvin = 1.0 / (1.0 / T0 + log(rntc / R0) / BETA);
  float graus  = kelvin - 273.15;                    // passo 2

  Serial.print(leitura);   Serial.print("  ");
  Serial.print(rntc, 0);   Serial.print(" ohm  ");
  Serial.println(graus, 1);
  delay(500);
}
o que morde depois

Com o mesmo código e o mesmo NTC, dois circuitos dão temperaturas diferentes.

por quê

A conta inteira depende de três números do seu circuito: o resistor fixo (que na prática nunca é 10.000 Ω redondos, é 10k com 1% ou 5% de tolerância), o β do fabricante daquele NTC, e os 5 V da alimentação, que num Arduino ligado por USB costumam ser 4,7 ou 4,8 V. O jeito de fechar com a realidade é medir o resistor com o multímetro e pôr o valor medido no código, em vez de 10000 redondo.

pra treinar
  1. NTC leu 512: qual a resistência? E a temperatura? (pensa antes: 512 é quase a metade de 1023)
  2. NTC leu 300: faz a tabela de 8 passos. Dá mais ou menos que 35 °C?
  3. Sem fazer conta: a leitura subiu de 400 para 600. Esquentou ou esfriou?

Primeiro tenta, depois confere.

ver as respostas 1. R = 10000 × 512 ÷ 511 ≈ 10.020 Ω, quase igual ao resistor fixo → T ≈ 25 °C (o ponto de referência) · 2. R = 10000 × 300 ÷ 723 ≈ 4.149 Ω → resistência menor, então mais quente: T ≈ 46,2 °C · 3. Leitura maior quer dizer mais tensão sobrando no NTC, ou seja resistência maior, ou seja esfriou. Confere na bancada: 600 dá 14.184 Ω e 17,3 °C.
pra levar

O NTC só muda de resistência, então ele precisa do divisor para virar tensão. Primeiro se descobre a resistência pela leitura, e só então a equação Beta leva de resistência até kelvin. Confere sempre pela lógica: resistência menor quer dizer mais quente. E a conta é tão boa quanto os três números do seu circuito: o resistor fixo, o β e a alimentação.

Sensores · Núcleo Neon · aula 2 de 2 · o caderno e o quadro são do João; as contas foram conferidas uma a uma na arrumação pro site