Показать сообщение отдельно
09.04.2019, 21:35   #413
evil_mivec

Член партии
 
Аватар для evil_mivec
 
Адрес: Москва
Авто: EC5A TypeV '00 5MT
Имя: Андрей
Сообщений: 3,214




По умолчанию

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;
evil_mivec вне форума Ответить с цитированием Перейти в начало страницы