Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

От АЦП к сопротивлению

При подключении термистора к ESP32 мы получаем не сопротивление термистора напрямую, а значение АЦП (см. главу АЦП). Нам нужно вычислить по значению АЦП сопротивление термистора. Оно понадобится для расчёта температуры (об этом поговорим в следующих главах).

Чтобы вычислить сопротивление по показанию АЦП, используем формулу:

\[ R_2 = R_1 \left( \frac{\text{adc_value}}{\text{ADC_MAX} - \text{adc_value}} \right) \]

Где:

  • R2: сопротивление термистора, которое нам нужно вычислить
  • R1: сопротивление резистора, включённого последовательно с термистором (обычно 10 кОм)
  • ADC_MAX: максимальное значение АЦП, 4095 (\( 2^{12} - 1 \)) для 12-битного АЦП
  • adc_value: значение, считанное с АЦП

Функция на Rust


const ADC_MAX: f64 = 4095.0;
const R1_RES: f64 = 10_000.0; 

const fn adc_to_resistance(adc_value: f64) -> f64 {
    let x: f64 = adc_value/(ADC_MAX - adc_value);
    R1_RES * x
}

fn main() {
    let adc_value = 2000; // Наш пример значения АЦП;

    let r2 = adc_to_resistance(adc_value as f64);
    println!("Calculated Resistance (R2): {} Ω", r2);
}

Примечание:

Если вы подключили термистор к питанию, а не к GND, формула будет обратной, так как термистор становится R1.

\[ R_1 = {R_2} \times \left(\frac{\text{ADC_MAX}}{\text{adc_value}} - 1\right) \]