Если взять за основу электрический эквивалент, то: 1. тело человека - источник эдс постоянного тока. 2. датчик - ёмкость конечной величины (конденсатор) 3. теплопроводность от тела к датчику - резистивная проводимость (величина обратная резистивному сопротивлению) 4. окружающая среда - резистивный ток утечки ёмкости (датчика). Пренебрегаем этой утечкой. Что мы имеем? При возникновении контакта ёмкость (датчик) начинает заряжаться с постоянной времени RC и т.д. В нашем же случае при использовании такой модели, мы получаем график роста показаний термометра: Тд = Тд.н + (Тт - Тд.н)*(1 - exp (- k * t)), где Тд - текущая температура датчика, Тд.н. - начальная температура датчика k - конструктивная постоянная времени (зависит от физ.свойств поверхности тела и датчика) t - время в секундах. Можно было бы сделав 2 замера, вычтя начальное значение датчика, расчитать через натуральный логарифм постоянную k и вычислить величину Тт, к которой стремится значение Тд. Но для этого термометр надо включить так, чтобы нагрев датчика не произошёл. Иначе мы получим смещение Тд.н. из-за инерционности датчика. Как правило, термометр вертят в руках, касаясь датчика, да и в вычислении логарифма, а потом и экспоненты - приятного мало в рамках малоресурсного алгоритма. Предлагаю сделать 3 замера через равные интервалы времени, но на начальном участке нагрева, например в 5, 15 и 25 секунд и воспользоваться свойством экспоненты сохранять отношение текущего приращения к прошлому. Иначе говоря, отношение (Tд(25) - Тд(15)) / (Тд(15) - Тд(5)) будет справедливо ко всем последующим приращениям, взятым с таким же интервалом времени. Ну и вот - запускаете итерацию с накоплением результата до тех пор, пока расчётное приращение не станет ниже допустимой погрешности. P.S. если дрожит младший бит - делайте подряд 8-16 измерений (сравнительно быстро, конечно) и вычисляйте по ним среднее для текущего времени.
--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
|