колибровка показаний
- Войдите на сайт для отправки комментариев
Втр, 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 кажется
167voidreadtemp()// расчет температуры по формуле Стейнхарта — Харта168{169170voltage = analogRead(ntc) * Vin / 1023;171r1 = voltage * 100000.0 / (Vin - voltage);// 100 кОм - резистор моста172TempRes = (1.0 / (1.0 / (3950.0) * log(r1 / 100000.0) + 1.0 / (273.0 + 25.0))) - 273.0;// двнные NTC173tempres = TempRes * 10;174175}может у ТС помеха идет?да просто сомнительно, что эти формулы дают правильную температуру...
я вот такую формулу использовал, вроде похожа на формулу ТС, выдирал из библиотеки 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 коэф и номинал термистора