Термопара подключение.

fedonkin
fedonkin аватар
Offline
Зарегистрирован: 18.09.2017

Всем привет. Подключаю термопару через LM358 ....Куча схем в интернете...и что-то как то странно работает...

Температура скачет как прокаженная... Если подкрутить резистор, то от 180 до 300 грудусов измеряет правильно, а вот ниже.. в пример комнатная температура 19 градусов - а показывает 37-38 и точности никакой

38.05
38.05
37.64
37.64
37.64
38.05
38.05
38.46
38.05
38.46
#define thermocouplePin A0     // номер порта к которому подключен выход усилителя термопары

double Ups = 4.19; //напряжение питания усилителя и ардуино
double kt = 100; //коэффициент для преобразования напряжения в температуру
double ADCmaxVal = 1023; //максимальное значение выдаваемое АЦП ардуино
double tHome = 10.61; //комнатная температура

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);
  delay(100);
}

Подскажите как улучшить /переделать?

 
Штирлиц
Штирлиц аватар
Offline
Зарегистрирован: 13.06.2015

Компенсируйте нелинейность термопары и схемы усиления  программно.Для примера , посмотрите тут (там , где про таблицу) или сами поищите.

a5021
Offline
Зарегистрирован: 07.07.2013

То, что на такой схеме вы получаете цифры хотя бы одного порядка, уже хорошо.

fedonkin
fedonkin аватар
Offline
Зарегистрирован: 18.09.2017

Спасибо!

fedonkin
fedonkin аватар
Offline
Зарегистрирован: 18.09.2017

Я термисторы больше полюбил)) 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Подключайте термопары через MAX6675 или MAX31855 и проблем не будет. Есть готовые "модули" для ардуино.

fedonkin
fedonkin аватар
Offline
Зарегистрирован: 18.09.2017

Была мысль...но мне нужно одновременно снимать показания температуры с 13 датчиков...Думаю с максами не хватит пинов :D

a5021
Offline
Зарегистрирован: 07.07.2013

С пинами вопрос можно решить, но на такое усложнение стоит пускаться лишь в том случае, если применение термопар является обязательным условием. К слову сказать, 13 терморезисторов тоже еще надо придумать, как подключить.

fedonkin
fedonkin аватар
Offline
Зарегистрирован: 18.09.2017

Ох если б это были терморезисторы, а не термопары... Но у меня в нагреватели встроены термопары...мучайся теперь))

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

fedonkin пишет:

Была мысль...но мне нужно одновременно снимать показания температуры с 13 датчиков...Думаю с максами не хватит пинов :D

Для 13 датчиков, если юзать MAX6675, надо будет 15 пинов, или - одну mcp23S17 на шину SPI, и всё ;) Решения есть всегда.

a5021
Offline
Зарегистрирован: 07.07.2013

Это еще зачем? 13 MAX6675 дополнить парой HC595 и всех вместе повесить на SPI. На выходы сдвиговых регистров повесить пины CS максов. Три пина ардуины отдать под SPI, еще тремя рулить сдвиговыми регистрами, управляя доступом к SPI. Вот и все.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

a5021 пишет:

Это еще зачем? 13 MAX6675 дополнить парой HC595 и всех вместе повесить на SPI. На выходы сдвиговых регистров повесить пины CS максов. Три пина ардуины отдать под SPI, еще тремя рулить сдвиговыми регистрами, управляя доступом к SPI. Вот и все.

Так одна MCP23S17 проще, чем "пара HC595" плюс "еще тремя рулить". 16 каналов, как раз на 13 датчиков, не? Висит на SPI, все остальные ноги - остаются свободными. Зачем огород, если можно всего одну микруху?

a5021
Offline
Зарегистрирован: 07.07.2013

Оно дороже и я пока не нахожу, чтобы было проще. Объясняю: вывели мы в MCP некое значение, которое жмет вниз разрешешение на работу одного из максов. Макс уселся на SPI и как его потом отцеплять, когда к следующему максу захочется обратиться? Я простого способа не вижу.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

a5021 пишет:

Оно дороже и я пока не нахожу, чтобы было проще. Объясняю: вывели мы в MCP некое значение, которое жмет вниз разрешешение на работу одного из максов. Макс уселся на SPI и как его потом отцеплять, когда к следующему максу захочется обратиться? Я простого способа не вижу.

Вы о чём? макс не SPI, вообще-то - там любые три пина мона юзать. Т.е. все максы - на MCP, даже их ноги SCK и DO, и нет проблем. СS максов - тоже на MCP, всего делов. При чём тут "макс уселся на SPI" - да не при чём, ибо в даташите на MAX6675 написано "SPI™-compatible" - обратите внимание на слово "compatible", которое не обязывает, от слова "совсем" - юзать аппаратное SPI. А с остальным прекрасно справится одна MCP23S17, т.к. быстрая, двунаправленная, на SPI.

Опять будете опровергать очевидное? В ваших словах только в одном правда - одна MCP дороже одной 74HC595, всё.

a5021
Offline
Зарегистрирован: 07.07.2013

DIYMan пишет:
Вы о чём? макс не SPI, вообще-то - там любые три пина мона юзать.

...

ибо в даташите на MAX6675 написано "SPI™-compatible" - обратите внимание на слово "compatible", которое не обязывает, от слова "совсем" - юзать аппаратное SPI.

По факту, MAX6675 использует самый что ни на есть аппаратный SPI. Уточнение "compatible" приводится лишь с тем, чтобы не нарушать авторских прав (обратите внимание на знак TM) на торговую марку, принадлежащую мотороле. Никакой другой совместимости тут не просматривается, а что касательно юзать или не юзать аппаратный SPI, так и MCP можно употреблять ногодрыгом (как и большинство других устройств, использующих SPI), если вдруг такая идея кому-то придет в голову.

Цитата:
Опять будете опровергать очевидное?

А я уже опровергал?

Очевидное здесь заключается в том, что "эмулировать" на расширителе портов, сидящем на аппаратном SPI, еще один SPI, только уже софтовый -- это полнейшая дичь. Вы прикиньте, какой объем обмена данными с расширителем нужно будет произвести, чтобы вытащить 16бит с макса. Удаление гланд через анус в чистом виде.

Цитата:
В ваших словах только в одном правда - одна MCP дороже одной 74HC595, всё.

В предложенной вами схеме сюда еще добавиться, что MCP медленнее и геморройнее, при полном отсутствии каких-либо выгод.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Короче, ясно - всё вам удаление гланд через анус. Личные проблемы, да? Сочувствую. С вами бессмыслено разговаривать, т.к. вы НИКОГДА не признаёте, что несёте дичь порой. Касательно темы - какое там нахер быстродействие надо, чтобы с термопары прочитать? Вы бы взяли - да проверили, чтобы опять с пеной у рта утверждать "АААА, без аппаратного SPI всё дичь и анус!". 

Я привёл совершенно рабочий юзкейс, вместо вашего говна с кучей таких ну очень прям быстрых HC595 (лол, вас тупо несёт) и кучей занятых ног вдобавок. Думающему человеку - достаточно этого, чтобы понять, что порой проще взять одну микруху, чем городить ваш медленных колхозный сортир из кучи слоупочных компонентов.

Вот зарекался с вами вообще дискутировать, года этак полтора назад - виноват, забылся, больше не буду, продолжайте дальше втирать дичь неофитам. Адью.

fedonkin
fedonkin аватар
Offline
Зарегистрирован: 18.09.2017

Спасибо за совет. Если устану биться с элэмками- то буду переходить на максов ;)

fedonkin
fedonkin аватар
Offline
Зарегистрирован: 18.09.2017

Хотел подешевше, ну что поделаешшшшшь

alex_r61
Offline
Зарегистрирован: 20.06.2012

"compatible" ещё и потому что он не полный, только выдача с регистра, можно и через SPI, и просто ногодрыгом. Никому не пришло в голову что можно читать сразу 8 чипов одним портом, без всяких добавок. Соединить CS у всех и SCK тоже, а SO к разным ножкам порта. И по каждому импульсу читать весь порт в массив, а после обработать данные массива. Вторым портом ещё 8 и так пока порты не кончатся :)

a5021
Offline
Зарегистрирован: 07.07.2013

DIYMan пишет:
Я привёл совершенно рабочий юзкейс, вместо вашего говна с кучей таких ну очень прям быстрых HC595 (лол, вас тупо несёт) и кучей занятых ног вдобавок. Думающему человеку - достаточно этого, чтобы понять, что порой проще взять одну микруху, чем городить ваш медленных колхозный сортир из кучи слоупочных компонентов.

HC595 по даташиту допускают работу через SPI до 100 мгц. MCP23S17 только до 10мгц. Это о слоупочности и о том, кого и куда там что-то несет.

Для того, чтобы выдернуть два байта данных с любого из 13-и максов, в случае применения пары сдвиговых регистров, надо:

1) заслать два байта по SPI в сдвиговые регистры, чтобы подать нужному максу сигнал CS.

2) отправить два пустых байта по SPI, чтобы SPDR заполнился данными от нужного макса.

Это все.

Атмега работает со SPI максимум на 8мгц. Передача одного байта занимает одну микросекунду (8бит/8мгц). Весь обмен, стало быть, будет длиться чуть больше 4 микросекунд, с учетом накладных затрат.

Теперь смотрим, что нам обещает волшебная микросхема MCP23S17: любое обращение к ней состоит не менее, чем из трех байт (см. стр. 15 даташита) -- кода операции, адреса регистра и байта данных. Если пишем в два регистра находящихся рядом, то можно сюда же добавить еще один байт. Итого четыре. Дальше смотрим, из чего будет состоять весь обмен по извлечению данных из макса:

1) заслать четыре байта по SPI в MCP, чтобы подать нужному максу сигнал CS;

2) заслать четыре байта по SPI в MCP, чтобы сгенерировать передний фронт сигнала SCK на софтовом SPI;

3) четыре байта в том же направлении, чтобы сгенерировать задний фронт сигнала SCK на софтовом SPI;

4) заслать четыре байта, чтобы прочитать первый бит данных от макса;

5) повторить пункты 2, 3, 4 еще пятнадцать раз, чтобы вытащить остальные 15 бит ответа от макса.

итого по времени: 4мкс + 16 * (4мкс + 4мкс + 4мкс). С накладными расходами это выйдет ближе к 200мкс.

Сравнивая по скорости решение на сдвиговых регистрах против схемы на расширителе поротов, здесь видно, что сдвиговые регистры работают в сорок раз быстрее. Вот такой он, "медленный колхозный сортир" получается.

Теперь насчет минусов обоих вариантов:

- решение на расширителе портов -- а) дороже; б) медленнее; в) сложнее в софте; г) больше загрузка ЦП.

- решение на сдвиговых регистрах -- а) использует 3 дополнительные ноги ардуины.

Вы можете дальше фонтанировать эмоциями, обвинять меня, что я "НИКОГДА" ничего не признаю, но весь технический расклад я нарисовал. Если есть возражения по этой части -- милости прошу. Если вам более импонирует тема говна и сортиров, то лучше тогда прекратить данное обсуждение.

alex_r61 пишет:
"compatible" ещё и потому что он не полный, только выдача с регистра, можно и через SPI, и просто ногодрыгом. Никому не пришло в голову что можно читать сразу 8 чипов одним портом, без всяких добавок. Соединить CS у всех и SCK тоже, а SO к разным ножкам порта. И по каждому импульсу читать весь порт в массив, а после обработать данные массива. Вторым портом ещё 8 и так пока порты не кончатся :)

Такое решение имеет право на существование, но один фиг, в схеме со сдвиговыми регистрами быстрее получиться последовательно опросить все 13 максов, чем тут параллельно. Плюс еще добавляется сложности с сортировкой полученных битов.

alex_r61
Offline
Зарегистрирован: 20.06.2012

a5021 пишет:

в схеме со сдвиговыми регистрами быстрее получиться последовательно опросить все 13 максов, чем тут параллельно. Плюс еще добавляется сложности с сортировкой полученных битов.

"не смешите мои подковы"

a5021
Offline
Зарегистрирован: 07.07.2013

Через сдвиговые регистры опрос максов займет 5мкс * 13 = 65мкс. Потрудитесь посчитать, сколько времени уйдет на считывание данных со всех максов по вашему способу и вашим подковам останется только рыдать.

alex_r61
Offline
Зарегистрирован: 20.06.2012

a5021 пишет:

Через сдвиговые регистры опрос максов займет 5мкс * 13 = 65мкс. Потрудитесь посчитать, сколько времени уйдет на считывание данных со всех максов по вашему способу и вашим подковам останется только рыдать.

"Флаг тогда Вам в руки и красную печать..." Про мультиплексоры слышали когда-нибудь?

a5021
Offline
Зарегистрирован: 07.07.2013

Да понял я уже, что ни цифр, ни расчетов, ни прочих доказательств не будет. Раз так, говорить больше не о чем.

fedonkin
fedonkin аватар
Offline
Зарегистрирован: 18.09.2017

В общемс...плюнул на элемки..дичь какая...заказываю максы

a5021
Offline
Зарегистрирован: 07.07.2013

На операционниках тоже можно было сделать, но операционники лучше брать другие и придется серьезное внимание уделить аналоговой части. Без опыта это сделать будет сложновато. Максы хороши тем, что вся эта аналоговая дребедень уже внутри чипа и парить мозг никакой нужды нет.

fedonkin
fedonkin аватар
Offline
Зарегистрирован: 18.09.2017

Лучше чутка переплатить, чем мозг жечь))

alex_r61
Offline
Зарегистрирован: 20.06.2012

a5021 пишет:

Да понял я уже, что ни цифр, ни расчетов, ни прочих доказательств не будет. Раз так, говорить больше не о чем.

Кому доказывать, неучу? А расчёты за деньги. :)

a5021
Offline
Зарегистрирован: 07.07.2013

И правда смешное сказали.

alex_r61
Offline
Зарегистрирован: 20.06.2012

a5021 пишет:

И правда смешное сказали.

Смейтесь дальше, смех без причины ...

Там дела менее чем на полчаса, скока свои регистры паять будете?

a5021
Offline
Зарегистрирован: 07.07.2013

alex_r61 пишет:
Смейтесь дальше, смех без причины ...

Как это без причины? Причин множество: рисунок практически не несет информации. Где мультиплексоры, о которых вы столь важно вещали? Как подключены максы к МК ? Нафига загораживать схему огромным окном терминала, который заполнен информацией лишь а 1/6 ? Нафига рама осциллографа, которая вообще информации не несет? Зачем потребовалось треть схемы загораживать этими ничего не значащими элементами? Почему термопар с максами только девять (или десять) ? Где остальные? Напомню, речь шла о тринадцати. Вобщем, это какая-то мазня, сор и совершенно никакой не пруф.

Цитата:
Там дела менее чем на полчаса, скока свои регистры паять будете?

Два регистра запаять ? Потребуется, наверное, минуты три.

Дим
Offline
Зарегистрирован: 05.05.2017

Добрый день, какие номиналы резисторов в схеме первого сообщения?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Дим пишет:

Добрый день, какие номиналы резисторов в схеме первого сообщения?

Дим
Offline
Зарегистрирован: 05.05.2017

Плохо  видно, но наверно  верно. И ещё - как удалить (не выводить) сотые градуса?

 

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Чтобы было хорошо видно (а также чтобы была возможность проверки), нужно размещать принципиальную схему, а не монтажную.

Дим
Offline
Зарегистрирован: 05.05.2017

Жаль что автор этого не сделал

fedonkin
fedonkin аватар
Offline
Зарегистрирован: 18.09.2017

чего сложного на картинке?) Я тогда пробовал много вариантов подключения через LM....И все они мягко говоря не очень...показание не верные...

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Дим пишет:

Жаль что автор этого не сделал

Вряд ли мы можем выбирать авторов, которых нам подсовывает Гугл на наш запрос. Но зато мы можем выбирать авторов тех конструкций, которые мы хотим повторить. Лично я бы не стал повторять конструкцию, для которой приведена монтажная схема вместо принципиальной.

fedonkin
fedonkin аватар
Offline
Зарегистрирован: 18.09.2017

Самое забавное, что пофиг какой код (хоть не рабочий). главное повторить..

enjoyneering
enjoyneering аватар
Offline
Зарегистрирован: 05.09.2016

берите MAX31855 он лучше MAX6675. билиотека и подробности тут - MAX31855, датчик к-термопары с компенсацией температуры холодного спая