Aziz Bench

Calculadora de termistor NTC

Da temperatura para a resistência e vice-versa com a equação Beta, mais o divisor na frente do ADC: a leitura em cada temperatura, quantos graus vale cada passo e o resistor fixo ideal para a sua faixa.

Resistência
5,3kΩ
a 40,0 °C · 0,53 × R25
Tensão no ADC
1,143 V
Leitura do ADC
1.419
Por passo do ADC
0,027 °C
Leitura do ADC em função da temperatura
02.0004.0000°20°40°60°80°100°
Termistor
Ω
K

Do datasheet. B25/50 funciona melhor perto da temperatura ambiente; B25/85, em faixas mais quentes.

Calcular
Ponto de partida
°C
Divisor e ADC
V
V

Igual à alimentação em um Arduino Uno com a referência padrão. O ADC do ESP32 tem referência própria: nele, se puder, use tensões calibradas.

Ω
O termistor vai para
Resolução do ADC
Faixa de temperatura
°C
°C

Usada na tabela, no gráfico e para o melhor resistor fixo.

Melhor resistor fixo

De 0 °C a 100 °C, o divisor fica mais sensível no meio da faixa com 3,59 kΩ, a resistência do termistor a 50 °C. Valor E24 mais próximo: 3,6 kΩ.

Leituras de 0 °C a 100 °C

TemperaturaResistênciaTensãoADCPor passo
0 °C33,6 kΩ2,543 V3.1560,026 °C
10 °C20,2 kΩ2,206 V2.7380,022 °C
20 °C12,5 kΩ1,836 V2.2780,022 °C
30 °C8,04 kΩ1,470 V1.8250,023 °C
40 °C5,3 kΩ1,143 V1.4190,027 °C
50 °C3,59 kΩ0,871 V1.0810,033 °C
60 °C2,49 kΩ0,657 V8150,043 °C
70 °C1,76 kΩ0,494 V6130,057 °C
80 °C1,27 kΩ0,372 V4620,077 °C
90 °C934 Ω0,282 V3500,1 °C
100 °C698 Ω0,215 V2670,14 °C

O que considerar

Código

Arduino
// NTC 10 kΩ, B 3950, NTC no GND
const float R_FIXED = 10000.0;  // resistor fixo, ohms
const float R25 = 10000.0;      // resistência do NTC a 25 °C, ohms
const float BETA = 3950.0;
const float V_SUPPLY = 3.3;    // alimentação do divisor, volts
const int PIN = 34;  // GPIO34

float readTempC() {
  long sum = 0;
  for (int i = 0; i < 16; i++) sum += analogReadMilliVolts(PIN);  // média de 16 leituras
  float ratio = (sum / 16.0) / 1000.0 / V_SUPPLY;  // ESP32: calibrated millivolts, not raw counts
  if (ratio <= 0.0 || ratio >= 1.0) return NAN;          // em curto ou desconectado
  float r = R_FIXED * ratio / (1.0 - ratio);   // NTC no GND
  return 1.0 / (1.0 / 298.15 + log(r / R25) / BETA) - 273.15;
}
ESPHome
sensor:
  - platform: adc
    id: ntc_voltage
    pin: GPIO34
    attenuation: 12db
    update_interval: 10s
  - platform: resistance
    id: ntc_resistance
    sensor: ntc_voltage
    configuration: DOWNSTREAM  # NTC no GND
    resistor: 10kOhm
    reference_voltage: 3.3V
  - platform: ntc
    sensor: ntc_resistance
    name: Temperatura
    calibration:
      b_constant: 3950
      reference_temperature: 25°C
      reference_resistance: 10kOhm
Texto simples, para suas anotações ou um post em fórum.

A equação Beta

A resistência de um termistor NTC cai à medida que ele esquenta, de forma aproximadamente exponencial. Os datasheets informam a resistência a 25 °C (R25) e um valor B, que juntos descrevem a curva:

R(T) = R25 × e^(B × (1/T − 1/298,15))
T = 1 ÷ (1/298,15 + ln(R ÷ R25) ÷ B) − 273,15
(T em kelvin: °C + 273,15)

Exemplo: um termistor de 10 kΩ B3950 a 50 °C. 1/323,15 − 1/298,15 = −0,00025948; × 3950 = −1,0249; e^−1,0249 = 0,3588; R = 10 kΩ × 0,3588 ≈ 3,59 kΩ.

B25/50 ou B25/85?

O B é calculado a partir da resistência em duas temperaturas, e o datasheet diz quais: B25/50 usa 25 e 50 °C, B25/85 usa 25 e 85 °C. Para o mesmo componente, os dois valores são um pouco diferentes: o NCP18XH103F03RB da Murata tem 3380 K como B25/50 e 3434 K como B25/85. Use aquele cuja segunda temperatura está mais perto das temperaturas em que você mede.

Como escolher o resistor fixo

Em um divisor, a tensão muda mais rápido com a temperatura quando o resistor fixo é igual à resistência do termistor nessa temperatura. Então escolha a resistência no meio da faixa que interessa a você: 10 kΩ para um termistor de 10 k perto da temperatura ambiente, cerca de 3,6 kΩ para 0–100 °C (3,59 kΩ a 50 °C). Quanto mais longe do meio, mais graus cada passo do ADC cobre.

O lado em que o termistor fica só inverte a curva: com o termistor no GND, a tensão cai quando ele esquenta; com o termistor na alimentação, ela sobe.

Resistência de um termistor de 10 kΩ B3950

TemperaturaResistênciaα
-20 °C105 kΩ-6,16%/°C
-10 °C58,2 kΩ-5,7%/°C
0 °C33,6 kΩ-5,29%/°C
10 °C20,2 kΩ-4,93%/°C
20 °C12,5 kΩ-4,6%/°C
30 °C8,04 kΩ-4,3%/°C
40 °C5,3 kΩ-4,03%/°C
50 °C3,59 kΩ-3,78%/°C
60 °C2,49 kΩ-3,56%/°C
70 °C1,76 kΩ-3,35%/°C
80 °C1,27 kΩ-3,17%/°C
90 °C934 Ω-3%/°C
100 °C698 Ω-2,84%/°C
110 °C529 Ω-2,69%/°C
120 °C407 Ω-2,56%/°C

Calculada com a equação Beta, R25 = 10 kΩ, B = 3950 K. α é a variação da resistência por grau. Componentes reais seguem a tabela do próprio datasheet, principalmente longe de 25 °C.

Precisão

Três coisas costumam definir o erro. A tolerância do termistor: ±1% no R25 equivale a cerca de ±0,26 °C perto da temperatura ambiente para um componente com B 3380, porque ali a resistência dele muda cerca de 3,8% por grau. O modelo: a equação Beta é exata nas suas duas temperaturas de referência e se afasta da curva fora delas; em uma faixa ampla, use a equação de Steinhart–Hart com três pontos de calibração. E o autoaquecimento: a corrente do divisor aquece o termistor, então mantenha essa corrente baixa ou alimente o divisor só durante a medição.

Perguntas frequentes

O que significa B3950 em um termistor?

É o valor B, 3950 K: o quanto a resistência cai com a temperatura. Junto com a resistência a 25 °C (10 kΩ em um “10k B3950”), ele define a curva que a calculadora usa. O datasheet informa entre quais duas temperaturas ele foi medido, por exemplo 25/50 °C.

10 kΩ ou 100 kΩ?

Escolha aquele cuja resistência fica numa faixa que o seu divisor consegue ler nas suas temperaturas. 10 kΩ serve para temperatura ambiente, água e geladeira. A 250 °C, um 10 kΩ B3950 cai para cerca de 34 Ω; por isso os hotends de impressoras 3D usam termistores de 100 kΩ como o Semitec 104GT-2, que pela equação Beta ainda tem cerca de 500 Ω a 200 °C.

Qual resistor fixo devo usar?

A resistência do termistor no meio da sua faixa de temperatura: assim o divisor fica mais sensível onde você mede. A calculadora encontra esse valor a partir da faixa que você informa e o arredonda para um valor comercial.

NTC, PTC ou DS18B20?

Um NTC é barato, pequeno e rápido, mas precisa de um divisor, um ADC e a fórmula. Em um termistor PTC a resistência sobe com a temperatura, muitas vezes de forma brusca em um ponto, por isso os PTCs servem mais como fusíveis rearmáveis e chaves de sobretemperatura do que para medir. O DS18B20 é um sensor digital: dispensa calibração e tem precisão de ±0,5 °C de −10 a +85 °C segundo o datasheet, mas é mais lento e limitado a −55…+125 °C.

Por que minhas leituras erram alguns graus?

Confira, nesta ordem: se R25 e B correspondem ao seu componente; o valor real do resistor fixo; se o código considera a mesma ligação (termistor no GND ou na alimentação); se a referência do ADC é a que o código espera; e o próprio ADC. O ADC do ESP32 não é linear perto de 0 V nem no topo da faixa, então mantenha a tensão do divisor na parte central ou use leituras calibradas.

Como ligar um termistor a um ESP32 ou Arduino?

Um terminal do termistor no GND, o outro em um pino analógico e, através do resistor fixo, em 3,3 V (5 V em um Arduino de 5 V). Adicione um capacitor de 100 nF do pino para o GND. No ESP32, use um pino do ADC1, como o GPIO34: o ADC2 não pode ser usado com o Wi-Fi ligado.