Термопару можно использовать совместно а ардуино. Можно для этого купить какой нибудь специальный готовый модуль http://ali.pub/19zosn. Или использовать самодельный на операционном усилителе (см. http://electe.blogspot.ru/2017/03/blog-post_25.html). Допустим мы выбрали второй вариант.
Рассмотрим схему:
На выходе усилителя термопары, напряжение прямо пропорциональное разности температур которую измеряет термопара. Это напряжение можно измерить используя аналого цифровой преобразователь ардуино. При правильной настройке усилителя термопары, на выходе этого усилителя напряжение будет примерно равно разности температур холодного и горячего спаев термопары делёной на 100. Для того чтобы получить примерно температуру горячего спая термопары надо к этой разности прибавить температуру холодного спая термопары т.е. скорее всего это будет температура окружающего пространства, комнатная 22 градуса или в случае если измерение производиться на улице зимой при температуре 0 градусов то можно ничего не прибавлять. Рассмотрим скетчь:
#define thermocouplePin A3 // номер порта к которому подключен выход усилителя термопары
double Ups = 5; //напряжение питания усилителя и ардуино
double kt = 100; //коэффициент для преобразования напряжения в температуру
double ADCmaxVal = 1023; //максимальное значение выдаваемое АЦП ардуино
double tHome = 0; //комнатная температура
int thermocoupleVal = 0; //полученное с АЦП число
double t = 0; //температура спая термопары
void setup()
{
pinMode(thermocouplePin, INPUT);
Serial.begin(9600); // установка связи по serial
}
void loop()
{
thermocoupleVal = analogRead(thermocouplePin);
t = (thermocoupleVal*Ups/ADCmaxVal)*kt+tHome;
Serial.println(t);
}
Скетчь можно скачать по ссылке https://yadi.sk/d/jKIiM3Ls3GYuAC
Если необходимо заменить номер порта к которому подключается выход усилителя термопары то можно это сделать изменив константу "thermocouplePin" в скетче. Далее идёт переменная в которую записывется напряжение питания усилителя т.к. операционный усилитель не может выдать больше напряжения питания на своём выходе. Следующая переменная - это коэффициент который следует выставить в зависимости от коэффициента усиления усилителя термопары который регулируется переменным резистором этой термопары. Т.о. есть два способа подстройки усилителя: первый - это резистор, второй - это коэффициент в скетче. Максимальное значение выдаваемое АЦП нужно для расчёта реального напряжения которое подаётся на вход АЦП - эту переменную менять не надо. Комнатная температура - это температура холодного спая термопары чтобы прибавкой этой температуры получить реальную температуру горячего спая термопары.
Испытания и др. полезную информацию можно посмотреть на видео:
Ардуино http://ali.pub/1v22bh
Термопара http://ali.pub/18s8uv
Операционный усилитель lm358 http://ali.pub/18s9ew
КАРТА БЛОГА (содержание)
Рассмотрим схему:
Рисунок 1 - Подключение термопары к Ардуино
На выходе усилителя термопары, напряжение прямо пропорциональное разности температур которую измеряет термопара. Это напряжение можно измерить используя аналого цифровой преобразователь ардуино. При правильной настройке усилителя термопары, на выходе этого усилителя напряжение будет примерно равно разности температур холодного и горячего спаев термопары делёной на 100. Для того чтобы получить примерно температуру горячего спая термопары надо к этой разности прибавить температуру холодного спая термопары т.е. скорее всего это будет температура окружающего пространства, комнатная 22 градуса или в случае если измерение производиться на улице зимой при температуре 0 градусов то можно ничего не прибавлять. Рассмотрим скетчь:
#define thermocouplePin A3 // номер порта к которому подключен выход усилителя термопары
double Ups = 5; //напряжение питания усилителя и ардуино
double kt = 100; //коэффициент для преобразования напряжения в температуру
double ADCmaxVal = 1023; //максимальное значение выдаваемое АЦП ардуино
double tHome = 0; //комнатная температура
int thermocoupleVal = 0; //полученное с АЦП число
double t = 0; //температура спая термопары
void setup()
{
pinMode(thermocouplePin, INPUT);
Serial.begin(9600); // установка связи по serial
}
void loop()
{
thermocoupleVal = analogRead(thermocouplePin);
t = (thermocoupleVal*Ups/ADCmaxVal)*kt+tHome;
Serial.println(t);
}
Скетчь можно скачать по ссылке https://yadi.sk/d/jKIiM3Ls3GYuAC
Если необходимо заменить номер порта к которому подключается выход усилителя термопары то можно это сделать изменив константу "thermocouplePin" в скетче. Далее идёт переменная в которую записывется напряжение питания усилителя т.к. операционный усилитель не может выдать больше напряжения питания на своём выходе. Следующая переменная - это коэффициент который следует выставить в зависимости от коэффициента усиления усилителя термопары который регулируется переменным резистором этой термопары. Т.о. есть два способа подстройки усилителя: первый - это резистор, второй - это коэффициент в скетче. Максимальное значение выдаваемое АЦП нужно для расчёта реального напряжения которое подаётся на вход АЦП - эту переменную менять не надо. Комнатная температура - это температура холодного спая термопары чтобы прибавкой этой температуры получить реальную температуру горячего спая термопары.
Испытания и др. полезную информацию можно посмотреть на видео:
Ардуино http://ali.pub/1v22bh
Термопара http://ali.pub/18s8uv
Операционный усилитель lm358 http://ali.pub/18s9ew
КАРТА БЛОГА (содержание)
Добрый день.Я собрал данную схему и подключил её к ардуинке, но в мониторе порта значение постоянно равно указанной в скетче комнатной температуре. Скажите, пожалуйста, что я делаю не так?
ОтветитьУдалитьНадо настроить схему переменным резистором и/или коэффициентом преобразования напряжения в температуру
УдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьСупер, спасибо, выручили, не было ничего другого, а температуру мерить надо
ОтветитьУдалитьЗдравствуйте, я возможно ошибаюсь и не понимаю чтото но если на протяжении измерений double tHome = 0; //комнатная температура, будет меняться или сказать отличатся от той что я напил измерения будут не верны ?
ОтветитьУдалитьПо идее да. Но если используется термопара то предполагается что измеряемая температура значительно больше комнатной т.к. термопары обычно используется для измерения больших температур (для маленьких есть способы лучше) и небольшие колебания температуры окружающей (в пределах нескольких градусов) среды не будут критичны. Если точность важна то комнатную температуру надо измерять отдельным датчиком (например терморезистором) корректировать расчеты и формулы наверняка придется использовать другие а также подстраивать их коэффициенты именно под свою термопару.
УдалитьТакже надо учитывать разрядность АЦП ардуины. Т.к. разрядность тоже ограничивает точность.
Удалить