egyptyanin, бетта-коэффициент из интернета к нашему датчику атф?
или просто рандомный?)) эти данные указывает производитель термистора в даташите, на алишке термисторы которые продают - тоже обычно указывают бетта-коэффициент
Я тоже считаю бетта-уравнением, погрешность меньше градуса. Но я точно знаю свой бетта-коэффициент) сам эти термисторы ставил внутрь датчика и заливал эпоксидкой.
Бетта бывает разный же.. 3600, 3950, 4150, 4170 может еще какие
Добавлено через 8 минут
Да и почему в коде переменные определяются в loop? это не правильно, и чет там не так... не хочу сейчас уже въезжать, усталь)
У меня так:
const int WTnominal = 10000; // номинал термистора
const int WTtempnominal = 25; // температура номинала термистора
const int WTBcof = 3950; // бета-коэффициент
const int WTDivRes = 2192; // номинал резистора в делителе
const float iatDivRes = 1991; // номинал делителя IAT
const float PhotoDivRes = 9940; // номинал делителя фоторезистора
const float ExpDivRes = 99300;
const float q = 5.000 / 1023; // константа АЦП для аналоговых вводов
const float mapError = 5.5; // константа ошибки расчета абсолютного давления
int mapRaw, iatRaw, prevIatIdx;
float iatOhm, mapKpa, boost, iatC, iatK;
float WTvoltage, WTresist, WT, lightRaw, lightRawPrev, lightResist;
float ExpRaw, ExpVoltage, ExpResist;
void loop()
{
// Приближение по Стейнхарту-Харту (по бетта-коэффициенту) для термистора
WTvoltage = (5.0 / 1023.0) * analogRead(WTpin);
WTresist = WTDivRes / ((5.0 / WTvoltage) -1);
WT = 0;
WT = WTresist / WTnominal;
WT = log(WT);
WT /= WTBcof;
WT += 1.0 / (WTtempnominal + 273.15);
WT = 1.0 / WT;
WT -= 273.15;
|