колибровка показаний
- Войдите на сайт для отправки комментариев
Втр, 21/11/2017 - 17:05
Здравствуйте уважаемые !
есть экранчик, резистор на 100к и термистр 100к
есть такой код термометра и все в принципе работает но есть одно но
Тепературу показывает но она колибается и есле это не большые показатели к примеру 18-25 градусов
то колебания в приделах 1-2 градуса но есле темперетура 170 - 200 градусов то тут начинаются адские скачки в приделах 30- 50 и тд . как сделать стабильней все это? ато релле начинает хаотично щелкать...
#include <math.h> // ================== #include <SPI.h> #include <Wire.h> #include <Adafruit_SSD1306.h> #include <Adafruit_GFX.h> #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); int pinOut = 53; double Thermistor(int RawADC) { double Temp; Temp = log(10000.0*((1024.0/RawADC-1))); Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp ); Temp = Temp - 273.15; return Temp; } void setup() { display.begin(SSD1306_SWITCHCAPVCC, 0x3C); pinMode(53, OUTPUT); } void loop() { int val; double temp; val=analogRead(0); temp=Thermistor(val); if (temp >= 175){ digitalWrite(pinOut, LOW); } else { digitalWrite(pinOut, HIGH); } display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(2); display.setCursor(45,1); display.print("t C"); display.setCursor(30,17); display.print(String(temp)); display.display(); delay(1000); }
Enlan, формулы в строках 14-16 откуда взяли, ссылку не дадите? Что-то берет сомнение, что температура есть обратная функция от третьей степени логарифма сопротивления...
К сожалению источник наверное не вспомню гдето толи на ютубе толи еще где-то...
ну а как это правильней реализовать)
я вот такую формулу использовал, вроде похожа на формулу ТС, выдирал из библиотеки NTC кажется
167
void
readtemp()
// расчет температуры по формуле Стейнхарта — Харта
168
{
169
170
voltage = analogRead(ntc) * Vin / 1023;
171
r1 = voltage * 100000.0 / (Vin - voltage);
// 100 кОм - резистор моста
172
TempRes = (1.0 / (1.0 / (3950.0) * log(r1 / 100000.0) + 1.0 / (273.0 + 25.0))) - 273.0;
// двнные NTC
173
tempres = TempRes * 10;
174
175
}
может у ТС помеха идет?
да просто сомнительно, что эти формулы дают правильную температуру...
я вот такую формулу использовал, вроде похожа на формулу ТС, выдирал из библиотеки NTC кажется
а на мой взгляд совсем не похожа. Где в вашей формуле третья степень температуры?
Хотя ваша формула тоже хороша - зачем в 171 строке умножать на 100000, а потом в 172 - делить? :)
Тут был персонаж, который для работы с NTC резистором аж свою библиотеку написал и тут рекламировал - теперь я понимаю почему... раз такие жуткие формулы по инету гуляют.
да просто сомнительно, что эти формулы дают правильную температуру...
протеус не жаловался :))) плюс минус пару градусов сходилось
так и не пылался над ней думать, передрал из библиотеки чтобы если что ее потом не искать.
так и не пылался над ней думать, передрал из библиотеки
Вот в этом и проблема
В общем, пощукал интернет - действительно, народ изгаляется как может, в том числе формула с третьей степень логарифма и зубодробительными коэффициентами часто встречается.
В смысле эффективности. быстроты и обьема кода лучше выкинуть эту математику нафик и пользоваться таблицей.
Что касается выбросов у ТС - написано. что с NTC обязательна фильтрация от наводок по сигналу и по питанию, иначе в шумных условиях будет измеряться полная хрень.
Куча коментов а толку ....
Я просто начинал учить С++ был такой сайт может кто знает academy.cppstudio.com
и на столько легко все обяснялось... но почему-то он рухнул(
может кто знает аналогичные самоучители буду благодарен
извините за офтоп
тут вроде это советуют
http://mexalib.com/search/?q=%D0%98%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%...
ну а мне для моих скромных хотелок хватило гугла и этого http://arduino.ru/Reference
Здравствуйте уважаемые !
есть экранчик, резистор на 100к и термистр 100к
есть такой код термометра и все в принципе работает но есть одно но
Тепературу показывает но она колибается и есле это не большые показатели к примеру 18-25 градусов
то колебания в приделах 1-2 градуса но есле темперетура 170 - 200 градусов то тут начинаются адские скачки в приделах 30- 50 и тд . как сделать стабильней все это? ато релле начинает хаотично щелкать...
У большинства термисторов NTC диапазон рабочих температур до 125 град.; на 170-200 встречаются не слишком часто.
Нам тут какой к обсуждению предлагается?
я вот такую формулу использовал, вроде похожа на формулу ТС, выдирал из библиотеки NTC кажется
а на мой взгляд совсем не похожа. Где в вашей формуле третья степень температуры?
Хотя ваша формула тоже хороша - зачем в 171 строке умножать на 100000, а потом в 172 - делить? :)
Тут был персонаж, который для работы с NTC резистором аж свою библиотеку написал и тут рекламировал - теперь я понимаю почему... раз такие жуткие формулы по инету гуляют.
Вспомнил, в строке 171 это номинал резистора моста
а в строке 172 коэф и номинал термистора