Где ошибка в следующей схеме/коде?
Некоторое время назад я получил различные датчики. Одним из таких был ктый 10-6 (3 штуки). В начале я не мог найти никаких данных или примеров об этом датчике температуры. Итак, я получил LM35, который было очень просто настроить, так как он линейный. Теперь, спустя несколько месяцев, я наконец нашел правильную таблицу данных и математическое уравнение, чтобы получить правильные значения резисторов.
KTY 10-6 (это ссылка на даташит)
Схема
Выяснил, что он похож на kty81-210
(Vcc 5+)--+-->2.7k--+-->kty81-110-->(GND)
| |
+->100nF--+-----> ADC0 (Analog Port 0)
Поскольку у меня нет резистора на 2,7 кОм, я использовал резистор на 2200 Ом .
конденсатор 100nf я думаю: IJ63 сверху корпуса. правильный?
смоделируйте эту схему - схема, созданная с помощью CircuitLab
Код
Поскольку этот термистор не является линейным, и я всегда хотел использовать правильную математическую формулу для расчета температуры, это лучшее решение. Основываясь на том, что я прочитал в таблице данных kty10-6, я изменил некоторые значения, такие как резистор и значение бета (а). альфа(b) 0,00788 кажется одинаковой для обоих датчиков.
float resistor = 2200; // changed
float temp = analogRead(A5);
float ukty = 5*temp/1023.0;
float a = 0.00001937*1000; // changed
float b = 0.00788*1000;
float c = 1000-resistor*ukty/(5-ukty);
float delta = b * b - 4 * a * c;
float delta1 = sqrt (delta);
float x2 =(-b + delta1)/(2 * a);
float temp1 = x2 + 25 ;
Верен ли расчет?
Я спрашиваю, потому что даже если в эти дни действительно жарко ... я не думаю, что есть 132-135 ° по Цельсию. Формула для Цельсия.
Даже если я не использую эту формулу, а использую другие более простые расчеты (линейные), я всегда получаю более 130-140°C.
Примечания
Если я прикоснусь к датчику, показания увеличатся... как и ожидалось.
Я проверил на всех аналоговых выводах.
Я использую ардуино микро.
Я использую его с i2cLCD.
Он питается от USB.
Больше ничего не подключено.
Если я измерю резистор на макетной плате, когда все выключено, я прочитаю его как 1200 Ом... крышка?
Почему я получаю значение температуры от 120 до 140?
Необязательный
Я только что закрыл пост о стеке электроники, в котором описывается, как увеличить разрешение термисторов с помощью резисторов. нашел это
Если кто-то знает, как изменить мою схему для чтения температур от -10/-20 до +40/+50, я был бы очень рад. это будет дублировать резолюцию. думаю в моей зоне температура никогда не опустится ниже -20 и выше +50°С.
Я купил 3 из них, я знаю, что они дешевые. Я знаю о хорошем датчике температуры DS#####, который идеально подходит для микроконтроллеров. Но я хочу, чтобы этот тоже работал.
Мы знаем, что аналоговые показания будут варьироваться от 0 (=0 В) до 1023 (5 В).
Первым шагом является преобразование показания аналогового значения (напряжения) в фактическое значение сопротивления .
Предлагаемая новая программа (не проверял ее, поэтому комментарии/исправления приветствуются)
float resistorfixed = 2200;
float temp = analogRead(A5);
// calculate sensor resistance value (Rkty)
float Rkty = (resistorfixed * temp) / (1023 - temp);
// From the data sheet the value of the resistance of the sensor
// @ 25 degrees is 2000 +/- 20 ohmsStart with calculating the measured
// resistance.
float R25 = 2000;
// We are also given alpha and beta
float alpha = 7.88 / 1000;
float beta = 1.937 / 100000; // divide by 10^-5
// Now we need to calculate the temperature factor (KayTee)
float KayTee = Rkty / R25;
// We now have all the information to calculate the actual temperature
// (AcT)
float AcT = 25 + ((sqrt((alpha * alpha) - (4 * beta) + (4 * beta * KayTee)) - alpha) / (2 * beta));
// Just hope I've got my brackets is the correct place!
Джим Дирден
кокко
кокко
кокко
Джим Дирден
кокко
кокко
кокко
кокко
кокко
кокко
кокко