Термистор не работает

Подключение всего, как показано на рисунке, термистор показывает, что я сгорю:





Код прост:

#define analogPin  A0 //термистор подключается к
#define beta 4090 
#define resistance 10 

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

void loop()
{
  //считываем значение термистора
  long a =analogRead(analogPin);
  //формула расчета температуры
  float tempC = beta /(log((1025.0 * 10 / a - 10) / 10) + beta / 298.0) - 273.0;
  float tempF = 1.8*tempC + 32.0;
  Serial.print("Temp: ");

  Serial.print(tempC);

  Serial.print("  C");

  Serial.print("Fahr: ");
  Serial.print(tempF);
  Serial.print(" F");
  delay(200); //ждем 100 миллисекунд
}

У меня неправильный термистор или неправильный код?

, 👍1

Обсуждение

Волшебников тут нет. Какую модель/тип термистора вы подключили? Каковы параметры термистора?, @smajli


1 ответ


Лучший ответ:

3

Последовательное сопротивление составляет 220 Ом (красный, красный, коричневый).

Вам также необходимо учесть сопротивление термистора при 25 °C. Предположим, что оно составляет 10 кОм. Следовательно, выбор последовательного сопротивления 10 кОм облегчит расчеты.

     int THERMISTORNOMINAL =  10000;
     int SERIESRESISTOR = 10000;
     int TEMPERATURENOMINAL = 25;  

     a = 1023 / a - 1;
     a = SERIESRESISTOR / a;
     tempC = a / THERMISTORNOMINAL;     // (R/Ro)
     tempC = log(tempC);                  // Ин(Р/Ро)
     tempC /= Beta;                   // 1/B * ln(R/Ro)
     tempC += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
     tempC = 1.0 / steinhart;                 // Инвертировать
     tempC -= 273.15;                         // конвертировать в C
,

Не могли бы вы сделать полностью рабочий набросок? Этот фрагмент кода сбивает с толку, поскольку не показывает, являются ли переменные числом с плавающей точкой или целым числом. Добавьте также ссылку на источник для вашего расчета., @Jot

Я использовал 10К. Изображение неверное., @Ver Nick